Re: [PATCH] mmc: sdhci-xenon: add gpio hard reset support

Jisheng Zhang
2017-08-16T02:27:18Z

On Tue, 15 Aug 2017 15:43:25 -0700 Zhoujie Wu wrote:

> Hi Jisheng,
>
> On 08/14/2017 07:56 PM, Jisheng Zhang wrote:
> > On Mon, 14 Aug 2017 15:19:16 -0700 Zhoujie Wu wrote:
> >
> >> On some platforms, like armada3700, SD card need to
> >> do hard reset by gpio toggling to make it work properly
> >> after warm reset the board.
> >> Add gpio hard reset feature for this purpose.
> >>
> >> Signed-off-by: Zhoujie Wu <zjwu@marvell.com>
> >> ---
> >> drivers/mmc/host/sdhci-xenon.c | 49 +++++++++++++++++++++++++++++++++++++++---
> >> drivers/mmc/host/sdhci-xenon.h | 4 ++++
> >> 2 files changed, 50 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/drivers/mmc/host/sdhci-xenon.c b/drivers/mmc/host/sdhci-xenon.c
> >> index edd4d915..54a7057 100644
> >> --- a/drivers/mmc/host/sdhci-xenon.c
> >> +++ b/drivers/mmc/host/sdhci-xenon.c
> >> @@ -18,6 +18,8 @@
> >> #include <linux/ktime.h>
> >> #include <linux/module.h>
> >> #include <linux/of.h>
> >> +#include <linux/of_gpio.h>
> >> +
> >>
> >> #include "sdhci-pltfm.h"
> >> #include "sdhci-xenon.h"
> >> @@ -210,12 +212,25 @@ static void xenon_set_uhs_signaling(struct sdhci_host *host,
> >> sdhci_writew(host, ctrl_2, SDHCI_HOST_CONTROL2);
> >> }
> >>
> >> +static void xenon_hw_reset(struct sdhci_host *host)
> >> +{
> >> + struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
> >> + struct xenon_priv *priv = sdhci_pltfm_priv(pltfm_host);
> >> +
> >> + if (priv->reset_gpio) {
> >> + gpiod_set_value_cansleep(priv->reset_gpio, 0);
> >> + msleep(30);
> >> + gpiod_set_value_cansleep(priv->reset_gpio, 1);
> > Does setting the pin to low means assert reset in your HW? You'd better
> > invert the logic in the DT.
> >
> > As for reset gpio, logic "1" means assert the reset, logic "0" means
> > de-assert the reset.
>
> Actually what I want is to cut the sd card power and enable it after that.
> the gpio is used to controller the power supply to sd card.
> I need this gpio init as low, then set it from 0->1 to do a power cycle.

If so, name the "reset" in the commit msg and source as "power", I.E

"mmc: sdhci-xenon: add power gpio support"

and

"power_gpio"