Re: [PATCH V7 10/23] mmc: sdhci-uhs2: add reset function and uhs2_mode function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, Adrian

On Wed, Apr 12, 2023 at 9:10 PM Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote:
>
> On 31/03/23 13:55, Victor Shih wrote:
> > Sdhci_uhs2_reset() does a UHS-II specific reset operation.
> >
> > Signed-off-by: Ben Chuang <ben.chuang@xxxxxxxxxxxxxxxxxxx>
> > Signed-off-by: AKASHI Takahiro <takahiro.akashi@xxxxxxxxxx>
> > Signed-off-by: Victor Shih <victor.shih@xxxxxxxxxxxxxxxxxxx>
> > ---
> >  drivers/mmc/host/sdhci-uhs2.c | 46 +++++++++++++++++++++++++++++++++++
> >  drivers/mmc/host/sdhci-uhs2.h |  2 ++
> >  2 files changed, 48 insertions(+)
> >
> > diff --git a/drivers/mmc/host/sdhci-uhs2.c b/drivers/mmc/host/sdhci-uhs2.c
> > index 524d7cb6f2fd..67621eaabafc 100644
> > --- a/drivers/mmc/host/sdhci-uhs2.c
> > +++ b/drivers/mmc/host/sdhci-uhs2.c
> > @@ -10,7 +10,9 @@
> >   *  Author: AKASHI Takahiro <takahiro.akashi@xxxxxxxxxx>
> >   */
> >
> > +#include <linux/delay.h>
> >  #include <linux/module.h>
> > +#include <linux/iopoll.h>
> >
> >  #include "sdhci.h"
> >  #include "sdhci-uhs2.h"
> > @@ -49,6 +51,50 @@ void sdhci_uhs2_dump_regs(struct sdhci_host *host)
> >  }
> >  EXPORT_SYMBOL_GPL(sdhci_uhs2_dump_regs);
> >
> > +/*****************************************************************************\
> > + *                                                                           *
> > + * Low level functions                                                       *
> > + *                                                                           *
> > +\*****************************************************************************/
> > +
> > +bool sdhci_uhs2_mode(struct sdhci_host *host)
> > +{
> > +     return host->mmc->flags & MMC_UHS2_SUPPORT;
> > +}
> > +
> > +/**
> > + * sdhci_uhs2_reset - invoke SW reset
> > + * @host: SDHCI host
> > + * @mask: Control mask
> > + *
> > + * Invoke SW reset, depending on a bit in @mask and wait for completion.
> > + */
> > +void sdhci_uhs2_reset(struct sdhci_host *host, u16 mask)
> > +{
> > +     unsigned long timeout;
> > +     u32 val;
> > +
> > +     sdhci_writew(host, mask, SDHCI_UHS2_SW_RESET);
> > +
> > +     if (mask & SDHCI_UHS2_SW_RESET_FULL)
> > +             host->clock = 0;
> > +
> > +     /* Wait max 100 ms */
> > +     timeout = 100000;
> > +
> > +     /* hw clears the bit when it's done */
> > +     if (read_poll_timeout_atomic(sdhci_readw, val, !(val & mask), 10,
> > +                                  timeout, true, host, SDHCI_UHS2_SW_RESET)) {
> > +             pr_err("%s: %s: Reset 0x%x never completed.\n",
> > +                                            __func__, mmc_hostname(host->mmc), (int)mask);
>
> CHECK: Alignment should match open parenthesis
> #70: FILE: drivers/mmc/host/sdhci-uhs2.c:89:
> +               pr_err("%s: %s: Reset 0x%x never completed.\n",
> +                                              __func__, mmc_hostname(host->mmc), (int)mask);
>

I will fix it in the V8 version.

> > +             pr_err("%s: clean reset bit\n",
> > +                                            mmc_hostname(host->mmc));
>
> Line wrap not needed
>

I will update it to the V8 version.

> > +             sdhci_writeb(host, 0, SDHCI_UHS2_SW_RESET);
> > +             return;
> > +     }
> > +}
> > +EXPORT_SYMBOL_GPL(sdhci_uhs2_reset);
> > +
> >  /*****************************************************************************\
> >   *                                                                           *
> >   * Driver init/exit                                                          *
> > diff --git a/drivers/mmc/host/sdhci-uhs2.h b/drivers/mmc/host/sdhci-uhs2.h
> > index e948119348da..6834893eee85 100644
> > --- a/drivers/mmc/host/sdhci-uhs2.h
> > +++ b/drivers/mmc/host/sdhci-uhs2.h
> > @@ -178,5 +178,7 @@
> >  struct sdhci_host;
> >
> >  void sdhci_uhs2_dump_regs(struct sdhci_host *host);
> > +bool sdhci_uhs2_mode(struct sdhci_host *host);
> > +void sdhci_uhs2_reset(struct sdhci_host *host, u16 mask);
> >
> >  #endif /* __SDHCI_UHS2_H */
>

Thanks, Victor Shih




[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux