[U-Boot] [PATCH 01/13] mmc: tmio: Simplify pinmux handling
Masahiro Yamada
yamada.masahiro at socionext.com
Fri Nov 2 14:35:45 UTC 2018
On Fri, Nov 2, 2018 at 11:29 PM Marek Vasut <marek.vasut at gmail.com> wrote:
>
> 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?
OK, go ahead.
--
Best Regards
Masahiro Yamada
More information about the U-Boot
mailing list