Re: [PATCH 3/4] mmc: sdhi: Make use of per-source irq handlers
From: Simon Horman <horms@verge.net.au>
Date: 2011-08-16 13:45:17
Also in:
linux-mmc
On Tue, Aug 16, 2011 at 02:40:25PM +0200, Guennadi Liakhovetski wrote:
On Tue, 16 Aug 2011, Simon Horman wrote:quoted
On Tue, Aug 16, 2011 at 01:11:42PM +0200, Guennadi Liakhovetski wrote:quoted
On Tue, 16 Aug 2011, Simon Horman wrote:
[snip]
quoted
quoted
Sorry, I still don't understand why you check "CARD_DETECT" and request "sdcard_irq." Am I missing something or was my comment not clear enough in the previous review?quoted
+ if (ret) + goto eirq_card_detect; + } else if (multi_irq) + goto eirq_card_detect;? Sorry, have you maybe missed my review?quoted
+ + ret = irq = platform_get_irq(pdev, SH_MOBILE_SDHI_IRQ_SDCARD); + if (irq < 0) + goto eirq_sdcard; + f = multi_irq ? tmio_mmc_card_detect_irq : tmio_mmc_irq;Same hereSorry, that is a bug. As the code seems to work on my board I think it should be fixed by inverting the values of SH_MOBILE_SDHI_IRQ_SDCARD and SH_MOBILE_SDHI_IRQ_CARD_DETECT. I will check that and repost.Right, SDIO works, /proc/interrupts has 96: 5 sh7372-intca-level sh_mobile_sdhi.0 97: 4116138 sh7372-intca-level sh_mobile_sdhi.0 98: 44822 sh7372-intca-level sh_mobile_sdhi.0 So, indeed, #0 is card-detect, #1 is sdcard, #2 is sdio, your enum is wrong and request_irq() swapped ISRs compensate for that mistake.
Thanks. I swapped around the enum, made the appropriate changes elsewhere and things do seem to work correctly. Its a bit late now so I'll hold off on reposting until tomorrow.