From 6e7fafe998104f1f9887a08a86afc701cd49dd4e Mon Sep 17 00:00:00 2001
From: Gabor Juhos <juhosg@openwrt.org>
Date: Mon, 24 Sep 2007 16:59:23 +0000
Subject: [PATCH] move pci_irq_map definitions into the board specific files

SVN-Revision: 9009
---
 .../adm5120/files/arch/mips/adm5120/board.c   |   7 +-
 .../arch/mips/adm5120/boards/cellvision.c     |  13 ++-
 .../files/arch/mips/adm5120/boards/compex.c   |  28 ++++-
 .../files/arch/mips/adm5120/boards/edimax.c   |   4 +-
 .../files/arch/mips/adm5120/boards/generic.c  |   4 +-
 .../files/arch/mips/adm5120/boards/infineon.c |   4 +-
 .../files/arch/mips/adm5120/boards/mikrotik.c |  21 +++-
 .../files/arch/mips/adm5120/boards/zyxel.c    |  13 ++-
 .../files/arch/mips/adm5120/platform.c        |   8 --
 .../adm5120/files/arch/mips/pci/pci-adm5120.c | 106 ++++--------------
 .../asm-mips/mach-adm5120/adm5120_board.h     |   2 +
 .../asm-mips/mach-adm5120/adm5120_platform.h  |  15 ++-
 12 files changed, 112 insertions(+), 113 deletions(-)

diff --git a/target/linux/adm5120/files/arch/mips/adm5120/board.c b/target/linux/adm5120/files/arch/mips/adm5120/board.c
index 376a11966c..e124d7b5f1 100644
--- a/target/linux/adm5120/files/arch/mips/adm5120/board.c
+++ b/target/linux/adm5120/files/arch/mips/adm5120/board.c
@@ -96,9 +96,8 @@ static int __init adm5120_board_setup(void)
 	amba_device_register(&adm5120_uart0_device, &iomem_resource);
 	amba_device_register(&adm5120_uart1_device, &iomem_resource);
 
-	/* register PCI controller */
-	if (adm5120_package_bga())
-		platform_device_register(&adm5120_pci_device);
+	/* setup PCI irq map */
+	adm5120_pci_set_irq_map(board->pci_nr_irqs, board->pci_irq_map);
 
 	/* register board devices */
 	if (board->num_devices > 0 && board->devices != NULL ) {
@@ -109,6 +108,7 @@ static int __init adm5120_board_setup(void)
 
 	return 0;
 }
+postcore_initcall(adm5120_board_setup);
 
 void __init adm5120_board_register(struct adm5120_board *board)
 {
@@ -125,4 +125,3 @@ void __init adm5120_register_boards(struct adm5120_board **boards,
 		adm5120_board_register(boards[i]);
 }
 
-arch_initcall(adm5120_board_setup);
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/cellvision.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/cellvision.c
index f7d44e2574..d4baee05e3 100644
--- a/target/linux/adm5120/files/arch/mips/adm5120/boards/cellvision.c
+++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/cellvision.c
@@ -29,8 +29,9 @@
 #include <asm/bootinfo.h>
 #include <asm/gpio.h>
 
-#include <asm/mach-adm5120/adm5120_board.h>
-#include <asm/mach-adm5120/adm5120_platform.h>
+#include <adm5120_board.h>
+#include <adm5120_platform.h>
+#include <adm5120_irq.h>
 
 static void switch_bank_gpio5(unsigned bank)
 {
@@ -44,6 +45,12 @@ static void switch_bank_gpio5(unsigned bank)
 	}
 }
 
