Re: mmc: sdio: runtime PM and 8686 problems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



(For reference I have a Gumstix Fire (OMAP3530) revision R3118 plugged in to a PALO43 expansion board. The Gumstix Fire contains a W2CBW003, which in 
turn contains a Marvell 8686 SDIO WiFi).

Running linux-3.2-rc2 built with the omap2plus_defconfig (with a few features minor tweaks).

With the "stock" kernel I get:

# modprobe libertas_sdio
[   25.813598] lib80211: common routines for IEEE802.11 drivers
[   26.141082] cfg80211: Calling CRDA to update world regulatory domain
[   26.373718] libertas_sdio: Libertas SDIO driver
[   26.378479] libertas_sdio: Copyright Pierre Ossman
[   26.433105] libertas_sdio: probe of mmc1:0001:1 failed with error -16

So, I've enabled MMC_DEBUG (in Kconfig) and the DEBUG defines in libertas/defs.h, and now get:

[    4.036682] mmc1: new SDIO card at address 0001
[    4.042510] -
[    4.052459] mmc1: mmc_power_save_host: powering down

[   31.223724] libertas_sdio: Libertas SDIO driver
[   31.228485] libertas_sdio: Copyright Pierre Ossman
[   31.233703] mmc1: mmc_power_restore_host: powering up
[   31.239074] mmc1: clock 0Hz busmode 2 powermode 1 cs 0 Vdd 20 width 0 timing 0
[   31.239349] omap_hsmmc omap_hsmmc.1: context was not lost
[   31.239379] omap_hsmmc omap_hsmmc.1: enabled
[   31.239410] omap_hsmmc omap_hsmmc.1: Set clock to 0Hz
[   31.243438] omap_hsmmc omap_hsmmc.1: disabled
[   31.262451] mmc1: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 20 width 0 timing 0
[   31.262725] omap_hsmmc omap_hsmmc.1: context was not lost
[   31.262725] omap_hsmmc omap_hsmmc.1: enabled
[   31.262786] omap_hsmmc omap_hsmmc.1: Set clock to 400000Hz
[   31.263092] omap_hsmmc omap_hsmmc.1: disabled
[   31.286163] omap_hsmmc omap_hsmmc.1: context was not lost
[   31.286193] omap_hsmmc omap_hsmmc.1: enabled
[   31.286224] mmc1: starting CMD52 arg 00000c00 flags 00000195
[   31.286254] omap_hsmmc omap_hsmmc.1: mmc1: CMD52, argument 0x00000c00
[   31.286590] omap_hsmmc omap_hsmmc.1: IRQ Status is 1
[   31.286621] mmc1: req done (CMD52): 0: 00001000 00000000 00000000 00000000
[   31.286682] mmc1: starting CMD52 arg 80000c08 flags 00000195
[   31.286682] omap_hsmmc omap_hsmmc.1: mmc1: CMD52, argument 0x80000c08
[   31.287017] omap_hsmmc omap_hsmmc.1: IRQ Status is 1
[   31.287048] mmc1: req done (CMD52): 0: 00001008 00000000 00000000 00000000
[   31.287109] mmc1: clock 400000Hz busmode 2 powermode 2 cs 1 Vdd 20 width 0 timing 0
[   31.287109] omap_hsmmc omap_hsmmc.1: Set clock to 400000Hz
[   31.288146] mmc1: starting CMD0 arg 00000000 flags 000000c0
[   31.288177] omap_hsmmc omap_hsmmc.1: mmc1: CMD0, argument 0x00000000
[   31.288330] omap_hsmmc omap_hsmmc.1: IRQ Status is 1
[   31.288360] mmc1: req done (CMD0): 0: 00000000 00000000 00000000 00000000
[   31.289398] mmc1: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 20 width 0 timing 0
[   31.289428] omap_hsmmc omap_hsmmc.1: Set clock to 400000Hz
[   31.290466] mmc1: starting CMD8 arg 000001aa flags 000002f5
[   31.290466] omap_hsmmc omap_hsmmc.1: mmc1: CMD8, argument 0x000001aa
[   31.290832] omap_hsmmc omap_hsmmc.1: IRQ Status is 18000
[   31.290863] omap_hsmmc omap_hsmmc.1: MMC IRQ 0x18000 : ERRI CTO
[   31.290893] mmc1: req done (CMD8): -110: 00000000 00000000 00000000 00000000
[   31.290924] mmc1: starting CMD5 arg 00000000 flags 000002e1
[   31.290954] omap_hsmmc omap_hsmmc.1: mmc1: CMD5, argument 0x00000000
[   31.291290] omap_hsmmc omap_hsmmc.1: IRQ Status is 18000
[   31.291320] omap_hsmmc omap_hsmmc.1: MMC IRQ 0x18000 : ERRI CTO
[   31.291381] mmc1: req failed (CMD5): -110, retrying...
[   31.291412] omap_hsmmc omap_hsmmc.1: mmc1: CMD5, argument 0x00000000
[   31.291748] omap_hsmmc omap_hsmmc.1: IRQ Status is 18000
[   31.291778] omap_hsmmc omap_hsmmc.1: MMC IRQ 0x18000 : ERRI CTO
[   31.291839] mmc1: req failed (CMD5): -110, retrying...
[   31.291870] omap_hsmmc omap_hsmmc.1: mmc1: CMD5, argument 0x00000000
[   31.292205] omap_hsmmc omap_hsmmc.1: IRQ Status is 18000
[   31.292236] omap_hsmmc omap_hsmmc.1: MMC IRQ 0x18000 : ERRI CTO
[   31.292266] mmc1: req failed (CMD5): -110, retrying...
[   31.292297] omap_hsmmc omap_hsmmc.1: mmc1: CMD5, argument 0x00000000
[   31.292633] omap_hsmmc omap_hsmmc.1: IRQ Status is 18000
[   31.292663] omap_hsmmc omap_hsmmc.1: MMC IRQ 0x18000 : ERRI CTO
[   31.292694] mmc1: req done (CMD5): -110: 00000000 00000000 00000000 00000000
[   31.292877] libertas_sdio: probe of mmc1:0001:1 failed with error -16
[   31.387481] omap_hsmmc omap_hsmmc.1: disabled

