X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fcns3xxx%2Fpatches-3.3%2F480-cns3xxx_pcie_early_init.patch;fp=target%2Flinux%2Fcns3xxx%2Fpatches-3.3%2F480-cns3xxx_pcie_early_init.patch;h=cd288f61bbc7bf0283c3d9158eb73add6bdd5f41;hb=42fc31c3969f22ab2eb9ccea31338a6fd11e836e;hp=dba0da84386861ec9d3611d16e0e3f14d867cdd3;hpb=50d37a89fe99a2aa1ced3737ded240412ad2b599;p=openwrt.git diff --git a/target/linux/cns3xxx/patches-3.3/480-cns3xxx_pcie_early_init.patch b/target/linux/cns3xxx/patches-3.3/480-cns3xxx_pcie_early_init.patch index dba0da8438..cd288f61bb 100644 --- a/target/linux/cns3xxx/patches-3.3/480-cns3xxx_pcie_early_init.patch +++ b/target/linux/cns3xxx/patches-3.3/480-cns3xxx_pcie_early_init.patch @@ -1,14 +1,6 @@ --- a/arch/arm/mach-cns3xxx/cns3420vb.c +++ b/arch/arm/mach-cns3xxx/cns3420vb.c -@@ -203,7 +203,6 @@ static void __init cns3420_init(void) - NR_IRQS_CNS3XXX); - cns3xxx_gpio_init(32, 32, CNS3XXX_GPIOB_BASE_VIRT, IRQ_CNS3XXX_GPIOB, - NR_IRQS_CNS3XXX + 32); -- cns3xxx_pcie_init(0x3); - - pm_power_off = cns3xxx_power_off; - } -@@ -220,11 +219,21 @@ static struct map_desc cns3420_io_desc[] +@@ -218,11 +218,21 @@ static struct map_desc cns3420_io_desc[] static void __init cns3420_map_io(void) { cns3xxx_common_init(); @@ -32,18 +24,16 @@ .map_io = cns3420_map_io, --- a/arch/arm/mach-cns3xxx/core.h +++ b/arch/arm/mach-cns3xxx/core.h -@@ -12,8 +12,8 @@ +@@ -12,6 +12,8 @@ #define __CNS3XXX_CORE_H extern struct sys_timer cns3xxx_timer; --extern int cns3xxx_pcie_init(u8 bitmap); --extern void cns3xxx_pcie_iotable_init(u8 bitmap); +extern void cns3xxx_pcie_iotable_init(void); + #ifdef CONFIG_CACHE_L2X0 void __init cns3xxx_l2x0_init(void); -@@ -23,6 +23,7 @@ static inline void cns3xxx_l2x0_init(voi +@@ -21,6 +23,7 @@ static inline void cns3xxx_l2x0_init(voi void __init cns3xxx_common_init(void); void __init cns3xxx_init_irq(void); @@ -53,42 +43,32 @@ --- a/arch/arm/mach-cns3xxx/pcie.c +++ b/arch/arm/mach-cns3xxx/pcie.c -@@ -456,23 +456,18 @@ static int cns3xxx_pcie_abort_handler(un +@@ -456,7 +456,18 @@ static int cns3xxx_pcie_abort_handler(un return 0; } --void __init cns3xxx_pcie_iotable_init(u8 bitmap) +-static int __init cns3xxx_pcie_init(void) + +void __init cns3xxx_pcie_iotable_init() - { -- static int _iotable_init = 0; - int i; - -- bitmap &= ~_iotable_init; - for (i = 0; i < ARRAY_SIZE(cns3xxx_pcie); i++) { -- if (!(bitmap & (1 << i))) -- continue; -- - iotable_init(cns3xxx_pcie[i].cfg_bases, - ARRAY_SIZE(cns3xxx_pcie[i].cfg_bases)); - } -- _iotable_init |= bitmap; - } - --int __init cns3xxx_pcie_init(u8 bitmap) ++{ ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(cns3xxx_pcie); i++) { ++ iotable_init(cns3xxx_pcie[i].cfg_bases, ++ ARRAY_SIZE(cns3xxx_pcie[i].cfg_bases)); ++ } ++} ++ +int __init cns3xxx_pcie_init(void) { int i; -@@ -482,14 +477,12 @@ int __init cns3xxx_pcie_init(u8 bitmap) - hook_fault_code(16 + 6, cns3xxx_pcie_abort_handler, SIGBUS, 0, +@@ -467,15 +478,14 @@ static int __init cns3xxx_pcie_init(void "imprecise external abort"); -- cns3xxx_pcie_iotable_init(bitmap); for (i = 0; i < ARRAY_SIZE(cns3xxx_pcie); i++) { -- if (!(bitmap & (1 << i))) -- continue; -- +- iotable_init(cns3xxx_pcie[i].cfg_bases, +- ARRAY_SIZE(cns3xxx_pcie[i].cfg_bases)); cns3xxx_pcie_check_link(&cns3xxx_pcie[i]); - cns3xxx_pcie_hw_init(&cns3xxx_pcie[i]); - pci_common_init(&cns3xxx_pcie[i].hw_pci); @@ -99,3 +79,7 @@ } pci_assign_unassigned_resources(); + + return 0; + } +-device_initcall(cns3xxx_pcie_init);