Hi Ohad, Am 31.10.2010 20:14, schrieb Ohad Ben-Cohen: > On Sun, Oct 31, 2010 at 7:16 PM, Arnd Hannemann <arnd@xxxxxxxxxx> wrote: >> b43-sdio: probe of mmc0:0001:1 failed with error -16 > > It's exactly what Daniel is experiencing with the XO-1.5. > > In Daniel's scenario, mmc_sdio_init_card() fails because > mmc_send_relative_addr() returns -110. > > Can you please check out if that's the same thing you have too ? No, it seems to be the pm_runtime_get_sync in sdio_bus.c::sdio_bus_probe(). If I test with CONFIG_PM_RUNTIME=y and the attached modifications, then I get this as output: root@ap4evb:~# modprobe b43 [ 29.859375] cfg80211: Calling CRDA to update world regulatory domain [ 30.226562] pm_runtime_get_sync: -16 [ 30.234375] b43-sdio: probe of mmc0:0001:1 failed with error -16 [ 30.242187] Broadcom 43xx driver loaded [ Features: LS, Firmware-ID: FW13 ] If CONFIG_PM_RUNTIME is not set in .config, the problem goes away. Regards, Arnd
diff --git a/drivers/mmc/core/sd_ops.c b/drivers/mmc/core/sd_ops.c index 797cdb5..57b6dd4 100644 --- a/drivers/mmc/core/sd_ops.c +++ b/drivers/mmc/core/sd_ops.c @@ -237,8 +237,10 @@ int mmc_send_relative_addr(struct mmc_host *host, unsigned int *rca) cmd.flags = MMC_RSP_R6 | MMC_CMD_BCR; err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES); - if (err) + if (err) { + printk(KERN_INFO "%s(): %d\n", __func__, err); return err; + } *rca = cmd.resp[0] >> 16; diff --git a/drivers/mmc/core/sdio_bus.c b/drivers/mmc/core/sdio_bus.c index 2716c7a..102c163 100644 --- a/drivers/mmc/core/sdio_bus.c +++ b/drivers/mmc/core/sdio_bus.c @@ -133,8 +133,10 @@ static int sdio_bus_probe(struct device *dev) * pm_runtime_get_noresume() in its remove routine. */ ret = pm_runtime_get_sync(dev); - if (ret < 0) + if (ret < 0) { + printk(KERN_INFO "pm_runtime_get_sync: %d\n", ret); goto out; + } /* Set the default block size so the driver is sure it's something * sensible. */