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 | ||
