From mboxrd@z Thu Jan 1 00:00:00 1970 From: Masahiro Yamada Date: Thu, 1 Nov 2018 20:38:22 +0900 Subject: [U-Boot] [PATCH 01/13] mmc: tmio: Simplify pinmux handling In-Reply-To: <20181031171606.13561-1-marek.vasut+renesas@gmail.com> References: <20181031171606.13561-1-marek.vasut+renesas@gmail.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Thu, Nov 1, 2018 at 2:21 AM Marek Vasut 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 > Cc: Masahiro Yamada > --- > 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. -- Best Regards Masahiro Yamada