[U-Boot] [PATCH v2] mmc: mxsmmc: Fix operation with DMA

Marek Vasut marex at denx.de
Mon Apr 2 21:38:00 CEST 2012


Dear Anatolij Gustschin,

> Hi Fabio,
> 
> On Mon, 2 Apr 2012 16:18:18 -0300
> 
> Fabio Estevam <festevam at gmail.com> wrote:
> > On Mon, Apr 2, 2012 at 4:03 PM, Marek Vasut <marex at denx.de> wrote:
> > > Because that's called before relocation ;-)
> > 
> > What about this?
> > 
> > --- a/drivers/dma/apbh_dma.c
> > +++ b/drivers/dma/apbh_dma.c
> > @@ -35,6 +35,7 @@
> > 
> >  static struct mxs_dma_chan mxs_dma_channels[MXS_MAX_DMA_CHANNELS];
> > 
> > +static int first;
> > 
> >  /*
> >  
> >   * Test is the DMA channel is valid channel
> >   */
> > 
> > @@ -346,6 +347,10 @@ struct mxs_dma_desc *mxs_dma_desc_alloc(void)
> > 
> >         struct mxs_dma_desc *pdesc;
> >         uint32_t size;
> > 
> > +       if (!first)
> > +               mxs_dma_init();
> > +       first++;
> > +
> > 
> >         size = roundup(sizeof(struct mxs_dma_desc), MXS_DMA_ALIGNMENT);
> >         pdesc = memalign(MXS_DMA_ALIGNMENT, size);
> > 
> > Too ugly? Or any better place for calling  mxs_dma_init()?
> 
> Won't calling mxs_dma_init() from arch_misc_init() work?

No, because that's called after NAND is inited. And NAND needs DMA for it's init 
:(

> 
> Thanks,
> Anatolij

Best regards,
Marek Vasut


More information about the U-Boot mailing list