[U-Boot] [PATCH 01/13] mmc: tmio: Simplify pinmux handling

Masahiro Yamada yamada.masahiro at socionext.com
Fri Nov 2 03:58:34 UTC 2018


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.


-- 
Best Regards
Masahiro Yamada


More information about the U-Boot mailing list