Hello Yann,

On 06.10.22 15:28, Yann Sionneau wrote:
> Hello Michael,
> 
> The driver is polling for completion of the commands (8 for the first error, 
> 55 for the second).
> 
> While doing this polling, an error was raised by the SDHCI controller.
> 
> The nature of the error is reported in the register SDHCI_INT_ERROR (reg 
> offset 0x32)
> 
> Only the LSB (bit 0) is set.
> 
> This bit means "Command Timeout Error".
> 
> I copy paste the SDHC simplified specification version 4.20:
> 
> "
> 
> This bit is set only if no response is returned within 64 SD clock cycles from
> the end bit of the command. If the Host Controller detects a CMD line
> conflict, in which case Command CRC Error shall also be set as shown in
> Table 2-26, this bit shall be set without waiting for 64 SD clock cycles
> because the command will be aborted by the Host Controller.
> 
> "
> 
> So it seems either the eMMC stops answering, or it's too slow.

Turns out these are SD-Card specific commands and the timeout is expected and
should've been passed along as -ETIMEDOUT, so MCI core can fall back to MMC
setup instead of SD.

I ran into this getting my eMMC working with the SDHCI on the RK3399 and just
sent out a patch to resolve this.

Cheers,
Ahmad

> 
> Or ... the controller thinks it's too slow and the "timeout" could be a false 
> positive.
> 
> To check for false positive :
> 
> * check the tmclk frequency, it's a clock which is an input of the sdhc 
> controller in the Soc: see your SoC documentation for that on how the sdhc 
> controller is integrated.
> 
> * check the Timeout Control Register content (register 0x2E). Try to force a 
> higher value (for instance max value is 0xe)
> 
> * Check that CAPABILITIES1_R (register 0x40) fields TOUT_CLK_UNIT (bit 7) and 
> TOUT_CLK_FREQ (bits [5:0]) that are reported by the controller corresponds 
> correctly to the real value of the tmclk clock that is feeded to the 
> controller by the SoC.
> 
> You can try to hook-up a logic analyser to your eMMC bus to have a look at 
> what's happening. Try to lower the max frequency of the bus before doing so, 
> so that the logic analyzer extra capacitance does not mess too much with the 
> bus signaling.
> 
> Another lead to investigate is to have a look at which QUIRKS are enabled by 
> the Linux driver to make the controller work in your case: 
> https://github.com/torvalds/linux/blob/master/drivers/mmc/host/sdhci-of-arasan.c
> 
> Maybe Linux enables some quirks that could be needed to also "enable" in the 
> Barebox driver?
> 
> Regards,
> 
> Yann
> 
> On 10/6/22 15:03, [email protected] wrote:
>> Hey,
>>
>> I have connected an eMMC to sdhci0 and a uSD Card to sdhci1 of a Zynq.
>> while the uSD Card seams to work fine i'm getting the error
>>
>> arasan-sdhci [email protected]: registered as mmc0
>> arasan-sdhci [email protected]: SDHCI_INT_ERROR: 0x00000001
>> arasan-sdhci [email protected]: error while transfering data for 
>> command 8
>> arasan-sdhci [email protected]: state = 0x01ff0001 , interrupt = 
>> 0x00018000
>> arasan-sdhci [email protected]: SDHCI_INT_ERROR: 0x00000001
>> arasan-sdhci [email protected]: error while transfering data for 
>> command 55
>> arasan-sdhci [email protected]: state = 0x01ff0001 , interrupt = 
>> 0x00018000
>>
>> from the eMMC.
>>
>> arasan-sdhci [email protected]: registered as mmc1
>> mmc1: detected SD card version 2.0
>> mmc1: registered mmc1
>>
>> both eMMC and SDCard work fine in Linux. So I think the Problem is some 
>> confuguration difference between Linux and barebox.
>> The MMC is from type MTFC8G but Linux detects it as
>>
>> [    2.012122] mmc0: new high speed MMC card at address 0001
>> [    2.021129] mmcblk0: mmc0:0001 Q2J55L 7.09 GiB
>> [    2.026355] Btrfs loaded, crc32c=crc32c-generic, zoned=no, fsverity=no
>> [    2.027458] mmcblk0boot0: mmc0:0001 Q2J55L 16.0 MiB
>> [    2.031509] mmcblk0boot1: mmc0:0001 Q2J55L 16.0 MiB
>> [    2.039829] mmcblk0rpmb: mmc0:0001 Q2J55L 4.00 MiB, chardev (245:0)
>>
>> Unfortunattly I'm not very familliar with SDHCI, so I would apreciate any 
>> help.
>>
>> Best Regards
>> Michael
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
> 
> 
> 
> 
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |


Reply via email to