Changeset 3622 for trunk/coreboot-v2/src/mainboard/asus/a8n_e/irq_tables.c
- Timestamp:
- 09/30/08 17:02:40 (3 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/coreboot-v2/src/mainboard/asus/a8n_e/irq_tables.c
r3052 r3622 21 21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 22 22 */ 23 24 /* Documentation at: http://www.microsoft.com/hwdev/busbios/PCIIRQ.HTM */25 23 26 24 #include <console/console.h> … … 64 62 unsigned long write_pirq_routing_table(unsigned long addr) 65 63 { 66 67 64 struct irq_routing_table *pirq; 68 65 struct irq_info *pirq_info; 69 unsigned slot_num; 70 uint8_t *v; 66 unsigned slot_num, sbdn; 67 uint8_t *v, sum = 0; 68 int i; 71 69 72 uint8_t sum = 0; 73 int i; 74 unsigned sbdn; 75 76 /* get_bus_conf() will find out all bus num and apic that share with 77 * mptable.c and mptable.c 70 /* get_bus_conf() will find out all bus num and APIC that share with 71 * mptable.c and mptable.c. 78 72 */ 79 73 get_bus_conf(); … … 84 78 addr &= ~15; 85 79 86 /* This table must be betweeen 0xf0000 & 0x100000 */80 /* This table must be betweeen 0xf0000 & 0x100000. */ 87 81 printk_info("Writing IRQ routing tables to 0x%x...", addr); 88 82 89 83 pirq = (void *)(addr); 90 v = (uint8_t *) (addr);84 v = (uint8_t *)(addr); 91 85 92 86 pirq->signature = PIRQ_SIGNATURE; 93 87 pirq->version = PIRQ_VERSION; 94 95 88 pirq->rtr_bus = bus_ck804[0]; 96 89 pirq->rtr_devfn = ((sbdn + 9) << 3) | 0; 97 98 90 pirq->exclusive_irqs = 0x828; 99 100 91 pirq->rtr_vendor = 0x10de; 101 92 pirq->rtr_device = 0x005c; 102 103 93 pirq->miniport_data = 0; 104 94 … … 108 98 slot_num = 0; 109 99 110 //Slot1 PCIE 16x 100 /* Slot1 PCIE 16x */ 111 101 write_pirq_info(pirq_info, bus_ck804[1], (0 << 3) | 0, 0x3, 0xdeb8, 0x4, 112 102 0xdeb8, 0x1, 0xdeb8, 0x2, 0xdeb8, 4, 0); … … 114 104 slot_num++; 115 105 116 //Slot2 PCIE 1x 106 /* Slot2 PCIE 1x */ 117 107 write_pirq_info(pirq_info, bus_ck804[2], (0 << 3) | 0, 0x4, 0xdeb8, 0x1, 118 108 0xdeb8, 0x2, 0xdeb8, 0x3, 0xdeb8, 5, 0); … … 120 110 slot_num++; 121 111 122 //Slot3 PCIE 1x 112 /* Slot3 PCIE 1x */ 123 113 write_pirq_info(pirq_info, bus_ck804[3], (0 << 3) | 0, 0x1, 0xdeb8, 0x2, 124 114 0xdeb8, 0x3, 0xdeb8, 0x4, 0xdeb8, 6, 0); … … 126 116 slot_num++; 127 117 128 //Slot4 PCIE 4x 129 write_pirq_info(pirq_info, bus_ck804[4], (0x4 << 3) | 0, 130 0x2, 0xdeb8, 0x3, 0xdeb8, 0x4, 0xdeb8, 0x1, 0xdeb8, 131 7, 0); 118 /* Slot4 PCIE 4x */ 119 write_pirq_info(pirq_info, bus_ck804[4], (0x4 << 3) | 0, 0x2, 120 0xdeb8, 0x3, 0xdeb8, 0x4, 0xdeb8, 0x1, 0xdeb8, 7, 0); 132 121 pirq_info++; 133 122 slot_num++; 134 123 135 //Slot5 - 7 PCI 124 /* Slot5 - Slot7 PCI */ 136 125 for (i = 0; i < 3; i++) { 137 126 write_pirq_info(pirq_info, bus_ck804[5], (0 << (6 + i)) | 0, … … 144 133 } 145 134 146 //pci bridge 135 /* PCI bridge */ 147 136 write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 9) << 3) | 0, 0x1, 148 137 0xdeb8, 0x2, 0xdeb8, 0x3, 0xdeb8, 0x4, 0xdeb8, 0, 0); … … 150 139 slot_num++; 151 140 152 //smbus 141 /* SMBus */ 153 142 write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 1) << 3) | 0, 0x2, 154 143 0xdeb8, 0, 0, 0, 0, 0, 0, 0, 0); … … 156 145 slot_num++; 157 146 158 //usb 147 /* USB */ 159 148 write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 2) << 3) | 0, 0x1, 160 149 0xdeb8, 0x2, 0xdeb8, 0, 0, 0, 0, 0, 0); … … 162 151 slot_num++; 163 152 164 //audio 153 /* Audio */ 165 154 write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 4) << 3) | 0, 0x1, 166 155 0xdeb8, 0, 0, 0, 0, 0, 0, 0, 0); 167 156 pirq_info++; 168 157 slot_num++; 169 //sata 158 159 /* SATA */ 170 160 write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 7) << 3) | 0, 0x1, 171 161 0xdeb8, 0, 0, 0, 0, 0, 0, 0, 0); 172 162 pirq_info++; 173 163 slot_num++; 174 //sata 164 165 /* SATA */ 175 166 write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 8) << 3) | 0, 0x1, 176 167 0xdeb8, 0, 0, 0, 0, 0, 0, 0, 0); 177 168 pirq_info++; 178 169 slot_num++; 179 //nic 170 171 /* NIC */ 180 172 write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 0xa) << 3) | 0, 0x1, 181 173 0xdeb8, 0, 0, 0, 0, 0, 0, 0, 0); … … 184 176 185 177 #if 0 186 //firewire ?? 178 /* Firewire? */ 187 179 write_pirq_info(pirq_info, bus_ck804_1, (0x5 << 3) | 0, 0x3, 0xdeb8, 0, 188 180 0, 0, 0, 0, 0, 0, 0); … … 197 189 198 190 sum = pirq->checksum - sum; 199 200 if (sum != pirq->checksum) { 191 if (sum != pirq->checksum) 201 192 pirq->checksum = sum; 202 }203 193 204 194 printk_info("done.\n");
