Message ID | 1383290374-17484-2-git-send-email-a13xp0p0v88@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Anatolij Gustschin |
Headers | show |
On Fri, 1 Nov 2013 11:19:30 +0400 Alexander Popov <a13xp0p0v88@gmail.com> wrote: > Concentrate the specific code for MPC8308 in the 'if' branch > and handle MPC512x in the 'else' branch. > This modification only reorders instructions but doesn't change behaviour. > > Signed-off-by: Alexander Popov <a13xp0p0v88@gmail.com> > --- > drivers/dma/mpc512x_dma.c | 42 +++++++++++++++++++++++++----------------- > 1 file changed, 25 insertions(+), 17 deletions(-) Acked-by: Anatolij Gustschin <agust@denx.de> > > diff --git a/drivers/dma/mpc512x_dma.c b/drivers/dma/mpc512x_dma.c > index 2fe4353..f41639f 100644 > --- a/drivers/dma/mpc512x_dma.c > +++ b/drivers/dma/mpc512x_dma.c > @@ -50,9 +50,17 @@ > #define MPC_DMA_DESCRIPTORS 64 > > /* Macro definitions */ > -#define MPC_DMA_CHANNELS 64 > #define MPC_DMA_TCD_OFFSET 0x1000 > > +/* > + * Maximum channel counts for individual hardware variants > + * and the maximum channel count over all supported controllers, > + * used for data structure size > + */ > +#define MPC8308_DMACHAN_MAX 16 > +#define MPC512x_DMACHAN_MAX 64 > +#define MPC_DMA_CHANNELS 64 > + > /* Arbitration mode of group and channel */ > #define MPC_DMA_DMACR_EDCG (1 << 31) > #define MPC_DMA_DMACR_ERGA (1 << 3) > @@ -708,10 +716,10 @@ static int mpc_dma_probe(struct platform_device *op) > > dma = &mdma->dma; > dma->dev = dev; > - if (!mdma->is_mpc8308) > - dma->chancnt = MPC_DMA_CHANNELS; > + if (mdma->is_mpc8308) > + dma->chancnt = MPC8308_DMACHAN_MAX; > else > - dma->chancnt = 16; /* MPC8308 DMA has only 16 channels */ > + dma->chancnt = MPC512x_DMACHAN_MAX; > dma->device_alloc_chan_resources = mpc_dma_alloc_chan_resources; > dma->device_free_chan_resources = mpc_dma_free_chan_resources; > dma->device_issue_pending = mpc_dma_issue_pending; > @@ -745,7 +753,19 @@ static int mpc_dma_probe(struct platform_device *op) > * - Round-robin group arbitration, > * - Round-robin channel arbitration. > */ > - if (!mdma->is_mpc8308) { > + if (mdma->is_mpc8308) { > + /* MPC8308 has 16 channels and lacks some registers */ > + out_be32(&mdma->regs->dmacr, MPC_DMA_DMACR_ERCA); > + > + /* enable snooping */ > + out_be32(&mdma->regs->dmagpor, MPC_DMA_DMAGPOR_SNOOP_ENABLE); > + /* Disable error interrupts */ > + out_be32(&mdma->regs->dmaeeil, 0); > + > + /* Clear interrupts status */ > + out_be32(&mdma->regs->dmaintl, 0xFFFF); > + out_be32(&mdma->regs->dmaerrl, 0xFFFF); > + } else { > out_be32(&mdma->regs->dmacr, MPC_DMA_DMACR_EDCG | > MPC_DMA_DMACR_ERGA | MPC_DMA_DMACR_ERCA); > > @@ -766,18 +786,6 @@ static int mpc_dma_probe(struct platform_device *op) > /* Route interrupts to IPIC */ > out_be32(&mdma->regs->dmaihsa, 0); > out_be32(&mdma->regs->dmailsa, 0); > - } else { > - /* MPC8308 has 16 channels and lacks some registers */ > - out_be32(&mdma->regs->dmacr, MPC_DMA_DMACR_ERCA); > - > - /* enable snooping */ > - out_be32(&mdma->regs->dmagpor, MPC_DMA_DMAGPOR_SNOOP_ENABLE); > - /* Disable error interrupts */ > - out_be32(&mdma->regs->dmaeeil, 0); > - > - /* Clear interrupts status */ > - out_be32(&mdma->regs->dmaintl, 0xFFFF); > - out_be32(&mdma->regs->dmaerrl, 0xFFFF); > } > > /* Register DMA engine */
[ dropping devicetree@vger from CC ] On Fri, Nov 01, 2013 at 11:04 +0100, Anatolij Gustschin wrote: > > On Fri, 1 Nov 2013 11:19:30 +0400 > Alexander Popov <a13xp0p0v88@gmail.com> wrote: > > > Concentrate the specific code for MPC8308 in the 'if' branch > > and handle MPC512x in the 'else' branch. > > This modification only reorders instructions but doesn't change behaviour. > > > > Signed-off-by: Alexander Popov <a13xp0p0v88@gmail.com> > > --- > > drivers/dma/mpc512x_dma.c | 42 +++++++++++++++++++++++++----------------- > > 1 file changed, 25 insertions(+), 17 deletions(-) > > Acked-by: Anatolij Gustschin <agust@denx.de> I feel that this patch has become stable and can be taken, regardless of the pending review of the other parts in the series. virtually yours Gerhard Sittig
diff --git a/drivers/dma/mpc512x_dma.c b/drivers/dma/mpc512x_dma.c index 2fe4353..f41639f 100644 --- a/drivers/dma/mpc512x_dma.c +++ b/drivers/dma/mpc512x_dma.c @@ -50,9 +50,17 @@ #define MPC_DMA_DESCRIPTORS 64 /* Macro definitions */ -#define MPC_DMA_CHANNELS 64 #define MPC_DMA_TCD_OFFSET 0x1000 +/* + * Maximum channel counts for individual hardware variants + * and the maximum channel count over all supported controllers, + * used for data structure size + */ +#define MPC8308_DMACHAN_MAX 16 +#define MPC512x_DMACHAN_MAX 64 +#define MPC_DMA_CHANNELS 64 + /* Arbitration mode of group and channel */ #define MPC_DMA_DMACR_EDCG (1 << 31) #define MPC_DMA_DMACR_ERGA (1 << 3) @@ -708,10 +716,10 @@ static int mpc_dma_probe(struct platform_device *op) dma = &mdma->dma; dma->dev = dev; - if (!mdma->is_mpc8308) - dma->chancnt = MPC_DMA_CHANNELS; + if (mdma->is_mpc8308) + dma->chancnt = MPC8308_DMACHAN_MAX; else - dma->chancnt = 16; /* MPC8308 DMA has only 16 channels */ + dma->chancnt = MPC512x_DMACHAN_MAX; dma->device_alloc_chan_resources = mpc_dma_alloc_chan_resources; dma->device_free_chan_resources = mpc_dma_free_chan_resources; dma->device_issue_pending = mpc_dma_issue_pending; @@ -745,7 +753,19 @@ static int mpc_dma_probe(struct platform_device *op) * - Round-robin group arbitration, * - Round-robin channel arbitration. */ - if (!mdma->is_mpc8308) { + if (mdma->is_mpc8308) { + /* MPC8308 has 16 channels and lacks some registers */ + out_be32(&mdma->regs->dmacr, MPC_DMA_DMACR_ERCA); + + /* enable snooping */ + out_be32(&mdma->regs->dmagpor, MPC_DMA_DMAGPOR_SNOOP_ENABLE); + /* Disable error interrupts */ + out_be32(&mdma->regs->dmaeeil, 0); + + /* Clear interrupts status */ + out_be32(&mdma->regs->dmaintl, 0xFFFF); + out_be32(&mdma->regs->dmaerrl, 0xFFFF); + } else { out_be32(&mdma->regs->dmacr, MPC_DMA_DMACR_EDCG | MPC_DMA_DMACR_ERGA | MPC_DMA_DMACR_ERCA); @@ -766,18 +786,6 @@ static int mpc_dma_probe(struct platform_device *op) /* Route interrupts to IPIC */ out_be32(&mdma->regs->dmaihsa, 0); out_be32(&mdma->regs->dmailsa, 0); - } else { - /* MPC8308 has 16 channels and lacks some registers */ - out_be32(&mdma->regs->dmacr, MPC_DMA_DMACR_ERCA); - - /* enable snooping */ - out_be32(&mdma->regs->dmagpor, MPC_DMA_DMAGPOR_SNOOP_ENABLE); - /* Disable error interrupts */ - out_be32(&mdma->regs->dmaeeil, 0); - - /* Clear interrupts status */ - out_be32(&mdma->regs->dmaintl, 0xFFFF); - out_be32(&mdma->regs->dmaerrl, 0xFFFF); } /* Register DMA engine */
Concentrate the specific code for MPC8308 in the 'if' branch and handle MPC512x in the 'else' branch. This modification only reorders instructions but doesn't change behaviour. Signed-off-by: Alexander Popov <a13xp0p0v88@gmail.com> --- drivers/dma/mpc512x_dma.c | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-)