diff options
Diffstat (limited to 'target/linux/brcm47xx')
| -rw-r--r-- | target/linux/brcm47xx/patches-2.6.23/210-ssb_fixes.patch | 292 | 
1 files changed, 0 insertions, 292 deletions
| diff --git a/target/linux/brcm47xx/patches-2.6.23/210-ssb_fixes.patch b/target/linux/brcm47xx/patches-2.6.23/210-ssb_fixes.patch deleted file mode 100644 index ce3a007b6..000000000 --- a/target/linux/brcm47xx/patches-2.6.23/210-ssb_fixes.patch +++ /dev/null @@ -1,292 +0,0 @@ -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 01:35:53.000000000 +0100 -+++ linux-2.6.23.16/drivers/ssb/driver_mipscore.c	2008-02-19 02:01:16.000000000 +0100 -@@ -222,3 +222,5 @@ void ssb_mipscore_init(struct ssb_mipsco - 	ssb_mips_serial_init(mcore); - 	ssb_mips_flash_detect(mcore); - } -+ -+EXPORT_SYMBOL(ssb_mips_irq); -Index: linux-2.6.23.16/include/linux/ssb/ssb_driver_chipcommon.h -=================================================================== ---- linux-2.6.23.16.orig/include/linux/ssb/ssb_driver_chipcommon.h	2008-02-19 01:35:53.000000000 +0100 -+++ linux-2.6.23.16/include/linux/ssb/ssb_driver_chipcommon.h	2008-02-19 02:01:10.000000000 +0100 -@@ -382,11 +382,45 @@ extern void ssb_chipco_set_clockmode(str - extern void ssb_chipco_watchdog_timer_set(struct ssb_chipcommon *cc, - 					  u32 ticks); -  --u32 ssb_chipco_gpio_in(struct ssb_chipcommon *cc, u32 mask); -+/* GPIO functions */ -+static inline u32 ssb_chipco_gpio_in(struct ssb_chipcommon *cc, -+                                     u32 mask) -+{ -+	return ssb_read32(cc->dev, SSB_CHIPCO_GPIOIN) & mask; -+} -  --void ssb_chipco_gpio_out(struct ssb_chipcommon *cc, u32 mask, u32 value); -+static inline u32 ssb_chipco_gpio_out(struct ssb_chipcommon *cc, -+                                      u32 mask, u32 value) -+{ -+	return ssb_write32_masked(cc->dev, SSB_CHIPCO_GPIOOUT, mask, value); -+} -  --void ssb_chipco_gpio_outen(struct ssb_chipcommon *cc, u32 mask, u32 value); -+static inline u32 ssb_chipco_gpio_outen(struct ssb_chipcommon *cc, -+                                        u32 mask, u32 value) -+{ -+	return ssb_write32_masked(cc->dev, SSB_CHIPCO_GPIOOUTEN, mask, value); -+} -+ -+static inline u32 ssb_chipco_gpio_control(struct ssb_chipcommon *cc, -+                                          u32 mask, u32 value) -+{ -+	return ssb_write32_masked(cc->dev, SSB_CHIPCO_GPIOCTL, mask, value); -+} -+ -+static inline u32 ssb_chipco_gpio_intmask(struct ssb_chipcommon *cc, -+                                          u32 mask, u32 value) -+{ -+	return ssb_write32_masked(cc->dev, SSB_CHIPCO_GPIOIRQ, mask, value); -+} -+ -+static inline u32 ssb_chipco_gpio_polarity(struct ssb_chipcommon *cc, -+                                           u32 mask, u32 value) -+{ -+	return ssb_write32_masked(cc->dev, SSB_CHIPCO_GPIOPOL, mask, value); -+} -+/* TODO: GPIO reservation */ -+ -+extern int ssb_chipco_watchdog(struct ssb_chipcommon *cc, uint ticks); -  - #ifdef CONFIG_SSB_SERIAL - extern int ssb_chipco_serial_init(struct ssb_chipcommon *cc, -Index: linux-2.6.23.16/include/linux/ssb/ssb_driver_extif.h -=================================================================== ---- linux-2.6.23.16.orig/include/linux/ssb/ssb_driver_extif.h	2008-02-19 01:35:53.000000000 +0100 -+++ linux-2.6.23.16/include/linux/ssb/ssb_driver_extif.h	2008-02-19 01:39:40.000000000 +0100 -@@ -153,7 +153,6 @@ - #define SSB_EXTIF_WATCHDOG_CLK		48000000	/* Hz */ -  -  -- - #ifdef CONFIG_SSB_DRIVER_EXTIF -  - struct ssb_extif { -@@ -171,17 +170,42 @@ extern void ssb_extif_get_clockcontrol(s - extern void ssb_extif_timing_init(struct ssb_extif *extif, - 				  unsigned long ns); -  --u32 ssb_extif_gpio_in(struct ssb_extif *extif, u32 mask); -- --void ssb_extif_gpio_out(struct ssb_extif *extif, u32 mask, u32 value); -- --void ssb_extif_gpio_outen(struct ssb_extif *extif, u32 mask, u32 value); -- - #ifdef CONFIG_SSB_SERIAL - extern int ssb_extif_serial_init(struct ssb_extif *extif, - 				 struct ssb_serial_port *ports); - #endif /* CONFIG_SSB_SERIAL */ -  -+/* GPIO functions */ -+static inline u32 ssb_extif_gpio_in(struct ssb_extif *extif, -+                                    u32 mask) -+{ -+	return ssb_read32(extif->dev, SSB_EXTIF_GPIO_IN) & mask; -+} -+ -+static inline u32 ssb_extif_gpio_out(struct ssb_extif *extif, -+                                     u32 mask, u32 value) -+{ -+	return ssb_write32_masked(extif->dev, SSB_EXTIF_GPIO_OUT(0), mask, value); -+} -+ -+static inline u32 ssb_extif_gpio_outen(struct ssb_extif *extif, -+                                       u32 mask, u32 value) -+{ -+	return ssb_write32_masked(extif->dev, SSB_EXTIF_GPIO_OUTEN(0), mask, value); -+} -+ -+static inline u32 ssb_extif_gpio_polarity(struct ssb_extif *extif, -+                                          u32 mask, u32 value) -+{ -+	return ssb_write32_masked(extif->dev, SSB_EXTIF_GPIO_INTPOL, mask, value); -+} -+ -+static inline u32 ssb_extif_gpio_intmask(struct ssb_extif *extif, -+                                         u32 mask, u32 value) -+{ -+	return ssb_write32_masked(extif->dev, SSB_EXTIF_GPIO_INTMASK, mask, value); -+} -+ -  - #else /* CONFIG_SSB_DRIVER_EXTIF */ - /* extif disabled */ -Index: linux-2.6.23.16/include/linux/ssb/ssb.h -=================================================================== ---- linux-2.6.23.16.orig/include/linux/ssb/ssb.h	2008-02-19 01:35:53.000000000 +0100 -+++ linux-2.6.23.16/include/linux/ssb/ssb.h	2008-02-19 01:39:40.000000000 +0100 -@@ -217,6 +217,12 @@ enum ssb_bustype { - #define SSB_CHIPPACK_BCM4712M	2	/* Medium 225pin 4712 */ - #define SSB_CHIPPACK_BCM4712L	0	/* Large 340pin 4712 */ -  -+static inline u16 ssb_read16(struct ssb_device *dev, u16 offset); -+static inline u32 ssb_read32(struct ssb_device *dev, u16 offset); -+static inline void ssb_write16(struct ssb_device *dev, u16 offset, u16 value); -+static inline void ssb_write32(struct ssb_device *dev, u16 offset, u32 value); -+static inline u32 ssb_write32_masked(struct ssb_device *dev, u16 offset, u32 mask, u32 value); -+ - #include <linux/ssb/ssb_driver_chipcommon.h> - #include <linux/ssb/ssb_driver_mips.h> - #include <linux/ssb/ssb_driver_extif.h> -@@ -349,6 +355,16 @@ static inline void ssb_write32(struct ss - 	dev->ops->write32(dev, offset, value); - } -  -+static inline u32 ssb_write32_masked(struct ssb_device *dev, -+                                     u16 offset, -+                                     u32 mask, -+                                     u32 value) -+{ -+	value &= mask; -+	value |= ssb_read32(dev, offset) & ~mask; -+	ssb_write32(dev, offset, value); -+	return value; -+} -  - /* Translation (routing) bits that need to be ORed to DMA -  * addresses before they are given to a device. */ -Index: linux-2.6.23.16/drivers/ssb/driver_chipcommon.c -=================================================================== ---- linux-2.6.23.16.orig/drivers/ssb/driver_chipcommon.c	2008-02-19 01:35:53.000000000 +0100 -+++ linux-2.6.23.16/drivers/ssb/driver_chipcommon.c	2008-02-19 02:01:16.000000000 +0100 -@@ -351,21 +351,6 @@ void ssb_chipco_watchdog_timer_set(struc - 	chipco_write32(cc, SSB_CHIPCO_WATCHDOG, ticks); - } -  --u32 ssb_chipco_gpio_in(struct ssb_chipcommon *cc, u32 mask) --{ --	return chipco_read32(cc, SSB_CHIPCO_GPIOIN) & mask; --} -- --void ssb_chipco_gpio_out(struct ssb_chipcommon *cc, u32 mask, u32 value) --{ --	chipco_write32_masked(cc, SSB_CHIPCO_GPIOOUT, mask, value); --} -- --void ssb_chipco_gpio_outen(struct ssb_chipcommon *cc, u32 mask, u32 value) --{ --	chipco_write32_masked(cc, SSB_CHIPCO_GPIOOUTEN, mask, value); --} -- - #ifdef CONFIG_SSB_SERIAL - int ssb_chipco_serial_init(struct ssb_chipcommon *cc, - 			   struct ssb_serial_port *ports) -Index: linux-2.6.23.16/drivers/ssb/driver_extif.c -=================================================================== ---- linux-2.6.23.16.orig/drivers/ssb/driver_extif.c	2008-02-19 01:35:53.000000000 +0100 -+++ linux-2.6.23.16/drivers/ssb/driver_extif.c	2008-02-19 01:39:40.000000000 +0100 -@@ -110,20 +110,4 @@ void ssb_extif_get_clockcontrol(struct s - 	*m = extif_read32(extif, SSB_EXTIF_CLOCK_SB); - } -  --u32 ssb_extif_gpio_in(struct ssb_extif *extif, u32 mask) --{ --	return extif_read32(extif, SSB_EXTIF_GPIO_IN) & mask; --} -- --void ssb_extif_gpio_out(struct ssb_extif *extif, u32 mask, u32 value) --{ --	return extif_write32_masked(extif, SSB_EXTIF_GPIO_OUT(0), --				   mask, value); --} -- --void ssb_extif_gpio_outen(struct ssb_extif *extif, u32 mask, u32 value) --{ --	return extif_write32_masked(extif, SSB_EXTIF_GPIO_OUTEN(0), --				   mask, value); --} -  -Index: linux-2.6.23.16/include/linux/mod_devicetable.h -=================================================================== ---- linux-2.6.23.16.orig/include/linux/mod_devicetable.h	2008-02-19 01:35:53.000000000 +0100 -+++ linux-2.6.23.16/include/linux/mod_devicetable.h	2008-02-19 01:39:40.000000000 +0100 -@@ -340,4 +340,19 @@ struct parisc_device_id { - #define PA_HVERSION_ANY_ID	0xffff - #define PA_SVERSION_ANY_ID	0xffffffff -  -+/* SSB core, see drivers/ssb/ */ -+struct ssb_device_id { -+	__u16	vendor; -+	__u16	coreid; -+	__u8	revision; -+}; -+#define SSB_DEVICE(_vendor, _coreid, _revision)  \ -+	{ .vendor = _vendor, .coreid = _coreid, .revision = _revision, } -+#define SSB_DEVTABLE_END  \ -+	{ 0, }, -+ -+#define SSB_ANY_VENDOR		0xFFFF -+#define SSB_ANY_ID		0xFFFF -+#define SSB_ANY_REV		0xFF -+ - #endif /* LINUX_MOD_DEVICETABLE_H */ -Index: linux-2.6.23.16/drivers/ssb/main.c -=================================================================== ---- linux-2.6.23.16.orig/drivers/ssb/main.c	2008-02-19 01:45:24.000000000 +0100 -+++ linux-2.6.23.16/drivers/ssb/main.c	2008-02-19 02:01:16.000000000 +0100 -@@ -321,14 +321,16 @@ static int ssb_bus_match(struct device * - 	return 0; - } -  --static int ssb_device_uevent(struct device *dev, struct kobj_uevent_env *env) -+static int ssb_device_uevent(struct device *dev, char **envp, -+			     int num_envp, char *buffer, int buffer_size) - { - 	struct ssb_device *ssb_dev = dev_to_ssb_dev(dev); -+	int i = 0, len = 0; -  - 	if (!dev) - 		return -ENODEV; -  --	return add_uevent_var(env, -+	return add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &len, - 			     "MODALIAS=ssb:v%04Xid%04Xrev%02X", - 			     ssb_dev->id.vendor, ssb_dev->id.coreid, - 			     ssb_dev->id.revision); -Index: linux-2.6.23.16/drivers/ssb/scan.c -=================================================================== ---- linux-2.6.23.16.orig/drivers/ssb/scan.c	2008-02-16 19:08:13.000000000 +0100 -+++ linux-2.6.23.16/drivers/ssb/scan.c	2008-02-19 01:56:02.000000000 +0100 -@@ -391,12 +391,14 @@ int ssb_bus_scan(struct ssb_bus *bus, - 			if (bus->bustype == SSB_BUSTYPE_PCI) { - 				/* Ignore PCI cores on PCI-E cards. - 				 * Ignore PCI-E cores on PCI cards. */ -+				//FIXME kernel 2.6.23 doesn't have is_pcie. Add this check back when updating to 2.6.24 or later. - 				if (dev->id.coreid == SSB_DEV_PCI) { --					if (bus->host_pci->is_pcie) --						continue; -+//FIXME					if (bus->host_pci->is_pcie) -+//FIXME						continue; - 				} else { --					if (!bus->host_pci->is_pcie) --						continue; -+					continue; //FIXME -+//FIXME					if (!bus->host_pci->is_pcie) -+//FIXME						continue; - 				} - 			} - 			if (bus->pcicore.dev) { -Index: linux-2.6.23.16/drivers/ssb/driver_pcicore.c -=================================================================== ---- linux-2.6.23.16.orig/drivers/ssb/driver_pcicore.c	2008-02-19 02:01:11.000000000 +0100 -+++ linux-2.6.23.16/drivers/ssb/driver_pcicore.c	2008-02-19 02:01:32.000000000 +0100 -@@ -362,7 +362,7 @@ static int pcicore_is_in_hostmode(struct - 	    chipid_top != 0x5300) - 		return 0; -  --	if (bus->sprom.r1.boardflags_lo & SSB_PCICORE_BFL_NOPCI) -+	if (bus->sprom.boardflags_lo & SSB_PCICORE_BFL_NOPCI) - 		return 0; -  - 	/* The 200-pin BCM4712 package does not bond out PCI. Even when | 