+static struct adm5120_pci_irq cas771_pci_irqs[] __initdata = {
+	PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0),
+	PCIIRQ(3, 0, 1, ADM5120_IRQ_PCI1),
+	PCIIRQ(3, 2, 3, ADM5120_IRQ_PCI2)
+};
+
 static struct mtd_partition cas6xx_partitions[] = {
 	{
 		.name	= "admboot",
@@ -158,6 +165,8 @@ static struct adm5120_board cas771_board __initdata = {
 	.eth_num_ports	= 1,
 	.num_devices	= ARRAY_SIZE(cas7xx_devices),
 	.devices	= cas7xx_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(cas771_pci_irqs),
+	.pci_irq_map	= cas771_pci_irqs,
 };
 
 static struct adm5120_board cas790_board __initdata = {
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/compex.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/compex.c
index 893baf4631..bcc4ee71de 100644
--- a/target/linux/adm5120/files/arch/mips/adm5120/boards/compex.c
+++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/compex.c
@@ -29,8 +29,9 @@
 #include <asm/bootinfo.h>
 #include <asm/gpio.h>
 
-#include <asm/mach-adm5120/adm5120_board.h>
-#include <asm/mach-adm5120/adm5120_platform.h>
+#include <adm5120_board.h>
+#include <adm5120_platform.h>
+#include <adm5120_irq.h>
 
 static void switch_bank_gpio5(unsigned bank)
 {
@@ -49,6 +50,17 @@ static void wp54_reset(void)
 	gpio_set_value(ADM5120_GPIO_PIN3, 0);
 }
 
+static struct adm5120_pci_irq wp54_pci_irqs[] __initdata = {
+	PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0),
+};
+
+static struct adm5120_pci_irq np28g_pci_irqs[] __initdata = {
+	PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0),
+	PCIIRQ(3, 0, 1, ADM5120_IRQ_PCI0),
+	PCIIRQ(3, 1, 2, ADM5120_IRQ_PCI1),
+	PCIIRQ(3, 2, 3, ADM5120_IRQ_PCI2)
+};
+
 static struct mtd_partition wp54g_wrt_partitions[] = {
 	{
 		.name	= "cfe",
@@ -148,6 +160,8 @@ static struct adm5120_board np28g_board __initdata = {
 	.eth_vlans	= np28g_vlans,
 	.num_devices	= ARRAY_SIZE(np2xg_devices),
 	.devices	= np2xg_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(np28g_pci_irqs),
+	.pci_irq_map	= np28g_pci_irqs,
 };
 
 static struct adm5120_board wp54ag_board __initdata = {
@@ -159,6 +173,8 @@ static struct adm5120_board wp54ag_board __initdata = {
 	.eth_vlans	= wp54_vlans,
 	.num_devices	= ARRAY_SIZE(wp54_devices),
 	.devices	= wp54_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(wp54_pci_irqs),
+	.pci_irq_map	= wp54_pci_irqs,
 };
 
 static struct adm5120_board wp54g_board __initdata = {
@@ -170,6 +186,8 @@ static struct adm5120_board wp54g_board __initdata = {
 	.eth_vlans	= wp54_vlans,
 	.num_devices	= ARRAY_SIZE(wp54_devices),
 	.devices	= wp54_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(wp54_pci_irqs),
+	.pci_irq_map	= wp54_pci_irqs,
 };
 
 static struct adm5120_board wp54g_wrt_board __initdata = {
@@ -181,6 +199,8 @@ static struct adm5120_board wp54g_wrt_board __initdata = {
 	.eth_vlans	= wp54_vlans,
 	.num_devices	= ARRAY_SIZE(wp54_devices),
 	.devices	= wp54_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(wp54_pci_irqs),
+	.pci_irq_map	= wp54_pci_irqs,
 };
 
 static struct adm5120_board wpp54ag_board __initdata = {
@@ -192,6 +212,8 @@ static struct adm5120_board wpp54ag_board __initdata = {
 	.eth_vlans	= wp54_vlans,
 	.num_devices	= ARRAY_SIZE(wp54_devices),
 	.devices	= wp54_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(wp54_pci_irqs),
+	.pci_irq_map	= wp54_pci_irqs,
 };
 
 static struct adm5120_board wpp54g_board __initdata = {
@@ -203,6 +225,8 @@ static struct adm5120_board wpp54g_board __initdata = {
 	.eth_vlans	= wp54_vlans,
 	.num_devices	= ARRAY_SIZE(wp54_devices),
 	.devices	= wp54_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(wp54_pci_irqs),
+	.pci_irq_map	= wp54_pci_irqs,
 };
 
 static int __init register_boards(void)
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/edimax.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/edimax.c
index d4b1b7442e..6b7e7e696a 100644
--- a/target/linux/adm5120/files/arch/mips/adm5120/boards/edimax.c
+++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/edimax.c
@@ -29,8 +29,8 @@
 #include <asm/bootinfo.h>
 #include <asm/gpio.h>
 
-#include <asm/mach-adm5120/adm5120_board.h>
-#include <asm/mach-adm5120/adm5120_platform.h>
+#include <adm5120_board.h>
+#include <adm5120_platform.h>
 
 static struct mtd_partition br6104k_partitions[] = {
 	{
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/generic.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/generic.c
index 044490e502..735dda34a5 100644
--- a/target/linux/adm5120/files/arch/mips/adm5120/boards/generic.c
+++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/generic.c
@@ -29,8 +29,8 @@
 #include <asm/bootinfo.h>
 #include <asm/gpio.h>
 
-#include <asm/mach-adm5120/adm5120_board.h>
-#include <asm/mach-adm5120/adm5120_platform.h>
+#include <adm5120_board.h>
+#include <adm5120_platform.h>
 
 static struct platform_device *generic_devices[] __initdata = {
 	&adm5120_flash0_device,
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/infineon.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/infineon.c
index f0c682bcbc..c927f00307 100644
--- a/target/linux/adm5120/files/arch/mips/adm5120/boards/infineon.c
+++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/infineon.c
@@ -29,8 +29,8 @@
 #include <asm/bootinfo.h>
 #include <asm/gpio.h>
 
-#include <asm/mach-adm5120/adm5120_board.h>
-#include <asm/mach-adm5120/adm5120_platform.h>
+#include <adm5120_board.h>
+#include <adm5120_platform.h>
 
 static void switch_bank_gpio3(unsigned bank)
 {
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c
index 570ffb0cec..88cccd5be6 100644
--- a/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c
+++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c
@@ -29,8 +29,15 @@
 #include <asm/bootinfo.h>
 #include <asm/gpio.h>
 
-#include <asm/mach-adm5120/adm5120_board.h>
-#include <asm/mach-adm5120/adm5120_platform.h>
+#include <adm5120_board.h>
+#include <adm5120_platform.h>
+#include <adm5120_irq.h>
+
+static struct adm5120_pci_irq rb1xx_pci_irqs[] __initdata = {
+	PCIIRQ(1, 0, 1, ADM5120_IRQ_PCI0),
+	PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI1),
+	PCIIRQ(3, 0, 1, ADM5120_IRQ_PCI2)
+};
 
 static struct mtd_partition rb1xx_partitions[] = {
 	{
@@ -111,6 +118,8 @@ static struct adm5120_board rb111_board __initdata = {
 	.eth_vlans	= rb11x_vlans,
 	.num_devices	= ARRAY_SIZE(rb1xx_devices),
 	.devices	= rb1xx_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(rb1xx_pci_irqs),
+	.pci_irq_map	= rb1xx_pci_irqs,
 };
 
 static struct adm5120_board rb112_board __initdata = {
@@ -121,6 +130,8 @@ static struct adm5120_board rb112_board __initdata = {
 	.eth_vlans	= rb11x_vlans,
 	.num_devices	= ARRAY_SIZE(rb1xx_devices),
 	.devices	= rb1xx_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(rb1xx_pci_irqs),
+	.pci_irq_map	= rb1xx_pci_irqs,
 };
 
 static struct adm5120_board rb133_board __initdata = {
@@ -141,6 +152,8 @@ static struct adm5120_board rb133c_board __initdata = {
 	.eth_vlans	= rb133c_vlans,
 	.num_devices	= ARRAY_SIZE(rb1xx_devices),
 	.devices	= rb1xx_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(rb1xx_pci_irqs),
+	.pci_irq_map	= rb1xx_pci_irqs,
 };
 
 static struct adm5120_board rb150_board __initdata = {
@@ -161,6 +174,8 @@ static struct adm5120_board rb153_board __initdata = {
 	.eth_vlans	= rb15x_vlans,
 	.num_devices	= ARRAY_SIZE(rb1xx_devices),
 	.devices	= rb1xx_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(rb1xx_pci_irqs),
+	.pci_irq_map	= rb1xx_pci_irqs,
 };
 
 static struct adm5120_board rb192_board __initdata = {
@@ -171,6 +186,8 @@ static struct adm5120_board rb192_board __initdata = {
 	.eth_vlans	= rb192_vlans,
 	.num_devices	= ARRAY_SIZE(rb1xx_devices),
 	.devices	= rb1xx_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(rb1xx_pci_irqs),
+	.pci_irq_map	= rb1xx_pci_irqs,
 };
 
 static int __init register_boards(void)
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/zyxel.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/zyxel.c
index f6c3183dfa..0e766a8568 100644
--- a/target/linux/adm5120/files/arch/mips/adm5120/boards/zyxel.c
+++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/zyxel.c
@@ -29,8 +29,9 @@
 #include <asm/bootinfo.h>
 #include <asm/gpio.h>
 
-#include <asm/mach-adm5120/adm5120_board.h>
-#include <asm/mach-adm5120/adm5120_platform.h>
+#include <adm5120_board.h>
+#include <adm5120_platform.h>
+#include <adm5120_irq.h>
 
 static void switch_bank_gpio5(unsigned bank)
 {
@@ -44,6 +45,10 @@ static void switch_bank_gpio5(unsigned bank)
 	}
 }
 
+static struct adm5120_pci_irq p33x_pci_irqs[] __initdata = {
+	PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0),
+};
+
 static struct mtd_partition p33x_partitions[] = {
 	{
 		.name	= "bootbase",
@@ -105,6 +110,8 @@ static struct adm5120_board p334wt_board __initdata = {
 	.eth_vlans	= p33x_vlans,
 	.num_devices	= ARRAY_SIZE(p334_devices),
 	.devices	= p334_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(p33x_pci_irqs),
+	.pci_irq_map	= p33x_pci_irqs,
 };
 
 static struct adm5120_board p335_board __initdata = {
@@ -115,6 +122,8 @@ static struct adm5120_board p335_board __initdata = {
 	.eth_vlans	= p33x_vlans,
 	.num_devices	= ARRAY_SIZE(p335_devices),
 	.devices	= p335_devices,
+	.pci_nr_irqs	= ARRAY_SIZE(p33x_pci_irqs),
+	.pci_irq_map	= p33x_pci_irqs,
 };
 
 static int __init register_boards(void)
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/platform.c b/target/linux/adm5120/files/arch/mips/adm5120/platform.c
index e4353a00a7..2a795c950e 100644
--- a/target/linux/adm5120/files/arch/mips/adm5120/platform.c
+++ b/target/linux/adm5120/files/arch/mips/adm5120/platform.c
@@ -74,14 +74,6 @@ struct platform_device adm5120_switch_device = {
 };
 #endif
 
-/* PCI Host Controller */
-struct adm5120_pci_platform_data adm5120_pci_data;
-struct platform_device adm5120_pci_device = {
-	.name	= "adm5120-pci",
-	.id	= -1,
-	.dev.platform_data = &adm5120_pci_data,
-};
-
 /* USB Host Controller */
 struct resource adm5120_hcd_resources[] = {
 	[0] = {
diff --git a/target/linux/adm5120/files/arch/mips/pci/pci-adm5120.c b/target/linux/adm5120/files/arch/mips/pci/pci-adm5120.c
index 005b8dfab1..0113234398 100644
--- a/target/linux/adm5120/files/arch/mips/pci/pci-adm5120.c
+++ b/target/linux/adm5120/files/arch/mips/pci/pci-adm5120.c
@@ -40,7 +40,7 @@
 #include <adm5120_defs.h>
 #include <adm5120_info.h>
 #include <adm5120_defs.h>
-#include <adm5120_irq.h>
+#include <adm5120_platform.h>
 
 #undef DEBUG
 
@@ -52,6 +52,11 @@
 
 #define PCI_ENABLE 0x80000000
 
+/* -------------------------------------------------------------------------*/
+
+static unsigned int adm5120_pci_nr_irqs __initdata = 0;
+static struct adm5120_pci_irq *adm5120_pci_irq_map __initdata = NULL;
+
 static spinlock_t pci_lock = SPIN_LOCK_UNLOCKED;
 
 /* -------------------------------------------------------------------------*/
@@ -187,99 +192,34 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ADMTEK, PCI_DEVICE_ID_ADMTEK_ADM5120,
 
 /* -------------------------------------------------------------------------*/
 
-struct adm5120_pci_irq {
-	u8	slot;
-	u8	func;
-	u8	pin;
-	unsigned irq;
-};
-
-#define PCIIRQ(s,f,p,i) { 	\
-	.slot = (s),		\
-	.func = (f),		\
-	.pin  = (p),		\
-	.irq  = (i)		\
-	}
-
-static struct adm5120_pci_irq default_pci_irqs[] __initdata = {
-	PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0),
-};
-
-static struct adm5120_pci_irq rb1xx_pci_irqs[] __initdata = {
-	PCIIRQ(1, 0, 1, ADM5120_IRQ_PCI0),
-	PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI1),
-	PCIIRQ(3, 0, 1, ADM5120_IRQ_PCI2)
-};
-
-static struct adm5120_pci_irq cas771_pci_irqs[] __initdata = {
-	PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0),
-	PCIIRQ(3, 0, 1, ADM5120_IRQ_PCI1),
-	PCIIRQ(3, 2, 3, ADM5120_IRQ_PCI2)
-};
-
-static struct adm5120_pci_irq np28g_pci_irqs[] __initdata = {
-	PCIIRQ(2, 0, 1, ADM5120_IRQ_PCI0),
-	PCIIRQ(3, 0, 1, ADM5120_IRQ_PCI0),
-	PCIIRQ(3, 1, 2, ADM5120_IRQ_PCI1),
-	PCIIRQ(3, 2, 3, ADM5120_IRQ_PCI2)
-};
-
-#define GETMAP(n) do { 				\
-		nr_irqs = ARRAY_SIZE(n ## _pci_irqs); 	\
-		p = n ## _pci_irqs;			\
-	} while (0)
+void __init adm5120_pci_set_irq_map(unsigned int nr_irqs,
+		struct adm5120_pci_irq *map)
+{
+	adm5120_pci_nr_irqs = nr_irqs;
+	adm5120_pci_irq_map = map;
+}
 
 int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
 {
-	struct adm5120_pci_irq	*p;
-	int nr_irqs;
+	int irq = -1;
 	int i;
-	int irq;
 
-	irq = -1;
+	if ((!adm5120_pci_nr_irqs) || (!adm5120_pci_irq_map)) {
+		printk(KERN_ALERT "PCI: pci_irq_map is not initialized\n");
+		goto out;
+	}
+
 	if (slot < 1 || slot > 3) {
 		printk(KERN_ALERT "PCI: slot number %u is not supported\n",
 			slot);
 		goto out;
 	}
 
-	GETMAP(default);
-
-	switch (mips_machtype) {
-	case MACH_ADM5120_RB_111:
-	case MACH_ADM5120_RB_112:
-	case MACH_ADM5120_RB_133:
-	case MACH_ADM5120_RB_133C:
-	case MACH_ADM5120_RB_153:
-		GETMAP(rb1xx);
-		break;
-	case MACH_ADM5120_NP28G:
-		GETMAP(np28g);
-		break;
-	case MACH_ADM5120_P335:
-	case MACH_ADM5120_P334WT:
-		/* using default mapping */
-		break;
-	case MACH_ADM5120_CAS771:
-		GETMAP(cas771);
-		break;
-
-	case MACH_ADM5120_NP27G:
-	case MACH_ADM5120_NP28GHS:
-	case MACH_ADM5120_WP54AG:
-	case MACH_ADM5120_WP54G:
-	case MACH_ADM5120_WP54G_WRT:
-	case MACH_ADM5120_WPP54AG:
-	case MACH_ADM5120_WPP54G:
-	default:
-		printk(KERN_ALERT "PCI: irq map is unknown, using defaults.\n");
-		break;
-	}
-
-	for (i = 0; i < nr_irqs; i++, p++) {
-		if ((p->slot == slot) && (PCI_FUNC(dev->devfn) == p->func) &&
-		    (p->pin == pin)) {
-			irq = p->irq;
+	for (i = 0; i < adm5120_pci_nr_irqs; i++) {
+		if ((adm5120_pci_irq_map[i].slot == slot)
+			&& (adm5120_pci_irq_map[i].func == PCI_FUNC(dev->devfn))
+			&& (adm5120_pci_irq_map[i].pin == pin)) {
+			irq = adm5120_pci_irq_map[i].irq;
 			break;
 		}
 	}
diff --git a/target/linux/adm5120/files/include/asm-mips/mach-adm5120/adm5120_board.h b/target/linux/adm5120/files/include/asm-mips/mach-adm5120/adm5120_board.h
index 23f62a2932..d6ac096037 100644
--- a/target/linux/adm5120/files/include/asm-mips/mach-adm5120/adm5120_board.h
+++ b/target/linux/adm5120/files/include/asm-mips/mach-adm5120/adm5120_board.h
@@ -41,6 +41,8 @@ struct adm5120_board {
 	unsigned char		*eth_vlans;
 	unsigned int		num_devices;
 	struct platform_device	**devices;
+	unsigned int		pci_nr_irqs;
+	struct adm5120_pci_irq	*pci_irq_map;
 
 	struct list_head	list;
 };
diff --git a/target/linux/adm5120/files/include/asm-mips/mach-adm5120/adm5120_platform.h b/target/linux/adm5120/files/include/asm-mips/mach-adm5120/adm5120_platform.h
index 863d988cbe..90c18ce5df 100644
--- a/target/linux/adm5120/files/include/asm-mips/mach-adm5120/adm5120_platform.h
+++ b/target/linux/adm5120/files/include/asm-mips/mach-adm5120/adm5120_platform.h
@@ -59,10 +59,17 @@ struct adm5120_pci_irq {
 	unsigned irq;
 };
 
-struct adm5120_pci_platform_data {
-	unsigned int	nr_irqs;
-	struct adm5120_pci_irq	*irqs;
-};
+#define PCIIRQ(s,f,p,i) {.slot = (s), .func = (f), .pin  = (p), .irq  = (i)}
+
+#ifdef CONFIG_PCI
+extern void adm5120_pci_set_irq_map(unsigned int nr_irqs,
+		struct adm5120_pci_irq *map) __init;
+#else
+static inline void adm5120_pci_set_irq_map(unsigned int nr_irqs,
+		struct adm5120_pci_irq *map)
+{
+}
+#endif
 
 extern struct adm5120_flash_platform_data adm5120_flash0_data;
 extern struct adm5120_flash_platform_data adm5120_flash1_data;
-- 
GitLab