AnsweredAssumed Answered

UHS-1 problem at 1.8V, cannot read partition table

Question asked by frédéric on Nov 27, 2015
Latest reply on Dec 13, 2015 by igorpadykov

We have a custom board based on a nitrogen6x, with an iMX6, and 1.8V switching. We are using kernel 3.0.35 and boot on the SD card.

 

95% of the time it works fine, we can see SD card switches to 1.8V and the clock goes from about 44MHz to 174MHz, transfer speed is higher, etc,

 

At boot, we have a couple of warning about data interrupt in dmesg

 

mmc0: Got data interrupt 0x0000000a even though no data operation was in progress.

 

But sometimes it fails completely with:

mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new ultra high speed SDHC card at address 59b4
mmcblk0: mmc0:59b4 AF UD 15.0 GiB
mmcblk0: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00
mmcblk0: retrying using single block read
mmcblk0: error -84 transferring data, sector 1, nr 7, cmd response 0x900, card status 0x0
end_request: I/O error, dev mmcblk0, sector 1
mmc0: Got data interrupt 0x0000000a even though no data operation was in progress.
mmcblk0: error -84 transferring data, sector 2, nr 6, cmd response 0x900, card status 0x0
end_request: I/O error, dev mmcblk0, sector 2
mmc0: Got data interrupt 0x0000000a even though no data operation was in progress.
mmcblk0: error -84 transferring data, sector 3, nr 5, cmd response 0x900, card status 0x0
end_request: I/O error, dev mmcblk0, sector 3
Buffer I/O error on device mmcblk0, logical block 0
mmcblk0: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00
mmcblk0: retrying using single block read
mmc0: Got data interrupt 0x0000000a even though no data operation was in progress.
mmcblk0: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0x0
end_request: I/O error, dev mmcblk0, sector 0
mmc0: Got data interrupt 0x0000000a even though no data operation was in progress.
mmcblk0: error -84 transferring data, sector 2, nr 6, cmd response 0x900, card status 0x0
end_request: I/O error, dev mmcblk0, sector 2
mmc0: Got data interrupt 0x0000000a even though no data operation was in progress.
mmcblk0: error -84 transferring data, sector 3, nr 5, cmd response 0x900, card status 0x0
end_request: I/O error, dev mmcblk0, sector 3
Buffer I/O error on device mmcblk0, logical block 0
mmcblk0: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00
mmcblk0: retrying using single block read
mmcblk0: error -84 transferring data, sector 2, nr 6, cmd response 0x900, card status 0x0
end_request: I/O error, dev mmcblk0, sector 2
mmc0: Got data interrupt 0x0000000a even though no data operation was in progress.
mmcblk0: error -84 transferring data, sector 3, nr 5, cmd response 0x900, card status 0x0
end_request: I/O error, dev mmcblk0, sector 3
Buffer I/O error on device mmcblk0, logical block 0
mmcblk0: unable to read partition table

 

The failing comes from add_disk(md->disk) in mmc_add_disk() in drivers/mmc/card/block.c

 

We have no problem with SD card working at 3.3V and no warning about data interrupt, cards working in high speed mode can boot 5000+ times without a single problem. Cards in ultra high speed fails 2-5% of the time with message above. If we force an UHS-1 card in 3.3V it works fine too.

 

We merged the "sabre ai sdio 3.0_patches.zip" I found on this forum, but behaviour is the same, I did not modify our init structure however.

 

Any input appreciated!

Outcomes