[U-Boot] [PATCH v1] mmc: sdhci: SDHCI controllers also need power

Andy Shevchenko andriy.shevchenko at linux.intel.com
Mon Mar 20 12:51:06 UTC 2017


On Sun, 2017-03-19 at 20:30 -0600, Simon Glass wrote:
> Hi Andy,
> 
> On 15 March 2017 at 12:25, Andy Shevchenko
> <andriy.shevchenko at linux.intel.com> wrote:
> > On some systems SDHCI controllers may be powered off and it's
> > required
> > to bring them on before accessing.
> > 
> > SDHCI generic driver currently lacks any mean of doing it. Call the
> > same
> > board_power_mmc_init() at sdhci_init() stage.
> > 
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko at linux.intel.com>
> > ---
> >  drivers/mmc/sdhci.c | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
> > index 93cefd89cd..54a7e379ff 100644
> > --- a/drivers/mmc/sdhci.c
> > +++ b/drivers/mmc/sdhci.c
> > @@ -469,6 +469,8 @@ static int sdhci_init(struct mmc *mmc)
> >  {
> >         struct sdhci_host *host = mmc->priv;
> > 
> > +       board_mmc_power_init();
> 
> You should be using driver model for this (CONFIG_DM_MMC*).

I didn't get this part. It's used by the driver (tangier_sdhci) as far
as I understand.

>  So either
> get the power supply from the device tree and enable it,

Any example?

>  or do this in
> the board code.

How? It's already board code that powers on the controller. If you look
at mmc_init() it does this. SDHCI on the other hand doesn't which is for
my opinion is a bug. Otherwise why is the difference between
initialization sequence of MMC and SHDCI controllers?

> 
> > +
> >         sdhci_reset(host, SDHCI_RESET_ALL);
> > 
> >         if ((host->quirks & SDHCI_QUIRK_32BIT_DMA_ADDR) &&
> > !aligned_buffer) {
> > --
> > 2.11.0
> > 
> 
> Regards,
> Simon

-- 
Andy Shevchenko <andriy.shevchenko at linux.intel.com>
Intel Finland Oy


More information about the U-Boot mailing list