diff options
author | Rabin Vincent <rabin.vincent@stericsson.com> | 2010-10-12 09:00:51 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2010-10-19 18:17:07 -0400 |
commit | 38bdbf020ad7ae1bca564a7db238cdf8b2f462a8 (patch) | |
tree | ee8e859322c752d4db84670fc55c707cdc59ce82 | |
parent | 730c1871680774ea0700debc2981c7a53f51d92e (diff) |
ste_dma40: move channel mode to a separate field
And keep it logical by default.
Acked-by: Jonas Aaberg <jonas.aberg@stericsson.com>
Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com>
Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r-- | arch/arm/mach-ux500/devices-db8500.c | 7 | ||||
-rw-r--r-- | arch/arm/plat-nomadik/include/plat/ste_dma40.h | 12 | ||||
-rw-r--r-- | drivers/dma/ste_dma40.c | 8 |
3 files changed, 12 insertions, 15 deletions
diff --git a/arch/arm/mach-ux500/devices-db8500.c b/arch/arm/mach-ux500/devices-db8500.c index 70e3d409d254..86b650b0d456 100644 --- a/arch/arm/mach-ux500/devices-db8500.c +++ b/arch/arm/mach-ux500/devices-db8500.c | |||
@@ -132,8 +132,8 @@ static struct resource dma40_resources[] = { | |||
132 | 132 | ||
133 | /* Default configuration for physcial memcpy */ | 133 | /* Default configuration for physcial memcpy */ |
134 | struct stedma40_chan_cfg dma40_memcpy_conf_phy = { | 134 | struct stedma40_chan_cfg dma40_memcpy_conf_phy = { |
135 | .channel_type = (STEDMA40_CHANNEL_IN_PHY_MODE | | 135 | .channel_type = STEDMA40_PCHAN_BASIC_MODE, |
136 | STEDMA40_PCHAN_BASIC_MODE), | 136 | .mode = STEDMA40_MODE_PHYSICAL, |
137 | .dir = STEDMA40_MEM_TO_MEM, | 137 | .dir = STEDMA40_MEM_TO_MEM, |
138 | 138 | ||
139 | .src_info.endianess = STEDMA40_LITTLE_ENDIAN, | 139 | .src_info.endianess = STEDMA40_LITTLE_ENDIAN, |
@@ -148,8 +148,7 @@ struct stedma40_chan_cfg dma40_memcpy_conf_phy = { | |||
148 | }; | 148 | }; |
149 | /* Default configuration for logical memcpy */ | 149 | /* Default configuration for logical memcpy */ |
150 | struct stedma40_chan_cfg dma40_memcpy_conf_log = { | 150 | struct stedma40_chan_cfg dma40_memcpy_conf_log = { |
151 | .channel_type = (STEDMA40_CHANNEL_IN_LOG_MODE | | 151 | .channel_type = (STEDMA40_LCHAN_SRC_LOG_DST_LOG | |
152 | STEDMA40_LCHAN_SRC_LOG_DST_LOG | | ||
153 | STEDMA40_NO_TIM_FOR_LINK), | 152 | STEDMA40_NO_TIM_FOR_LINK), |
154 | .dir = STEDMA40_MEM_TO_MEM, | 153 | .dir = STEDMA40_MEM_TO_MEM, |
155 | 154 | ||
diff --git a/arch/arm/plat-nomadik/include/plat/ste_dma40.h b/arch/arm/plat-nomadik/include/plat/ste_dma40.h index 9adcd9b3e293..e49a2a115928 100644 --- a/arch/arm/plat-nomadik/include/plat/ste_dma40.h +++ b/arch/arm/plat-nomadik/include/plat/ste_dma40.h | |||
@@ -23,11 +23,11 @@ | |||
23 | * the info structure. | 23 | * the info structure. |
24 | */ | 24 | */ |
25 | 25 | ||
26 | /* Mode */ | 26 | enum stedma40_mode { |
27 | #define STEDMA40_INFO_CH_MODE_TYPE_POS 6 | 27 | STEDMA40_MODE_LOGICAL = 0, |
28 | #define STEDMA40_CHANNEL_IN_PHY_MODE (0x1 << STEDMA40_INFO_CH_MODE_TYPE_POS) | 28 | STEDMA40_MODE_PHYSICAL, |
29 | #define STEDMA40_CHANNEL_IN_LOG_MODE (0x2 << STEDMA40_INFO_CH_MODE_TYPE_POS) | 29 | STEDMA40_MODE_OPERATION, |
30 | #define STEDMA40_CHANNEL_IN_OPER_MODE (0x3 << STEDMA40_INFO_CH_MODE_TYPE_POS) | 30 | }; |
31 | 31 | ||
32 | /* Mode options */ | 32 | /* Mode options */ |
33 | #define STEDMA40_INFO_CH_MODE_OPT_POS 8 | 33 | #define STEDMA40_INFO_CH_MODE_OPT_POS 8 |
@@ -115,6 +115,7 @@ struct stedma40_half_channel_info { | |||
115 | * @dir: MEM 2 MEM, PERIPH 2 MEM , MEM 2 PERIPH, PERIPH 2 PERIPH | 115 | * @dir: MEM 2 MEM, PERIPH 2 MEM , MEM 2 PERIPH, PERIPH 2 PERIPH |
116 | * @channel_type: priority, mode, mode options and interrupt configuration. | 116 | * @channel_type: priority, mode, mode options and interrupt configuration. |
117 | * @high_priority: true if high-priority | 117 | * @high_priority: true if high-priority |
118 | * @mode: channel mode: physical, logical, or operation | ||
118 | * @src_dev_type: Src device type | 119 | * @src_dev_type: Src device type |
119 | * @dst_dev_type: Dst device type | 120 | * @dst_dev_type: Dst device type |
120 | * @src_info: Parameters for dst half channel | 121 | * @src_info: Parameters for dst half channel |
@@ -129,6 +130,7 @@ struct stedma40_chan_cfg { | |||
129 | enum stedma40_xfer_dir dir; | 130 | enum stedma40_xfer_dir dir; |
130 | unsigned int channel_type; | 131 | unsigned int channel_type; |
131 | bool high_priority; | 132 | bool high_priority; |
133 | enum stedma40_mode mode; | ||
132 | int src_dev_type; | 134 | int src_dev_type; |
133 | int dst_dev_type; | 135 | int dst_dev_type; |
134 | struct stedma40_half_channel_info src_info; | 136 | struct stedma40_half_channel_info src_info; |
diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c index 7bc535ee0a08..ddaeb51797b1 100644 --- a/drivers/dma/ste_dma40.c +++ b/drivers/dma/ste_dma40.c | |||
@@ -1151,8 +1151,7 @@ static int d40_validate_conf(struct d40_chan *d40c, | |||
1151 | int res = 0; | 1151 | int res = 0; |
1152 | u32 dst_event_group = D40_TYPE_TO_GROUP(conf->dst_dev_type); | 1152 | u32 dst_event_group = D40_TYPE_TO_GROUP(conf->dst_dev_type); |
1153 | u32 src_event_group = D40_TYPE_TO_GROUP(conf->src_dev_type); | 1153 | u32 src_event_group = D40_TYPE_TO_GROUP(conf->src_dev_type); |
1154 | bool is_log = (conf->channel_type & STEDMA40_CHANNEL_IN_OPER_MODE) | 1154 | bool is_log = conf->mode == STEDMA40_MODE_LOGICAL; |
1155 | == STEDMA40_CHANNEL_IN_LOG_MODE; | ||
1156 | 1155 | ||
1157 | if (!conf->dir) { | 1156 | if (!conf->dir) { |
1158 | dev_err(&d40c->chan.dev->device, "[%s] Invalid direction.\n", | 1157 | dev_err(&d40c->chan.dev->device, "[%s] Invalid direction.\n", |
@@ -1316,10 +1315,7 @@ static int d40_allocate_channel(struct d40_chan *d40c) | |||
1316 | int j; | 1315 | int j; |
1317 | int log_num; | 1316 | int log_num; |
1318 | bool is_src; | 1317 | bool is_src; |
1319 | bool is_log = (d40c->dma_cfg.channel_type & | 1318 | bool is_log = d40c->dma_cfg.mode == STEDMA40_MODE_LOGICAL; |
1320 | STEDMA40_CHANNEL_IN_OPER_MODE) | ||
1321 | == STEDMA40_CHANNEL_IN_LOG_MODE; | ||
1322 | |||
1323 | 1319 | ||
1324 | phys = d40c->base->phy_res; | 1320 | phys = d40c->base->phy_res; |
1325 | 1321 | ||