sh: Update dma-sh api
PATCH v3 1/1 sh: Update dma-sh api
Add DMA support of new SH CPU and the change of definition. And add Multi IRQ support for SH7763/64/80/85.
Signed-off-by Nobuhiro Iwamatsu <[email protected]>
Signed-off-by Yoshihiro Shimoda <[email protected]>
---
V3: revert CONFIG_NR_ONCHIP_DMA_CHANNELS defconfig
arch/sh/drivers/dma/Kconfig | 8 +- arch/sh/drivers/dma/dma-sh.c | 172 ++++++++++++++++++++---------- arch/sh/drivers/dma/dma-sh.h | 75 ------------- arch/sh/include/asm/dma-sh.h | 117 ++++++++++++++++++++ arch/sh/include/asm/dma.h | 4 +- arch/sh/include/cpu-sh3/cpu/dma.h | 17 +-- arch/sh/include/cpu-sh4/cpu/dma-sh4a.h | 94 ++++++++++++++++ arch/sh/include/cpu-sh4/cpu/dma-sh7780.h | 39 ------- arch/sh/include/cpu-sh4/cpu/dma.h | 30 +++--- 9 files changed, 352 insertions(+), 204 deletions(-) delete mode 100644 arch/sh/drivers/dma/dma-sh.h create mode 100644 arch/sh/include/asm/dma-sh.h create mode 100644 arch/sh/include/cpu-sh4/cpu/dma-sh4a.h delete mode 100644 arch/sh/include/cpu-sh4/cpu/dma-sh7780.h
arch/sh/drivers/dma/Kconfig +4 -4
@@ -12,10 +12,10 @@ config SH_DMA config NR_ONCHIP_DMA_CHANNELS int depends on SH_DMA - default "6" if CPU_SUBTYPE_SH7720 || CPU_SUBTYPE_SH7721 - default "8" if CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R - default "12" if CPU_SUBTYPE_SH7780 - default "4" + default "4" if CPU_SUBTYPE_SH7750 || CPU_SUBTYPE_SH7751 || CPU_SUBTYPE_SH7750S + default "8" if CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R || CPU_SUBTYPE_SH7760 + default "12" if CPU_SUBTYPE_SH7723 || CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785 + default "6" help This allows you to specify the number of channels that the on-chip DMAC supports. This will be 4 for SH7750/SH7751 and 8 for the
arch/sh/drivers/dma/dma-sh.c +115 -57
296 lines not on this page · raw message
arch/sh/drivers/dma/dma-sh.h deleted +0 -75
75 lines not on this page · raw message
arch/sh/include/asm/dma-sh.h new file +117 -0
117 lines not on this page · raw message
arch/sh/include/asm/dma.h +2 -2
@@ -25,9 +25,9 @@#define MAX_DMA_ADDRESS (PAGE_OFFSET+0x10000000)#ifdef CONFIG_NR_DMA_CHANNELS -# define MAX_DMA_CHANNELS (CONFIG_NR_DMA_CHANNELS) +# define MAX_DMA_CHANNELS (CONFIG_NR_DMA_CHANNELS)#else -# define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS) +# define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS)#endif /*
arch/sh/include/cpu-sh3/cpu/dma.h +6 -11
@@ -1,22 +1,17 @@#ifndef __ASM_CPU_SH3_DMA_H#define __ASM_CPU_SH3_DMA_H -#if defined(CONFIG_CPU_SUBTYPE_SH7720 ) || \ - defined(CONFIG_CPU_SUBTYPE_SH7721 ) -#define SH_DMAC_BASE 0xa4010020 -#else -#define SH_DMAC_BASE 0xa4000020 + defined(CONFIG_CPU_SUBTYPE_SH7721 ) || \ + defined(CONFIG_CPU_SUBTYPE_SH7710 ) || \ + defined(CONFIG_CPU_SUBTYPE_SH7712 ) +#define SH_DMAC_BASE0 0xa4010020 +#else /* SH7705/06/07/09 */ +#define SH_DMAC_BASE0 0xa4000020#endif -#if defined(CONFIG_CPU_SUBTYPE_SH7720 ) || defined(CONFIG_CPU_SUBTYPE_SH7709 )#define DMTE0_IRQ 48 -#define DMTE1_IRQ 49 -#define DMTE2_IRQ 50 -#define DMTE3_IRQ 51#define DMTE4_IRQ 76 -#define DMTE5_IRQ 77 -#endif /* Definitions for the SuperH DMAC */ #define TM_BURST 0x00000020
arch/sh/include/cpu-sh4/cpu/dma-sh4a.h new file +94 -0
94 lines not on this page · raw message
arch/sh/include/cpu-sh4/cpu/dma-sh7780.h deleted +0 -39
@@ -1,39 +0,0 @@ -#ifndef __ASM_SH_CPU_SH4_DMA_SH7780_H -#define __ASM_SH_CPU_SH4_DMA_SH7780_H - -#define REQ_HE 0x000000C0 -#define REQ_H 0x00000080 -#define REQ_LE 0x00000040 -#define TM_BURST 0x0000020 -#define TS_8 0x00000000 -#define TS_16 0x00000008 -#define TS_32 0x00000010 -#define TS_16BLK 0x00000018 -#define TS_32BLK 0x00100000 - -/* -* The SuperH DMAC supports a number of transmit sizes, we list them here, -* with their respective values as they appear in the CHCR registers. -* -* Defaults to a 64-bit transfer size. -*/ -enum { -XMIT_SZ_8BIT , -XMIT_SZ_16BIT , -XMIT_SZ_32BIT , -XMIT_SZ_128BIT , -XMIT_SZ_256BIT , -}; - -/* -* The DMA count is defined as the number of bytes to transfer. -*/ -static unsigned int ts_shift[]__maybe_unused = { - [XMIT_SZ_8BIT ] =0 , - [XMIT_SZ_16BIT ] =1 , - [XMIT_SZ_32BIT ] =2 , - [XMIT_SZ_128BIT ] =4 , - [XMIT_SZ_256BIT ] =5 , -}; - -#endif /* __ASM_SH_CPU_SH4_DMA_SH7780_H */
arch/sh/include/cpu-sh4/cpu/dma.h +14 -16
@@ -1,31 +1,29 @@#ifndef __ASM_CPU_SH4_DMA_H#define __ASM_CPU_SH4_DMA_H -#define DMAOR_INIT ( 0x8000 | DMAOR_DME ) -/* SH7751/7760/7780 DMA IRQ sources */ -#define DMTE0_IRQ 34 -#define DMTE1_IRQ 35 -#define DMTE2_IRQ 36 -#define DMTE3_IRQ 37 -#define DMTE4_IRQ 44 -#define DMTE5_IRQ 45 -#define DMTE6_IRQ 46 -#define DMTE7_IRQ 47 -#define DMAE_IRQ 38#ifdef CONFIG_CPU_SH4A -#define SH_DMAC_BASE 0xfc808020 +#define DMAOR_INIT (DMAOR_DME)#define CHCR_TS_MASK 0x18#define CHCR_TS_SHIFT 3 -#include <cpu/dma-sh7780.h> -#else -#define SH_DMAC_BASE 0xffa00000 +#include <cpu/dma-sh4a.h> +#else /* CONFIG_CPU_SH4A */ +/* +* SH7750/SH7751/SH7760 +*/ +#define DMTE0_IRQ 34 +#define DMTE4_IRQ 44 +#define DMTE6_IRQ 46 +#define DMAE0_IRQ 38 +#define DMAOR_INIT (0x8000|DMAOR_DME) +#define SH_DMAC_BASE0 0xffa00000 +#define SH_DMAC_BASE1 0xffa00070/* Definitions for the SuperH DMAC */ -#define TM_BURST 0x0000080 +#define TM_BURST 0x00000080#define TS_8 0x00000010#define TS_16 0x00000020#define TS_32 0x00000030
Signature · 1 line
1.6.1.3
Paul Mundt
AppliedQuoted 5 lines · Nobuhiro Iwamatsu
Add DMA support of new SH CPU and the change of definition. And add Multi IRQ support for SH7763/64/80/85.
Signed-off-by Nobuhiro Iwamatsu <[email protected]>Signed-off-by Yoshihiro Shimoda <[email protected]>
Applied, thanks.