We are using TI J6 in our product. During the develpment, we found
some issues on omap_hsmmc. After many SDIO operations, seems
omap_hsmmc can't funtion well.
Here's the situation:
1. The driver is funtioning well. It performs a lot of transmission
between host & sdio device for several hours.
2. A CEB error happens. I already patched the commit as
git.kernel.org/.../commit
/drivers/mmc/host/omap_hsmmc.c?id=5027cd1e323d2f8136abb32ac7c8e1e1a94e
ac05 3. A following SDIO command issued. But there's no response from
device and no timeout interrupt generated from mmc host.
The above scenario cause severe problem on our platform. Because the
SDIO device driver, which issues sdio_writeb, will never returns and
the process will be in a ‘D' state forever.
Could you help to check what the problem is?
501767 Jan 01 09:11:16 dra7xx-evm kernel: mmc2: starting CMD52 arg
12003e00 flags 00000195
501768 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
mmc2: CMD52, argument 0x12003e00 use_dma:1
501769 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
IRQ Status is 18000
501770 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
MMC IRQ 0x18000 : ERRI CTO //CTO error occurred.
501771 Jan 01 09:11:16 dra7xx-evm kernel: mmc2: req done (CMD52):
-110: 00000000 00000000 00000000 00000000
501772 Jan 01 09:11:16 dra7xx-evm kernel: mmc2: starting CMD52 arg
12003e00 flags 00000195
501773 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
mmc2: CMD52, argument 0x12003e00 use_dma:1
501774 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
IRQ Status is 18000
501775 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
MMC IRQ 0x18000 : ERRI CTO //CTO error again
501776 Jan 01 09:11:16 dra7xx-evm kernel: mmc2: req done (CMD52):
-110: 00000000 00000000 00000000 00000000
501777 Jan 01 09:11:16 dra7xx-evm kernel: mmc2: starting CMD52 arg
12003e00 flags 00000195
501778 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
mmc2: CMD52, argument 0x12003e00 use_dma:1
501779 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
IRQ Status is 1 // A successful transfer.
501780 Jan 01 09:11:16 dra7xx-evm kernel: mmc2: req done (CMD52): 0:
00009003 00000000 00000000 00000000
501781 Jan 01 09:11:16 dra7xx-evm kernel: mmc2: starting CMD52 arg
92003e00 flags 00000195
501782 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
mmc2: CMD52, argument 0x92003e00 use_dma:1
501783 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
IRQ Status is 1
501784 Jan 01 09:11:16 dra7xx-evm kernel: mmc2: req done (CMD52): 0:
00001000 00000000 00000000 00000000
501785 Jan 01 09:11:16 dra7xx-evm kernel: mmc2: starting CMD52 arg
12003e00 flags 00000195
501786 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
mmc2: CMD52, argument 0x12003e00 use_dma:1
501787 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
IRQ Status is 48001
501788 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
MMC IRQ 0x48001 // CEB error happens.
501789 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
CEB error. status:0x48001
501790 Jan 01 09:11:16 dra7xx-evm kernel: mmc2: req done (CMD52):
-110: 00001000 00000000 00000000 00000000
501791 Jan 01 09:11:16 dra7xx-evm kernel: mmc2: starting CMD52 arg
12003e00 flags 00000195 // Send command again but wait for a long time
still no CTO interrrupt issued.
501792 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480d1000.mmc:
mmc2: CMD52, argument 0x12003e00 use_dma:1
501793 Jan 01 09:11:16 dra7xx-evm kernel: omap_hsmmc 480b4000.mmc:
disabled
Regards,
RK on behalf of 王猛猛 <wb-wangmengmeng.k@alibaba-inc.com>