ARM: orion5x: convert all board files to use new pci driver
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
diff --git a/arch/arm/mach-orion5x/board-mss2.c b/arch/arm/mach-orion5x/board-mss2.c
index 66f9c3b..8e7add0 100644
--- a/arch/arm/mach-orion5x/board-mss2.c
+++ b/arch/arm/mach-orion5x/board-mss2.c
@@ -28,25 +28,11 @@
/****************************************************************************
* PCI setup
****************************************************************************/
-static int __init mss2_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
-{
- int irq;
-
- /*
- * Check for devices with hard-wired IRQs.
- */
- irq = orion5x_pci_map_irq(dev, slot, pin);
- if (irq != -1)
- return irq;
-
- return -1;
-}
-
static struct hw_pci mss2_pci __initdata = {
- .nr_controllers = 2,
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
- .map_irq = mss2_pci_map_irq,
+ .map_irq = orion5x_pci_map_irq,
};
static int __init mss2_pci_init(void)
diff --git a/arch/arm/mach-orion5x/board-rd88f5182.c b/arch/arm/mach-orion5x/board-rd88f5182.c
index 270824b..a9d19f1 100644
--- a/arch/arm/mach-orion5x/board-rd88f5182.c
+++ b/arch/arm/mach-orion5x/board-rd88f5182.c
@@ -13,6 +13,7 @@
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
+#include <linux/platform_data/pci-orion.h>
#include <linux/pci.h>
#include <linux/irq.h>
#include <asm/mach-types.h>
@@ -71,18 +72,8 @@
}
}
-static int __init rd88f5182_pci_map_irq(const struct pci_dev *dev, u8 slot,
- u8 pin)
+static int rd88f5182_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- int irq;
-
- /*
- * Check for devices with hard-wired IRQs.
- */
- irq = orion5x_pci_map_irq(dev, slot, pin);
- if (irq != -1)
- return irq;
-
/*
* PCI IRQs are connected via GPIOs
*/
@@ -98,17 +89,25 @@
}
static struct hw_pci rd88f5182_pci __initdata = {
- .nr_controllers = 2,
- .preinit = rd88f5182_pci_preinit,
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
+ .map_irq = orion5x_pci_map_irq,
+};
+
+static const struct orion_pci_platform_data rd88f5182_pci_pdata __initconst = {
+ .preinit = rd88f5182_pci_preinit,
.map_irq = rd88f5182_pci_map_irq,
};
static int __init rd88f5182_pci_init(void)
{
- if (of_machine_is_compatible("marvell,rd-88f5182-nas"))
+ if (of_machine_is_compatible("marvell,rd-88f5182-nas")) {
pci_common_init(&rd88f5182_pci);
+ platform_device_register_data(NULL, "orion-pci", -1,
+ &rd88f5182_pci_pdata,
+ sizeof(rd88f5182_pci_pdata));
+ }
return 0;
}
diff --git a/arch/arm/mach-orion5x/db88f5281-setup.c b/arch/arm/mach-orion5x/db88f5281-setup.c
index dc01c4f..4e61893 100644
--- a/arch/arm/mach-orion5x/db88f5281-setup.c
+++ b/arch/arm/mach-orion5x/db88f5281-setup.c
@@ -12,6 +12,7 @@
#include <linux/gpio.h>
#include <linux/kernel.h>
#include <linux/init.h>
+#include <linux/platform_data/pci-orion.h>
#include <linux/platform_device.h>
#include <linux/pci.h>
#include <linux/irq.h>
@@ -236,18 +237,8 @@
}
}
-static int __init db88f5281_pci_map_irq(const struct pci_dev *dev, u8 slot,
- u8 pin)
+static int db88f5281_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- int irq;
-
- /*
- * Check for devices with hard-wired IRQs.
- */
- irq = orion5x_pci_map_irq(dev, slot, pin);
- if (irq != -1)
- return irq;
-
/*
* PCI IRQs are connected via GPIOs.
*/
@@ -262,19 +253,22 @@
}
}
-static struct hw_pci db88f5281_pci __initdata = {
- .nr_controllers = 2,
+static const struct orion_pci_platform_data db88f5281_pci_pdata __initconst = {
.preinit = db88f5281_pci_preinit,
+ .map_irq = db88f5281_pci_map_irq,
+};
+
+static struct hw_pci db88f5281_pci __initdata = {
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
- .map_irq = db88f5281_pci_map_irq,
+ .map_irq = orion5x_pci_map_irq,
};
static int __init db88f5281_pci_init(void)
{
if (machine_is_db88f5281())
pci_common_init(&db88f5281_pci);
-
return 0;
}
@@ -364,6 +358,9 @@
platform_device_register(&db88f5281_nand_flash);
i2c_register_board_info(0, &db88f5281_i2c_rtc, 1);
+
+ platform_device_register_data(NULL, "orion-pci", -1, &db88f5281_pci_pdata,
+ sizeof(db88f5281_pci_pdata));
}
MACHINE_START(DB88F5281, "Marvell Orion-2 Development Board")
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c
index 09d2a26..b9a2137 100644
--- a/arch/arm/mach-orion5x/dns323-setup.c
+++ b/arch/arm/mach-orion5x/dns323-setup.c
@@ -70,26 +70,11 @@
/****************************************************************************
* PCI setup
*/
-
-static int __init dns323_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
-{
- int irq;
-
- /*
- * Check for devices with hard-wired IRQs.
- */
- irq = orion5x_pci_map_irq(dev, slot, pin);
- if (irq != -1)
- return irq;
-
- return -1;
-}
-
static struct hw_pci dns323_pci __initdata = {
- .nr_controllers = 2,
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
- .map_irq = dns323_pci_map_irq,
+ .map_irq = orion5x_pci_map_irq,
};
static int __init dns323_pci_init(void)
diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c
index fe6a48a..ee5c363 100644
--- a/arch/arm/mach-orion5x/kurobox_pro-setup.c
+++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c
@@ -118,35 +118,16 @@
* PCI
****************************************************************************/
-static int __init kurobox_pro_pci_map_irq(const struct pci_dev *dev, u8 slot,
- u8 pin)
-{
- int irq;
-
- /*
- * Check for devices with hard-wired IRQs.
- */
- irq = orion5x_pci_map_irq(dev, slot, pin);
- if (irq != -1)
- return irq;
-
- /*
- * PCI isn't used on the Kuro
- */
- return -1;
-}
-
static struct hw_pci kurobox_pro_pci __initdata = {
- .nr_controllers = 2,
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
- .map_irq = kurobox_pro_pci_map_irq,
+ .map_irq = orion5x_pci_map_irq,
};
static int __init kurobox_pro_pci_init(void)
{
if (machine_is_kurobox_pro()) {
- orion5x_pci_disable();
pci_common_init(&kurobox_pro_pci);
}
diff --git a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
index 213b3e1..a2e0e12 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
@@ -10,6 +10,7 @@
#include <linux/gpio.h>
#include <linux/kernel.h>
#include <linux/init.h>
+#include <linux/platform_data/pci-orion.h>
#include <linux/platform_device.h>
#include <linux/pci.h>
#include <linux/irq.h>
@@ -133,15 +134,6 @@
static int __init
rd88f5181l_fxo_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- int irq;
-
- /*
- * Check for devices with hard-wired IRQs.
- */
- irq = orion5x_pci_map_irq(dev, slot, pin);
- if (irq != -1)
- return irq;
-
/*
* Mini-PCI / Cardbus slot.
*/
@@ -149,17 +141,25 @@
}
static struct hw_pci rd88f5181l_fxo_pci __initdata = {
- .nr_controllers = 2,
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
+ .map_irq = orion5x_pci_map_irq,
+};
+
+static const struct orion_pci_platform_data rd88f5181l_pci_data = {
+ .cardbus = true,
.map_irq = rd88f5181l_fxo_pci_map_irq,
};
static int __init rd88f5181l_fxo_pci_init(void)
{
if (machine_is_rd88f5181l_fxo()) {
- orion5x_pci_set_cardbus_mode();
pci_common_init(&rd88f5181l_fxo_pci);
+
+ platform_device_register_data(NULL, "orion-pci", -1,
+ &rd88f5181l_pci_data,
+ sizeof(rd88f5181l_pci_data));
}
return 0;
diff --git a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
index 594800e..8628b6a 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
@@ -10,6 +10,7 @@
#include <linux/gpio.h>
#include <linux/kernel.h>
#include <linux/init.h>
+#include <linux/platform_data/pci-orion.h>
#include <linux/platform_device.h>
#include <linux/pci.h>
#include <linux/irq.h>
@@ -111,6 +112,20 @@
I2C_BOARD_INFO("ds1338", 0x68),
};
+static int
+rd88f5181l_ge_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+{
+ if (pin == 1)
+ return gpio_to_irq(4);
+ else
+ return gpio_to_irq(10);
+}
+
+static const struct orion_pci_platform_data rd88f5181l_ge_pci_data = {
+ .cardbus = true,
+ .map_irq = rd88f5181l_ge_pci_map_irq,
+};
+
static void __init rd88f5181l_ge_init(void)
{
/*
@@ -137,40 +152,22 @@
platform_device_register(&rd88f5181l_ge_nor_boot_flash);
i2c_register_board_info(0, &rd88f5181l_ge_i2c_rtc, 1);
-}
-static int __init
-rd88f5181l_ge_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
-{
- int irq;
-
- /*
- * Check for devices with hard-wired IRQs.
- */
- irq = orion5x_pci_map_irq(dev, slot, pin);
- if (irq != -1)
- return irq;
-
- /*
- * Cardbus slot.
- */
- if (pin == 1)
- return gpio_to_irq(4);
- else
- return gpio_to_irq(10);
+ platform_device_register_data(NULL, "orion-pci", -1,
+ &rd88f5181l_ge_pci_data,
+ sizeof(rd88f5181l_ge_pci_data));
}
static struct hw_pci rd88f5181l_ge_pci __initdata = {
- .nr_controllers = 2,
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
- .map_irq = rd88f5181l_ge_pci_map_irq,
+ .map_irq = orion5x_pci_map_irq,
};
static int __init rd88f5181l_ge_pci_init(void)
{
if (machine_is_rd88f5181l_ge()) {
- orion5x_pci_set_cardbus_mode();
pci_common_init(&rd88f5181l_ge_pci);
}
diff --git a/arch/arm/mach-orion5x/rd88f5182-setup.c b/arch/arm/mach-orion5x/rd88f5182-setup.c
index b576ef5..d51d5b8 100644
--- a/arch/arm/mach-orion5x/rd88f5182-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5182-setup.c
@@ -12,6 +12,7 @@
#include <linux/gpio.h>
#include <linux/kernel.h>
#include <linux/init.h>
+#include <linux/platform_data/pci-orion.h>
#include <linux/platform_device.h>
#include <linux/pci.h>
#include <linux/irq.h>
@@ -142,18 +143,8 @@
}
}
-static int __init rd88f5182_pci_map_irq(const struct pci_dev *dev, u8 slot,
- u8 pin)
+static int rd88f5182_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- int irq;
-
- /*
- * Check for devices with hard-wired IRQs.
- */
- irq = orion5x_pci_map_irq(dev, slot, pin);
- if (irq != -1)
- return irq;
-
/*
* PCI IRQs are connected via GPIOs
*/
@@ -168,12 +159,16 @@
}
}
-static struct hw_pci rd88f5182_pci __initdata = {
- .nr_controllers = 2,
+static const struct orion_pci_platform_data rd88f5182_pci_pdata __initconst = {
.preinit = rd88f5182_pci_preinit,
+ .map_irq = rd88f5182_pci_map_irq,
+};
+
+static struct hw_pci rd88f5182_pci __initdata = {
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
- .map_irq = rd88f5182_pci_map_irq,
+ .map_irq = orion5x_pci_map_irq,
};
static int __init rd88f5182_pci_init(void)
@@ -276,6 +271,10 @@
platform_device_register(&rd88f5182_gpio_leds);
i2c_register_board_info(0, &rd88f5182_i2c_rtc, 1);
+
+ platform_device_register_data(NULL, "orion-pci", -1,
+ &rd88f5182_pci_pdata,
+ sizeof(rd88f5182_pci_pdata));
}
MACHINE_START(RD88F5182, "Marvell Orion-NAS Reference Design")
diff --git a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
index 78a1e6a..b1988578 100644
--- a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
@@ -99,7 +99,7 @@
}
static struct hw_pci rd88f6183ap_ge_pci __initdata = {
- .nr_controllers = 2,
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
.map_irq = orion5x_pci_map_irq,
@@ -107,10 +107,8 @@
static int __init rd88f6183ap_ge_pci_init(void)
{
- if (machine_is_rd88f6183ap_ge()) {
- orion5x_pci_disable();
+ if (machine_is_rd88f6183ap_ge())
pci_common_init(&rd88f6183ap_ge_pci);
- }
return 0;
}
diff --git a/arch/arm/mach-orion5x/terastation_pro2-setup.c b/arch/arm/mach-orion5x/terastation_pro2-setup.c
index 1208674..9e55d0a 100644
--- a/arch/arm/mach-orion5x/terastation_pro2-setup.c
+++ b/arch/arm/mach-orion5x/terastation_pro2-setup.c
@@ -11,6 +11,7 @@
#include <linux/gpio.h>
#include <linux/kernel.h>
#include <linux/init.h>
+#include <linux/platform_data/pci-orion.h>
#include <linux/platform_device.h>
#include <linux/pci.h>
#include <linux/irq.h>
@@ -99,32 +100,26 @@
}
}
-static int __init tsp2_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+static int tsp2_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- int irq;
-
- /*
- * Check for devices with hard-wired IRQs.
- */
- irq = orion5x_pci_map_irq(dev, slot, pin);
- if (irq != -1)
- return irq;
-
/*
* PCI IRQs are connected via GPIOs.
*/
if (slot == TSP2_PCI_SLOT0_OFFS)
return gpio_to_irq(TSP2_PCI_SLOT0_IRQ_PIN);
-
return -1;
}
-static struct hw_pci tsp2_pci __initdata = {
- .nr_controllers = 2,
+static const struct orion_pci_platform_data tsp2_pci_data __initconst = {
.preinit = tsp2_pci_preinit,
+ .map_irq = tsp2_pci_map_irq,
+};
+
+static struct hw_pci tsp2_pci __initdata = {
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
- .map_irq = tsp2_pci_map_irq,
+ .map_irq = orion5x_pci_map_irq,
};
static int __init tsp2_pci_init(void)
@@ -354,6 +349,9 @@
/* register Terastation Pro II specific power-off method */
pm_power_off = tsp2_power_off;
+
+ platform_device_register_data(NULL, "orion-pci", -1, &tsp2_pci_data,
+ sizeof(tsp2_pci_data));
}
MACHINE_START(TERASTATION_PRO2, "Buffalo Terastation Pro II/Live")
diff --git a/arch/arm/mach-orion5x/ts209-setup.c b/arch/arm/mach-orion5x/ts209-setup.c
index c725b7c..1f394101 100644
--- a/arch/arm/mach-orion5x/ts209-setup.c
+++ b/arch/arm/mach-orion5x/ts209-setup.c
@@ -11,6 +11,7 @@
#include <linux/gpio.h>
#include <linux/kernel.h>
#include <linux/init.h>
+#include <linux/platform_data/pci-orion.h>
#include <linux/platform_device.h>
#include <linux/pci.h>
#include <linux/irq.h>
@@ -142,18 +143,8 @@
}
}
-static int __init qnap_ts209_pci_map_irq(const struct pci_dev *dev, u8 slot,
- u8 pin)
+static int qnap_ts209_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
- int irq;
-
- /*
- * Check for devices with hard-wired IRQs.
- */
- irq = orion5x_pci_map_irq(dev, slot, pin);
- if (irq != -1)
- return irq;
-
/*
* PCI IRQs are connected via GPIOs.
*/
@@ -167,12 +158,16 @@
}
}
-static struct hw_pci qnap_ts209_pci __initdata = {
- .nr_controllers = 2,
+static const struct orion_pci_platform_data qnap_ts209_pci_data __initconst = {
.preinit = qnap_ts209_pci_preinit,
+ .map_irq = qnap_ts209_pci_map_irq,
+};
+
+static struct hw_pci qnap_ts209_pci __initdata = {
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
- .map_irq = qnap_ts209_pci_map_irq,
+ .map_irq = orion5x_pci_map_irq,
};
static int __init qnap_ts209_pci_init(void)
@@ -319,6 +314,9 @@
/* register tsx09 specific power-off method */
pm_power_off = qnap_tsx09_power_off;
+
+ platform_device_register_data(NULL, "orion-pci", -1, &qnap_ts209_pci_data,
+ sizeof(qnap_ts209_pci_data));
}
MACHINE_START(TS209, "QNAP TS-109/TS-209")
diff --git a/arch/arm/mach-orion5x/ts409-setup.c b/arch/arm/mach-orion5x/ts409-setup.c
index cf2ab53..f33df16 100644
--- a/arch/arm/mach-orion5x/ts409-setup.c
+++ b/arch/arm/mach-orion5x/ts409-setup.c
@@ -120,29 +120,11 @@
* PCI
****************************************************************************/
-static int __init qnap_ts409_pci_map_irq(const struct pci_dev *dev, u8 slot,
- u8 pin)
-{
- int irq;
-
- /*
- * Check for devices with hard-wired IRQs.
- */
- irq = orion5x_pci_map_irq(dev, slot, pin);
- if (irq != -1)
- return irq;
-
- /*
- * PCI isn't used on the TS-409
- */
- return -1;
-}
-
static struct hw_pci qnap_ts409_pci __initdata = {
- .nr_controllers = 2,
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
- .map_irq = qnap_ts409_pci_map_irq,
+ .map_irq = orion5x_pci_map_irq,
};
static int __init qnap_ts409_pci_init(void)
diff --git a/arch/arm/mach-orion5x/wnr854t-setup.c b/arch/arm/mach-orion5x/wnr854t-setup.c
index 80a56ee..54f7bf7e 100644
--- a/arch/arm/mach-orion5x/wnr854t-setup.c
+++ b/arch/arm/mach-orion5x/wnr854t-setup.c
@@ -8,6 +8,7 @@
#include <linux/gpio.h>
#include <linux/kernel.h>
#include <linux/init.h>
+#include <linux/platform_data/pci-orion.h>
#include <linux/platform_device.h>
#include <linux/pci.h>
#include <linux/irq.h>
@@ -111,6 +112,22 @@
.chip = &wnr854t_switch_chip_data,
};
+static int wnr854t_pci_map_irq(const struct pci_dev *dev, u8 slot,
+ u8 pin)
+{
+ /*
+ * Mini-PCI slot.
+ */
+ if (slot == 7)
+ return gpio_to_irq(4);
+
+ return -1;
+}
+
+static const struct orion_pci_platform_data wnr854t_pci_data __initconst = {
+ .map_irq = wnr854t_pci_map_irq,
+};
+
static void __init wnr854t_init(void)
{
/*
@@ -132,34 +149,15 @@
WNR854T_NOR_BOOT_BASE,
WNR854T_NOR_BOOT_SIZE);
platform_device_register(&wnr854t_nor_flash);
-}
-
-static int __init wnr854t_pci_map_irq(const struct pci_dev *dev, u8 slot,
- u8 pin)
-{
- int irq;
-
- /*
- * Check for devices with hard-wired IRQs.
- */
- irq = orion5x_pci_map_irq(dev, slot, pin);
- if (irq != -1)
- return irq;
-
- /*
- * Mini-PCI slot.
- */
- if (slot == 7)
- return gpio_to_irq(4);
-
- return -1;
+ platform_device_register_data(NULL, "orion-pci", -1, &wnr854t_pci_data,
+ sizeof(wnr854t_pci_data));
}
static struct hw_pci wnr854t_pci __initdata = {
- .nr_controllers = 2,
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
- .map_irq = wnr854t_pci_map_irq,
+ .map_irq = orion5x_pci_map_irq,
};
static int __init wnr854t_pci_init(void)
diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
index 670e30d..87a2b87 100644
--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
@@ -8,6 +8,7 @@
#include <linux/gpio.h>
#include <linux/kernel.h>
#include <linux/init.h>
+#include <linux/platform_data/pci-orion.h>
#include <linux/platform_device.h>
#include <linux/pci.h>
#include <linux/irq.h>
@@ -196,6 +197,21 @@
.chip = &wrt350n_v2_switch_chip_data,
};
+static int wrt350n_v2_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+{
+ /*
+ * Mini-PCI slot.
+ */
+ if (slot == 7)
+ return gpio_to_irq(4);
+
+ return -1;
+}
+
+static const struct orion_pci_platform_data wrt350n_v2_pci_data = {
+ .map_irq = wrt350n_v2_pci_map_irq,
+};
+
static void __init wrt350n_v2_init(void)
{
/*
@@ -220,34 +236,15 @@
platform_device_register(&wrt350n_v2_nor_flash);
platform_device_register(&wrt350n_v2_leds);
platform_device_register(&wrt350n_v2_button_device);
-}
-
-static int __init wrt350n_v2_pci_map_irq(const struct pci_dev *dev, u8 slot,
- u8 pin)
-{
- int irq;
-
- /*
- * Check for devices with hard-wired IRQs.
- */
- irq = orion5x_pci_map_irq(dev, slot, pin);
- if (irq != -1)
- return irq;
-
- /*
- * Mini-PCI slot.
- */
- if (slot == 7)
- return gpio_to_irq(4);
-
- return -1;
+ platform_device_register_data(NULL, "orion-pci", -1, &wrt350n_v2_pci_data,
+ sizeof(wrt350n_v2_pci_data));
}
static struct hw_pci wrt350n_v2_pci __initdata = {
- .nr_controllers = 2,
+ .nr_controllers = 1,
.setup = orion5x_pci_sys_setup,
.scan = orion5x_pci_sys_scan_bus,
- .map_irq = wrt350n_v2_pci_map_irq,
+ .map_irq = orion5x_pci_map_irq,
};
static int __init wrt350n_v2_pci_init(void)