----- "Marek Vasut" <marek.va...@gmail.com> wrote:

> > ----- "Marek Vasut" <marek.va...@gmail.com> wrote:
> > > > sdhci_readw does not work for host version read in Armada100
> series
> > > > SoCs. This patch fix this issue by making a sdhci_readl call to
> get
> > > 
> > > host
> > > 
> > > > version.
> > > > 
> > > > Signed-off-by: Ajay Bhargav <ajay.bhar...@einfochips.com>
> > > > ---
> > > > 
> > > >  drivers/mmc/mv_sdhci.c |    6 ++++++
> > > >  1 files changed, 6 insertions(+), 0 deletions(-)
> > > > 
> > > > diff --git a/drivers/mmc/mv_sdhci.c b/drivers/mmc/mv_sdhci.c
> > > > index f92caeb..c7fd287 100644
> > > > --- a/drivers/mmc/mv_sdhci.c
> > > > +++ b/drivers/mmc/mv_sdhci.c
> > > > @@ -30,6 +30,7 @@ static inline void mv_sdhci_writeb(struct
> > > 
> > > sdhci_host
> > > 
> > > > *host, u8 val, int reg) #endif /* CONFIG_MMC_SDHCI_IO_ACCESSORS
> */
> > > > 
> > > >  static char *MVSDH_NAME = "mv_sdh";
> > > > 
> > > > +
> > > > 
> > > >  int mv_sdh_init(u32 regbase, u32 max_clk, u32 min_clk, u32
> quirks)
> > > >  {
> > > >  
> > > >         struct sdhci_host *host = NULL;
> > > > 
> > > > @@ -48,7 +49,12 @@ int mv_sdh_init(u32 regbase, u32 max_clk,
> u32
> > > 
> > > min_clk,
> > > 
> > > > u32 quirks) mv_ops.write_b = mv_sdhci_writeb;
> > > > 
> > > >         host->ops = &mv_ops;
> > > >  
> > > >  #endif
> > > > 
> > > > +#ifdef CONFIG_ARMADA100
> > > > +       /* SDHCI host version read workaround for Armada100 series */
> > > > +       host->version = sdhci_readl(host, SDHCI_HOST_VERSION - 2) >>
> 16;
> > > > +#else
> > > > 
> > > >         host->version = sdhci_readw(host, SDHCI_HOST_VERSION);
> > > > 
> > > > +#endif
> > > > 
> > > >         add_sdhci(host, max_clk, min_clk);
> > > >         return 0;
> > > >  
> > > >  }
> > > 
> > > Basically armada100 can't do 16bit access to that register. Ok,
> but
> > > why does it
> > > work for other registers? Also, can you make this a config option
> like
> > > 
> > > CONFIG_SDHCI_REG32_QUIRK (invent some better name ;-) ).
> > > 
> > > Cheers
> > 
> > Hi Marek,
> > 
> > Armada100 SOC has this bug for particularly that register. This is
> > particularly for that register so Do you think a config is required
> for
> > this?
> 
> Well such crippled hardware might appear somewhere else too, so yes.
> But still, 
> it's surprising it's only one register, really. Can you point me to a
> 
> datasheet/errata stating it?
> 
> Thanks!
> 
I agree, adding a quirk for this is best option this way driver will still be 
generic for marvell series.
Marek, I am really sorry but I am not allowed to share errata here :) I will 
ask my senior if i can atleast send you a screenshot regarding this issue.

Regards,
Ajay Bhargav
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to