Resetting host->power_mode to its original value
Good morning,
The config file found at "http://people.canonical.com/~mpoirier/config.mmc_failure" was generated by doing a "make omap3_beagle_defconfig" from 2.6.35-rc6, followed by a "make menuconfig" where the following flags were enabled:
CONFIG_PREEMPT_VOLUNTARYCONFIG_CPU_IDLECONFIG_SOUNDCONFIG_SNDCONFIG_SND_SOC
When all 5 flags are set the following error message appears on the console, preventing one from booting a system from SDHC card:
"mmc0: error -110 whilst initialising SD card"
The problem was introduced by patch:6da20c89af64b75302399369a90b9d50c1a87665
The first part of the patch is fine. The problem is caused by the initialization of the 'power_mode' variable in the second portion of the patch:
host->power_mode = MMC_POWER_OFF;
Reverting this statement to it's original form:
host->power_mode = -1; is enough to cure the problem.
I noticed that in file "drivers/mmc/host/omap_hsmmc.c", 'host->power_mode' is used fairly often in the functions related to power management. Note that some cards don't exhibit the problem but with the ones that do, the failure is consistent and reproducible at will.
I will dive in the code to understand exactly what is going on and hopefully find a solution to the problem. At this time, I suggest the following patch:
"http://people.canonical.com/~mpoirier/0001-Resetting-host-power_mode-to-its-orininal-value.patch"
Since this area is completely foreign to me, help from anyone would be greatly appreciated. You can find me on freenode (mpoirier) under #ubuntu-arm, #ubuntu-kernel and #beagle.
You can also find a reference to this bug in launchpad:
https://bugs.launchpad.net/bugs/591941
I run a beagle board C4, fitted with an OMAP3 3530. Once again, my kernel is a vanilla upstream 2.6.35-rc6. The problem has also been observed on revision C2, C3 and XM.
Best regards, Mathieu.