Part Number: AM625
Hello TI
I have question about the eMMC tuning algorithm for HS200 mode in file “/drivers/mmc/am654_sdhci.c”. This functionality exists both in Linux and in u-boot.
The function is “static int am654_sdhci_execute_tuning(struct mmc *mmc, u8 opcode)”
The algorithm in the function follows the SW Tuning Algorithm chapter 3 in MMC SW Tuning Algorithm (ti.com).
For our HW the tuning algorithm mostly works. We usually have a failing window with length of 1 starting at 16, 17 or 18. Sometimes we can have a failing window of 2. With these values the passing window will be 30 or 31 and the itap is set to 0, 1 or 31 (far away from failing window) depending on the different values. This works.
BUT!!
The problem occurs when all 32 tuning test passes. We then have a failing window of 0. The algorithm than calculates itap of 16, which is in the failing window. When this happens, we have a unit that hangs, eMMC in not working.
We have units that sometimes have a falling window of 1 and next start has failing window 0.
I guess the algorithm isn’t written for this scenario. How should we handle this?
Best regards
Magnus