Hi again Arnd, On Wed, Dec 15, 2010 at 12:44 AM, Magnus Damm <magnus.damm@xxxxxxxxx> wrote: > On Wed, Dec 8, 2010 at 12:08 AM, Arnd Hannemann <arnd@xxxxxxxxxx> wrote: >> Am 07.12.2010 09:37, schrieb Magnus Damm: >>> On Tue, Dec 7, 2010 at 9:22 PM, Arnd Hannemann <arnd@xxxxxxxxxx> wrote: >>>> Am 07.12.2010 00:39, schrieb Magnus Damm: >>>>> On Tue, Dec 7, 2010 at 2:35 AM, Arnd Hannemann <arnd@xxxxxxxxxx> wrote: >>>>>> This patch implements SDIO IRQ support for mfds which >>>>>> announce the MMC_CAP_SDIO_IRQ capability for tmio_mmc. >>>>>> Tested with a b43-based wireless SDIO card and sh_mobile_sdhi. >>>>>> >>>>>> This patch applies on top of: >>>>>> mmc: tmio_mmc: allow multi-element scatter-gather lists >>>>>> mmc: tmio_mmc: fix PIO fallback on DMA descriptor allocation failure >>>>>> mmc: tmio: merge the private header into the driver >>>>>> mmc: tmio: implement a bounce buffer for unaligned DMA >>>>>> >>>>>> Signed-off-by: Arnd Hannemann <arnd@xxxxxxxxxx> >>>>>> CC: Ian Molton <ian@xxxxxxxxxxxxxx> >>>>>> CC: Samuel Ortiz <sameo@xxxxxxxxxxxxxxx> >>>>>> CC: Guennadi Liakhovetski <g.liakhovetski@xxxxxx> >>>>>> --- >>>>>> drivers/mmc/host/tmio_mmc.c | 54 ++++++++++++++++++++++++++++++++++++++++++- >>>>>> 1 files changed, 53 insertions(+), 1 deletions(-) >>>>> >>> I'll try to find my AR6002 card, maybe that will shed some light... >> >> Yeah, that would be really cool. > > I'll try again next time I have a bit of time to spare. =) Alright, now my AR6002-based card is working with your patches. At least it seems to be working - my antenna cable is broken so I can unfortunately not do any more proper than a simple "iwlist wlan0 scan". Good thing is that the SDIO IRQ mode and polling mode seem to behave about the same. Please note that I did not test using the upstream driver. I couldn't get that one working last week, so today I reverted to using my last known working configuration - the out-of-tree "ar69_sdk" driver pointed out by the following instructions: http://armin762.wordpress.com/2010/05/24/nvidia-tegra2-getting-wifiatheros-6002-working/ Anyway, I'm all for including your SDIO IRQ patches, but I think that they should be reworked a bit. I propose using two flags: 1) A hardware-has-sdio-irq-support flag for include/linux/mfd/tmio.h, perhaps TMIO_MMC_SDIO_IRQ The SDIO IRQ hardware registers are only touched when tmio-mmc is provided the TMIO_MMC_SDIO_IRQ flag. The default behavior would be to mask the SDIO IRQ interrupt source regardless of the MMC_CAP_SDIO_IRQ flag. This should allow us to always enable the SDIO IRQ interrupt source in INTC. The SDIO driver should set the TMIO_MMC_SDIO_IRQ flag to show that SDHI is known to support SDIO IRQ. Hopefully this TMIO_MMC_SDIO_IRQ flag will make it easier for Ian to review the code and see that it doesn't break any other platforms that may or may not lack SDIO IRQ support. 2) The regular MMC_CAP_SDIO_IRQ flag. This is enabled per board. If the SDIO IRQ feature doesn't work in some case then the system integrator can simply just simply go back to polled mode by not setting MMC_CAP_SIDO_IRQ. I'm not sure if we can keep the SDIO IRQ interrupt source constantly enabled in INTC though. Your current patches require the board specific MMC_CAP_SDIO_IRQ flag to be paired with the cpu-specific INTC enable change. If someone wishes tho disable SDIO_IRQ support for their board then they must know that they also need to revert the INTC enable bits, otherwise they'll get endless interrupts when the tmio-mmc driver starts. I believe the two-flag approach above will solve this problem. Thanks, / magnus -- 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