Is this useful?

It seems CMD5 fails (which seems to be what the workarounds were aiming to fix).
I'm afraid I may not be of much more use as Gumstix (annoyingly) don't release schematics of their COMs, so actually probing any signals isn't really possible.

Cheers,
Joe



-----Original Message-----
From: Ohad Ben-Cohen <ohad@xxxxxxxxxx>
To: Daniel Drake <dsd@xxxxxxxxxx>
Cc: Joe Woodward <jw@xxxxxxxxxxxxxx>, linux-mmc@xxxxxxxxxxxxxxx, Chris Ball <cjb@xxxxxxxxxx>
Date: Wed, 30 Nov 2011 16:29:21 +0200
Subject: Re: mmc: sdio: runtime PM and 8686 problems

> On Wed, Nov 30, 2011 at 4:12 PM, Daniel Drake <dsd@xxxxxxxxxx> wrote:
> > My patch simply sets a flag to enable a whole load of code written by
> > you - code which I understand little about. I am now available to
> > help, but given that my understanding of mmc is limited, I didn't
> > write the code in question, and I also lack expert insight into 8686
> > powerup, I'm not sure how useful I can be.
> 
> Let's revert 08da834 then.
> 
> When SDIO runtime PM was originally introduced, we immediately faced
> two regressions with two different chipsets, and in response decided
> not to enable it by default.
> 
> With your work on the 8686 we hoped we found all the gotchas, so
> 08da834 did make sense (at least experimentally).
> 
> Unfortunately we now see that some setups out there still refuse to
> work when SDIO runtime PM is enabled by default, and obviously we
> can't live with these kind of regressions.
> 
> commit fd9fec7a00f58a16803e37a99a014ef82543ef6f
> Author: Ohad Ben-Cohen <ohad@xxxxxxxxxx>
> Date:   Wed Nov 30 16:22:13 2011 +0200
> 
>     Revert "mmc: enable runtime PM by default"
> 
>     When SDIO runtime PM was originally introduced, we immediately
> faced
>     two regressions with two different chipsets, and in response
> decided
>     not to enable it by default.
> 
>     With the recent work on the 8686 we hoped we found all the gotchas,
>     so 08da834 did make sense (at least experimentally).
> 
>     Unfortunately we now see that some setups out there still refuse to
> work
>     when SDIO runtime PM is enabled by default (see
>     http://www.spinics.net/lists/linux-mmc/msg11161.html), and
> obviously we
>     can't live with these kind of regressions.
> 
>     This reverts commit 08da834a24312157f512224691ad1fddd11c1073.
> 
>     Signed-off-by: Ohad Ben-Cohen <ohad@xxxxxxxxxx>
>     Cc: Daniel Drake <dsd@xxxxxxxxxx>
> 
> diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c
> index e8a5eb3..d31c78b 100644
> --- a/drivers/mmc/core/host.c
> +++ b/drivers/mmc/core/host.c
> @@ -302,17 +302,6 @@ struct mmc_host *mmc_alloc_host(int extra, struct
> device *dev)
>  	host->max_blk_size = 512;
>  	host->max_blk_count = PAGE_CACHE_SIZE / 512;
> 
> -	/*
> -	 * Enable runtime power management by default. This flag was added
> due
> -	 * to runtime power management causing disruption for some users, but
> -	 * the power on/off code has been improved since then.
> -	 *
> -	 * We'll enable this flag by default as an experiment, and if no
> -	 * problems are reported, we will follow up later and remove the flag
> -	 * altogether.
> -	 */
> -	host->caps = MMC_CAP_POWER_OFF_CARD;
> -
>  	return host;
> 
>  free:


--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux