Revision: linuxbios@linuxbios.org--devel/freebios--devel--2.0--patch-61
[coreboot.git] / src / mainboard / ibm / e325 / irq_tables.c
1 #include <arch/pirq_routing.h>
2 #include <device/pci.h>
3
4 #define IRQ_SLOT_COUNT 12
5 #define IRQ_ROUTER_BUS          0
6 #define IRQ_ROUTER_DEVFN        PCI_DEVFN(4,3)
7 #define IRQ_ROUTER_VENDOR       0x1022
8 #define IRQ_ROUTER_DEVICE       0x746b
9
10 #define AVAILABLE_IRQS 0xdef8
11 #define IRQ_SLOT(slot, bus, dev, fn, linka, linkb, linkc, linkd) \
12         { bus, (dev<<3)|fn, {{ linka, AVAILABLE_IRQS}, { linkb, AVAILABLE_IRQS}, \
13         {linkc, AVAILABLE_IRQS}, {linkd, AVAILABLE_IRQS}}, slot, 0}
14
15 /*  Each IRQ_SLOT entry consists of:
16  *  bus, devfn, {link, bitmap}, {link, bitmap}, {link, bitmap}, {link, bitmap}, slot, rfu  
17  */
18
19 const struct irq_routing_table intel_irq_routing_table = {
20         PIRQ_SIGNATURE,         /* u32 signature */
21         PIRQ_VERSION,           /* u16 version   */
22         32+16*IRQ_SLOT_COUNT,   /* there can be total IRQ_SLOT_COUNT table entries */
23         IRQ_ROUTER_BUS,         /* Where the interrupt router lies (bus) */
24         IRQ_ROUTER_DEVFN,       /* Where the interrupt router lies (dev) */
25         0x00,                   /* IRQs devoted exclusively to PCI usage */
26         IRQ_ROUTER_VENDOR,      /* Vendor */
27         IRQ_ROUTER_DEVICE,      /* Device */
28         0x00,                   /* Crap (miniport) */
29         { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* u8 rfu[11] */
30         0x34,                   /*  u8 checksum , mod 256 checksum must give zero */
31         {       /* slot(0=onboard), devfn, irqlinks (line id, 0=not routed) */
32                 /* Northbridge, Node 0 */
33                 IRQ_SLOT(0x0, 0x00,0x18,0x0, 0,0,0,0),
34                 /* AMD-8131 PCI-X Bridge */
35                 IRQ_SLOT(0x0, 0x01,0x01,0x0, 0,0,0,0),
36                 /* Onboard LSI SCSI Controller */
37                 IRQ_SLOT(0x0, 0x02,0x02,0x0, 3,0,0,0),
38                 /* Onboard Broadcom NICs */
39                 IRQ_SLOT(0x0, 0x02,0x01,0x0, 1,2,0,0),
40                 /* AMD-8131 PCI-X Bridge */
41                 IRQ_SLOT(0x0, 0x01,0x02,0x0, 0,0,0,0),
42                 /* PCI Slot 1-2 */
43                 IRQ_SLOT(0x1, 0x03,0x03,0x0, 1,2,3,4),
44                 IRQ_SLOT(0x2, 0x03,0x04,0x0, 2,3,4,1),
45                 /* AMD-8111 PCI Bridge */
46                 IRQ_SLOT(0x0, 0x01,0x03,0x0, 0,0,0,0),
47                 /* USB Controller */
48                 IRQ_SLOT(0x0, 0x04,0x00,0x0, 0,0,0,4),
49                 /* ATI Rage XL VGA */
50                 IRQ_SLOT(0x0, 0x04,0x05,0x0, 1,0,0,0),
51                 /* AMD-8111 LPC Dridge */
52                 IRQ_SLOT(0x0, 0x01,0x04,0x0, 0,0,0,0),
53                 /* Northbridge, Node 1 */
54                 IRQ_SLOT(0x0, 0x00,0x19,0x0, 0,0,0,0),
55
56         }
57 };
58 unsigned long write_pirq_routing_table(unsigned long addr)
59 {
60         return copy_pirq_routing_table(addr);
61 }