On 05/24/2012 06:27 AM, Arnd Bergmann wrote:
On Thursday 24 May 2012, John Stultz wrote:
On 05/23/2012 05:05 PM, John Stultz wrote:
Hey Arnd, So it looks like something has gone awry in the 3.5 pull with Panda's mmc functionality. Trying to boot the current 3.5-rc tree, the boot fails after not finding the root device. Looking at the boot log I'm seeing:
omap_hsmmc: probe of omap_hsmmc.0 failed with error -22
With the same config on 3.4 it boots up fine. I also tried w/ the omap2plus_defconfig and see the same behavior.
Before I start bisecting down, I just wanted to raise the issue here in case there's a known fix.
I went ahead and tried to bisect this down, and it was pretty painful as there's a omap-usb-host build bug somewhere near the issue that keeps me from being able to totally isolate it.
Anyway, the bisection finally pointed to this merge:
commit 8dca6010d44cc722a94dc6da96560f9083dac782 Merge: 9bc747b 74c4375 Author: Linus Torvaldstorvalds@linux-foundation.org Date: Tue May 22 09:27:39 2012 -0700
Hmm, so the fixes branch by itself is fine and so is the commit before merging it.
The only commit that I see that can actually imact this seems to be 1ee47b0. Can you try reverting that?
Yep. Good call, that's the one! Reverting it works for me. Thanks for catching that. After a few hours of bisecting I had gone a bit braindead. :)
Playing around with the patch, it looks like its the irq assignment thats causing problems (twl6030_mmc_card_detect_config() is returning 368). I can work around it with the hack below.
Balaji: Any thoughts on a proper fix here?
thanks -john
diff --git a/arch/arm/mach-omap2/omap4-common.c b/arch/arm/mach-omap2/omap4-common.c index a8161e5..9bd23a2 100644 --- a/arch/arm/mach-omap2/omap4-common.c +++ b/arch/arm/mach-omap2/omap4-common.c @@ -226,7 +226,7 @@ static int omap4_twl6030_hsmmc_late_init(struct device *dev) __func__, irq); return irq; } - pdata->slots[0].card_detect_irq = irq; +// pdata->slots[0].card_detect_irq = irq; pdata->slots[0].card_detect = twl6030_mmc_card_detect; } return 0;