[U-Boot] [PATCH 01/13] mmc: tmio: Simplify pinmux handling
Marek Vasut
marek.vasut at gmail.com
Thu Nov 1 12:12:00 UTC 2018
On 11/01/2018 12:38 PM, Masahiro Yamada wrote:
> On Thu, Nov 1, 2018 at 2:21 AM Marek Vasut <marek.vasut at gmail.com> wrote:
>>
>> The SD UHS SDR12, SDR25, SDR50, SDR104, DDR50 and MMC HS200, HS400
>> modes all use 1.8V signaling, while all the legacy modes use 3.3V
>> signaling. While there are extra modes which use 1.2V signaling,
>> the existing hardware does not support those.
>>
>> Simplify the pinmux such that 3.3V signaling implies legacy mode
>> pinmux and the rest implies UHS mode pinmux. This prevents the
>> massive case statement from growing further. Moreover, it fixes
>> an edge case where during SD 1.8V switch, the bus mode is still
>> set to default while the signaling is already set to 1.8V, which
>> results in an attempt to communicate with a 1.8V card using pins
>> in 3.3V mode and thus communication failure.
>>
>> Signed-off-by: Marek Vasut <marek.vasut+renesas at gmail.com>
>> Cc: Masahiro Yamada <yamada.masahiro at socionext.com>
>> ---
>> drivers/mmc/tmio-common.c | 22 +++-------------------
>> 1 file changed, 3 insertions(+), 19 deletions(-)
>>
>> diff --git a/drivers/mmc/tmio-common.c b/drivers/mmc/tmio-common.c
>> index 138de59470..5f927c6150 100644
>> --- a/drivers/mmc/tmio-common.c
>> +++ b/drivers/mmc/tmio-common.c
>> @@ -622,26 +622,10 @@ static void tmio_sd_set_pins(struct udevice *dev)
>> #endif
>>
>> #ifdef CONFIG_PINCTRL
>> - switch (mmc->selected_mode) {
>> - case MMC_LEGACY:
>> - case SD_LEGACY:
>> - case MMC_HS:
>> - case SD_HS:
>> - case MMC_HS_52:
>> - case MMC_DDR_52:
>> - pinctrl_select_state(dev, "default");
>> - break;
>> - case UHS_SDR12:
>> - case UHS_SDR25:
>> - case UHS_SDR50:
>> - case UHS_DDR50:
>> - case UHS_SDR104:
>> - case MMC_HS_200:
>> + if (mmc->signal_voltage == MMC_SIGNAL_VOLTAGE_180)
>> pinctrl_select_state(dev, "state_uhs");
>> - break;
>> - default:
>> - break;
>> - }
>> + else
>> + pinctrl_select_state(dev, "default");
>> #endif
>> }
>
>
> Looks a nice clean-up
> although the current code is already screwed up, I guess.
>
> "state_uhs" is Renesas-specific DT binding
> while it is sitting in the common code.
Is there any socionext device which supports 1V8 signaling with this core ?
--
Best regards,
Marek Vasut
More information about the U-Boot
mailing list