aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/ssb/ssb.h
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2010-03-31 15:39:35 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-04-26 13:50:54 -0400
commitd53cdbb94a52a920d5420ed64d986c3523a56743 (patch)
tree39b1026c953de14ce6b14417cf9bcb66992909f0 /include/linux/ssb/ssb.h
parent672724403b42da1d276c6cf811e8e34d15efd964 (diff)
ssb: do not read SPROM if it does not exist
Attempting to read registers that don't exist on the SSB bus can cause hangs on some boxes. At least some b43 devices are 'in the wild' that don't have SPROMs at all. When the SSB bus support loads, it attempts to read these (non-existant) SPROMs and causes hard hangs on the box -- no console output, etc. This patch adds some intelligence to determine whether or not the SPROM is present before attempting to read it. This avoids those hard hangs on those devices with no SPROM attached to their SSB bus. The SSB-attached devices (e.g. b43, et al.) won't work, but at least the box will survive to test further patches. :-) Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Cc: Larry Finger <Larry.Finger@lwfinger.net> Cc: Michael Buesch <mb@bu3sch.de>
Diffstat (limited to 'include/linux/ssb/ssb.h')
-rw-r--r--include/linux/ssb/ssb.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h
index 24f988547361..3b4da233e31d 100644
--- a/include/linux/ssb/ssb.h
+++ b/include/linux/ssb/ssb.h
@@ -394,6 +394,9 @@ extern int ssb_bus_sdiobus_register(struct ssb_bus *bus,
394 394
395extern void ssb_bus_unregister(struct ssb_bus *bus); 395extern void ssb_bus_unregister(struct ssb_bus *bus);
396 396
397/* Does the device have an SPROM? */
398extern bool ssb_is_sprom_available(struct ssb_bus *bus);
399
397/* Set a fallback SPROM. 400/* Set a fallback SPROM.
398 * See kdoc at the function definition for complete documentation. */ 401 * See kdoc at the function definition for complete documentation. */
399extern int ssb_arch_set_fallback_sprom(const struct ssb_sprom *sprom); 402extern int ssb_arch_set_fallback_sprom(const struct ssb_sprom *sprom);