Changeset 9009


Ignore:
Timestamp:
2007-09-24T18:59:23+02:00 (10 years ago)
Author:
juhosg
Message:

[adm5120] move pci_irq_map definitions into the board specific files

Location:
trunk/target/linux/adm5120/files
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/adm5120/files/arch/mips/adm5120/board.c

    r8905 r9009  
    9797        amba_device_register(&adm5120_uart1_device, &iomem_resource); 
    9898 
    99         /* register PCI controller */ 
    100         if (adm5120_package_bga()) 
    101                 platform_device_register(&adm5120_pci_device); 
     99        /* setup PCI irq map */ 
     100        adm5120_pci_set_irq_map(board->pci_nr_irqs, board->pci_irq_map); 
    102101 
    103102        /* register board devices */ 
     
    110109        return 0; 
    111110} 
     111postcore_initcall(adm5120_board_setup); 
    112112 
    113113void __init adm5120_board_register(struct adm5120_board *board) 
     
    126126} 
    127127 
    128 arch_initcall(adm5120_board_setup); 
  • trunk/target/linux/adm5120/files/arch/mips/adm5120/boards/cellvision.c

    r8538 r9009  
    3030#include <asm/gpio.h> 
    3131 
    32 #include <asm/mach-adm5120/adm5120_board.h> 
    33 #include <asm/mach-adm5120/adm5120_platform.h> 
     32#include <adm5120_board.h> 
     33#include <adm5120_platform.h> 
     34#include <adm5120_irq.h> 
    3435 
    3536static void switch_bank_gpio5(unsigned bank) 
     
    4546} 
    4647 
     48static struct adm5120_pci_irq cas771_pci_irqs[] __initdata = { 
     49        PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0), 
     50        PCIIRQ(3, 0, 1, ADM5120_IRQ_PCI1), 
     51        PCIIRQ(3, 2, 3, ADM5120_IRQ_PCI2) 
     52}; 
     53 
    4754static struct mtd_partition cas6xx_partitions[] = { 
    4855        { 
     
    159166        .num_devices    = ARRAY_SIZE(cas7xx_devices), 
    160167        .devices        = cas7xx_devices, 
     168        .pci_nr_irqs    = ARRAY_SIZE(cas771_pci_irqs), 
     169        .pci_irq_map    = cas771_pci_irqs, 
    161170}; 
    162171 
  • trunk/target/linux/adm5120/files/arch/mips/adm5120/boards/compex.c

    r8977 r9009  
    3030#include <asm/gpio.h> 
    3131 
    32 #include <asm/mach-adm5120/adm5120_board.h> 
    33 #include <asm/mach-adm5120/adm5120_platform.h> 
     32#include <adm5120_board.h> 
     33#include <adm5120_platform.h> 
     34#include <adm5120_irq.h> 
    3435 
    3536static void switch_bank_gpio5(unsigned bank) 
     
    4950        gpio_set_value(ADM5120_GPIO_PIN3, 0); 
    5051} 
     52 
     53static struct adm5120_pci_irq wp54_pci_irqs[] __initdata = { 
     54        PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0), 
     55}; 
     56 
     57static struct adm5120_pci_irq np28g_pci_irqs[] __initdata = { 
     58        PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0), 
     59        PCIIRQ(3, 0, 1, ADM5120_IRQ_PCI0), 
     60        PCIIRQ(3, 1, 2, ADM5120_IRQ_PCI1), 
     61        PCIIRQ(3, 2, 3, ADM5120_IRQ_PCI2) 
     62}; 
    5163 
    5264static struct mtd_partition wp54g_wrt_partitions[] = { 
     
    149161        .num_devices    = ARRAY_SIZE(np2xg_devices), 
    150162        .devices        = np2xg_devices, 
     163        .pci_nr_irqs    = ARRAY_SIZE(np28g_pci_irqs), 
     164        .pci_irq_map    = np28g_pci_irqs, 
    151165}; 
    152166 
     
    160174        .num_devices    = ARRAY_SIZE(wp54_devices), 
    161175        .devices        = wp54_devices, 
     176        .pci_nr_irqs    = ARRAY_SIZE(wp54_pci_irqs), 
     177        .pci_irq_map    = wp54_pci_irqs, 
    162178}; 
    163179 
     
    171187        .num_devices    = ARRAY_SIZE(wp54_devices), 
    172188        .devices        = wp54_devices, 
     189        .pci_nr_irqs    = ARRAY_SIZE(wp54_pci_irqs), 
     190        .pci_irq_map    = wp54_pci_irqs, 
    173191}; 
    174192 
     
    182200        .num_devices    = ARRAY_SIZE(wp54_devices), 
    183201        .devices        = wp54_devices, 
     202        .pci_nr_irqs    = ARRAY_SIZE(wp54_pci_irqs), 
     203        .pci_irq_map    = wp54_pci_irqs, 
    184204}; 
    185205 
     
    193213        .num_devices    = ARRAY_SIZE(wp54_devices), 
    194214        .devices        = wp54_devices, 
     215        .pci_nr_irqs    = ARRAY_SIZE(wp54_pci_irqs), 
     216        .pci_irq_map    = wp54_pci_irqs, 
    195217}; 
    196218 
     
    204226        .num_devices    = ARRAY_SIZE(wp54_devices), 
    205227        .devices        = wp54_devices, 
     228        .pci_nr_irqs    = ARRAY_SIZE(wp54_pci_irqs), 
     229        .pci_irq_map    = wp54_pci_irqs, 
    206230}; 
    207231 
  • trunk/target/linux/adm5120/files/arch/mips/adm5120/boards/edimax.c

    r8905 r9009  
    3030#include <asm/gpio.h> 
    3131 
    32 #include <asm/mach-adm5120/adm5120_board.h> 
    33 #include <asm/mach-adm5120/adm5120_platform.h> 
     32#include <adm5120_board.h> 
     33#include <adm5120_platform.h> 
    3434 
    3535static struct mtd_partition br6104k_partitions[] = { 
  • trunk/target/linux/adm5120/files/arch/mips/adm5120/boards/generic.c

    r8905 r9009  
    3030#include <asm/gpio.h> 
    3131 
    32 #include <asm/mach-adm5120/adm5120_board.h> 
    33 #include <asm/mach-adm5120/adm5120_platform.h> 
     32#include <adm5120_board.h> 
     33#include <adm5120_platform.h> 
    3434 
    3535static struct platform_device *generic_devices[] __initdata = { 
  • trunk/target/linux/adm5120/files/arch/mips/adm5120/boards/infineon.c

    r8905 r9009  
    3030#include <asm/gpio.h> 
    3131 
    32 #include <asm/mach-adm5120/adm5120_board.h> 
    33 #include <asm/mach-adm5120/adm5120_platform.h> 
     32#include <adm5120_board.h> 
     33#include <adm5120_platform.h> 
    3434 
    3535static void switch_bank_gpio3(unsigned bank) 
  • trunk/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c

    r8979 r9009  
    3030#include <asm/gpio.h> 
    3131 
    32 #include <asm/mach-adm5120/adm5120_board.h> 
    33 #include <asm/mach-adm5120/adm5120_platform.h> 
     32#include <adm5120_board.h> 
     33#include <adm5120_platform.h> 
     34#include <adm5120_irq.h> 
     35 
     36static struct adm5120_pci_irq rb1xx_pci_irqs[] __initdata = { 
     37        PCIIRQ(1, 0, 1, ADM5120_IRQ_PCI0), 
     38        PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI1), 
     39        PCIIRQ(3, 0, 1, ADM5120_IRQ_PCI2) 
     40}; 
    3441 
    3542static struct mtd_partition rb1xx_partitions[] = { 
     
    112119        .num_devices    = ARRAY_SIZE(rb1xx_devices), 
    113120        .devices        = rb1xx_devices, 
     121        .pci_nr_irqs    = ARRAY_SIZE(rb1xx_pci_irqs), 
     122        .pci_irq_map    = rb1xx_pci_irqs, 
    114123}; 
    115124 
     
    122131        .num_devices    = ARRAY_SIZE(rb1xx_devices), 
    123132        .devices        = rb1xx_devices, 
     133        .pci_nr_irqs    = ARRAY_SIZE(rb1xx_pci_irqs), 
     134        .pci_irq_map    = rb1xx_pci_irqs, 
    124135}; 
    125136 
     
    142153        .num_devices    = ARRAY_SIZE(rb1xx_devices), 
    143154        .devices        = rb1xx_devices, 
     155        .pci_nr_irqs    = ARRAY_SIZE(rb1xx_pci_irqs), 
     156        .pci_irq_map    = rb1xx_pci_irqs, 
    144157}; 
    145158 
     
    162175        .num_devices    = ARRAY_SIZE(rb1xx_devices), 
    163176        .devices        = rb1xx_devices, 
     177        .pci_nr_irqs    = ARRAY_SIZE(rb1xx_pci_irqs), 
     178        .pci_irq_map    = rb1xx_pci_irqs, 
    164179}; 
    165180 
     
    172187        .num_devices    = ARRAY_SIZE(rb1xx_devices), 
    173188        .devices        = rb1xx_devices, 
     189        .pci_nr_irqs    = ARRAY_SIZE(rb1xx_pci_irqs), 
     190        .pci_irq_map    = rb1xx_pci_irqs, 
    174191}; 
    175192 
  • trunk/target/linux/adm5120/files/arch/mips/adm5120/boards/zyxel.c

    r8905 r9009  
    3030#include <asm/gpio.h> 
    3131 
    32 #include <asm/mach-adm5120/adm5120_board.h> 
    33 #include <asm/mach-adm5120/adm5120_platform.h> 
     32#include <adm5120_board.h> 
     33#include <adm5120_platform.h> 
     34#include <adm5120_irq.h> 
    3435 
    3536static void switch_bank_gpio5(unsigned bank) 
     
    4445        } 
    4546} 
     47 
     48static struct adm5120_pci_irq p33x_pci_irqs[] __initdata = { 
     49        PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0), 
     50}; 
    4651 
    4752static struct mtd_partition p33x_partitions[] = { 
     
    106111        .num_devices    = ARRAY_SIZE(p334_devices), 
    107112        .devices        = p334_devices, 
     113        .pci_nr_irqs    = ARRAY_SIZE(p33x_pci_irqs), 
     114        .pci_irq_map    = p33x_pci_irqs, 
    108115}; 
    109116 
     
    116123        .num_devices    = ARRAY_SIZE(p335_devices), 
    117124        .devices        = p335_devices, 
     125        .pci_nr_irqs    = ARRAY_SIZE(p33x_pci_irqs), 
     126        .pci_irq_map    = p33x_pci_irqs, 
    118127}; 
    119128 
  • trunk/target/linux/adm5120/files/arch/mips/adm5120/platform.c

    r8905 r9009  
    7474}; 
    7575#endif 
    76  
    77 /* PCI Host Controller */ 
    78 struct adm5120_pci_platform_data adm5120_pci_data; 
    79 struct platform_device adm5120_pci_device = { 
    80         .name   = "adm5120-pci", 
    81         .id     = -1, 
    82         .dev.platform_data = &adm5120_pci_data, 
    83 }; 
    8476 
    8577/* USB Host Controller */ 
  • trunk/target/linux/adm5120/files/arch/mips/pci/pci-adm5120.c

    r8700 r9009  
    4141#include <adm5120_info.h> 
    4242#include <adm5120_defs.h> 
    43 #include <adm5120_irq.h> 
     43#include <adm5120_platform.h> 
    4444 
    4545#undef DEBUG 
     
    5252 
    5353#define PCI_ENABLE 0x80000000 
     54 
     55/* -------------------------------------------------------------------------*/ 
     56 
     57static unsigned int adm5120_pci_nr_irqs __initdata = 0; 
     58static struct adm5120_pci_irq *adm5120_pci_irq_map __initdata = NULL; 
    5459 
    5560static spinlock_t pci_lock = SPIN_LOCK_UNLOCKED; 
     
    188193/* -------------------------------------------------------------------------*/ 
    189194 
    190 struct adm5120_pci_irq { 
    191         u8      slot; 
    192         u8      func; 
    193         u8      pin; 
    194         unsigned irq; 
    195 }; 
    196  
    197 #define PCIIRQ(s,f,p,i) {       \ 
    198         .slot = (s),            \ 
    199         .func = (f),            \ 
    200         .pin  = (p),            \ 
    201         .irq  = (i)             \ 
    202         } 
    203  
    204 static struct adm5120_pci_irq default_pci_irqs[] __initdata = { 
    205         PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0), 
    206 }; 
    207  
    208 static struct adm5120_pci_irq rb1xx_pci_irqs[] __initdata = { 
    209         PCIIRQ(1, 0, 1, ADM5120_IRQ_PCI0), 
    210         PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI1), 
    211         PCIIRQ(3, 0, 1, ADM5120_IRQ_PCI2) 
    212 }; 
    213  
    214 static struct adm5120_pci_irq cas771_pci_irqs[] __initdata = { 
    215         PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0), 
    216         PCIIRQ(3, 0, 1, ADM5120_IRQ_PCI1), 
    217         PCIIRQ(3, 2, 3, ADM5120_IRQ_PCI2) 
    218 }; 
    219  
    220 static struct adm5120_pci_irq np28g_pci_irqs[] __initdata = { 
    221         PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0), 
    222         PCIIRQ(3, 0, 1, ADM5120_IRQ_PCI0), 
    223         PCIIRQ(3, 1, 2, ADM5120_IRQ_PCI1), 
    224         PCIIRQ(3, 2, 3, ADM5120_IRQ_PCI2) 
    225 }; 
    226  
    227 #define GETMAP(n) do {                          \ 
    228                 nr_irqs = ARRAY_SIZE(n ## _pci_irqs);   \ 
    229                 p = n ## _pci_irqs;                     \ 
    230         } while (0) 
     195void __init adm5120_pci_set_irq_map(unsigned int nr_irqs, 
     196                struct adm5120_pci_irq *map) 
     197{ 
     198        adm5120_pci_nr_irqs = nr_irqs; 
     199        adm5120_pci_irq_map = map; 
     200} 
    231201 
    232202int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) 
    233203{ 
    234         struct adm5120_pci_irq  *p; 
    235         int nr_irqs; 
     204        int irq = -1; 
    236205        int i; 
    237         int irq; 
    238  
    239         irq = -1; 
     206 
     207        if ((!adm5120_pci_nr_irqs) || (!adm5120_pci_irq_map)) { 
     208                printk(KERN_ALERT "PCI: pci_irq_map is not initialized\n"); 
     209                goto out; 
     210        } 
     211 
    240212        if (slot < 1 || slot > 3) { 
    241213                printk(KERN_ALERT "PCI: slot number %u is not supported\n", 
     
    244216        } 
    245217 
    246         GETMAP(default); 
    247  
    248         switch (mips_machtype) { 
    249         case MACH_ADM5120_RB_111: 
    250         case MACH_ADM5120_RB_112: 
    251         case MACH_ADM5120_RB_133: 
    252         case MACH_ADM5120_RB_133C: 
    253         case MACH_ADM5120_RB_153: 
    254                 GETMAP(rb1xx); 
    255                 break; 
    256         case MACH_ADM5120_NP28G: 
    257                 GETMAP(np28g); 
    258                 break; 
    259         case MACH_ADM5120_P335: 
    260         case MACH_ADM5120_P334WT: 
    261                 /* using default mapping */ 
    262                 break; 
    263         case MACH_ADM5120_CAS771: 
    264                 GETMAP(cas771); 
    265                 break; 
    266  
    267         case MACH_ADM5120_NP27G: 
    268         case MACH_ADM5120_NP28GHS: 
    269         case MACH_ADM5120_WP54AG: 
    270         case MACH_ADM5120_WP54G: 
    271         case MACH_ADM5120_WP54G_WRT: 
    272         case MACH_ADM5120_WPP54AG: 
    273         case MACH_ADM5120_WPP54G: 
    274         default: 
    275                 printk(KERN_ALERT "PCI: irq map is unknown, using defaults.\n"); 
    276                 break; 
    277         } 
    278  
    279         for (i = 0; i < nr_irqs; i++, p++) { 
    280                 if ((p->slot == slot) && (PCI_FUNC(dev->devfn) == p->func) && 
    281                     (p->pin == pin)) { 
    282                         irq = p->irq; 
     218        for (i = 0; i < adm5120_pci_nr_irqs; i++) { 
     219                if ((adm5120_pci_irq_map[i].slot == slot) 
     220                        && (adm5120_pci_irq_map[i].func == PCI_FUNC(dev->devfn)) 
     221                        && (adm5120_pci_irq_map[i].pin == pin)) { 
     222                        irq = adm5120_pci_irq_map[i].irq; 
    283223                        break; 
    284224                } 
  • trunk/target/linux/adm5120/files/include/asm-mips/mach-adm5120/adm5120_board.h

    r8538 r9009  
    4242        unsigned int            num_devices; 
    4343        struct platform_device  **devices; 
     44        unsigned int            pci_nr_irqs; 
     45        struct adm5120_pci_irq  *pci_irq_map; 
    4446 
    4547        struct list_head        list; 
  • trunk/target/linux/adm5120/files/include/asm-mips/mach-adm5120/adm5120_platform.h

    r8905 r9009  
    6060}; 
    6161 
    62 struct adm5120_pci_platform_data { 
    63         unsigned int    nr_irqs; 
    64         struct adm5120_pci_irq  *irqs; 
    65 }; 
     62#define PCIIRQ(s,f,p,i) {.slot = (s), .func = (f), .pin  = (p), .irq  = (i)} 
     63 
     64#ifdef CONFIG_PCI 
     65extern void adm5120_pci_set_irq_map(unsigned int nr_irqs, 
     66                struct adm5120_pci_irq *map) __init; 
     67#else 
     68static inline void adm5120_pci_set_irq_map(unsigned int nr_irqs, 
     69                struct adm5120_pci_irq *map) 
     70{ 
     71} 
     72#endif 
    6673 
    6774extern struct adm5120_flash_platform_data adm5120_flash0_data; 
Note: See TracChangeset for help on using the changeset viewer.