AnsweredAssumed Answered

i.MX6q SDIO error by large size data read

Question asked by Kota Yonezawa on Mar 17, 2017
Latest reply on Mar 27, 2017 by Kota Yonezawa

Hello community.


Now we are using i.MX6 quad SABRE AUTO board and faced a problem on SDIO.
About software, Linux for i.MX (4.1.15-1.2.0) is used.


We are using device IC that has 4bit SDIO version 2.00 slave interface to read large data,
so we are now trying it on SABRE board.
We used CMD53(IO_RW_EXTENDED) with OP Code = 0 (means fixed address).
The register address was 0x10000 in SDIO register address space.
The block size was 2048 because we considered it's best setting for i.MX6 host
according to Linux source code.


So, we started implementation but faced strange phenomenon.


  - If the total read data size is less than 64KB (65536byte), sdio_readsb() function

    on Linux (CMD53 function with OP Code = 0) finished successfully.
  - If the total read data size is greater than or equal to 64KB,

    sdio_readsb() function failed. The return code was -ETIMEDOUT (-110).

    In dmesg, we found following message.
    "mmc0: Timeout waiting for hardware interrupt."
    From above message, it seems that sdhci_timeout_timer() in sdhci.c failed by ETIMEDOUT.


We changed block size to smaller, but the phenomenon was same.

We understood that if CMD53(IO_RW_EXTENDED) with OP Code = 1 (means incrementing address)
we'll face similar issue because SDIO address space is 17bit. (0x10000 - 0x1FFFFF is 64KB)
But we are now using OP Code = 0. (fixed address)
So we are now confused and need help.


Of course, we suspected at first that our device IC was not OK,
but same IC was used with "Panda Board" via SDIO interface before, and we've never faced such issue.
Over 64KB large size data can be read from the IC on "Panda Board" environment.


Our question is, if i.MX6q SDIO host has some limitation on CMD53 data size
or block count on OP Code = 0, we would like to know about it.
Did someone face or know similar issue?


Best Regards,