aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bcma/sprom.c
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2012-01-31 00:03:37 +0100
committerJohn W. Linville <linville@tuxdriver.com>2012-02-06 14:53:06 -0500
commitd6865dcc58f252480515101fd13532f0fc420b53 (patch)
tree4e8ee3ef60d44b81d31337925c018f19929ea7f5 /drivers/bcma/sprom.c
parent8f9ada4fa1926e540b1562cb9bacb3e51a698c35 (diff)
downloadkernel_goldelico_gta04-d6865dcc58f252480515101fd13532f0fc420b53.zip
kernel_goldelico_gta04-d6865dcc58f252480515101fd13532f0fc420b53.tar.gz
kernel_goldelico_gta04-d6865dcc58f252480515101fd13532f0fc420b53.tar.bz2
bcma: add extra sprom check
This check is needed on the BCM43224 device as it says in the capabilities it has an sprom but is extra check says it has not. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/bcma/sprom.c')
-rw-r--r--drivers/bcma/sprom.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/bcma/sprom.c b/drivers/bcma/sprom.c
index e35134f..ca77525 100644
--- a/drivers/bcma/sprom.c
+++ b/drivers/bcma/sprom.c
@@ -250,6 +250,7 @@ int bcma_sprom_get(struct bcma_bus *bus)
{
u16 offset;
u16 *sprom;
+ u32 sromctrl;
int err = 0;
if (!bus->drv_cc.core)
@@ -258,6 +259,12 @@ int bcma_sprom_get(struct bcma_bus *bus)
if (!(bus->drv_cc.capabilities & BCMA_CC_CAP_SPROM))
return -ENOENT;
+ if (bus->drv_cc.core->id.rev >= 32) {
+ sromctrl = bcma_read32(bus->drv_cc.core, BCMA_CC_SROM_CONTROL);
+ if (!(sromctrl & BCMA_CC_SROM_CONTROL_PRESENT))
+ return -ENOENT;
+ }
+
sprom = kcalloc(SSB_SPROMSIZE_WORDS_R4, sizeof(u16),
GFP_KERNEL);
if (!sprom)