diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-27 22:04:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-27 22:04:36 -0400 |
commit | e3e1288e86a07cdeb0aee5860a2dff111c6eff79 (patch) | |
tree | cd22f8051a456c9d2b95698b6fe402776a67469b /arch/arm | |
parent | 9ae6d039224def926656206725ae6e89d1331417 (diff) | |
parent | 964dc256bb91e990277010a3f6dc66daa130be8b (diff) |
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx
* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx: (48 commits)
DMAENGINE: move COH901318 to arch_initcall
dma: imx-dma: fix signedness bug
dma/timberdale: simplify conditional
ste_dma40: remove channel_type
ste_dma40: remove enum for endianess
ste_dma40: remove TIM_FOR_LINK option
ste_dma40: move mode_opt to separate config
ste_dma40: move channel mode to a separate field
ste_dma40: move priority to separate field
ste_dma40: add variable to indicate valid dma_cfg
async_tx: make async_tx channel switching opt-in
move async raid6 test to lib/Kconfig.debug
dmaengine: Add Freescale i.MX1/21/27 DMA driver
intel_mid_dma: change the slave interface
intel_mid_dma: fix the WARN_ONs
intel_mid_dma: Add sg list support to DMA driver
intel_mid_dma: Allow DMAC2 to share interrupt
intel_mid_dma: Allow IRQ sharing
intel_mid_dma: Add runtime PM support
DMAENGINE: define a dummy filter function for ste_dma40
...
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-imx/include/mach/dma-v1.h | 8 | ||||
-rw-r--r-- | arch/arm/mach-ux500/devices-db8500.c | 13 | ||||
-rw-r--r-- | arch/arm/plat-mxc/include/mach/dma.h | 67 | ||||
-rw-r--r-- | arch/arm/plat-mxc/include/mach/sdma.h | 17 | ||||
-rw-r--r-- | arch/arm/plat-nomadik/include/plat/ste_dma40.h | 134 |
5 files changed, 147 insertions, 92 deletions
diff --git a/arch/arm/mach-imx/include/mach/dma-v1.h b/arch/arm/mach-imx/include/mach/dma-v1.h index 287431cc13e5..ac6fd713828a 100644 --- a/arch/arm/mach-imx/include/mach/dma-v1.h +++ b/arch/arm/mach-imx/include/mach/dma-v1.h | |||
@@ -27,6 +27,8 @@ | |||
27 | 27 | ||
28 | #define imx_has_dma_v1() (cpu_is_mx1() || cpu_is_mx21() || cpu_is_mx27()) | 28 | #define imx_has_dma_v1() (cpu_is_mx1() || cpu_is_mx21() || cpu_is_mx27()) |
29 | 29 | ||
30 | #include <mach/dma.h> | ||
31 | |||
30 | #define IMX_DMA_CHANNELS 16 | 32 | #define IMX_DMA_CHANNELS 16 |
31 | 33 | ||
32 | #define DMA_MODE_READ 0 | 34 | #define DMA_MODE_READ 0 |
@@ -96,12 +98,6 @@ int imx_dma_request(int channel, const char *name); | |||
96 | 98 | ||
97 | void imx_dma_free(int channel); | 99 | void imx_dma_free(int channel); |
98 | 100 | ||
99 | enum imx_dma_prio { | ||
100 | DMA_PRIO_HIGH = 0, | ||
101 | DMA_PRIO_MEDIUM = 1, | ||
102 | DMA_PRIO_LOW = 2 | ||
103 | }; | ||
104 | |||
105 | int imx_dma_request_by_prio(const char *name, enum imx_dma_prio prio); | 101 | int imx_dma_request_by_prio(const char *name, enum imx_dma_prio prio); |
106 | 102 | ||
107 | #endif /* __MACH_DMA_V1_H__ */ | 103 | #endif /* __MACH_DMA_V1_H__ */ |
diff --git a/arch/arm/mach-ux500/devices-db8500.c b/arch/arm/mach-ux500/devices-db8500.c index cbbe69a76a7c..4a94be3304b9 100644 --- a/arch/arm/mach-ux500/devices-db8500.c +++ b/arch/arm/mach-ux500/devices-db8500.c | |||
@@ -208,35 +208,25 @@ static struct resource dma40_resources[] = { | |||
208 | 208 | ||
209 | /* Default configuration for physcial memcpy */ | 209 | /* Default configuration for physcial memcpy */ |
210 | struct stedma40_chan_cfg dma40_memcpy_conf_phy = { | 210 | struct stedma40_chan_cfg dma40_memcpy_conf_phy = { |
211 | .channel_type = (STEDMA40_CHANNEL_IN_PHY_MODE | | 211 | .mode = STEDMA40_MODE_PHYSICAL, |
212 | STEDMA40_LOW_PRIORITY_CHANNEL | | ||
213 | STEDMA40_PCHAN_BASIC_MODE), | ||
214 | .dir = STEDMA40_MEM_TO_MEM, | 212 | .dir = STEDMA40_MEM_TO_MEM, |
215 | 213 | ||
216 | .src_info.endianess = STEDMA40_LITTLE_ENDIAN, | ||
217 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | 214 | .src_info.data_width = STEDMA40_BYTE_WIDTH, |
218 | .src_info.psize = STEDMA40_PSIZE_PHY_1, | 215 | .src_info.psize = STEDMA40_PSIZE_PHY_1, |
219 | .src_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL, | 216 | .src_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL, |
220 | 217 | ||
221 | .dst_info.endianess = STEDMA40_LITTLE_ENDIAN, | ||
222 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | 218 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, |
223 | .dst_info.psize = STEDMA40_PSIZE_PHY_1, | 219 | .dst_info.psize = STEDMA40_PSIZE_PHY_1, |
224 | .dst_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL, | 220 | .dst_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL, |
225 | }; | 221 | }; |
226 | /* Default configuration for logical memcpy */ | 222 | /* Default configuration for logical memcpy */ |
227 | struct stedma40_chan_cfg dma40_memcpy_conf_log = { | 223 | struct stedma40_chan_cfg dma40_memcpy_conf_log = { |
228 | .channel_type = (STEDMA40_CHANNEL_IN_LOG_MODE | | ||
229 | STEDMA40_LOW_PRIORITY_CHANNEL | | ||
230 | STEDMA40_LCHAN_SRC_LOG_DST_LOG | | ||
231 | STEDMA40_NO_TIM_FOR_LINK), | ||
232 | .dir = STEDMA40_MEM_TO_MEM, | 224 | .dir = STEDMA40_MEM_TO_MEM, |
233 | 225 | ||
234 | .src_info.endianess = STEDMA40_LITTLE_ENDIAN, | ||
235 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | 226 | .src_info.data_width = STEDMA40_BYTE_WIDTH, |
236 | .src_info.psize = STEDMA40_PSIZE_LOG_1, | 227 | .src_info.psize = STEDMA40_PSIZE_LOG_1, |
237 | .src_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL, | 228 | .src_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL, |
238 | 229 | ||
239 | .dst_info.endianess = STEDMA40_LITTLE_ENDIAN, | ||
240 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | 230 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, |
241 | .dst_info.psize = STEDMA40_PSIZE_LOG_1, | 231 | .dst_info.psize = STEDMA40_PSIZE_LOG_1, |
242 | .dst_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL, | 232 | .dst_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL, |
@@ -269,7 +259,6 @@ static struct stedma40_platform_data dma40_plat_data = { | |||
269 | .memcpy_len = ARRAY_SIZE(dma40_memcpy_event), | 259 | .memcpy_len = ARRAY_SIZE(dma40_memcpy_event), |
270 | .memcpy_conf_phy = &dma40_memcpy_conf_phy, | 260 | .memcpy_conf_phy = &dma40_memcpy_conf_phy, |
271 | .memcpy_conf_log = &dma40_memcpy_conf_log, | 261 | .memcpy_conf_log = &dma40_memcpy_conf_log, |
272 | .llis_per_log = 8, | ||
273 | .disabled_channels = {-1}, | 262 | .disabled_channels = {-1}, |
274 | }; | 263 | }; |
275 | 264 | ||
diff --git a/arch/arm/plat-mxc/include/mach/dma.h b/arch/arm/plat-mxc/include/mach/dma.h new file mode 100644 index 000000000000..ef7751546f5f --- /dev/null +++ b/arch/arm/plat-mxc/include/mach/dma.h | |||
@@ -0,0 +1,67 @@ | |||
1 | /* | ||
2 | * Copyright 2004-2009 Freescale Semiconductor, Inc. All Rights Reserved. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #ifndef __ASM_ARCH_MXC_DMA_H__ | ||
10 | #define __ASM_ARCH_MXC_DMA_H__ | ||
11 | |||
12 | #include <linux/scatterlist.h> | ||
13 | #include <linux/device.h> | ||
14 | #include <linux/dmaengine.h> | ||
15 | |||
16 | /* | ||
17 | * This enumerates peripheral types. Used for SDMA. | ||
18 | */ | ||
19 | enum sdma_peripheral_type { | ||
20 | IMX_DMATYPE_SSI, /* MCU domain SSI */ | ||
21 | IMX_DMATYPE_SSI_SP, /* Shared SSI */ | ||
22 | IMX_DMATYPE_MMC, /* MMC */ | ||
23 | IMX_DMATYPE_SDHC, /* SDHC */ | ||
24 | IMX_DMATYPE_UART, /* MCU domain UART */ | ||
25 | IMX_DMATYPE_UART_SP, /* Shared UART */ | ||
26 | IMX_DMATYPE_FIRI, /* FIRI */ | ||
27 | IMX_DMATYPE_CSPI, /* MCU domain CSPI */ | ||
28 | IMX_DMATYPE_CSPI_SP, /* Shared CSPI */ | ||
29 | IMX_DMATYPE_SIM, /* SIM */ | ||
30 | IMX_DMATYPE_ATA, /* ATA */ | ||
31 | IMX_DMATYPE_CCM, /* CCM */ | ||
32 | IMX_DMATYPE_EXT, /* External peripheral */ | ||
33 | IMX_DMATYPE_MSHC, /* Memory Stick Host Controller */ | ||
34 | IMX_DMATYPE_MSHC_SP, /* Shared Memory Stick Host Controller */ | ||
35 | IMX_DMATYPE_DSP, /* DSP */ | ||
36 | IMX_DMATYPE_MEMORY, /* Memory */ | ||
37 | IMX_DMATYPE_FIFO_MEMORY,/* FIFO type Memory */ | ||
38 | IMX_DMATYPE_SPDIF, /* SPDIF */ | ||
39 | IMX_DMATYPE_IPU_MEMORY, /* IPU Memory */ | ||
40 | IMX_DMATYPE_ASRC, /* ASRC */ | ||
41 | IMX_DMATYPE_ESAI, /* ESAI */ | ||
42 | }; | ||
43 | |||
44 | enum imx_dma_prio { | ||
45 | DMA_PRIO_HIGH = 0, | ||
46 | DMA_PRIO_MEDIUM = 1, | ||
47 | DMA_PRIO_LOW = 2 | ||
48 | }; | ||
49 | |||
50 | struct imx_dma_data { | ||
51 | int dma_request; /* DMA request line */ | ||
52 | enum sdma_peripheral_type peripheral_type; | ||
53 | int priority; | ||
54 | }; | ||
55 | |||
56 | static inline int imx_dma_is_ipu(struct dma_chan *chan) | ||
57 | { | ||
58 | return !strcmp(dev_name(chan->device->dev), "ipu-core"); | ||
59 | } | ||
60 | |||
61 | static inline int imx_dma_is_general_purpose(struct dma_chan *chan) | ||
62 | { | ||
63 | return !strcmp(dev_name(chan->device->dev), "imx-sdma") || | ||
64 | !strcmp(dev_name(chan->device->dev), "imx-dma"); | ||
65 | } | ||
66 | |||
67 | #endif | ||
diff --git a/arch/arm/plat-mxc/include/mach/sdma.h b/arch/arm/plat-mxc/include/mach/sdma.h new file mode 100644 index 000000000000..9be112227ac4 --- /dev/null +++ b/arch/arm/plat-mxc/include/mach/sdma.h | |||
@@ -0,0 +1,17 @@ | |||
1 | #ifndef __MACH_MXC_SDMA_H__ | ||
2 | #define __MACH_MXC_SDMA_H__ | ||
3 | |||
4 | /** | ||
5 | * struct sdma_platform_data - platform specific data for SDMA engine | ||
6 | * | ||
7 | * @sdma_version The version of this SDMA engine | ||
8 | * @cpu_name used to generate the firmware name | ||
9 | * @to_version CPU Tape out version | ||
10 | */ | ||
11 | struct sdma_platform_data { | ||
12 | int sdma_version; | ||
13 | char *cpu_name; | ||
14 | int to_version; | ||
15 | }; | ||
16 | |||
17 | #endif /* __MACH_MXC_SDMA_H__ */ | ||
diff --git a/arch/arm/plat-nomadik/include/plat/ste_dma40.h b/arch/arm/plat-nomadik/include/plat/ste_dma40.h index 93a812672d9a..74b62f10d07f 100644 --- a/arch/arm/plat-nomadik/include/plat/ste_dma40.h +++ b/arch/arm/plat-nomadik/include/plat/ste_dma40.h | |||
@@ -1,10 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/plat-nomadik/include/plat/ste_dma40.h | 2 | * Copyright (C) ST-Ericsson SA 2007-2010 |
3 | * | 3 | * Author: Per Forlin <per.forlin@stericsson.com> for ST-Ericsson |
4 | * Copyright (C) ST-Ericsson 2007-2010 | 4 | * Author: Jonas Aaberg <jonas.aberg@stericsson.com> for ST-Ericsson |
5 | * License terms: GNU General Public License (GPL) version 2 | 5 | * License terms: GNU General Public License (GPL) version 2 |
6 | * Author: Per Friden <per.friden@stericsson.com> | ||
7 | * Author: Jonas Aaberg <jonas.aberg@stericsson.com> | ||
8 | */ | 6 | */ |
9 | 7 | ||
10 | 8 | ||
@@ -19,37 +17,20 @@ | |||
19 | #define STEDMA40_DEV_DST_MEMORY (-1) | 17 | #define STEDMA40_DEV_DST_MEMORY (-1) |
20 | #define STEDMA40_DEV_SRC_MEMORY (-1) | 18 | #define STEDMA40_DEV_SRC_MEMORY (-1) |
21 | 19 | ||
22 | /* | 20 | enum stedma40_mode { |
23 | * Description of bitfields of channel_type variable is available in | 21 | STEDMA40_MODE_LOGICAL = 0, |
24 | * the info structure. | 22 | STEDMA40_MODE_PHYSICAL, |
25 | */ | 23 | STEDMA40_MODE_OPERATION, |
24 | }; | ||
26 | 25 | ||
27 | /* Priority */ | 26 | enum stedma40_mode_opt { |
28 | #define STEDMA40_INFO_PRIO_TYPE_POS 2 | 27 | STEDMA40_PCHAN_BASIC_MODE = 0, |
29 | #define STEDMA40_HIGH_PRIORITY_CHANNEL (0x1 << STEDMA40_INFO_PRIO_TYPE_POS) | 28 | STEDMA40_LCHAN_SRC_LOG_DST_LOG = 0, |
30 | #define STEDMA40_LOW_PRIORITY_CHANNEL (0x2 << STEDMA40_INFO_PRIO_TYPE_POS) | 29 | STEDMA40_PCHAN_MODULO_MODE, |
31 | 30 | STEDMA40_PCHAN_DOUBLE_DST_MODE, | |
32 | /* Mode */ | 31 | STEDMA40_LCHAN_SRC_PHY_DST_LOG, |
33 | #define STEDMA40_INFO_CH_MODE_TYPE_POS 6 | 32 | STEDMA40_LCHAN_SRC_LOG_DST_PHY, |
34 | #define STEDMA40_CHANNEL_IN_PHY_MODE (0x1 << STEDMA40_INFO_CH_MODE_TYPE_POS) | 33 | }; |
35 | #define STEDMA40_CHANNEL_IN_LOG_MODE (0x2 << STEDMA40_INFO_CH_MODE_TYPE_POS) | ||
36 | #define STEDMA40_CHANNEL_IN_OPER_MODE (0x3 << STEDMA40_INFO_CH_MODE_TYPE_POS) | ||
37 | |||
38 | /* Mode options */ | ||
39 | #define STEDMA40_INFO_CH_MODE_OPT_POS 8 | ||
40 | #define STEDMA40_PCHAN_BASIC_MODE (0x1 << STEDMA40_INFO_CH_MODE_OPT_POS) | ||
41 | #define STEDMA40_PCHAN_MODULO_MODE (0x2 << STEDMA40_INFO_CH_MODE_OPT_POS) | ||
42 | #define STEDMA40_PCHAN_DOUBLE_DST_MODE (0x3 << STEDMA40_INFO_CH_MODE_OPT_POS) | ||
43 | #define STEDMA40_LCHAN_SRC_PHY_DST_LOG (0x1 << STEDMA40_INFO_CH_MODE_OPT_POS) | ||
44 | #define STEDMA40_LCHAN_SRC_LOG_DST_PHS (0x2 << STEDMA40_INFO_CH_MODE_OPT_POS) | ||
45 | #define STEDMA40_LCHAN_SRC_LOG_DST_LOG (0x3 << STEDMA40_INFO_CH_MODE_OPT_POS) | ||
46 | |||
47 | /* Interrupt */ | ||
48 | #define STEDMA40_INFO_TIM_POS 10 | ||
49 | #define STEDMA40_NO_TIM_FOR_LINK (0x0 << STEDMA40_INFO_TIM_POS) | ||
50 | #define STEDMA40_TIM_FOR_LINK (0x1 << STEDMA40_INFO_TIM_POS) | ||
51 | |||
52 | /* End of channel_type configuration */ | ||
53 | 34 | ||
54 | #define STEDMA40_ESIZE_8_BIT 0x0 | 35 | #define STEDMA40_ESIZE_8_BIT 0x0 |
55 | #define STEDMA40_ESIZE_16_BIT 0x1 | 36 | #define STEDMA40_ESIZE_16_BIT 0x1 |
@@ -72,16 +53,14 @@ | |||
72 | #define STEDMA40_PSIZE_LOG_8 STEDMA40_PSIZE_PHY_8 | 53 | #define STEDMA40_PSIZE_LOG_8 STEDMA40_PSIZE_PHY_8 |
73 | #define STEDMA40_PSIZE_LOG_16 STEDMA40_PSIZE_PHY_16 | 54 | #define STEDMA40_PSIZE_LOG_16 STEDMA40_PSIZE_PHY_16 |
74 | 55 | ||
56 | /* Maximum number of possible physical channels */ | ||
57 | #define STEDMA40_MAX_PHYS 32 | ||
58 | |||
75 | enum stedma40_flow_ctrl { | 59 | enum stedma40_flow_ctrl { |
76 | STEDMA40_NO_FLOW_CTRL, | 60 | STEDMA40_NO_FLOW_CTRL, |
77 | STEDMA40_FLOW_CTRL, | 61 | STEDMA40_FLOW_CTRL, |
78 | }; | 62 | }; |
79 | 63 | ||
80 | enum stedma40_endianess { | ||
81 | STEDMA40_LITTLE_ENDIAN, | ||
82 | STEDMA40_BIG_ENDIAN | ||
83 | }; | ||
84 | |||
85 | enum stedma40_periph_data_width { | 64 | enum stedma40_periph_data_width { |
86 | STEDMA40_BYTE_WIDTH = STEDMA40_ESIZE_8_BIT, | 65 | STEDMA40_BYTE_WIDTH = STEDMA40_ESIZE_8_BIT, |
87 | STEDMA40_HALFWORD_WIDTH = STEDMA40_ESIZE_16_BIT, | 66 | STEDMA40_HALFWORD_WIDTH = STEDMA40_ESIZE_16_BIT, |
@@ -89,15 +68,8 @@ enum stedma40_periph_data_width { | |||
89 | STEDMA40_DOUBLEWORD_WIDTH = STEDMA40_ESIZE_64_BIT | 68 | STEDMA40_DOUBLEWORD_WIDTH = STEDMA40_ESIZE_64_BIT |
90 | }; | 69 | }; |
91 | 70 | ||
92 | struct stedma40_half_channel_info { | ||
93 | enum stedma40_endianess endianess; | ||
94 | enum stedma40_periph_data_width data_width; | ||
95 | int psize; | ||
96 | enum stedma40_flow_ctrl flow_ctrl; | ||
97 | }; | ||
98 | |||
99 | enum stedma40_xfer_dir { | 71 | enum stedma40_xfer_dir { |
100 | STEDMA40_MEM_TO_MEM, | 72 | STEDMA40_MEM_TO_MEM = 1, |
101 | STEDMA40_MEM_TO_PERIPH, | 73 | STEDMA40_MEM_TO_PERIPH, |
102 | STEDMA40_PERIPH_TO_MEM, | 74 | STEDMA40_PERIPH_TO_MEM, |
103 | STEDMA40_PERIPH_TO_PERIPH | 75 | STEDMA40_PERIPH_TO_PERIPH |
@@ -105,18 +77,31 @@ enum stedma40_xfer_dir { | |||
105 | 77 | ||
106 | 78 | ||
107 | /** | 79 | /** |
80 | * struct stedma40_chan_cfg - dst/src channel configuration | ||
81 | * | ||
82 | * @big_endian: true if the src/dst should be read as big endian | ||
83 | * @data_width: Data width of the src/dst hardware | ||
84 | * @p_size: Burst size | ||
85 | * @flow_ctrl: Flow control on/off. | ||
86 | */ | ||
87 | struct stedma40_half_channel_info { | ||
88 | bool big_endian; | ||
89 | enum stedma40_periph_data_width data_width; | ||
90 | int psize; | ||
91 | enum stedma40_flow_ctrl flow_ctrl; | ||
92 | }; | ||
93 | |||
94 | /** | ||
108 | * struct stedma40_chan_cfg - Structure to be filled by client drivers. | 95 | * struct stedma40_chan_cfg - Structure to be filled by client drivers. |
109 | * | 96 | * |
110 | * @dir: MEM 2 MEM, PERIPH 2 MEM , MEM 2 PERIPH, PERIPH 2 PERIPH | 97 | * @dir: MEM 2 MEM, PERIPH 2 MEM , MEM 2 PERIPH, PERIPH 2 PERIPH |
111 | * @channel_type: priority, mode, mode options and interrupt configuration. | 98 | * @high_priority: true if high-priority |
99 | * @mode: channel mode: physical, logical, or operation | ||
100 | * @mode_opt: options for the chosen channel mode | ||
112 | * @src_dev_type: Src device type | 101 | * @src_dev_type: Src device type |
113 | * @dst_dev_type: Dst device type | 102 | * @dst_dev_type: Dst device type |
114 | * @src_info: Parameters for dst half channel | 103 | * @src_info: Parameters for dst half channel |
115 | * @dst_info: Parameters for dst half channel | 104 | * @dst_info: Parameters for dst half channel |
116 | * @pre_transfer_data: Data to be passed on to the pre_transfer() function. | ||
117 | * @pre_transfer: Callback used if needed before preparation of transfer. | ||
118 | * Only called if device is set. size of bytes to transfer | ||
119 | * (in case of multiple element transfer size is size of the first element). | ||
120 | * | 105 | * |
121 | * | 106 | * |
122 | * This structure has to be filled by the client drivers. | 107 | * This structure has to be filled by the client drivers. |
@@ -125,15 +110,13 @@ enum stedma40_xfer_dir { | |||
125 | */ | 110 | */ |
126 | struct stedma40_chan_cfg { | 111 | struct stedma40_chan_cfg { |
127 | enum stedma40_xfer_dir dir; | 112 | enum stedma40_xfer_dir dir; |
128 | unsigned int channel_type; | 113 | bool high_priority; |
114 | enum stedma40_mode mode; | ||
115 | enum stedma40_mode_opt mode_opt; | ||
129 | int src_dev_type; | 116 | int src_dev_type; |
130 | int dst_dev_type; | 117 | int dst_dev_type; |
131 | struct stedma40_half_channel_info src_info; | 118 | struct stedma40_half_channel_info src_info; |
132 | struct stedma40_half_channel_info dst_info; | 119 | struct stedma40_half_channel_info dst_info; |
133 | void *pre_transfer_data; | ||
134 | int (*pre_transfer) (struct dma_chan *chan, | ||
135 | void *data, | ||
136 | int size); | ||
137 | }; | 120 | }; |
138 | 121 | ||
139 | /** | 122 | /** |
@@ -146,7 +129,6 @@ struct stedma40_chan_cfg { | |||
146 | * @memcpy_len: length of memcpy | 129 | * @memcpy_len: length of memcpy |
147 | * @memcpy_conf_phy: default configuration of physical channel memcpy | 130 | * @memcpy_conf_phy: default configuration of physical channel memcpy |
148 | * @memcpy_conf_log: default configuration of logical channel memcpy | 131 | * @memcpy_conf_log: default configuration of logical channel memcpy |
149 | * @llis_per_log: number of max linked list items per logical channel | ||
150 | * @disabled_channels: A vector, ending with -1, that marks physical channels | 132 | * @disabled_channels: A vector, ending with -1, that marks physical channels |
151 | * that are for different reasons not available for the driver. | 133 | * that are for different reasons not available for the driver. |
152 | */ | 134 | */ |
@@ -158,23 +140,10 @@ struct stedma40_platform_data { | |||
158 | u32 memcpy_len; | 140 | u32 memcpy_len; |
159 | struct stedma40_chan_cfg *memcpy_conf_phy; | 141 | struct stedma40_chan_cfg *memcpy_conf_phy; |
160 | struct stedma40_chan_cfg *memcpy_conf_log; | 142 | struct stedma40_chan_cfg *memcpy_conf_log; |
161 | unsigned int llis_per_log; | 143 | int disabled_channels[STEDMA40_MAX_PHYS]; |
162 | int disabled_channels[8]; | ||
163 | }; | 144 | }; |
164 | 145 | ||
165 | /** | 146 | #ifdef CONFIG_STE_DMA40 |
166 | * setdma40_set_psize() - Used for changing the package size of an | ||
167 | * already configured dma channel. | ||
168 | * | ||
169 | * @chan: dmaengine handle | ||
170 | * @src_psize: new package side for src. (STEDMA40_PSIZE*) | ||
171 | * @src_psize: new package side for dst. (STEDMA40_PSIZE*) | ||
172 | * | ||
173 | * returns 0 on ok, otherwise negative error number. | ||
174 | */ | ||
175 | int stedma40_set_psize(struct dma_chan *chan, | ||
176 | int src_psize, | ||
177 | int dst_psize); | ||
178 | 147 | ||
179 | /** | 148 | /** |
180 | * stedma40_filter() - Provides stedma40_chan_cfg to the | 149 | * stedma40_filter() - Provides stedma40_chan_cfg to the |
@@ -237,4 +206,21 @@ dma_async_tx_descriptor *stedma40_slave_mem(struct dma_chan *chan, | |||
237 | direction, flags); | 206 | direction, flags); |
238 | } | 207 | } |
239 | 208 | ||
209 | #else | ||
210 | static inline bool stedma40_filter(struct dma_chan *chan, void *data) | ||
211 | { | ||
212 | return false; | ||
213 | } | ||
214 | |||
215 | static inline struct | ||
216 | dma_async_tx_descriptor *stedma40_slave_mem(struct dma_chan *chan, | ||
217 | dma_addr_t addr, | ||
218 | unsigned int size, | ||
219 | enum dma_data_direction direction, | ||
220 | unsigned long flags) | ||
221 | { | ||
222 | return NULL; | ||
223 | } | ||
224 | #endif | ||
225 | |||
240 | #endif | 226 | #endif |