[U-Boot] [PATCH 1/6] mxs: dma: Fix APBH DMA driver for MX23

Marek Vasut
2013-01-24T18:27:29Z

Dear Stefano Babic,

> On 23/01/2013 02:01, Marek Vasut wrote:
> > The MX23 has less channels for the APBH DMA, sligtly different register
> > layout and some bits in those registers are placed differently. Reflect
> > this in the driver. This patch fixes MMC/DMA issue on MX23.
> >
> > Signed-off-by: Marek Vasut <marex@denx.de>
> > Cc: Otavio Salvador <otavio@ossystems.com.br>
> > Cc: Fabio Estevam <fabio.estevam@freescale.com>
> > Cc: Stefano Babic <sbabic@denx.de>
> > ---
> >
> > arch/arm/include/asm/arch-mxs/regs-apbh.h | 121
> > +++++++++++++++++++++++++++++ drivers/dma/apbh_dma.c
> > | 10 ++-
> > 2 files changed, 129 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/arm/include/asm/arch-mxs/regs-apbh.h
> > b/arch/arm/include/asm/arch-mxs/regs-apbh.h index e18e677..fcef4b8
> > 100644
> > --- a/arch/arm/include/asm/arch-mxs/regs-apbh.h
> > +++ b/arch/arm/include/asm/arch-mxs/regs-apbh.h
> > @@ -29,6 +29,87 @@
> >
> > #include <asm/arch/regs-common.h>
> >
> > #ifndef __ASSEMBLY__
> >
> > +
> > +#if defined(CONFIG_MX23)
> > +struct mxs_apbh_regs {
> > + mxs_reg_32(hw_apbh_ctrl0)
> > + mxs_reg_32(hw_apbh_ctrl1)
> > + mxs_reg_32(hw_apbh_ctrl2)
> > + mxs_reg_32(hw_apbh_channel_ctrl)
>
> I see there are diffrent definitions, but why do not we set a common
> name (as an alias) ?
>
> Such as:
> #define hw_ahph_ctrl_set hw_apbh_ctrl0
>
> > +#if defined(CONFIG_MX23)
> > + uint32_t setreg = (uint32_t)(&apbh_regs->hw_apbh_ctrl0_set);
> > + uint32_t offset = APBH_CTRL0_RESET_CHANNEL_OFFSET;
>
> and we could drop the #ifdef in the driver file.

Oh this junk. On mx23, this bitfield is located in ctrl0 at offset 16 ; on mx28
there's a dedicated register for this bitfield (since mx28 has 16 dma channels,
mx23 has only 8).

So it's a bit confusing, but that's how it has to be done.

Best regards,
Marek Vasut