Changeset 3628 for trunk

Show
Ignore:
Timestamp:
10/02/08 02:52:53 (7 weeks ago)
Author:
hailfinger
Message:

Use easily readable macros to setup interrupt routing.
Change a few PCI bus/dev/fn to use hexadecimal numbers.
Kill unused variables.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@…>
Acked-by: Peter Stuge <peter@…>

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/coreboot-v2/src/mainboard/amd/dbm690t/mptable.c

    r3603 r3628  
    4646        static const char productid[12] = "DBM690T     "; 
    4747        struct mp_config_table *mc; 
    48         int i, j; 
    4948 
    5049        mc = (void *)(((char *)v) + SMP_FLOATING_TABLE_LEN); 
     
    120119 
    121120        /* I/O Ints:    Type    Polarity    Trigger     Bus ID   IRQ    APIC ID PIN# */ 
    122         smp_write_intsrc(mc, mp_ExtINT, 
    123                          MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, bus_isa, 
    124                          0x0, apicid_sb600, 0x0); 
    125         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 
    126                          bus_isa, 0x1, apicid_sb600, 0x1); 
    127         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 
    128                          bus_isa, 0x0, apicid_sb600, 0x2); 
    129         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 
    130                          bus_isa, 0x3, apicid_sb600, 0x3); 
    131         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 
    132                          bus_isa, 0x4, apicid_sb600, 0x4); 
    133         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 
    134                          bus_isa, 0x6, apicid_sb600, 0x6); 
    135         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 
    136                          bus_isa, 0x7, apicid_sb600, 0x7); 
    137         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 
    138                          bus_isa, 0xc, apicid_sb600, 0xc); 
    139         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 
    140                          bus_isa, 0xd, apicid_sb600, 0xd); 
    141         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 
    142                          bus_isa, 0xe, apicid_sb600, 0xe); 
     121#define IO_LOCAL_INT(type, intr, apicid, pin) \ 
     122        smp_write_intsrc(mc, (type), MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, bus_isa, (intr), (apicid), (pin)); 
     123         
     124        IO_LOCAL_INT(mp_ExtINT, 0x0, apicid_sb600, 0x0); 
     125 
     126        /* ISA ints are edge-triggered, and usually originate from the ISA bus, 
     127         * or its remainings. 
     128         */ 
     129#define ISA_INT(intr, pin) \ 
     130        smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH,  bus_isa, (intr), apicid_sb600, (pin)) 
     131 
     132        ISA_INT(0x1, 0x1); 
     133        ISA_INT(0x0, 0x2); 
     134        ISA_INT(0x3, 0x3); 
     135        ISA_INT(0x4, 0x4); 
     136        ISA_INT(0x6, 0x6); 
     137        ISA_INT(0x7, 0x7); 
     138        ISA_INT(0xc, 0xc); 
     139        ISA_INT(0xd, 0xd); 
     140        ISA_INT(0xe, 0xe); 
     141 
     142        /* PCI interrupts are level triggered, and are 
     143         * associated with a specific bus/device/function tuple. 
     144         */ 
     145#define PCI_INT(bus, dev, fn, pin) \ 
     146        smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, (bus), (((dev)<<2)|(fn)), apicid_sb600, (pin)) 
    143147 
    144148        /* usb */ 
    145         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    146                          0, 19 << 2 | 0, apicid_sb600, 0x10); 
    147         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    148                          0, 19 << 2 | 1, apicid_sb600, 0x11); 
    149         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    150                          0, 19 << 2 | 2, apicid_sb600, 0x12); 
    151         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    152                          0, 19 << 2 | 3, apicid_sb600, 0x13); 
     149        PCI_INT(0x0, 0x13, 0x0, 0x10); 
     150        PCI_INT(0x0, 0x13, 0x1, 0x11); 
     151        PCI_INT(0x0, 0x13, 0x2, 0x12); 
     152        PCI_INT(0x0, 0x13, 0x3, 0x13); 
    153153 
    154154        /* sata */ 
    155         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    156                          0, 18 << 2 | 0, apicid_sb600, 22); 
     155        PCI_INT(0x0, 0x12, 0x0, 0x16); 
    157156 
    158157        /* HD Audio: b0:d20:f1:reg63 should be 0. */ 
    159         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    160                          0, 20 << 2 | 0, apicid_sb600, 16); 
     158        PCI_INT(0x0, 0x14, 0x0, 0x10); 
    161159 
    162160        /* on board NIC & Slot PCIE.  */ 
    163         i = 2; 
    164         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    165                          bus_rs690[1], 0x5 << 2 | 0, apicid_sb600, 18); 
    166         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    167                          bus_rs690[1], 0x5 << 2 | 1, apicid_sb600, 19); 
    168         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    169                          bus_rs690[2], 0x0 << 2 | 0, apicid_sb600, 18); 
    170         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    171                          bus_rs690[3], 0x0 << 2 | 0, apicid_sb600, 19); 
    172         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    173                          bus_rs690[4], 0x0 << 2 | 0, apicid_sb600, 16); 
    174         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    175                          bus_rs690[5], 0x0 << 2 | 0, apicid_sb600, 17); 
    176         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    177                          bus_rs690[6], 0x0 << 2 | 0, apicid_sb600, 18); 
    178         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    179                          bus_rs690[7], 0x0 << 2 | 0, apicid_sb600, 19); 
     161        PCI_INT(bus_rs690[1], 0x5, 0x0, 0x12); 
     162        PCI_INT(bus_rs690[1], 0x5, 0x1, 0x13); 
     163        PCI_INT(bus_rs690[2], 0x0, 0x0, 0x12); 
     164        PCI_INT(bus_rs690[3], 0x0, 0x0, 0x13); 
     165        PCI_INT(bus_rs690[4], 0x0, 0x0, 0x10); 
     166        PCI_INT(bus_rs690[5], 0x0, 0x0, 0x11); 
     167        PCI_INT(bus_rs690[6], 0x0, 0x0, 0x12); 
     168        PCI_INT(bus_rs690[7], 0x0, 0x0, 0x13); 
    180169 
    181170        /* PCI slots */ 
    182         i += 6; 
    183         j = 5; 
    184171        /* PCI_SLOT 0. */ 
    185         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    186                          bus_sb600[1], 5 << 2 | 0, apicid_sb600, 20); 
    187         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    188                          bus_sb600[1], 5 << 2 | 1, apicid_sb600, 21); 
    189         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    190                          bus_sb600[1], 5 << 2 | 2, apicid_sb600, 22); 
    191         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    192                          bus_sb600[1], 5 << 2 | 3, apicid_sb600, 23); 
     172        PCI_INT(bus_sb600[1], 0x5, 0x0, 0x14); 
     173        PCI_INT(bus_sb600[1], 0x5, 0x1, 0x15); 
     174        PCI_INT(bus_sb600[1], 0x5, 0x2, 0x16); 
     175        PCI_INT(bus_sb600[1], 0x5, 0x3, 0x17); 
    193176 
    194177        /* PCI_SLOT 1. */ 
    195         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    196                          bus_sb600[1], 6 << 2 | 0, apicid_sb600, 21); 
    197         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    198                          bus_sb600[1], 6 << 2 | 1, apicid_sb600, 22); 
    199         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    200                          bus_sb600[1], 6 << 2 | 2, apicid_sb600, 23); 
    201         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    202                          bus_sb600[1], 6 << 2 | 3, apicid_sb600, 20); 
     178        PCI_INT(bus_sb600[1], 0x6, 0x0, 0x15); 
     179        PCI_INT(bus_sb600[1], 0x6, 0x1, 0x16); 
     180        PCI_INT(bus_sb600[1], 0x6, 0x2, 0x17); 
     181        PCI_INT(bus_sb600[1], 0x6, 0x3, 0x14); 
    203182 
    204183        /* PCI_SLOT 2. */ 
    205         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    206                          bus_sb600[1], 7 << 2 | 0, apicid_sb600, 22); 
    207         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    208                          bus_sb600[1], 7 << 2 | 1, apicid_sb600, 23); 
    209         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    210                          bus_sb600[1], 7 << 2 | 2, apicid_sb600, 20); 
    211         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, 
    212                          bus_sb600[1], 7 << 2 | 3, apicid_sb600, 21); 
     184        PCI_INT(bus_sb600[1], 0x7, 0x0, 0x16); 
     185        PCI_INT(bus_sb600[1], 0x7, 0x1, 0x17); 
     186        PCI_INT(bus_sb600[1], 0x7, 0x2, 0x14); 
     187        PCI_INT(bus_sb600[1], 0x7, 0x3, 0x15); 
    213188 
    214189        /*Local Ints:   Type    Polarity    Trigger     Bus ID   IRQ    APIC ID PIN# */ 
    215         smp_write_intsrc(mc, mp_ExtINT, 
    216                          MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, bus_isa, 
    217                          0x0, MP_APIC_ALL, 0x0); 
    218         smp_write_intsrc(mc, mp_NMI, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 
    219                          bus_isa, 0x0, MP_APIC_ALL, 0x1); 
     190        IO_LOCAL_INT(mp_ExtINT, 0x0, MP_APIC_ALL, 0x0); 
     191        IO_LOCAL_INT(mp_NMI, 0x0, MP_APIC_ALL, 0x1); 
    220192        /* There is no extension information... */ 
    221193