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

Marek Vasut marex at denx.de
Mon Apr 2 21:26:24 CEST 2012


Dear Fabio Estevam,

> 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()?

I'd say arch_misc_init(), if it was before nand_init() though. Maybe we need 
arch_early_init_r() ?

Best regards,
Marek Vasut


More information about the U-Boot mailing list