I have an v5.0 eMMC (4GB) device connected via a MMCplus connector to the dm816x SD interface and the interface is setup as 4-bit. Most of the time it looks ok, I can use it as a root-filesystem; it is not used as a boot-device. But several times the device will fail to function properly: all the transfers will fail with error -84 ( EILSEQ ) which seems to indicate some kind of CRC error.
[ 135.610000] mmc0: starting CMD13 arg 00010000 flags 00000195
[ 135.620000] mmci-omap-hs mmci-omap-hs.0: mmc0: CMD13, argument 0x00010000
[ 135.620000] mmci-omap-hs mmci-omap-hs.0: IRQ Status is 1
[ 135.620000] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000
[ 135.640000] mmcblk0: error -84 transferring data, sector 0, nr 8, card status 0x900
In essence, the device either functions correctly or doesn't. Could this be some kind of interconnect problem as opposed to a driver problem ? The only change to the driver (omap_hsmmc) has been to change the revision level that's accepted from the ext_csd register:
@@ -238,7 +238,7 @@
}
card->ext_csd.rev = ext_csd[EXT_CSD_REV];
- if (card->ext_csd.rev > 5) {
+ if (card->ext_csd.rev > 7) {
printk(KERN_ERR "%s: unrecognised EXT_CSD revision %d\n",
mmc_hostname(card->host), card->ext_csd.rev);
err = -EINVAL;