diff options
author | Magnus Damm <damm@opensource.se> | 2010-03-19 00:47:10 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2010-03-23 04:20:06 -0400 |
commit | b2623a61cfd3c6badb8396dc85ab5a70f4a05f61 (patch) | |
tree | 186d032c4005f37be7af1d657f193405cd7d3af3 /arch | |
parent | f354a38175f5219146f4675dca770e114cf3c502 (diff) |
dmaengine: shdma: Introduce include/linux/sh_dma.h
Create a common platform data header file for the
shdma dmaengine driver. This is done by moving
common structures from sh asm/dmaengine.h to
linux/sh_dma.h. DMA registers are also copied from
sh asm/dma-register.h to make the code architecture
independent.
The sh header file asm/dmaengine.h is still kept
with the slave id enum. This allows us to keep the
old processor specific code as is and slowly move
over to slave id enums in per-processor headers.
Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sh/include/asm/dmaengine.h | 60 |
1 files changed, 1 insertions, 59 deletions
diff --git a/arch/sh/include/asm/dmaengine.h b/arch/sh/include/asm/dmaengine.h index abb8d660b6fb..2a02b611a9ad 100644 --- a/arch/sh/include/asm/dmaengine.h +++ b/arch/sh/include/asm/dmaengine.h | |||
@@ -10,12 +10,7 @@ | |||
10 | #ifndef ASM_DMAENGINE_H | 10 | #ifndef ASM_DMAENGINE_H |
11 | #define ASM_DMAENGINE_H | 11 | #define ASM_DMAENGINE_H |
12 | 12 | ||
13 | #include <linux/dmaengine.h> | 13 | #include <linux/sh_dma.h> |
14 | #include <linux/list.h> | ||
15 | |||
16 | #include <asm/dma-register.h> | ||
17 | |||
18 | #define SH_DMAC_MAX_CHANNELS 6 | ||
19 | 14 | ||
20 | enum { | 15 | enum { |
21 | SHDMA_SLAVE_SCIF0_TX, | 16 | SHDMA_SLAVE_SCIF0_TX, |
@@ -36,57 +31,4 @@ enum { | |||
36 | SHDMA_SLAVE_SIUB_RX, | 31 | SHDMA_SLAVE_SIUB_RX, |
37 | }; | 32 | }; |
38 | 33 | ||
39 | struct sh_dmae_slave_config { | ||
40 | unsigned int slave_id; | ||
41 | dma_addr_t addr; | ||
42 | u32 chcr; | ||
43 | char mid_rid; | ||
44 | }; | ||
45 | |||
46 | struct sh_dmae_channel { | ||
47 | unsigned int offset; | ||
48 | unsigned int dmars; | ||
49 | unsigned int dmars_bit; | ||
50 | }; | ||
51 | |||
52 | struct sh_dmae_pdata { | ||
53 | struct sh_dmae_slave_config *slave; | ||
54 | int slave_num; | ||
55 | struct sh_dmae_channel *channel; | ||
56 | int channel_num; | ||
57 | unsigned int ts_low_shift; | ||
58 | unsigned int ts_low_mask; | ||
59 | unsigned int ts_high_shift; | ||
60 | unsigned int ts_high_mask; | ||
61 | unsigned int *ts_shift; | ||
62 | int ts_shift_num; | ||
63 | u16 dmaor_init; | ||
64 | }; | ||
65 | |||
66 | struct device; | ||
67 | |||
68 | /* Used by slave DMA clients to request DMA to/from a specific peripheral */ | ||
69 | struct sh_dmae_slave { | ||
70 | unsigned int slave_id; /* Set by the platform */ | ||
71 | struct device *dma_dev; /* Set by the platform */ | ||
72 | struct sh_dmae_slave_config *config; /* Set by the driver */ | ||
73 | }; | ||
74 | |||
75 | struct sh_dmae_regs { | ||
76 | u32 sar; /* SAR / source address */ | ||
77 | u32 dar; /* DAR / destination address */ | ||
78 | u32 tcr; /* TCR / transfer count */ | ||
79 | }; | ||
80 | |||
81 | struct sh_desc { | ||
82 | struct sh_dmae_regs hw; | ||
83 | struct list_head node; | ||
84 | struct dma_async_tx_descriptor async_tx; | ||
85 | enum dma_data_direction direction; | ||
86 | dma_cookie_t cookie; | ||
87 | size_t partial; | ||
88 | int chunks; | ||
89 | int mark; | ||
90 | }; | ||
91 | |||
92 | #endif | 34 | #endif |