[PATCH] mmc: sd: Handle UHS-I voltage signaling without power cycle
Tanmay Kathpalia
tanmay.kathpalia at altera.com
Wed Oct 22 16:06:40 CEST 2025
Hi Peng,
Thank you for your feedback.
On 10/22/2025 8:46 AM, Peng Fan wrote:
> Hi Tanmay,
>
> On Tue, Oct 21, 2025 at 01:45:26PM -0700, Tanmay Kathpalia wrote:
>> Some boards have SD card connectors where the power rail cannot be switched
>> off by the driver. However there are various circumstances when a card
>> might be re-initialized, such as after system resume, warm re-boot, or
>> error handling. However, a UHS card will continue to use 1.8V signaling
>> unless it is power cycled.
>>
>> If the card has not been power cycled, it may still be using 1.8V
>> signaling. According to the SD spec., the Bus Speed Mode (function group 1)
>> bits 2 to 4 are zero if the card is initialized at 3.3V signal level. Thus
>> they can be used to determine if the card has already switched to 1.8V
>> signaling. Detect that situation and try to initialize a UHS-I (1.8V)
>> transfer mode.
>
> Actually a power cycle or reset is required to make sure SD card to work
> correctly. Some SD cards may work in your case, some SD cards might not work,
> without a power cycle or reset.
>
> Thanks,
> Peng
>
According to the SD specification for the Switch Function command (CMD6):
"If the card is initialized in 3.3V signal level, Default Speed and High
Speed are assigned to function 0 and 1. Then support bits of function 2
to 4 (SDR50, SDR104 and DDR50) are set to 0. If the card is initialized
in 1.8V signal level, SDR and DDR modes are assigned from function 0 to
function 4."
This allows the host to detect if the card is already operating at 1.8V
signaling and proceed accordingly.
I have tested this approach with multiple SD cards from different
vendors and capacities, including:
- Kingston Canvas Select Plus 16GB SDR104
- Samsung EVO Select 128GB SDR104
- Samsung Evo Plus 128GB SDR104
All of these cards worked reliably in my tests.
For further reference, similar discussions and solutions have been
proposed in the Linux community:
https://lore.kernel.org/linux-mmc/a367a679-28f7-898a-c043-27df8c9c9aba@intel.com/
https://lore.kernel.org/linux-mmc/1506328144-13666-1-git-send-email-adrian.hunter@intel.com/
Thanks,
Tanmay
More information about the U-Boot
mailing list