[kernel] r16077 - in dists/sid/linux-2.6/debian/patches: bugfix/all series
Ben Hutchings
benh at alioth.debian.org
Wed Aug 4 01:22:55 UTC 2010
Author: benh
Date: Wed Aug 4 01:22:52 2010
New Revision: 16077
Log:
Re-add the last of the ssb SPROM fixes
Added:
dists/sid/linux-2.6/debian/patches/bugfix/all/ssb-Handle-alternate-SSPROM-location.patch
Modified:
dists/sid/linux-2.6/debian/patches/series/19
Added: dists/sid/linux-2.6/debian/patches/bugfix/all/ssb-Handle-alternate-SSPROM-location.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/ssb-Handle-alternate-SSPROM-location.patch Wed Aug 4 01:22:52 2010 (r16077)
@@ -0,0 +1,67 @@
+From 9d1ac34ec3a67713308ae0883c3359c557f14d17 Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger at lwfinger.net>
+Date: Fri, 14 May 2010 22:08:58 -0500
+Subject: [PATCH] ssb: Handle alternate SSPROM location
+
+In kernel Bugzilla #15825 (2 users), in a wireless mailing list thread
+(http://lists.infradead.org/pipermail/b43-dev/2010-May/000124.html), and on a
+netbook owned by John Linville
+(http://marc.info/?l=linux-wireless&m=127230751408818&w=4), there are reports
+of ssb failing to detect an SPROM at the normal location. After studying the
+MMIO trace dump for the Broadcom wl driver, it was determined that the affected
+boxes had a relocated SPROM.
+
+This patch fixes all systems that have reported this problem.
+
+Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
+Cc: Stable <stable at kernel.org>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ drivers/ssb/driver_chipcommon.c | 1 +
+ drivers/ssb/pci.c | 15 +++++++++++++--
+ 2 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/ssb/driver_chipcommon.c b/drivers/ssb/driver_chipcommon.c
+index bda8514..7c031fd 100644
+--- a/drivers/ssb/driver_chipcommon.c
++++ b/drivers/ssb/driver_chipcommon.c
+@@ -259,6 +259,7 @@ void ssb_chipcommon_init(struct ssb_chipcommon *cc)
+ 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);
+diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c
+index 6dcda86..6e88d2b 100644
+--- a/drivers/ssb/pci.c
++++ b/drivers/ssb/pci.c
+@@ -626,11 +626,22 @@ static int ssb_pci_sprom_get(struct ssb_bus *bus,
+ 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)
+--
+1.7.1
+
Modified: dists/sid/linux-2.6/debian/patches/series/19
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/19 Tue Aug 3 14:21:58 2010 (r16076)
+++ dists/sid/linux-2.6/debian/patches/series/19 Wed Aug 4 01:22:52 2010 (r16077)
@@ -26,3 +26,4 @@
+ bugfix/all/ssb-Look-for-SPROM-at-different-offset-on-higher-rev.patch
+ bugfix/all/ssb-Use-relative-offsets-for-SPROM.patch
+ bugfix/all/ssb-fix-NULL-ptr-deref-when-pcihost_wrapper-is-used.patch
++ bugfix/all/ssb-Handle-alternate-SSPROM-location.patch
More information about the Kernel-svn-changes
mailing list