Hello, our company built an embedded board which is based on the ARM Freescale imx35 chip. Now I am trying to run a silex sdio wlan module with this board. The Silex module is based on an atheros ar6003 chip. The driver in /drivers/mmc/host/sdhci-esdhc-imx.c (config MMC_SDHCI_ESDHC_IMX) is used for the imx35 processor. When I load the module ath6kl_sdio.ko, I get the following error: "mmc0: Timeout waiting for hardware interrupt". Normal sdcards are working properly. The same timout error appears also with another sdio wlan module which is based on a marvell chip. Thats the reason why I don`t think that it`s an issue of the atheros driver. I think it is an issue of the sdhci-esdhc-imx driver. I searched in the web for a solution to fix it, but I had no success. I hope someone can give me hint, what I can do to get sdio cards working. I enabled the logging for mmc and the following lines are the kernel messages. sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87089e00, transferred 0x076200 bytes, next 0x87100000 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 128 bytes transferred: 0 mmc0: starting CMD53 arg 14080018 flags 000001b5 mmc0: blksz 24 blocks 1 flags 00000200 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000b sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87032da0, transferred 0x04d260 bytes, next 0x87080000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 24 bytes transferred: 0 mmc0: starting CMD53 arg 10100080 flags 000001b5 mmc0: blksz 128 blocks 1 flags 00000200 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000b sdhci [sdhci_data_irq()]: mmc0: DMA base 0x870c7200, transferred 0x038e00 bytes, next 0x87100000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 128 bytes transferred: 0 mmc0: starting CMD53 arg 941f0080 flags 000001b5 mmc0: blksz 128 blocks 1 flags 00000100 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000009 sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87089c00, transferred 0x076400 bytes, next 0x87100000 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 128 bytes transferred: 0 mmc0: starting CMD53 arg 14080018 flags 000001b5 mmc0: blksz 24 blocks 1 flags 00000200 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000b sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87032da0, transferred 0x04d260 bytes, next 0x87080000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 24 bytes transferred: 0 mmc0: starting CMD53 arg 10100080 flags 000001b5 mmc0: blksz 128 blocks 1 flags 00000200 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000b sdhci [sdhci_data_irq()]: mmc0: DMA base 0x870c7400, transferred 0x038c00 bytes, next 0x87100000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 128 bytes transferred: 0 mmc0: starting CMD53 arg 941f0080 flags 000001b5 mmc0: blksz 128 blocks 1 flags 00000100 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000009 sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87089e00, transferred 0x076200 bytes, next 0x87100000 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 128 bytes transferred: 0 mmc0: starting CMD53 arg 14080018 flags 000001b5 mmc0: blksz 24 blocks 1 flags 00000200 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000b sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87032da0, transferred 0x04d260 bytes, next 0x87080000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 24 bytes transferred: 0 mmc0: starting CMD53 arg 10100080 flags 000001b5 mmc0: blksz 128 blocks 1 flags 00000200 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000a sdhci [sdhci_data_irq()]: mmc0: DMA base 0x870c7600, transferred 0x038a00 bytes, next 0x87100000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 128 bytes transferred: 0 mmc0: starting CMD53 arg 941f0080 flags 000001b5 mmc0: blksz 128 blocks 1 flags 00000100 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000009 sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87089c00, transferred 0x076400 bytes, next 0x87100000 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 128 bytes transferred: 0 mmc0: starting CMD53 arg 14080018 flags 000001b5 mmc0: blksz 24 blocks 1 flags 00000200 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000a sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87032da0, transferred 0x04d260 bytes, next 0x87080000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 24 bytes transferred: 0 mmc0: starting CMD53 arg 14080018 flags 000001b5 mmc0: blksz 24 blocks 1 flags 00000200 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000b sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87032da0, transferred 0x04d260 bytes, next 0x87080000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 24 bytes transferred: 0 mmc0: starting CMD53 arg 10100080 flags 000001b5 mmc0: blksz 128 blocks 1 flags 00000200 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000b sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87203c00, transferred 0x07c400 bytes, next 0x87280000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 128 bytes transferred: 0 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 128 bytes transferred: 0 mmc0: starting CMD53 arg 14080018 flags 000001b5 mmc0: blksz 24 blocks 1 flags 00000200 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000b sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87032da0, transferred 0x04d260 bytes, next 0x87080000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 24 bytes transferred: 0 mmc0: starting CMD53 arg 10100080 flags 000001b5 mmc0: blksz 128 blocks 1 flags 00000200 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000b sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87087000, transferred 0x079000 bytes, next 0x87100000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 128 bytes transferred: 0 mmc0: starting CMD53 arg 94083004 flags 000001b5 mmc0: blksz 4 blocks 1 flags 00000100 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000b sdhci [sdhci_data_irq()]: mmc0: DMA base 0x871cdcac, transferred 0x032354 bytes, next 0x87200000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 4 bytes transferred: 0 mmc0: starting CMD53 arg 941f0080 flags 000001b5 mmc0: blksz 128 blocks 1 flags 00000100 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000009 sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87089c00, transferred 0x076400 bytes, next 0x87100000 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 128 bytes transferred: 0 mmc0: starting CMD53 arg 94083004 flags 000001b5 mmc0: blksz 4 blocks 1 flags 00000100 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000b sdhci [sdhci_data_irq()]: mmc0: DMA base 0x871cdc74, transferred 0x03238c bytes, next 0x87200000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 4 bytes transferred: 0 SDIO: Enabling IRQ for mmc0:0001:1... mmc0: starting CMD52 arg 00000800 flags 00000195 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000 mmc0: starting CMD52 arg 80000803 flags 00000195 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 mmc0: req done (CMD52): 0: 00001003 00000000 00000000 00000000 mmc0: starting CMD53 arg 94083004 flags 000001b5 mmc0: blksz 4 blocks 1 flags 00000100 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000b sdhci [sdhci_data_irq()]: mmc0: DMA base 0x871cdcb4, transferred 0x03234c bytes, next 0x87200000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 4 bytes transferred: 0 mmc0: IRQ thread started (poll period = 2147483647 jiffies) mmc0: starting CMD52 arg 00000a00 flags 00000195 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 mmc0: req done (CMD52): 0: 00001002 00000000 00000000 00000000 mmc0: starting CMD53 arg 14080018 flags 000001b5 mmc0: blksz 24 blocks 1 flags 00000200 tsac 1000 ms nsac 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x0000000b sdhci [sdhci_data_irq()]: mmc0: DMA base 0x87032da0, transferred 0x04d260 bytes, next 0x87080000 mmc0: req done (CMD53): 0: 00001000 00000000 00000000 00000000 mmc0: 24 bytes transferred: 0 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 mmc0: starting CMD53 arg 14080018 flags 000001b5 mmc0: blksz 24 blocks 1 flags 00000200 tsac 1000 ms nsac 0 ath6kl: ar6003 hw 2.1.1 sdio fw 3.2.0.144 api 3 mmc0: Timeout waiting for hardware interrupt. sdhci: =========== REGISTER DUMP (mmc0)=========== sdhci: Sys addr: 0x87029940 | Version: 0x00000000 sdhci: Blk size: 0x00000018 | Blk cnt: 0x00000000 sdhci: Argument: 0x14080018 | Trn mode: 0x00000013 sdhci: Present: 0xdd09028f | Host ctl: 0x0000002b sdhci: Power: 0x00000001 | Blk gap: 0x00000000 sdhci: Wake-up: 0x00000000 | Clock: 0x0000010f sdhci: Timeout: 0x0000000e | Int stat: 0x00000000 sdhci: Int enab: 0x107f000b | Sig enab: 0x107f000b sdhci: AC12 err: 0x00000000 | Slot int: 0x00001201 sdhci: Caps: 0x07eb0000 | Caps_1: 0x08100810 sdhci: Cmd: 0x0000353a | Max curr: 0x00000000 sdhci: Host ctl2: 0x00000000 sdhci: =========================================== mmc0: req done (CMD53): 0: 00000000 00000000 00000000 00000000 mmc0: 0 bytes transferred: -110 ------------[ cut here ]------------ WARNING: at drivers/net/wireless/ath/ath6kl/sdio.c:487 ath6kl_sdio_irq_handler+0x88/0x98 [ath6kl_sdio]() Modules linked in: ath6kl_sdio(+) ath6kl_core lib80211 mac80211 cfg80211 ipv6 [<c00149fc>] (unwind_backtrace+0x0/0xfc) from [<c03a5114>] (dump_stack+0x20/0x24) [<c03a5114>] (dump_stack+0x20/0x24) from [<c001f15c>] (warn_slowpath_common+0x5c/0x74) [<c001f15c>] (warn_slowpath_common+0x5c/0x74) from [<c001f1a0>] (warn_slowpath_null+0x2c/0x34) [<c001f1a0>] (warn_slowpath_null+0x2c/0x34) from [<bf16c3b8>] (ath6kl_sdio_irq_handler+0x88/0x98 [ath6kl_sdio]) [<bf16c3b8>] (ath6kl_sdio_irq_handler+0x88/0x98 [ath6kl_sdio]) from [<c02cc1a0>] (sdio_irq_thread+0x1f8/0x2f4) [<c02cc1a0>] (sdio_irq_thread+0x1f8/0x2f4) from [<c004175c>] (kthread+0xb4/0xc0) [<c004175c>] (kthread+0xb4/0xc0) from [<c000e8a8>] (ret_from_fork+0x14/0x20) ---[ end trace f5bf3daf8b62ccd1 ]--- sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100 mmc0: starting CMD53 arg 14080018 flags 000001b5 mmc0: blksz 24 blocks 1 flags 00000200 tsac 1000 ms nsac 0 --- Johannes -- 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