From e6a5f54f743435e08ac6288716a905c0dd3d4dfd Mon Sep 17 00:00:00 2001 From: mb Date: Tue, 19 Feb 2008 01:32:06 +0000 Subject: [PATCH] ssb: Workaround: Need subsys_initcall to be able to register a PCI bus. This needs a different fix, but use this workaround for now. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@10491 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches-2.6.23/610-ssb-watchdog-fix.patch | 28 +++++++++++-------- .../patches-2.6.23/620-ssb-modinit-fix.patch | 15 ++++++++++ 2 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 target/linux/brcm47xx/patches-2.6.23/620-ssb-modinit-fix.patch diff --git a/target/linux/brcm47xx/patches-2.6.23/610-ssb-watchdog-fix.patch b/target/linux/brcm47xx/patches-2.6.23/610-ssb-watchdog-fix.patch index 55ba9a02f..ece1b1722 100644 --- a/target/linux/brcm47xx/patches-2.6.23/610-ssb-watchdog-fix.patch +++ b/target/linux/brcm47xx/patches-2.6.23/610-ssb-watchdog-fix.patch @@ -1,7 +1,9 @@ ---- a/drivers/ssb/driver_mipscore.c 2007-12-06 08:07:00.000000000 +0100 -+++ b/drivers/ssb/driver_mipscore.c 2007-12-06 10:27:43.000000000 +0100 -@@ -31,6 +31,19 @@ - ssb_write32(extif->dev, offset, value); +Index: linux-2.6.23.16/drivers/ssb/driver_mipscore.c +=================================================================== +--- linux-2.6.23.16.orig/drivers/ssb/driver_mipscore.c 2008-02-19 02:13:15.000000000 +0100 ++++ linux-2.6.23.16/drivers/ssb/driver_mipscore.c 2008-02-19 02:13:17.000000000 +0100 +@@ -31,6 +31,19 @@ static inline void mips_write32(struct s + ssb_write32(mcore->dev, offset, value); } +/* Set chip watchdog reset timer to fire in 'ticks' backplane cycles */ @@ -20,9 +22,11 @@ static const u32 ipsflag_irq_mask[] = { 0, SSB_IPSFLAG_IRQ1, ---- a/include/linux/ssb/ssb_driver_mips.h 2007-12-06 08:07:00.000000000 +0100 -+++ b/include/linux/ssb/ssb_driver_mips.h 2007-12-06 10:32:36.000000000 +0100 -@@ -30,6 +30,8 @@ +Index: linux-2.6.23.16/include/linux/ssb/ssb_driver_mips.h +=================================================================== +--- linux-2.6.23.16.orig/include/linux/ssb/ssb_driver_mips.h 2008-02-19 02:13:15.000000000 +0100 ++++ linux-2.6.23.16/include/linux/ssb/ssb_driver_mips.h 2008-02-19 02:13:17.000000000 +0100 +@@ -30,6 +30,8 @@ extern u32 ssb_cpu_clock(struct ssb_mips extern unsigned int ssb_mips_irq(struct ssb_device *dev); @@ -31,9 +35,11 @@ #else /* CONFIG_SSB_DRIVER_MIPS */ ---- a/arch/mips/bcm947xx/setup.c 2007-12-06 08:07:00.000000000 +0100 -+++ b/arch/mips/bcm947xx/setup.c 2007-12-06 10:33:39.000000000 +0100 -@@ -55,7 +55,7 @@ +Index: linux-2.6.23.16/arch/mips/bcm947xx/setup.c +=================================================================== +--- linux-2.6.23.16.orig/arch/mips/bcm947xx/setup.c 2008-02-19 02:13:15.000000000 +0100 ++++ linux-2.6.23.16/arch/mips/bcm947xx/setup.c 2008-02-19 02:13:17.000000000 +0100 +@@ -55,7 +55,7 @@ static void bcm47xx_machine_restart(char */ /* Set the watchdog timer to reset immediately */ @@ -42,7 +48,7 @@ while (1) cpu_relax(); } -@@ -64,7 +64,7 @@ +@@ -64,7 +64,7 @@ static void bcm47xx_machine_halt(void) { /* Disable interrupts and watchdog and spin forever */ local_irq_disable(); diff --git a/target/linux/brcm47xx/patches-2.6.23/620-ssb-modinit-fix.patch b/target/linux/brcm47xx/patches-2.6.23/620-ssb-modinit-fix.patch new file mode 100644 index 000000000..0fb00f103 --- /dev/null +++ b/target/linux/brcm47xx/patches-2.6.23/620-ssb-modinit-fix.patch @@ -0,0 +1,15 @@ +Index: linux-2.6.23.16/drivers/ssb/main.c +=================================================================== +--- linux-2.6.23.16.orig/drivers/ssb/main.c 2008-02-19 02:24:48.000000000 +0100 ++++ linux-2.6.23.16/drivers/ssb/main.c 2008-02-19 02:27:59.000000000 +0100 +@@ -1164,7 +1164,9 @@ static int __init ssb_modinit(void) + /* ssb must be initialized after PCI but before the ssb drivers. + * That means we must use some initcall between subsys_initcall + * and device_initcall. */ +-fs_initcall(ssb_modinit); ++//FIXME on embedded we need to be early to make sure we can register ++// a new PCI bus, if needed. ++subsys_initcall(ssb_modinit); + + static void __exit ssb_modexit(void) + {