diff options
Diffstat (limited to 'target/linux/generic/patches-2.6.35/975-ssb_update.patch')
-rw-r--r-- | target/linux/generic/patches-2.6.35/975-ssb_update.patch | 63 |
1 files changed, 18 insertions, 45 deletions
diff --git a/target/linux/generic/patches-2.6.35/975-ssb_update.patch b/target/linux/generic/patches-2.6.35/975-ssb_update.patch index 8c2ab86..c41069c 100644 --- a/target/linux/generic/patches-2.6.35/975-ssb_update.patch +++ b/target/linux/generic/patches-2.6.35/975-ssb_update.patch @@ -1,5 +1,13 @@ ---- a/drivers/net/b44.c -+++ b/drivers/net/b44.c +--- + drivers/net/b44.c | 146 +++++++++++++++------------------ + drivers/ssb/driver_chipcommon.c | 24 +++++ + drivers/ssb/driver_chipcommon_pmu.c | 17 +-- + drivers/ssb/main.c | 76 ----------------- + include/linux/ssb/ssb.h | 159 ------------------------------------ + 5 files changed, 104 insertions(+), 318 deletions(-) + +--- linux-2.6.35.3.orig/drivers/net/b44.c ++++ linux-2.6.35.3/drivers/net/b44.c @@ -135,7 +135,6 @@ static void b44_init_rings(struct b44 *) static void b44_init_hw(struct b44 *, int); @@ -315,8 +323,8 @@ dma_desc_sync_size = max_t(unsigned int, dma_desc_align_size, sizeof(struct dma_desc)); err = b44_pci_init(); ---- a/drivers/ssb/driver_chipcommon.c -+++ b/drivers/ssb/driver_chipcommon.c +--- linux-2.6.35.3.orig/drivers/ssb/driver_chipcommon.c ++++ linux-2.6.35.3/drivers/ssb/driver_chipcommon.c @@ -209,6 +209,24 @@ static void chipco_powercontrol_init(str } } @@ -355,16 +363,8 @@ if (!(cc->capabilities & SSB_CHIPCO_CAP_PCTL)) return; -@@ -235,6 +259,7 @@ void ssb_chipcommon_init(struct ssb_chip - return; /* We don't have a ChipCommon */ - if (cc->dev->id.revision >= 11) - cc->status = chipco_read32(cc, SSB_CHIPCO_CHIPSTAT); -+ ssb_dprintk(KERN_INFO PFX "chipcommon status is 0x%x\n", cc->status); - ssb_pmu_init(cc); - chipco_powercontrol_init(cc); - ssb_chipco_set_clockmode(cc, SSB_CLKMODE_FAST); ---- a/drivers/ssb/driver_chipcommon_pmu.c -+++ b/drivers/ssb/driver_chipcommon_pmu.c +--- linux-2.6.35.3.orig/drivers/ssb/driver_chipcommon_pmu.c ++++ linux-2.6.35.3/drivers/ssb/driver_chipcommon_pmu.c @@ -502,9 +502,9 @@ static void ssb_pmu_resources_init(struc chipco_write32(cc, SSB_CHIPCO_PMU_MAXRES_MSK, max_msk); } @@ -398,8 +398,8 @@ ssb_pmu_pll_init(cc); ssb_pmu_resources_init(cc); } ---- a/drivers/ssb/main.c -+++ b/drivers/ssb/main.c +--- linux-2.6.35.3.orig/drivers/ssb/main.c ++++ linux-2.6.35.3/drivers/ssb/main.c @@ -486,6 +486,7 @@ static int ssb_devices_register(struct s #ifdef CONFIG_SSB_PCIHOST sdev->irq = bus->host_pci->irq; @@ -497,35 +497,8 @@ int ssb_bus_may_powerdown(struct ssb_bus *bus) { struct ssb_chipcommon *cc; ---- a/drivers/ssb/pci.c -+++ b/drivers/ssb/pci.c -@@ -626,11 +626,22 @@ static int ssb_pci_sprom_get(struct ssb_ - return -ENODEV; - } - if (bus->chipco.dev) { /* can be unavailible! */ -- bus->sprom_offset = (bus->chipco.dev->id.revision < 31) ? -- SSB_SPROM_BASE1 : SSB_SPROM_BASE31; -+ /* -+ * get SPROM offset: SSB_SPROM_BASE1 except for -+ * chipcommon rev >= 31 or chip ID is 0x4312 and -+ * chipcommon status & 3 == 2 -+ */ -+ if (bus->chipco.dev->id.revision >= 31) -+ bus->sprom_offset = SSB_SPROM_BASE31; -+ else if (bus->chip_id == 0x4312 && -+ (bus->chipco.status & 0x03) == 2) -+ bus->sprom_offset = SSB_SPROM_BASE31; -+ else -+ bus->sprom_offset = SSB_SPROM_BASE1; - } else { - bus->sprom_offset = SSB_SPROM_BASE1; - } -+ ssb_dprintk(KERN_INFO PFX "SPROM offset is 0x%x\n", bus->sprom_offset); - - buf = kcalloc(SSB_SPROMSIZE_WORDS_R123, sizeof(u16), GFP_KERNEL); - if (!buf) ---- a/include/linux/ssb/ssb.h -+++ b/include/linux/ssb/ssb.h +--- linux-2.6.35.3.orig/include/linux/ssb/ssb.h ++++ linux-2.6.35.3/include/linux/ssb/ssb.h @@ -167,7 +167,7 @@ struct ssb_device { * is an optimization. */ const struct ssb_bus_ops *ops; |