[U-Boot] [PATCH 01/13] mmc: tmio: Simplify pinmux handling
Marek Vasut
marek.vasut at gmail.com
Fri Nov 2 14:20:49 UTC 2018
On 11/02/2018 04:58 AM, Masahiro Yamada wrote:
> On Thu, Nov 1, 2018 at 9:14 PM Marek Vasut <marek.vasut at gmail.com> wrote:
>>
>> 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 ?
>>
>
> Yes.
You think I can get one ? :)
btw are you OK if I queue up patch 1,7,8 already for this cycle, as they
are fixes ? I'd also like to pick 4 and 6 if you don't mind?
--
Best regards,
Marek Vasut
More information about the U-Boot
mailing list