Re: [PATCH RFC v5 1/5] dma: mpc512x: reorder mpc8308 specific instructions
[ 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 a13xp0p0...@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 a13xp0p0...@gmail.com --- drivers/dma/mpc512x_dma.c | 42 +- 1 file changed, 25 insertions(+), 17 deletions(-) Acked-by: Anatolij Gustschin ag...@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 -- DENX Software Engineering GmbH, MD: Wolfgang Denk Detlev Zundel HRB 165235 Munich, Office: Kirchenstr. 5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: off...@denx.de ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
[PATCH RFC v5 1/5] dma: mpc512x: reorder mpc8308 specific instructions
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 a13xp0p0...@gmail.com --- drivers/dma/mpc512x_dma.c | 42 +- 1 file changed, 25 insertions(+), 17 deletions(-) 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_DESCRIPTORS64 /* 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_MAX16 +#define MPC512x_DMACHAN_MAX64 +#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, 0x); + out_be32(mdma-regs-dmaerrl, 0x); + } 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, 0x); - out_be32(mdma-regs-dmaerrl, 0x); } /* Register DMA engine */ -- 1.7.11.3 ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH RFC v5 1/5] dma: mpc512x: reorder mpc8308 specific instructions
On Fri, 1 Nov 2013 11:19:30 +0400 Alexander Popov a13xp0p0...@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 a13xp0p0...@gmail.com --- drivers/dma/mpc512x_dma.c | 42 +- 1 file changed, 25 insertions(+), 17 deletions(-) Acked-by: Anatolij Gustschin ag...@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, 0x); + out_be32(mdma-regs-dmaerrl, 0x); + } 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, 0x); - out_be32(mdma-regs-dmaerrl, 0x); } /* Register DMA engine */ ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev