Hi all,
We are using am335x-rowboat-linux-kernel-3.2 based on original TI SDK on sitara am335x powered custom board. We have trouble with hsmmc. We have nonremovable sdxc v2 (highspeed support) sdcard on board. After boot, it can switch to HS mode with 50 Mhz. data rate (DDR50). However, after suspend/resume, it cannot switch to HS mode and kernel freezes.
Sdcard is connected to hsmmc.2 with correct pinmux config. After suspend, on mmc_sd_init_card() function (drivers/mmc/core/sd.c) we can skip switching to highspeed mode and kernel resumes normally with DDR25 sdcard speed (no highspeed).
I tried different sdxc sdhc sdcards on both am335x evm and our custom board and there is no HS switching problem on evm after suspend. It seems that the problem is on our board or kernel config. However, I checked and compared hardware design and kernel configs of evm and our board and no important difference. The only difference related with MMC is we are using mmc.2 for sdcard while evm is using mmc.0
In my search, there is a command sequence in sdcard specs. to switch an sdcard to HS mode. CMD6 command is the most important command to switch speed mode or current of an sdcard. Sending CMD6 Switch command causes our kernel to infinite wait for completion of sdcard command.
Is there anybody who has any idea about this problem?