On 02/28/2012 12:56 AM, Hauke Mehrtens wrote:
if (!bus->drv_cc.core)
return -EOPNOTSUPP;
- 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;
+ if (!bcma_is_sprom_available(bus)) {
+ /*
+ * Maybe there is no SPROM on the device?
+ * Now we ask the arch code if there is some sprom
+ * available for this device in some other storage.
+ */
+ err = bcma_fill_sprom_with_fallback(bus,&bus->sprom);
+ if (err) {
+ pr_warn("Using fallback SPROM failed (err %d)\n", err);
Hi Hauke,
I just noticed in this patch that the code continues when sprom fallback
fails. Does that make sense? I have corrected it in my OTP patch. So if
you agree or disagree you can comment on that patch.
+ } else {
+ pr_debug("Using SPROM revision %d provided by"
+ " platform.\n", bus->sprom.revision);
+ return 0;
+ }
}
sprom = kcalloc(SSB_SPROMSIZE_WORDS_R4, sizeof(u16),
Gr. AvS