diff options
Diffstat (limited to 'arch/sh/include/asm/dma-sh.h')
-rw-r--r-- | arch/sh/include/asm/dma-sh.h | 55 |
1 files changed, 47 insertions, 8 deletions
diff --git a/arch/sh/include/asm/dma-sh.h b/arch/sh/include/asm/dma-sh.h index 78eed3e0bdf5..e934a2e66651 100644 --- a/arch/sh/include/asm/dma-sh.h +++ b/arch/sh/include/asm/dma-sh.h | |||
@@ -20,14 +20,14 @@ | |||
20 | defined(CONFIG_CPU_SUBTYPE_SH7780) || \ | 20 | defined(CONFIG_CPU_SUBTYPE_SH7780) || \ |
21 | defined(CONFIG_CPU_SUBTYPE_SH7785) | 21 | defined(CONFIG_CPU_SUBTYPE_SH7785) |
22 | #define dmaor_read_reg(n) \ | 22 | #define dmaor_read_reg(n) \ |
23 | (n ? ctrl_inw(SH_DMAC_BASE1 + DMAOR) \ | 23 | (n ? __raw_readw(SH_DMAC_BASE1 + DMAOR) \ |
24 | : ctrl_inw(SH_DMAC_BASE0 + DMAOR)) | 24 | : __raw_readw(SH_DMAC_BASE0 + DMAOR)) |
25 | #define dmaor_write_reg(n, data) \ | 25 | #define dmaor_write_reg(n, data) \ |
26 | (n ? ctrl_outw(data, SH_DMAC_BASE1 + DMAOR) \ | 26 | (n ? __raw_writew(data, SH_DMAC_BASE1 + DMAOR) \ |
27 | : ctrl_outw(data, SH_DMAC_BASE0 + DMAOR)) | 27 | : __raw_writew(data, SH_DMAC_BASE0 + DMAOR)) |
28 | #else /* Other CPU */ | 28 | #else /* Other CPU */ |
29 | #define dmaor_read_reg(n) ctrl_inw(SH_DMAC_BASE0 + DMAOR) | 29 | #define dmaor_read_reg(n) __raw_readw(SH_DMAC_BASE0 + DMAOR) |
30 | #define dmaor_write_reg(n, data) ctrl_outw(data, SH_DMAC_BASE0 + DMAOR) | 30 | #define dmaor_write_reg(n, data) __raw_writew(data, SH_DMAC_BASE0 + DMAOR) |
31 | #endif | 31 | #endif |
32 | 32 | ||
33 | static int dmte_irq_map[] __maybe_unused = { | 33 | static int dmte_irq_map[] __maybe_unused = { |
@@ -64,8 +64,10 @@ static int dmte_irq_map[] __maybe_unused = { | |||
64 | #define ACK_L 0x00010000 | 64 | #define ACK_L 0x00010000 |
65 | #define DM_INC 0x00004000 | 65 | #define DM_INC 0x00004000 |
66 | #define DM_DEC 0x00008000 | 66 | #define DM_DEC 0x00008000 |
67 | #define DM_FIX 0x0000c000 | ||
67 | #define SM_INC 0x00001000 | 68 | #define SM_INC 0x00001000 |
68 | #define SM_DEC 0x00002000 | 69 | #define SM_DEC 0x00002000 |
70 | #define SM_FIX 0x00003000 | ||
69 | #define RS_IN 0x00000200 | 71 | #define RS_IN 0x00000200 |
70 | #define RS_OUT 0x00000300 | 72 | #define RS_OUT 0x00000300 |
71 | #define TS_BLK 0x00000040 | 73 | #define TS_BLK 0x00000040 |
@@ -83,7 +85,7 @@ static int dmte_irq_map[] __maybe_unused = { | |||
83 | * Define the default configuration for dual address memory-memory transfer. | 85 | * Define the default configuration for dual address memory-memory transfer. |
84 | * The 0x400 value represents auto-request, external->external. | 86 | * The 0x400 value represents auto-request, external->external. |
85 | */ | 87 | */ |
86 | #define RS_DUAL (DM_INC | SM_INC | 0x400 | TS_32) | 88 | #define RS_DUAL (DM_INC | SM_INC | 0x400 | TS_INDEX2VAL(XMIT_SZ_32BIT)) |
87 | 89 | ||
88 | /* DMA base address */ | 90 | /* DMA base address */ |
89 | static u32 dma_base_addr[] __maybe_unused = { | 91 | static u32 dma_base_addr[] __maybe_unused = { |
@@ -123,10 +125,47 @@ static u32 dma_base_addr[] __maybe_unused = { | |||
123 | */ | 125 | */ |
124 | #define SHDMA_MIX_IRQ (1 << 1) | 126 | #define SHDMA_MIX_IRQ (1 << 1) |
125 | #define SHDMA_DMAOR1 (1 << 2) | 127 | #define SHDMA_DMAOR1 (1 << 2) |
126 | #define SHDMA_DMAE1 (1 << 3) | 128 | #define SHDMA_DMAE1 (1 << 3) |
129 | |||
130 | enum sh_dmae_slave_chan_id { | ||
131 | SHDMA_SLAVE_SCIF0_TX, | ||
132 | SHDMA_SLAVE_SCIF0_RX, | ||
133 | SHDMA_SLAVE_SCIF1_TX, | ||
134 | SHDMA_SLAVE_SCIF1_RX, | ||
135 | SHDMA_SLAVE_SCIF2_TX, | ||
136 | SHDMA_SLAVE_SCIF2_RX, | ||
137 | SHDMA_SLAVE_SCIF3_TX, | ||
138 | SHDMA_SLAVE_SCIF3_RX, | ||
139 | SHDMA_SLAVE_SCIF4_TX, | ||
140 | SHDMA_SLAVE_SCIF4_RX, | ||
141 | SHDMA_SLAVE_SCIF5_TX, | ||
142 | SHDMA_SLAVE_SCIF5_RX, | ||
143 | SHDMA_SLAVE_SIUA_TX, | ||
144 | SHDMA_SLAVE_SIUA_RX, | ||
145 | SHDMA_SLAVE_SIUB_TX, | ||
146 | SHDMA_SLAVE_SIUB_RX, | ||
147 | SHDMA_SLAVE_NUMBER, /* Must stay last */ | ||
148 | }; | ||
149 | |||
150 | struct sh_dmae_slave_config { | ||
151 | enum sh_dmae_slave_chan_id slave_id; | ||
152 | dma_addr_t addr; | ||
153 | u32 chcr; | ||
154 | char mid_rid; | ||
155 | }; | ||
127 | 156 | ||
128 | struct sh_dmae_pdata { | 157 | struct sh_dmae_pdata { |
129 | unsigned int mode; | 158 | unsigned int mode; |
159 | struct sh_dmae_slave_config *config; | ||
160 | int config_num; | ||
161 | }; | ||
162 | |||
163 | struct device; | ||
164 | |||
165 | struct sh_dmae_slave { | ||
166 | enum sh_dmae_slave_chan_id slave_id; /* Set by the platform */ | ||
167 | struct device *dma_dev; /* Set by the platform */ | ||
168 | struct sh_dmae_slave_config *config; /* Set by the driver */ | ||
130 | }; | 169 | }; |
131 | 170 | ||
132 | #endif /* __DMA_SH_H */ | 171 | #endif /* __DMA_SH_H */ |