Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC driver specific changes from Arnd Bergmann:

- Updates to the ux500 cpufreq code

- Moving the u300 DMA controller driver to drivers/dma

- Moving versatile express drivers out of arch/arm for sharing with arch/arm64

- Device tree bindings for the OMAP General Purpose Memory Controller

* tag 'drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (27 commits)
ARM: OMAP2+: gpmc: Add device tree documentation for elm handle
ARM: OMAP2+: gpmc: add DT bindings for OneNAND
ARM: OMAP2+: gpmc-onenand: drop __init annotation
mtd: omap-onenand: pass device_node in platform data
ARM: OMAP2+: Prevent potential crash if GPMC probe fails
ARM: OMAP2+: gpmc: Remove unneeded of_node_put()
arm: Move sp810.h to include/linux/amba/
ARM: OMAP: gpmc: add DT bindings for GPMC timings and NAND
ARM: OMAP: gpmc: enable hwecc for AM33xx SoCs
ARM: OMAP: gpmc-nand: drop __init annotation
mtd: omap-nand: pass device_node in platform data
ARM: OMAP: gpmc: don't create devices from initcall on DT
dma: coh901318: cut down on platform data abstraction
dma: coh901318: merge header files
dma: coh901318: push definitions into driver
dma: coh901318: push header down into the DMA subsystem
dma: coh901318: skip hard-coded addresses
dma: coh901318: remove hardcoded target addresses
dma: coh901318: push platform data into driver
dma: coh901318: create a proper platform data file
...

+1880 -1544
+84
Documentation/devicetree/bindings/bus/ti-gpmc.txt
··· 1 + Device tree bindings for OMAP general purpose memory controllers (GPMC) 2 + 3 + The actual devices are instantiated from the child nodes of a GPMC node. 4 + 5 + Required properties: 6 + 7 + - compatible: Should be set to one of the following: 8 + 9 + ti,omap2420-gpmc (omap2420) 10 + ti,omap2430-gpmc (omap2430) 11 + ti,omap3430-gpmc (omap3430 & omap3630) 12 + ti,omap4430-gpmc (omap4430 & omap4460 & omap543x) 13 + ti,am3352-gpmc (am335x devices) 14 + 15 + - reg: A resource specifier for the register space 16 + (see the example below) 17 + - ti,hwmods: Should be set to "ti,gpmc" until the DT transition is 18 + completed. 19 + - #address-cells: Must be set to 2 to allow memory address translation 20 + - #size-cells: Must be set to 1 to allow CS address passing 21 + - gpmc,num-cs: The maximum number of chip-select lines that controller 22 + can support. 23 + - gpmc,num-waitpins: The maximum number of wait pins that controller can 24 + support. 25 + - ranges: Must be set up to reflect the memory layout with four 26 + integer values for each chip-select line in use: 27 + 28 + <cs-number> 0 <physical address of mapping> <size> 29 + 30 + Currently, calculated values derived from the contents 31 + of the per-CS register GPMC_CONFIG7 (as set up by the 32 + bootloader) are used for the physical address decoding. 33 + As this will change in the future, filling correct 34 + values here is a requirement. 35 + 36 + Timing properties for child nodes. All are optional and default to 0. 37 + 38 + - gpmc,sync-clk: Minimum clock period for synchronous mode, in picoseconds 39 + 40 + Chip-select signal timings corresponding to GPMC_CONFIG2: 41 + - gpmc,cs-on: Assertion time 42 + - gpmc,cs-rd-off: Read deassertion time 43 + - gpmc,cs-wr-off: Write deassertion time 44 + 45 + ADV signal timings corresponding to GPMC_CONFIG3: 46 + - gpmc,adv-on: Assertion time 47 + - gpmc,adv-rd-off: Read deassertion time 48 + - gpmc,adv-wr-off: Write deassertion time 49 + 50 + WE signals timings corresponding to GPMC_CONFIG4: 51 + - gpmc,we-on: Assertion time 52 + - gpmc,we-off: Deassertion time 53 + 54 + OE signals timings corresponding to GPMC_CONFIG4: 55 + - gpmc,oe-on: Assertion time 56 + - gpmc,oe-off: Deassertion time 57 + 58 + Access time and cycle time timings corresponding to GPMC_CONFIG5: 59 + - gpmc,page-burst-access: Multiple access word delay 60 + - gpmc,access: Start-cycle to first data valid delay 61 + - gpmc,rd-cycle: Total read cycle time 62 + - gpmc,wr-cycle: Total write cycle time 63 + 64 + The following are only applicable to OMAP3+ and AM335x: 65 + - gpmc,wr-access 66 + - gpmc,wr-data-mux-bus 67 + 68 + 69 + Example for an AM33xx board: 70 + 71 + gpmc: gpmc@50000000 { 72 + compatible = "ti,am3352-gpmc"; 73 + ti,hwmods = "gpmc"; 74 + reg = <0x50000000 0x2000>; 75 + interrupts = <100>; 76 + 77 + gpmc,num-cs = <8>; 78 + gpmc,num-waitpins = <2>; 79 + #address-cells = <2>; 80 + #size-cells = <1>; 81 + ranges = <0 0 0x08000000 0x10000000>; /* CS0 @addr 0x8000000, size 0x10000000 */ 82 + 83 + /* child nodes go here */ 84 + };
+80
Documentation/devicetree/bindings/mtd/gpmc-nand.txt
··· 1 + Device tree bindings for GPMC connected NANDs 2 + 3 + GPMC connected NAND (found on OMAP boards) are represented as child nodes of 4 + the GPMC controller with a name of "nand". 5 + 6 + All timing relevant properties as well as generic gpmc child properties are 7 + explained in a separate documents - please refer to 8 + Documentation/devicetree/bindings/bus/ti-gpmc.txt 9 + 10 + For NAND specific properties such as ECC modes or bus width, please refer to 11 + Documentation/devicetree/bindings/mtd/nand.txt 12 + 13 + 14 + Required properties: 15 + 16 + - reg: The CS line the peripheral is connected to 17 + 18 + Optional properties: 19 + 20 + - nand-bus-width: Set this numeric value to 16 if the hardware 21 + is wired that way. If not specified, a bus 22 + width of 8 is assumed. 23 + 24 + - ti,nand-ecc-opt: A string setting the ECC layout to use. One of: 25 + 26 + "sw" Software method (default) 27 + "hw" Hardware method 28 + "hw-romcode" gpmc hamming mode method & romcode layout 29 + "bch4" 4-bit BCH ecc code 30 + "bch8" 8-bit BCH ecc code 31 + 32 + - elm_id: Specifies elm device node. This is required to support BCH 33 + error correction using ELM module. 34 + 35 + For inline partiton table parsing (optional): 36 + 37 + - #address-cells: should be set to 1 38 + - #size-cells: should be set to 1 39 + 40 + Example for an AM33xx board: 41 + 42 + gpmc: gpmc@50000000 { 43 + compatible = "ti,am3352-gpmc"; 44 + ti,hwmods = "gpmc"; 45 + reg = <0x50000000 0x1000000>; 46 + interrupts = <100>; 47 + gpmc,num-cs = <8>; 48 + gpmc,num-waitpins = <2>; 49 + #address-cells = <2>; 50 + #size-cells = <1>; 51 + ranges = <0 0 0x08000000 0x2000>; /* CS0: NAND */ 52 + elm_id = <&elm>; 53 + 54 + nand@0,0 { 55 + reg = <0 0 0>; /* CS0, offset 0 */ 56 + nand-bus-width = <16>; 57 + ti,nand-ecc-opt = "bch8"; 58 + 59 + gpmc,sync-clk = <0>; 60 + gpmc,cs-on = <0>; 61 + gpmc,cs-rd-off = <44>; 62 + gpmc,cs-wr-off = <44>; 63 + gpmc,adv-on = <6>; 64 + gpmc,adv-rd-off = <34>; 65 + gpmc,adv-wr-off = <44>; 66 + gpmc,we-off = <40>; 67 + gpmc,oe-off = <54>; 68 + gpmc,access = <64>; 69 + gpmc,rd-cycle = <82>; 70 + gpmc,wr-cycle = <82>; 71 + gpmc,wr-access = <40>; 72 + gpmc,wr-data-mux-bus = <0>; 73 + 74 + #address-cells = <1>; 75 + #size-cells = <1>; 76 + 77 + /* partitions go here */ 78 + }; 79 + }; 80 +
+43
Documentation/devicetree/bindings/mtd/gpmc-onenand.txt
··· 1 + Device tree bindings for GPMC connected OneNANDs 2 + 3 + GPMC connected OneNAND (found on OMAP boards) are represented as child nodes of 4 + the GPMC controller with a name of "onenand". 5 + 6 + All timing relevant properties as well as generic gpmc child properties are 7 + explained in a separate documents - please refer to 8 + Documentation/devicetree/bindings/bus/ti-gpmc.txt 9 + 10 + Required properties: 11 + 12 + - reg: The CS line the peripheral is connected to 13 + 14 + Optional properties: 15 + 16 + - dma-channel: DMA Channel index 17 + 18 + For inline partiton table parsing (optional): 19 + 20 + - #address-cells: should be set to 1 21 + - #size-cells: should be set to 1 22 + 23 + Example for an OMAP3430 board: 24 + 25 + gpmc: gpmc@6e000000 { 26 + compatible = "ti,omap3430-gpmc"; 27 + ti,hwmods = "gpmc"; 28 + reg = <0x6e000000 0x1000000>; 29 + interrupts = <20>; 30 + gpmc,num-cs = <8>; 31 + gpmc,num-waitpins = <4>; 32 + #address-cells = <2>; 33 + #size-cells = <1>; 34 + 35 + onenand@0 { 36 + reg = <0 0 0>; /* CS0, offset 0 */ 37 + 38 + #address-cells = <1>; 39 + #size-cells = <1>; 40 + 41 + /* partitions go here */ 42 + }; 43 + };
arch/arm/include/asm/hardware/sp810.h include/linux/amba/sp810.h
+8 -7
arch/arm/mach-omap2/gpmc-nand.c
··· 89 89 return 0; 90 90 } 91 91 92 - static bool __init gpmc_hwecc_bch_capable(enum omap_ecc ecc_opt) 92 + static bool gpmc_hwecc_bch_capable(enum omap_ecc ecc_opt) 93 93 { 94 94 /* support only OMAP3 class */ 95 - if (!cpu_is_omap34xx()) { 95 + if (!cpu_is_omap34xx() && !soc_is_am33xx()) { 96 96 pr_err("BCH ecc is not supported on this CPU\n"); 97 97 return 0; 98 98 } 99 99 100 100 /* 101 - * For now, assume 4-bit mode is only supported on OMAP3630 ES1.x, x>=1. 102 - * Other chips may be added if confirmed to work. 101 + * For now, assume 4-bit mode is only supported on OMAP3630 ES1.x, x>=1 102 + * and AM33xx derivates. Other chips may be added if confirmed to work. 103 103 */ 104 104 if ((ecc_opt == OMAP_ECC_BCH4_CODE_HW) && 105 - (!cpu_is_omap3630() || (GET_OMAP_REVISION() == 0))) { 105 + (!cpu_is_omap3630() || (GET_OMAP_REVISION() == 0)) && 106 + (!soc_is_am33xx())) { 106 107 pr_err("BCH 4-bit mode is not supported on this CPU\n"); 107 108 return 0; 108 109 } ··· 111 110 return 1; 112 111 } 113 112 114 - int __init gpmc_nand_init(struct omap_nand_platform_data *gpmc_nand_data, 115 - struct gpmc_timings *gpmc_t) 113 + int gpmc_nand_init(struct omap_nand_platform_data *gpmc_nand_data, 114 + struct gpmc_timings *gpmc_t) 116 115 { 117 116 int err = 0; 118 117 struct device *dev = &gpmc_nand_device.dev;
+1 -1
arch/arm/mach-omap2/gpmc-onenand.c
··· 356 356 return ret; 357 357 } 358 358 359 - void __init gpmc_onenand_init(struct omap_onenand_platform_data *_onenand_data) 359 + void gpmc_onenand_init(struct omap_onenand_platform_data *_onenand_data) 360 360 { 361 361 int err; 362 362
+231 -1
arch/arm/mach-omap2/gpmc.c
··· 25 25 #include <linux/module.h> 26 26 #include <linux/interrupt.h> 27 27 #include <linux/platform_device.h> 28 + #include <linux/of.h> 29 + #include <linux/of_mtd.h> 30 + #include <linux/of_device.h> 31 + #include <linux/mtd/nand.h> 28 32 29 33 #include <linux/platform_data/mtd-nand-omap2.h> 30 34 ··· 38 34 #include "common.h" 39 35 #include "omap_device.h" 40 36 #include "gpmc.h" 37 + #include "gpmc-nand.h" 38 + #include "gpmc-onenand.h" 41 39 42 40 #define DEVICE_NAME "omap-gpmc" 43 41 ··· 151 145 static struct resource gpmc_mem_root; 152 146 static struct resource gpmc_cs_mem[GPMC_CS_NUM]; 153 147 static DEFINE_SPINLOCK(gpmc_mem_lock); 154 - static unsigned int gpmc_cs_map; /* flag for cs which are initialized */ 148 + /* Define chip-selects as reserved by default until probe completes */ 149 + static unsigned int gpmc_cs_map = ((1 << GPMC_CS_NUM) - 1); 155 150 static struct device *gpmc_dev; 156 151 static int gpmc_irq; 157 152 static resource_size_t phys_base, mem_size; ··· 1125 1118 /* TODO: remove, see function definition */ 1126 1119 gpmc_convert_ps_to_ns(gpmc_t); 1127 1120 1121 + /* Now the GPMC is initialised, unreserve the chip-selects */ 1122 + gpmc_cs_map = 0; 1123 + 1128 1124 return 0; 1129 1125 } 1126 + 1127 + #ifdef CONFIG_OF 1128 + static struct of_device_id gpmc_dt_ids[] = { 1129 + { .compatible = "ti,omap2420-gpmc" }, 1130 + { .compatible = "ti,omap2430-gpmc" }, 1131 + { .compatible = "ti,omap3430-gpmc" }, /* omap3430 & omap3630 */ 1132 + { .compatible = "ti,omap4430-gpmc" }, /* omap4430 & omap4460 & omap543x */ 1133 + { .compatible = "ti,am3352-gpmc" }, /* am335x devices */ 1134 + { } 1135 + }; 1136 + MODULE_DEVICE_TABLE(of, gpmc_dt_ids); 1137 + 1138 + static void __maybe_unused gpmc_read_timings_dt(struct device_node *np, 1139 + struct gpmc_timings *gpmc_t) 1140 + { 1141 + u32 val; 1142 + 1143 + memset(gpmc_t, 0, sizeof(*gpmc_t)); 1144 + 1145 + /* minimum clock period for syncronous mode */ 1146 + if (!of_property_read_u32(np, "gpmc,sync-clk", &val)) 1147 + gpmc_t->sync_clk = val; 1148 + 1149 + /* chip select timtings */ 1150 + if (!of_property_read_u32(np, "gpmc,cs-on", &val)) 1151 + gpmc_t->cs_on = val; 1152 + 1153 + if (!of_property_read_u32(np, "gpmc,cs-rd-off", &val)) 1154 + gpmc_t->cs_rd_off = val; 1155 + 1156 + if (!of_property_read_u32(np, "gpmc,cs-wr-off", &val)) 1157 + gpmc_t->cs_wr_off = val; 1158 + 1159 + /* ADV signal timings */ 1160 + if (!of_property_read_u32(np, "gpmc,adv-on", &val)) 1161 + gpmc_t->adv_on = val; 1162 + 1163 + if (!of_property_read_u32(np, "gpmc,adv-rd-off", &val)) 1164 + gpmc_t->adv_rd_off = val; 1165 + 1166 + if (!of_property_read_u32(np, "gpmc,adv-wr-off", &val)) 1167 + gpmc_t->adv_wr_off = val; 1168 + 1169 + /* WE signal timings */ 1170 + if (!of_property_read_u32(np, "gpmc,we-on", &val)) 1171 + gpmc_t->we_on = val; 1172 + 1173 + if (!of_property_read_u32(np, "gpmc,we-off", &val)) 1174 + gpmc_t->we_off = val; 1175 + 1176 + /* OE signal timings */ 1177 + if (!of_property_read_u32(np, "gpmc,oe-on", &val)) 1178 + gpmc_t->oe_on = val; 1179 + 1180 + if (!of_property_read_u32(np, "gpmc,oe-off", &val)) 1181 + gpmc_t->oe_off = val; 1182 + 1183 + /* access and cycle timings */ 1184 + if (!of_property_read_u32(np, "gpmc,page-burst-access", &val)) 1185 + gpmc_t->page_burst_access = val; 1186 + 1187 + if (!of_property_read_u32(np, "gpmc,access", &val)) 1188 + gpmc_t->access = val; 1189 + 1190 + if (!of_property_read_u32(np, "gpmc,rd-cycle", &val)) 1191 + gpmc_t->rd_cycle = val; 1192 + 1193 + if (!of_property_read_u32(np, "gpmc,wr-cycle", &val)) 1194 + gpmc_t->wr_cycle = val; 1195 + 1196 + /* only for OMAP3430 */ 1197 + if (!of_property_read_u32(np, "gpmc,wr-access", &val)) 1198 + gpmc_t->wr_access = val; 1199 + 1200 + if (!of_property_read_u32(np, "gpmc,wr-data-mux-bus", &val)) 1201 + gpmc_t->wr_data_mux_bus = val; 1202 + } 1203 + 1204 + #ifdef CONFIG_MTD_NAND 1205 + 1206 + static const char * const nand_ecc_opts[] = { 1207 + [OMAP_ECC_HAMMING_CODE_DEFAULT] = "sw", 1208 + [OMAP_ECC_HAMMING_CODE_HW] = "hw", 1209 + [OMAP_ECC_HAMMING_CODE_HW_ROMCODE] = "hw-romcode", 1210 + [OMAP_ECC_BCH4_CODE_HW] = "bch4", 1211 + [OMAP_ECC_BCH8_CODE_HW] = "bch8", 1212 + }; 1213 + 1214 + static int gpmc_probe_nand_child(struct platform_device *pdev, 1215 + struct device_node *child) 1216 + { 1217 + u32 val; 1218 + const char *s; 1219 + struct gpmc_timings gpmc_t; 1220 + struct omap_nand_platform_data *gpmc_nand_data; 1221 + 1222 + if (of_property_read_u32(child, "reg", &val) < 0) { 1223 + dev_err(&pdev->dev, "%s has no 'reg' property\n", 1224 + child->full_name); 1225 + return -ENODEV; 1226 + } 1227 + 1228 + gpmc_nand_data = devm_kzalloc(&pdev->dev, sizeof(*gpmc_nand_data), 1229 + GFP_KERNEL); 1230 + if (!gpmc_nand_data) 1231 + return -ENOMEM; 1232 + 1233 + gpmc_nand_data->cs = val; 1234 + gpmc_nand_data->of_node = child; 1235 + 1236 + if (!of_property_read_string(child, "ti,nand-ecc-opt", &s)) 1237 + for (val = 0; val < ARRAY_SIZE(nand_ecc_opts); val++) 1238 + if (!strcasecmp(s, nand_ecc_opts[val])) { 1239 + gpmc_nand_data->ecc_opt = val; 1240 + break; 1241 + } 1242 + 1243 + val = of_get_nand_bus_width(child); 1244 + if (val == 16) 1245 + gpmc_nand_data->devsize = NAND_BUSWIDTH_16; 1246 + 1247 + gpmc_read_timings_dt(child, &gpmc_t); 1248 + gpmc_nand_init(gpmc_nand_data, &gpmc_t); 1249 + 1250 + return 0; 1251 + } 1252 + #else 1253 + static int gpmc_probe_nand_child(struct platform_device *pdev, 1254 + struct device_node *child) 1255 + { 1256 + return 0; 1257 + } 1258 + #endif 1259 + 1260 + #ifdef CONFIG_MTD_ONENAND 1261 + static int gpmc_probe_onenand_child(struct platform_device *pdev, 1262 + struct device_node *child) 1263 + { 1264 + u32 val; 1265 + struct omap_onenand_platform_data *gpmc_onenand_data; 1266 + 1267 + if (of_property_read_u32(child, "reg", &val) < 0) { 1268 + dev_err(&pdev->dev, "%s has no 'reg' property\n", 1269 + child->full_name); 1270 + return -ENODEV; 1271 + } 1272 + 1273 + gpmc_onenand_data = devm_kzalloc(&pdev->dev, sizeof(*gpmc_onenand_data), 1274 + GFP_KERNEL); 1275 + if (!gpmc_onenand_data) 1276 + return -ENOMEM; 1277 + 1278 + gpmc_onenand_data->cs = val; 1279 + gpmc_onenand_data->of_node = child; 1280 + gpmc_onenand_data->dma_channel = -1; 1281 + 1282 + if (!of_property_read_u32(child, "dma-channel", &val)) 1283 + gpmc_onenand_data->dma_channel = val; 1284 + 1285 + gpmc_onenand_init(gpmc_onenand_data); 1286 + 1287 + return 0; 1288 + } 1289 + #else 1290 + static int gpmc_probe_onenand_child(struct platform_device *pdev, 1291 + struct device_node *child) 1292 + { 1293 + return 0; 1294 + } 1295 + #endif 1296 + 1297 + static int gpmc_probe_dt(struct platform_device *pdev) 1298 + { 1299 + int ret; 1300 + struct device_node *child; 1301 + const struct of_device_id *of_id = 1302 + of_match_device(gpmc_dt_ids, &pdev->dev); 1303 + 1304 + if (!of_id) 1305 + return 0; 1306 + 1307 + for_each_node_by_name(child, "nand") { 1308 + ret = gpmc_probe_nand_child(pdev, child); 1309 + if (ret < 0) { 1310 + of_node_put(child); 1311 + return ret; 1312 + } 1313 + } 1314 + 1315 + for_each_node_by_name(child, "onenand") { 1316 + ret = gpmc_probe_onenand_child(pdev, child); 1317 + if (ret < 0) { 1318 + of_node_put(child); 1319 + return ret; 1320 + } 1321 + } 1322 + return 0; 1323 + } 1324 + #else 1325 + static int gpmc_probe_dt(struct platform_device *pdev) 1326 + { 1327 + return 0; 1328 + } 1329 + #endif 1130 1330 1131 1331 static int gpmc_probe(struct platform_device *pdev) 1132 1332 { ··· 1386 1172 if (IS_ERR_VALUE(gpmc_setup_irq())) 1387 1173 dev_warn(gpmc_dev, "gpmc_setup_irq failed\n"); 1388 1174 1175 + rc = gpmc_probe_dt(pdev); 1176 + if (rc < 0) { 1177 + clk_disable_unprepare(gpmc_l3_clk); 1178 + clk_put(gpmc_l3_clk); 1179 + dev_err(gpmc_dev, "failed to probe DT parameters\n"); 1180 + return rc; 1181 + } 1182 + 1389 1183 return 0; 1390 1184 } 1391 1185 ··· 1411 1189 .driver = { 1412 1190 .name = DEVICE_NAME, 1413 1191 .owner = THIS_MODULE, 1192 + .of_match_table = of_match_ptr(gpmc_dt_ids), 1414 1193 }, 1415 1194 }; 1416 1195 ··· 1434 1211 struct omap_hwmod *oh; 1435 1212 struct platform_device *pdev; 1436 1213 char *oh_name = "gpmc"; 1214 + 1215 + /* 1216 + * if the board boots up with a populated DT, do not 1217 + * manually add the device from this initcall 1218 + */ 1219 + if (of_have_populated_dt()) 1220 + return -ENODEV; 1437 1221 1438 1222 oh = omap_hwmod_lookup(oh_name); 1439 1223 if (!oh) {
+1 -1086
arch/arm/mach-u300/core.c
··· 31 31 #include <linux/dma-mapping.h> 32 32 #include <linux/platform_data/clk-u300.h> 33 33 #include <linux/platform_data/pinctrl-coh901.h> 34 + #include <linux/platform_data/dma-coh901318.h> 34 35 #include <linux/irqchip/arm-vic.h> 35 36 36 37 #include <asm/types.h> ··· 41 40 #include <asm/mach-types.h> 42 41 #include <asm/mach/arch.h> 43 42 44 - #include <mach/coh901318.h> 45 43 #include <mach/hardware.h> 46 44 #include <mach/syscon.h> 47 45 #include <mach/irqs.h> ··· 49 49 #include "spi.h" 50 50 #include "i2c.h" 51 51 #include "u300-gpio.h" 52 - #include "dma_channels.h" 53 52 54 53 /* 55 54 * Static I/O mappings that are needed for booting the U300 platforms. The ··· 326 327 } 327 328 }; 328 329 329 - /* points out all dma slave channels. 330 - * Syntax is [A1, B1, A2, B2, .... ,-1,-1] 331 - * Select all channels from A to B, end of list is marked with -1,-1 332 - */ 333 - static int dma_slave_channels[] = { 334 - U300_DMA_MSL_TX_0, U300_DMA_SPI_RX, 335 - U300_DMA_UART1_TX, U300_DMA_UART1_RX, -1, -1}; 336 - 337 - /* points out all dma memcpy channels. */ 338 - static int dma_memcpy_channels[] = { 339 - U300_DMA_GENERAL_PURPOSE_0, U300_DMA_GENERAL_PURPOSE_8, -1, -1}; 340 - 341 - /** register dma for memory access 342 - * 343 - * active 1 means dma intends to access memory 344 - * 0 means dma wont access memory 345 - */ 346 - static void coh901318_access_memory_state(struct device *dev, bool active) 347 - { 348 - } 349 - 350 - #define flags_memcpy_config (COH901318_CX_CFG_CH_DISABLE | \ 351 - COH901318_CX_CFG_RM_MEMORY_TO_MEMORY | \ 352 - COH901318_CX_CFG_LCR_DISABLE | \ 353 - COH901318_CX_CFG_TC_IRQ_ENABLE | \ 354 - COH901318_CX_CFG_BE_IRQ_ENABLE) 355 - #define flags_memcpy_lli_chained (COH901318_CX_CTRL_TC_ENABLE | \ 356 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \ 357 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \ 358 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \ 359 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \ 360 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \ 361 - COH901318_CX_CTRL_MASTER_MODE_M1RW | \ 362 - COH901318_CX_CTRL_TCP_DISABLE | \ 363 - COH901318_CX_CTRL_TC_IRQ_DISABLE | \ 364 - COH901318_CX_CTRL_HSP_DISABLE | \ 365 - COH901318_CX_CTRL_HSS_DISABLE | \ 366 - COH901318_CX_CTRL_DDMA_LEGACY | \ 367 - COH901318_CX_CTRL_PRDD_SOURCE) 368 - #define flags_memcpy_lli (COH901318_CX_CTRL_TC_ENABLE | \ 369 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \ 370 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \ 371 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \ 372 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \ 373 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \ 374 - COH901318_CX_CTRL_MASTER_MODE_M1RW | \ 375 - COH901318_CX_CTRL_TCP_DISABLE | \ 376 - COH901318_CX_CTRL_TC_IRQ_DISABLE | \ 377 - COH901318_CX_CTRL_HSP_DISABLE | \ 378 - COH901318_CX_CTRL_HSS_DISABLE | \ 379 - COH901318_CX_CTRL_DDMA_LEGACY | \ 380 - COH901318_CX_CTRL_PRDD_SOURCE) 381 - #define flags_memcpy_lli_last (COH901318_CX_CTRL_TC_ENABLE | \ 382 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \ 383 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \ 384 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \ 385 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \ 386 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \ 387 - COH901318_CX_CTRL_MASTER_MODE_M1RW | \ 388 - COH901318_CX_CTRL_TCP_DISABLE | \ 389 - COH901318_CX_CTRL_TC_IRQ_ENABLE | \ 390 - COH901318_CX_CTRL_HSP_DISABLE | \ 391 - COH901318_CX_CTRL_HSS_DISABLE | \ 392 - COH901318_CX_CTRL_DDMA_LEGACY | \ 393 - COH901318_CX_CTRL_PRDD_SOURCE) 394 - 395 - const struct coh_dma_channel chan_config[U300_DMA_CHANNELS] = { 396 - { 397 - .number = U300_DMA_MSL_TX_0, 398 - .name = "MSL TX 0", 399 - .priority_high = 0, 400 - .dev_addr = U300_MSL_BASE + 0 * 0x40 + 0x20, 401 - }, 402 - { 403 - .number = U300_DMA_MSL_TX_1, 404 - .name = "MSL TX 1", 405 - .priority_high = 0, 406 - .dev_addr = U300_MSL_BASE + 1 * 0x40 + 0x20, 407 - .param.config = COH901318_CX_CFG_CH_DISABLE | 408 - COH901318_CX_CFG_LCR_DISABLE | 409 - COH901318_CX_CFG_TC_IRQ_ENABLE | 410 - COH901318_CX_CFG_BE_IRQ_ENABLE, 411 - .param.ctrl_lli_chained = 0 | 412 - COH901318_CX_CTRL_TC_ENABLE | 413 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 414 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 415 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 416 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 417 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 418 - COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 419 - COH901318_CX_CTRL_TCP_DISABLE | 420 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 421 - COH901318_CX_CTRL_HSP_ENABLE | 422 - COH901318_CX_CTRL_HSS_DISABLE | 423 - COH901318_CX_CTRL_DDMA_LEGACY | 424 - COH901318_CX_CTRL_PRDD_SOURCE, 425 - .param.ctrl_lli = 0 | 426 - COH901318_CX_CTRL_TC_ENABLE | 427 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 428 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 429 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 430 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 431 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 432 - COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 433 - COH901318_CX_CTRL_TCP_ENABLE | 434 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 435 - COH901318_CX_CTRL_HSP_ENABLE | 436 - COH901318_CX_CTRL_HSS_DISABLE | 437 - COH901318_CX_CTRL_DDMA_LEGACY | 438 - COH901318_CX_CTRL_PRDD_SOURCE, 439 - .param.ctrl_lli_last = 0 | 440 - COH901318_CX_CTRL_TC_ENABLE | 441 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 442 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 443 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 444 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 445 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 446 - COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 447 - COH901318_CX_CTRL_TCP_ENABLE | 448 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 449 - COH901318_CX_CTRL_HSP_ENABLE | 450 - COH901318_CX_CTRL_HSS_DISABLE | 451 - COH901318_CX_CTRL_DDMA_LEGACY | 452 - COH901318_CX_CTRL_PRDD_SOURCE, 453 - }, 454 - { 455 - .number = U300_DMA_MSL_TX_2, 456 - .name = "MSL TX 2", 457 - .priority_high = 0, 458 - .dev_addr = U300_MSL_BASE + 2 * 0x40 + 0x20, 459 - .param.config = COH901318_CX_CFG_CH_DISABLE | 460 - COH901318_CX_CFG_LCR_DISABLE | 461 - COH901318_CX_CFG_TC_IRQ_ENABLE | 462 - COH901318_CX_CFG_BE_IRQ_ENABLE, 463 - .param.ctrl_lli_chained = 0 | 464 - COH901318_CX_CTRL_TC_ENABLE | 465 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 466 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 467 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 468 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 469 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 470 - COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 471 - COH901318_CX_CTRL_TCP_DISABLE | 472 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 473 - COH901318_CX_CTRL_HSP_ENABLE | 474 - COH901318_CX_CTRL_HSS_DISABLE | 475 - COH901318_CX_CTRL_DDMA_LEGACY | 476 - COH901318_CX_CTRL_PRDD_SOURCE, 477 - .param.ctrl_lli = 0 | 478 - COH901318_CX_CTRL_TC_ENABLE | 479 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 480 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 481 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 482 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 483 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 484 - COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 485 - COH901318_CX_CTRL_TCP_ENABLE | 486 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 487 - COH901318_CX_CTRL_HSP_ENABLE | 488 - COH901318_CX_CTRL_HSS_DISABLE | 489 - COH901318_CX_CTRL_DDMA_LEGACY | 490 - COH901318_CX_CTRL_PRDD_SOURCE, 491 - .param.ctrl_lli_last = 0 | 492 - COH901318_CX_CTRL_TC_ENABLE | 493 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 494 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 495 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 496 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 497 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 498 - COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 499 - COH901318_CX_CTRL_TCP_ENABLE | 500 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 501 - COH901318_CX_CTRL_HSP_ENABLE | 502 - COH901318_CX_CTRL_HSS_DISABLE | 503 - COH901318_CX_CTRL_DDMA_LEGACY | 504 - COH901318_CX_CTRL_PRDD_SOURCE, 505 - .desc_nbr_max = 10, 506 - }, 507 - { 508 - .number = U300_DMA_MSL_TX_3, 509 - .name = "MSL TX 3", 510 - .priority_high = 0, 511 - .dev_addr = U300_MSL_BASE + 3 * 0x40 + 0x20, 512 - .param.config = COH901318_CX_CFG_CH_DISABLE | 513 - COH901318_CX_CFG_LCR_DISABLE | 514 - COH901318_CX_CFG_TC_IRQ_ENABLE | 515 - COH901318_CX_CFG_BE_IRQ_ENABLE, 516 - .param.ctrl_lli_chained = 0 | 517 - COH901318_CX_CTRL_TC_ENABLE | 518 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 519 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 520 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 521 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 522 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 523 - COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 524 - COH901318_CX_CTRL_TCP_DISABLE | 525 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 526 - COH901318_CX_CTRL_HSP_ENABLE | 527 - COH901318_CX_CTRL_HSS_DISABLE | 528 - COH901318_CX_CTRL_DDMA_LEGACY | 529 - COH901318_CX_CTRL_PRDD_SOURCE, 530 - .param.ctrl_lli = 0 | 531 - COH901318_CX_CTRL_TC_ENABLE | 532 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 533 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 534 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 535 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 536 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 537 - COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 538 - COH901318_CX_CTRL_TCP_ENABLE | 539 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 540 - COH901318_CX_CTRL_HSP_ENABLE | 541 - COH901318_CX_CTRL_HSS_DISABLE | 542 - COH901318_CX_CTRL_DDMA_LEGACY | 543 - COH901318_CX_CTRL_PRDD_SOURCE, 544 - .param.ctrl_lli_last = 0 | 545 - COH901318_CX_CTRL_TC_ENABLE | 546 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 547 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 548 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 549 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 550 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 551 - COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 552 - COH901318_CX_CTRL_TCP_ENABLE | 553 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 554 - COH901318_CX_CTRL_HSP_ENABLE | 555 - COH901318_CX_CTRL_HSS_DISABLE | 556 - COH901318_CX_CTRL_DDMA_LEGACY | 557 - COH901318_CX_CTRL_PRDD_SOURCE, 558 - }, 559 - { 560 - .number = U300_DMA_MSL_TX_4, 561 - .name = "MSL TX 4", 562 - .priority_high = 0, 563 - .dev_addr = U300_MSL_BASE + 4 * 0x40 + 0x20, 564 - .param.config = COH901318_CX_CFG_CH_DISABLE | 565 - COH901318_CX_CFG_LCR_DISABLE | 566 - COH901318_CX_CFG_TC_IRQ_ENABLE | 567 - COH901318_CX_CFG_BE_IRQ_ENABLE, 568 - .param.ctrl_lli_chained = 0 | 569 - COH901318_CX_CTRL_TC_ENABLE | 570 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 571 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 572 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 573 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 574 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 575 - COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 576 - COH901318_CX_CTRL_TCP_DISABLE | 577 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 578 - COH901318_CX_CTRL_HSP_ENABLE | 579 - COH901318_CX_CTRL_HSS_DISABLE | 580 - COH901318_CX_CTRL_DDMA_LEGACY | 581 - COH901318_CX_CTRL_PRDD_SOURCE, 582 - .param.ctrl_lli = 0 | 583 - COH901318_CX_CTRL_TC_ENABLE | 584 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 585 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 586 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 587 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 588 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 589 - COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 590 - COH901318_CX_CTRL_TCP_ENABLE | 591 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 592 - COH901318_CX_CTRL_HSP_ENABLE | 593 - COH901318_CX_CTRL_HSS_DISABLE | 594 - COH901318_CX_CTRL_DDMA_LEGACY | 595 - COH901318_CX_CTRL_PRDD_SOURCE, 596 - .param.ctrl_lli_last = 0 | 597 - COH901318_CX_CTRL_TC_ENABLE | 598 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 599 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 600 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 601 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 602 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 603 - COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 604 - COH901318_CX_CTRL_TCP_ENABLE | 605 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 606 - COH901318_CX_CTRL_HSP_ENABLE | 607 - COH901318_CX_CTRL_HSS_DISABLE | 608 - COH901318_CX_CTRL_DDMA_LEGACY | 609 - COH901318_CX_CTRL_PRDD_SOURCE, 610 - }, 611 - { 612 - .number = U300_DMA_MSL_TX_5, 613 - .name = "MSL TX 5", 614 - .priority_high = 0, 615 - .dev_addr = U300_MSL_BASE + 5 * 0x40 + 0x20, 616 - }, 617 - { 618 - .number = U300_DMA_MSL_TX_6, 619 - .name = "MSL TX 6", 620 - .priority_high = 0, 621 - .dev_addr = U300_MSL_BASE + 6 * 0x40 + 0x20, 622 - }, 623 - { 624 - .number = U300_DMA_MSL_RX_0, 625 - .name = "MSL RX 0", 626 - .priority_high = 0, 627 - .dev_addr = U300_MSL_BASE + 0 * 0x40 + 0x220, 628 - }, 629 - { 630 - .number = U300_DMA_MSL_RX_1, 631 - .name = "MSL RX 1", 632 - .priority_high = 0, 633 - .dev_addr = U300_MSL_BASE + 1 * 0x40 + 0x220, 634 - .param.config = COH901318_CX_CFG_CH_DISABLE | 635 - COH901318_CX_CFG_LCR_DISABLE | 636 - COH901318_CX_CFG_TC_IRQ_ENABLE | 637 - COH901318_CX_CFG_BE_IRQ_ENABLE, 638 - .param.ctrl_lli_chained = 0 | 639 - COH901318_CX_CTRL_TC_ENABLE | 640 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 641 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 642 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 643 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 644 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 645 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 646 - COH901318_CX_CTRL_TCP_DISABLE | 647 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 648 - COH901318_CX_CTRL_HSP_ENABLE | 649 - COH901318_CX_CTRL_HSS_DISABLE | 650 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 651 - COH901318_CX_CTRL_PRDD_DEST, 652 - .param.ctrl_lli = 0, 653 - .param.ctrl_lli_last = 0 | 654 - COH901318_CX_CTRL_TC_ENABLE | 655 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 656 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 657 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 658 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 659 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 660 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 661 - COH901318_CX_CTRL_TCP_DISABLE | 662 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 663 - COH901318_CX_CTRL_HSP_ENABLE | 664 - COH901318_CX_CTRL_HSS_DISABLE | 665 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 666 - COH901318_CX_CTRL_PRDD_DEST, 667 - }, 668 - { 669 - .number = U300_DMA_MSL_RX_2, 670 - .name = "MSL RX 2", 671 - .priority_high = 0, 672 - .dev_addr = U300_MSL_BASE + 2 * 0x40 + 0x220, 673 - .param.config = COH901318_CX_CFG_CH_DISABLE | 674 - COH901318_CX_CFG_LCR_DISABLE | 675 - COH901318_CX_CFG_TC_IRQ_ENABLE | 676 - COH901318_CX_CFG_BE_IRQ_ENABLE, 677 - .param.ctrl_lli_chained = 0 | 678 - COH901318_CX_CTRL_TC_ENABLE | 679 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 680 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 681 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 682 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 683 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 684 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 685 - COH901318_CX_CTRL_TCP_DISABLE | 686 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 687 - COH901318_CX_CTRL_HSP_ENABLE | 688 - COH901318_CX_CTRL_HSS_DISABLE | 689 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 690 - COH901318_CX_CTRL_PRDD_DEST, 691 - .param.ctrl_lli = 0 | 692 - COH901318_CX_CTRL_TC_ENABLE | 693 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 694 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 695 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 696 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 697 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 698 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 699 - COH901318_CX_CTRL_TCP_DISABLE | 700 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 701 - COH901318_CX_CTRL_HSP_ENABLE | 702 - COH901318_CX_CTRL_HSS_DISABLE | 703 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 704 - COH901318_CX_CTRL_PRDD_DEST, 705 - .param.ctrl_lli_last = 0 | 706 - COH901318_CX_CTRL_TC_ENABLE | 707 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 708 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 709 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 710 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 711 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 712 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 713 - COH901318_CX_CTRL_TCP_DISABLE | 714 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 715 - COH901318_CX_CTRL_HSP_ENABLE | 716 - COH901318_CX_CTRL_HSS_DISABLE | 717 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 718 - COH901318_CX_CTRL_PRDD_DEST, 719 - }, 720 - { 721 - .number = U300_DMA_MSL_RX_3, 722 - .name = "MSL RX 3", 723 - .priority_high = 0, 724 - .dev_addr = U300_MSL_BASE + 3 * 0x40 + 0x220, 725 - .param.config = COH901318_CX_CFG_CH_DISABLE | 726 - COH901318_CX_CFG_LCR_DISABLE | 727 - COH901318_CX_CFG_TC_IRQ_ENABLE | 728 - COH901318_CX_CFG_BE_IRQ_ENABLE, 729 - .param.ctrl_lli_chained = 0 | 730 - COH901318_CX_CTRL_TC_ENABLE | 731 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 732 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 733 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 734 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 735 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 736 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 737 - COH901318_CX_CTRL_TCP_DISABLE | 738 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 739 - COH901318_CX_CTRL_HSP_ENABLE | 740 - COH901318_CX_CTRL_HSS_DISABLE | 741 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 742 - COH901318_CX_CTRL_PRDD_DEST, 743 - .param.ctrl_lli = 0 | 744 - COH901318_CX_CTRL_TC_ENABLE | 745 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 746 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 747 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 748 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 749 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 750 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 751 - COH901318_CX_CTRL_TCP_DISABLE | 752 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 753 - COH901318_CX_CTRL_HSP_ENABLE | 754 - COH901318_CX_CTRL_HSS_DISABLE | 755 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 756 - COH901318_CX_CTRL_PRDD_DEST, 757 - .param.ctrl_lli_last = 0 | 758 - COH901318_CX_CTRL_TC_ENABLE | 759 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 760 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 761 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 762 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 763 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 764 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 765 - COH901318_CX_CTRL_TCP_DISABLE | 766 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 767 - COH901318_CX_CTRL_HSP_ENABLE | 768 - COH901318_CX_CTRL_HSS_DISABLE | 769 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 770 - COH901318_CX_CTRL_PRDD_DEST, 771 - }, 772 - { 773 - .number = U300_DMA_MSL_RX_4, 774 - .name = "MSL RX 4", 775 - .priority_high = 0, 776 - .dev_addr = U300_MSL_BASE + 4 * 0x40 + 0x220, 777 - .param.config = COH901318_CX_CFG_CH_DISABLE | 778 - COH901318_CX_CFG_LCR_DISABLE | 779 - COH901318_CX_CFG_TC_IRQ_ENABLE | 780 - COH901318_CX_CFG_BE_IRQ_ENABLE, 781 - .param.ctrl_lli_chained = 0 | 782 - COH901318_CX_CTRL_TC_ENABLE | 783 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 784 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 785 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 786 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 787 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 788 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 789 - COH901318_CX_CTRL_TCP_DISABLE | 790 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 791 - COH901318_CX_CTRL_HSP_ENABLE | 792 - COH901318_CX_CTRL_HSS_DISABLE | 793 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 794 - COH901318_CX_CTRL_PRDD_DEST, 795 - .param.ctrl_lli = 0 | 796 - COH901318_CX_CTRL_TC_ENABLE | 797 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 798 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 799 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 800 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 801 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 802 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 803 - COH901318_CX_CTRL_TCP_DISABLE | 804 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 805 - COH901318_CX_CTRL_HSP_ENABLE | 806 - COH901318_CX_CTRL_HSS_DISABLE | 807 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 808 - COH901318_CX_CTRL_PRDD_DEST, 809 - .param.ctrl_lli_last = 0 | 810 - COH901318_CX_CTRL_TC_ENABLE | 811 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 812 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 813 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 814 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 815 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 816 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 817 - COH901318_CX_CTRL_TCP_DISABLE | 818 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 819 - COH901318_CX_CTRL_HSP_ENABLE | 820 - COH901318_CX_CTRL_HSS_DISABLE | 821 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 822 - COH901318_CX_CTRL_PRDD_DEST, 823 - }, 824 - { 825 - .number = U300_DMA_MSL_RX_5, 826 - .name = "MSL RX 5", 827 - .priority_high = 0, 828 - .dev_addr = U300_MSL_BASE + 5 * 0x40 + 0x220, 829 - .param.config = COH901318_CX_CFG_CH_DISABLE | 830 - COH901318_CX_CFG_LCR_DISABLE | 831 - COH901318_CX_CFG_TC_IRQ_ENABLE | 832 - COH901318_CX_CFG_BE_IRQ_ENABLE, 833 - .param.ctrl_lli_chained = 0 | 834 - COH901318_CX_CTRL_TC_ENABLE | 835 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 836 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 837 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 838 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 839 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 840 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 841 - COH901318_CX_CTRL_TCP_DISABLE | 842 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 843 - COH901318_CX_CTRL_HSP_ENABLE | 844 - COH901318_CX_CTRL_HSS_DISABLE | 845 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 846 - COH901318_CX_CTRL_PRDD_DEST, 847 - .param.ctrl_lli = 0 | 848 - COH901318_CX_CTRL_TC_ENABLE | 849 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 850 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 851 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 852 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 853 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 854 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 855 - COH901318_CX_CTRL_TCP_DISABLE | 856 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 857 - COH901318_CX_CTRL_HSP_ENABLE | 858 - COH901318_CX_CTRL_HSS_DISABLE | 859 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 860 - COH901318_CX_CTRL_PRDD_DEST, 861 - .param.ctrl_lli_last = 0 | 862 - COH901318_CX_CTRL_TC_ENABLE | 863 - COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 864 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 865 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 866 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 867 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 868 - COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 869 - COH901318_CX_CTRL_TCP_DISABLE | 870 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 871 - COH901318_CX_CTRL_HSP_ENABLE | 872 - COH901318_CX_CTRL_HSS_DISABLE | 873 - COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 874 - COH901318_CX_CTRL_PRDD_DEST, 875 - }, 876 - { 877 - .number = U300_DMA_MSL_RX_6, 878 - .name = "MSL RX 6", 879 - .priority_high = 0, 880 - .dev_addr = U300_MSL_BASE + 6 * 0x40 + 0x220, 881 - }, 882 - /* 883 - * Don't set up device address, burst count or size of src 884 - * or dst bus for this peripheral - handled by PrimeCell 885 - * DMA extension. 886 - */ 887 - { 888 - .number = U300_DMA_MMCSD_RX_TX, 889 - .name = "MMCSD RX TX", 890 - .priority_high = 0, 891 - .param.config = COH901318_CX_CFG_CH_DISABLE | 892 - COH901318_CX_CFG_LCR_DISABLE | 893 - COH901318_CX_CFG_TC_IRQ_ENABLE | 894 - COH901318_CX_CFG_BE_IRQ_ENABLE, 895 - .param.ctrl_lli_chained = 0 | 896 - COH901318_CX_CTRL_TC_ENABLE | 897 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 898 - COH901318_CX_CTRL_TCP_ENABLE | 899 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 900 - COH901318_CX_CTRL_HSP_ENABLE | 901 - COH901318_CX_CTRL_HSS_DISABLE | 902 - COH901318_CX_CTRL_DDMA_LEGACY, 903 - .param.ctrl_lli = 0 | 904 - COH901318_CX_CTRL_TC_ENABLE | 905 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 906 - COH901318_CX_CTRL_TCP_ENABLE | 907 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 908 - COH901318_CX_CTRL_HSP_ENABLE | 909 - COH901318_CX_CTRL_HSS_DISABLE | 910 - COH901318_CX_CTRL_DDMA_LEGACY, 911 - .param.ctrl_lli_last = 0 | 912 - COH901318_CX_CTRL_TC_ENABLE | 913 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 914 - COH901318_CX_CTRL_TCP_DISABLE | 915 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 916 - COH901318_CX_CTRL_HSP_ENABLE | 917 - COH901318_CX_CTRL_HSS_DISABLE | 918 - COH901318_CX_CTRL_DDMA_LEGACY, 919 - 920 - }, 921 - { 922 - .number = U300_DMA_MSPRO_TX, 923 - .name = "MSPRO TX", 924 - .priority_high = 0, 925 - }, 926 - { 927 - .number = U300_DMA_MSPRO_RX, 928 - .name = "MSPRO RX", 929 - .priority_high = 0, 930 - }, 931 - /* 932 - * Don't set up device address, burst count or size of src 933 - * or dst bus for this peripheral - handled by PrimeCell 934 - * DMA extension. 935 - */ 936 - { 937 - .number = U300_DMA_UART0_TX, 938 - .name = "UART0 TX", 939 - .priority_high = 0, 940 - .param.config = COH901318_CX_CFG_CH_DISABLE | 941 - COH901318_CX_CFG_LCR_DISABLE | 942 - COH901318_CX_CFG_TC_IRQ_ENABLE | 943 - COH901318_CX_CFG_BE_IRQ_ENABLE, 944 - .param.ctrl_lli_chained = 0 | 945 - COH901318_CX_CTRL_TC_ENABLE | 946 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 947 - COH901318_CX_CTRL_TCP_ENABLE | 948 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 949 - COH901318_CX_CTRL_HSP_ENABLE | 950 - COH901318_CX_CTRL_HSS_DISABLE | 951 - COH901318_CX_CTRL_DDMA_LEGACY, 952 - .param.ctrl_lli = 0 | 953 - COH901318_CX_CTRL_TC_ENABLE | 954 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 955 - COH901318_CX_CTRL_TCP_ENABLE | 956 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 957 - COH901318_CX_CTRL_HSP_ENABLE | 958 - COH901318_CX_CTRL_HSS_DISABLE | 959 - COH901318_CX_CTRL_DDMA_LEGACY, 960 - .param.ctrl_lli_last = 0 | 961 - COH901318_CX_CTRL_TC_ENABLE | 962 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 963 - COH901318_CX_CTRL_TCP_ENABLE | 964 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 965 - COH901318_CX_CTRL_HSP_ENABLE | 966 - COH901318_CX_CTRL_HSS_DISABLE | 967 - COH901318_CX_CTRL_DDMA_LEGACY, 968 - }, 969 - { 970 - .number = U300_DMA_UART0_RX, 971 - .name = "UART0 RX", 972 - .priority_high = 0, 973 - .param.config = COH901318_CX_CFG_CH_DISABLE | 974 - COH901318_CX_CFG_LCR_DISABLE | 975 - COH901318_CX_CFG_TC_IRQ_ENABLE | 976 - COH901318_CX_CFG_BE_IRQ_ENABLE, 977 - .param.ctrl_lli_chained = 0 | 978 - COH901318_CX_CTRL_TC_ENABLE | 979 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 980 - COH901318_CX_CTRL_TCP_ENABLE | 981 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 982 - COH901318_CX_CTRL_HSP_ENABLE | 983 - COH901318_CX_CTRL_HSS_DISABLE | 984 - COH901318_CX_CTRL_DDMA_LEGACY, 985 - .param.ctrl_lli = 0 | 986 - COH901318_CX_CTRL_TC_ENABLE | 987 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 988 - COH901318_CX_CTRL_TCP_ENABLE | 989 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 990 - COH901318_CX_CTRL_HSP_ENABLE | 991 - COH901318_CX_CTRL_HSS_DISABLE | 992 - COH901318_CX_CTRL_DDMA_LEGACY, 993 - .param.ctrl_lli_last = 0 | 994 - COH901318_CX_CTRL_TC_ENABLE | 995 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 996 - COH901318_CX_CTRL_TCP_ENABLE | 997 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 998 - COH901318_CX_CTRL_HSP_ENABLE | 999 - COH901318_CX_CTRL_HSS_DISABLE | 1000 - COH901318_CX_CTRL_DDMA_LEGACY, 1001 - }, 1002 - { 1003 - .number = U300_DMA_APEX_TX, 1004 - .name = "APEX TX", 1005 - .priority_high = 0, 1006 - }, 1007 - { 1008 - .number = U300_DMA_APEX_RX, 1009 - .name = "APEX RX", 1010 - .priority_high = 0, 1011 - }, 1012 - { 1013 - .number = U300_DMA_PCM_I2S0_TX, 1014 - .name = "PCM I2S0 TX", 1015 - .priority_high = 1, 1016 - .dev_addr = U300_PCM_I2S0_BASE + 0x14, 1017 - .param.config = COH901318_CX_CFG_CH_DISABLE | 1018 - COH901318_CX_CFG_LCR_DISABLE | 1019 - COH901318_CX_CFG_TC_IRQ_ENABLE | 1020 - COH901318_CX_CFG_BE_IRQ_ENABLE, 1021 - .param.ctrl_lli_chained = 0 | 1022 - COH901318_CX_CTRL_TC_ENABLE | 1023 - COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1024 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1025 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 1026 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1027 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 1028 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1029 - COH901318_CX_CTRL_TCP_DISABLE | 1030 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 1031 - COH901318_CX_CTRL_HSP_ENABLE | 1032 - COH901318_CX_CTRL_HSS_DISABLE | 1033 - COH901318_CX_CTRL_DDMA_LEGACY | 1034 - COH901318_CX_CTRL_PRDD_SOURCE, 1035 - .param.ctrl_lli = 0 | 1036 - COH901318_CX_CTRL_TC_ENABLE | 1037 - COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1038 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1039 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 1040 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1041 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 1042 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1043 - COH901318_CX_CTRL_TCP_ENABLE | 1044 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 1045 - COH901318_CX_CTRL_HSP_ENABLE | 1046 - COH901318_CX_CTRL_HSS_DISABLE | 1047 - COH901318_CX_CTRL_DDMA_LEGACY | 1048 - COH901318_CX_CTRL_PRDD_SOURCE, 1049 - .param.ctrl_lli_last = 0 | 1050 - COH901318_CX_CTRL_TC_ENABLE | 1051 - COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1052 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1053 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 1054 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1055 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 1056 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1057 - COH901318_CX_CTRL_TCP_ENABLE | 1058 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 1059 - COH901318_CX_CTRL_HSP_ENABLE | 1060 - COH901318_CX_CTRL_HSS_DISABLE | 1061 - COH901318_CX_CTRL_DDMA_LEGACY | 1062 - COH901318_CX_CTRL_PRDD_SOURCE, 1063 - }, 1064 - { 1065 - .number = U300_DMA_PCM_I2S0_RX, 1066 - .name = "PCM I2S0 RX", 1067 - .priority_high = 1, 1068 - .dev_addr = U300_PCM_I2S0_BASE + 0x10, 1069 - .param.config = COH901318_CX_CFG_CH_DISABLE | 1070 - COH901318_CX_CFG_LCR_DISABLE | 1071 - COH901318_CX_CFG_TC_IRQ_ENABLE | 1072 - COH901318_CX_CFG_BE_IRQ_ENABLE, 1073 - .param.ctrl_lli_chained = 0 | 1074 - COH901318_CX_CTRL_TC_ENABLE | 1075 - COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1076 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1077 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 1078 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1079 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 1080 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1081 - COH901318_CX_CTRL_TCP_DISABLE | 1082 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 1083 - COH901318_CX_CTRL_HSP_ENABLE | 1084 - COH901318_CX_CTRL_HSS_DISABLE | 1085 - COH901318_CX_CTRL_DDMA_LEGACY | 1086 - COH901318_CX_CTRL_PRDD_DEST, 1087 - .param.ctrl_lli = 0 | 1088 - COH901318_CX_CTRL_TC_ENABLE | 1089 - COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1090 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1091 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 1092 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1093 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 1094 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1095 - COH901318_CX_CTRL_TCP_ENABLE | 1096 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 1097 - COH901318_CX_CTRL_HSP_ENABLE | 1098 - COH901318_CX_CTRL_HSS_DISABLE | 1099 - COH901318_CX_CTRL_DDMA_LEGACY | 1100 - COH901318_CX_CTRL_PRDD_DEST, 1101 - .param.ctrl_lli_last = 0 | 1102 - COH901318_CX_CTRL_TC_ENABLE | 1103 - COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1104 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1105 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 1106 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1107 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 1108 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1109 - COH901318_CX_CTRL_TCP_ENABLE | 1110 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 1111 - COH901318_CX_CTRL_HSP_ENABLE | 1112 - COH901318_CX_CTRL_HSS_DISABLE | 1113 - COH901318_CX_CTRL_DDMA_LEGACY | 1114 - COH901318_CX_CTRL_PRDD_DEST, 1115 - }, 1116 - { 1117 - .number = U300_DMA_PCM_I2S1_TX, 1118 - .name = "PCM I2S1 TX", 1119 - .priority_high = 1, 1120 - .dev_addr = U300_PCM_I2S1_BASE + 0x14, 1121 - .param.config = COH901318_CX_CFG_CH_DISABLE | 1122 - COH901318_CX_CFG_LCR_DISABLE | 1123 - COH901318_CX_CFG_TC_IRQ_ENABLE | 1124 - COH901318_CX_CFG_BE_IRQ_ENABLE, 1125 - .param.ctrl_lli_chained = 0 | 1126 - COH901318_CX_CTRL_TC_ENABLE | 1127 - COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1128 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1129 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 1130 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1131 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 1132 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1133 - COH901318_CX_CTRL_TCP_DISABLE | 1134 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 1135 - COH901318_CX_CTRL_HSP_ENABLE | 1136 - COH901318_CX_CTRL_HSS_DISABLE | 1137 - COH901318_CX_CTRL_DDMA_LEGACY | 1138 - COH901318_CX_CTRL_PRDD_SOURCE, 1139 - .param.ctrl_lli = 0 | 1140 - COH901318_CX_CTRL_TC_ENABLE | 1141 - COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1142 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1143 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 1144 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1145 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 1146 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1147 - COH901318_CX_CTRL_TCP_ENABLE | 1148 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 1149 - COH901318_CX_CTRL_HSP_ENABLE | 1150 - COH901318_CX_CTRL_HSS_DISABLE | 1151 - COH901318_CX_CTRL_DDMA_LEGACY | 1152 - COH901318_CX_CTRL_PRDD_SOURCE, 1153 - .param.ctrl_lli_last = 0 | 1154 - COH901318_CX_CTRL_TC_ENABLE | 1155 - COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1156 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1157 - COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 1158 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1159 - COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 1160 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1161 - COH901318_CX_CTRL_TCP_ENABLE | 1162 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 1163 - COH901318_CX_CTRL_HSP_ENABLE | 1164 - COH901318_CX_CTRL_HSS_DISABLE | 1165 - COH901318_CX_CTRL_DDMA_LEGACY | 1166 - COH901318_CX_CTRL_PRDD_SOURCE, 1167 - }, 1168 - { 1169 - .number = U300_DMA_PCM_I2S1_RX, 1170 - .name = "PCM I2S1 RX", 1171 - .priority_high = 1, 1172 - .dev_addr = U300_PCM_I2S1_BASE + 0x10, 1173 - .param.config = COH901318_CX_CFG_CH_DISABLE | 1174 - COH901318_CX_CFG_LCR_DISABLE | 1175 - COH901318_CX_CFG_TC_IRQ_ENABLE | 1176 - COH901318_CX_CFG_BE_IRQ_ENABLE, 1177 - .param.ctrl_lli_chained = 0 | 1178 - COH901318_CX_CTRL_TC_ENABLE | 1179 - COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1180 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1181 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 1182 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1183 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 1184 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1185 - COH901318_CX_CTRL_TCP_DISABLE | 1186 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 1187 - COH901318_CX_CTRL_HSP_ENABLE | 1188 - COH901318_CX_CTRL_HSS_DISABLE | 1189 - COH901318_CX_CTRL_DDMA_LEGACY | 1190 - COH901318_CX_CTRL_PRDD_DEST, 1191 - .param.ctrl_lli = 0 | 1192 - COH901318_CX_CTRL_TC_ENABLE | 1193 - COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1194 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1195 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 1196 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1197 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 1198 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1199 - COH901318_CX_CTRL_TCP_ENABLE | 1200 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 1201 - COH901318_CX_CTRL_HSP_ENABLE | 1202 - COH901318_CX_CTRL_HSS_DISABLE | 1203 - COH901318_CX_CTRL_DDMA_LEGACY | 1204 - COH901318_CX_CTRL_PRDD_DEST, 1205 - .param.ctrl_lli_last = 0 | 1206 - COH901318_CX_CTRL_TC_ENABLE | 1207 - COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1208 - COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1209 - COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 1210 - COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1211 - COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 1212 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1213 - COH901318_CX_CTRL_TCP_ENABLE | 1214 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 1215 - COH901318_CX_CTRL_HSP_ENABLE | 1216 - COH901318_CX_CTRL_HSS_DISABLE | 1217 - COH901318_CX_CTRL_DDMA_LEGACY | 1218 - COH901318_CX_CTRL_PRDD_DEST, 1219 - }, 1220 - { 1221 - .number = U300_DMA_XGAM_CDI, 1222 - .name = "XGAM CDI", 1223 - .priority_high = 0, 1224 - }, 1225 - { 1226 - .number = U300_DMA_XGAM_PDI, 1227 - .name = "XGAM PDI", 1228 - .priority_high = 0, 1229 - }, 1230 - /* 1231 - * Don't set up device address, burst count or size of src 1232 - * or dst bus for this peripheral - handled by PrimeCell 1233 - * DMA extension. 1234 - */ 1235 - { 1236 - .number = U300_DMA_SPI_TX, 1237 - .name = "SPI TX", 1238 - .priority_high = 0, 1239 - .param.config = COH901318_CX_CFG_CH_DISABLE | 1240 - COH901318_CX_CFG_LCR_DISABLE | 1241 - COH901318_CX_CFG_TC_IRQ_ENABLE | 1242 - COH901318_CX_CFG_BE_IRQ_ENABLE, 1243 - .param.ctrl_lli_chained = 0 | 1244 - COH901318_CX_CTRL_TC_ENABLE | 1245 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1246 - COH901318_CX_CTRL_TCP_DISABLE | 1247 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 1248 - COH901318_CX_CTRL_HSP_ENABLE | 1249 - COH901318_CX_CTRL_HSS_DISABLE | 1250 - COH901318_CX_CTRL_DDMA_LEGACY, 1251 - .param.ctrl_lli = 0 | 1252 - COH901318_CX_CTRL_TC_ENABLE | 1253 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1254 - COH901318_CX_CTRL_TCP_DISABLE | 1255 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 1256 - COH901318_CX_CTRL_HSP_ENABLE | 1257 - COH901318_CX_CTRL_HSS_DISABLE | 1258 - COH901318_CX_CTRL_DDMA_LEGACY, 1259 - .param.ctrl_lli_last = 0 | 1260 - COH901318_CX_CTRL_TC_ENABLE | 1261 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1262 - COH901318_CX_CTRL_TCP_DISABLE | 1263 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 1264 - COH901318_CX_CTRL_HSP_ENABLE | 1265 - COH901318_CX_CTRL_HSS_DISABLE | 1266 - COH901318_CX_CTRL_DDMA_LEGACY, 1267 - }, 1268 - { 1269 - .number = U300_DMA_SPI_RX, 1270 - .name = "SPI RX", 1271 - .priority_high = 0, 1272 - .param.config = COH901318_CX_CFG_CH_DISABLE | 1273 - COH901318_CX_CFG_LCR_DISABLE | 1274 - COH901318_CX_CFG_TC_IRQ_ENABLE | 1275 - COH901318_CX_CFG_BE_IRQ_ENABLE, 1276 - .param.ctrl_lli_chained = 0 | 1277 - COH901318_CX_CTRL_TC_ENABLE | 1278 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1279 - COH901318_CX_CTRL_TCP_DISABLE | 1280 - COH901318_CX_CTRL_TC_IRQ_DISABLE | 1281 - COH901318_CX_CTRL_HSP_ENABLE | 1282 - COH901318_CX_CTRL_HSS_DISABLE | 1283 - COH901318_CX_CTRL_DDMA_LEGACY, 1284 - .param.ctrl_lli = 0 | 1285 - COH901318_CX_CTRL_TC_ENABLE | 1286 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1287 - COH901318_CX_CTRL_TCP_DISABLE | 1288 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 1289 - COH901318_CX_CTRL_HSP_ENABLE | 1290 - COH901318_CX_CTRL_HSS_DISABLE | 1291 - COH901318_CX_CTRL_DDMA_LEGACY, 1292 - .param.ctrl_lli_last = 0 | 1293 - COH901318_CX_CTRL_TC_ENABLE | 1294 - COH901318_CX_CTRL_MASTER_MODE_M1RW | 1295 - COH901318_CX_CTRL_TCP_DISABLE | 1296 - COH901318_CX_CTRL_TC_IRQ_ENABLE | 1297 - COH901318_CX_CTRL_HSP_ENABLE | 1298 - COH901318_CX_CTRL_HSS_DISABLE | 1299 - COH901318_CX_CTRL_DDMA_LEGACY, 1300 - 1301 - }, 1302 - { 1303 - .number = U300_DMA_GENERAL_PURPOSE_0, 1304 - .name = "GENERAL 00", 1305 - .priority_high = 0, 1306 - 1307 - .param.config = flags_memcpy_config, 1308 - .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1309 - .param.ctrl_lli = flags_memcpy_lli, 1310 - .param.ctrl_lli_last = flags_memcpy_lli_last, 1311 - }, 1312 - { 1313 - .number = U300_DMA_GENERAL_PURPOSE_1, 1314 - .name = "GENERAL 01", 1315 - .priority_high = 0, 1316 - 1317 - .param.config = flags_memcpy_config, 1318 - .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1319 - .param.ctrl_lli = flags_memcpy_lli, 1320 - .param.ctrl_lli_last = flags_memcpy_lli_last, 1321 - }, 1322 - { 1323 - .number = U300_DMA_GENERAL_PURPOSE_2, 1324 - .name = "GENERAL 02", 1325 - .priority_high = 0, 1326 - 1327 - .param.config = flags_memcpy_config, 1328 - .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1329 - .param.ctrl_lli = flags_memcpy_lli, 1330 - .param.ctrl_lli_last = flags_memcpy_lli_last, 1331 - }, 1332 - { 1333 - .number = U300_DMA_GENERAL_PURPOSE_3, 1334 - .name = "GENERAL 03", 1335 - .priority_high = 0, 1336 - 1337 - .param.config = flags_memcpy_config, 1338 - .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1339 - .param.ctrl_lli = flags_memcpy_lli, 1340 - .param.ctrl_lli_last = flags_memcpy_lli_last, 1341 - }, 1342 - { 1343 - .number = U300_DMA_GENERAL_PURPOSE_4, 1344 - .name = "GENERAL 04", 1345 - .priority_high = 0, 1346 - 1347 - .param.config = flags_memcpy_config, 1348 - .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1349 - .param.ctrl_lli = flags_memcpy_lli, 1350 - .param.ctrl_lli_last = flags_memcpy_lli_last, 1351 - }, 1352 - { 1353 - .number = U300_DMA_GENERAL_PURPOSE_5, 1354 - .name = "GENERAL 05", 1355 - .priority_high = 0, 1356 - 1357 - .param.config = flags_memcpy_config, 1358 - .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1359 - .param.ctrl_lli = flags_memcpy_lli, 1360 - .param.ctrl_lli_last = flags_memcpy_lli_last, 1361 - }, 1362 - { 1363 - .number = U300_DMA_GENERAL_PURPOSE_6, 1364 - .name = "GENERAL 06", 1365 - .priority_high = 0, 1366 - 1367 - .param.config = flags_memcpy_config, 1368 - .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1369 - .param.ctrl_lli = flags_memcpy_lli, 1370 - .param.ctrl_lli_last = flags_memcpy_lli_last, 1371 - }, 1372 - { 1373 - .number = U300_DMA_GENERAL_PURPOSE_7, 1374 - .name = "GENERAL 07", 1375 - .priority_high = 0, 1376 - 1377 - .param.config = flags_memcpy_config, 1378 - .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1379 - .param.ctrl_lli = flags_memcpy_lli, 1380 - .param.ctrl_lli_last = flags_memcpy_lli_last, 1381 - }, 1382 - { 1383 - .number = U300_DMA_GENERAL_PURPOSE_8, 1384 - .name = "GENERAL 08", 1385 - .priority_high = 0, 1386 - 1387 - .param.config = flags_memcpy_config, 1388 - .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1389 - .param.ctrl_lli = flags_memcpy_lli, 1390 - .param.ctrl_lli_last = flags_memcpy_lli_last, 1391 - }, 1392 - { 1393 - .number = U300_DMA_UART1_TX, 1394 - .name = "UART1 TX", 1395 - .priority_high = 0, 1396 - }, 1397 - { 1398 - .number = U300_DMA_UART1_RX, 1399 - .name = "UART1 RX", 1400 - .priority_high = 0, 1401 - } 1402 - }; 1403 - 1404 - 1405 - static struct coh901318_platform coh901318_platform = { 1406 - .chans_slave = dma_slave_channels, 1407 - .chans_memcpy = dma_memcpy_channels, 1408 - .access_memory_state = coh901318_access_memory_state, 1409 - .chan_conf = chan_config, 1410 - .max_channels = U300_DMA_CHANNELS, 1411 - }; 1412 330 1413 331 static struct resource pinctrl_resources[] = { 1414 332 { ··· 437 1521 .resource = dma_resource, 438 1522 .num_resources = ARRAY_SIZE(dma_resource), 439 1523 .dev = { 440 - .platform_data = &coh901318_platform, 441 1524 .coherent_dma_mask = ~0, 442 1525 }, 443 1526 };
-60
arch/arm/mach-u300/dma_channels.h
··· 1 - /* 2 - * 3 - * arch/arm/mach-u300/include/mach/dma_channels.h 4 - * 5 - * 6 - * Copyright (C) 2007-2012 ST-Ericsson 7 - * License terms: GNU General Public License (GPL) version 2 8 - * Map file for the U300 dma driver. 9 - * Author: Per Friden <per.friden@stericsson.com> 10 - */ 11 - 12 - #ifndef DMA_CHANNELS_H 13 - #define DMA_CHANNELS_H 14 - 15 - #define U300_DMA_MSL_TX_0 0 16 - #define U300_DMA_MSL_TX_1 1 17 - #define U300_DMA_MSL_TX_2 2 18 - #define U300_DMA_MSL_TX_3 3 19 - #define U300_DMA_MSL_TX_4 4 20 - #define U300_DMA_MSL_TX_5 5 21 - #define U300_DMA_MSL_TX_6 6 22 - #define U300_DMA_MSL_RX_0 7 23 - #define U300_DMA_MSL_RX_1 8 24 - #define U300_DMA_MSL_RX_2 9 25 - #define U300_DMA_MSL_RX_3 10 26 - #define U300_DMA_MSL_RX_4 11 27 - #define U300_DMA_MSL_RX_5 12 28 - #define U300_DMA_MSL_RX_6 13 29 - #define U300_DMA_MMCSD_RX_TX 14 30 - #define U300_DMA_MSPRO_TX 15 31 - #define U300_DMA_MSPRO_RX 16 32 - #define U300_DMA_UART0_TX 17 33 - #define U300_DMA_UART0_RX 18 34 - #define U300_DMA_APEX_TX 19 35 - #define U300_DMA_APEX_RX 20 36 - #define U300_DMA_PCM_I2S0_TX 21 37 - #define U300_DMA_PCM_I2S0_RX 22 38 - #define U300_DMA_PCM_I2S1_TX 23 39 - #define U300_DMA_PCM_I2S1_RX 24 40 - #define U300_DMA_XGAM_CDI 25 41 - #define U300_DMA_XGAM_PDI 26 42 - #define U300_DMA_SPI_TX 27 43 - #define U300_DMA_SPI_RX 28 44 - #define U300_DMA_GENERAL_PURPOSE_0 29 45 - #define U300_DMA_GENERAL_PURPOSE_1 30 46 - #define U300_DMA_GENERAL_PURPOSE_2 31 47 - #define U300_DMA_GENERAL_PURPOSE_3 32 48 - #define U300_DMA_GENERAL_PURPOSE_4 33 49 - #define U300_DMA_GENERAL_PURPOSE_5 34 50 - #define U300_DMA_GENERAL_PURPOSE_6 35 51 - #define U300_DMA_GENERAL_PURPOSE_7 36 52 - #define U300_DMA_GENERAL_PURPOSE_8 37 53 - #define U300_DMA_UART1_TX 38 54 - #define U300_DMA_UART1_RX 39 55 - 56 - #define U300_DMA_DEVICE_CHANNELS 32 57 - #define U300_DMA_CHANNELS 40 58 - 59 - 60 - #endif /* DMA_CHANNELS_H */
-267
arch/arm/mach-u300/include/mach/coh901318.h
··· 1 - /* 2 - * 3 - * include/linux/coh901318.h 4 - * 5 - * 6 - * Copyright (C) 2007-2009 ST-Ericsson 7 - * License terms: GNU General Public License (GPL) version 2 8 - * DMA driver for COH 901 318 9 - * Author: Per Friden <per.friden@stericsson.com> 10 - */ 11 - 12 - #ifndef COH901318_H 13 - #define COH901318_H 14 - 15 - #include <linux/device.h> 16 - #include <linux/dmaengine.h> 17 - 18 - #define MAX_DMA_PACKET_SIZE_SHIFT 11 19 - #define MAX_DMA_PACKET_SIZE (1 << MAX_DMA_PACKET_SIZE_SHIFT) 20 - 21 - /** 22 - * struct coh901318_lli - linked list item for DMAC 23 - * @control: control settings for DMAC 24 - * @src_addr: transfer source address 25 - * @dst_addr: transfer destination address 26 - * @link_addr: physical address to next lli 27 - * @virt_link_addr: virtual address of next lli (only used by pool_free) 28 - * @phy_this: physical address of current lli (only used by pool_free) 29 - */ 30 - struct coh901318_lli { 31 - u32 control; 32 - dma_addr_t src_addr; 33 - dma_addr_t dst_addr; 34 - dma_addr_t link_addr; 35 - 36 - void *virt_link_addr; 37 - dma_addr_t phy_this; 38 - }; 39 - /** 40 - * struct coh901318_params - parameters for DMAC configuration 41 - * @config: DMA config register 42 - * @ctrl_lli_last: DMA control register for the last lli in the list 43 - * @ctrl_lli: DMA control register for an lli 44 - * @ctrl_lli_chained: DMA control register for a chained lli 45 - */ 46 - struct coh901318_params { 47 - u32 config; 48 - u32 ctrl_lli_last; 49 - u32 ctrl_lli; 50 - u32 ctrl_lli_chained; 51 - }; 52 - /** 53 - * struct coh_dma_channel - dma channel base 54 - * @name: ascii name of dma channel 55 - * @number: channel id number 56 - * @desc_nbr_max: number of preallocated descriptors 57 - * @priority_high: prio of channel, 0 low otherwise high. 58 - * @param: configuration parameters 59 - * @dev_addr: physical address of periphal connected to channel 60 - */ 61 - struct coh_dma_channel { 62 - const char name[32]; 63 - const int number; 64 - const int desc_nbr_max; 65 - const int priority_high; 66 - const struct coh901318_params param; 67 - const dma_addr_t dev_addr; 68 - }; 69 - 70 - /** 71 - * dma_access_memory_state_t - register dma for memory access 72 - * 73 - * @dev: The dma device 74 - * @active: 1 means dma intends to access memory 75 - * 0 means dma wont access memory 76 - */ 77 - typedef void (*dma_access_memory_state_t)(struct device *dev, 78 - bool active); 79 - 80 - /** 81 - * struct powersave - DMA power save structure 82 - * @lock: lock protecting data in this struct 83 - * @started_channels: bit mask indicating active dma channels 84 - */ 85 - struct powersave { 86 - spinlock_t lock; 87 - u64 started_channels; 88 - }; 89 - /** 90 - * struct coh901318_platform - platform arch structure 91 - * @chans_slave: specifying dma slave channels 92 - * @chans_memcpy: specifying dma memcpy channels 93 - * @access_memory_state: requesting DMA memory access (on / off) 94 - * @chan_conf: dma channel configurations 95 - * @max_channels: max number of dma chanenls 96 - */ 97 - struct coh901318_platform { 98 - const int *chans_slave; 99 - const int *chans_memcpy; 100 - const dma_access_memory_state_t access_memory_state; 101 - const struct coh_dma_channel *chan_conf; 102 - const int max_channels; 103 - }; 104 - 105 - #ifdef CONFIG_COH901318 106 - /** 107 - * coh901318_filter_id() - DMA channel filter function 108 - * @chan: dma channel handle 109 - * @chan_id: id of dma channel to be filter out 110 - * 111 - * In dma_request_channel() it specifies what channel id to be requested 112 - */ 113 - bool coh901318_filter_id(struct dma_chan *chan, void *chan_id); 114 - #else 115 - static inline bool coh901318_filter_id(struct dma_chan *chan, void *chan_id) 116 - { 117 - return false; 118 - } 119 - #endif 120 - 121 - /* 122 - * DMA Controller - this access the static mappings of the coh901318 dma. 123 - * 124 - */ 125 - 126 - #define COH901318_MOD32_MASK (0x1F) 127 - #define COH901318_WORD_MASK (0xFFFFFFFF) 128 - /* INT_STATUS - Interrupt Status Registers 32bit (R/-) */ 129 - #define COH901318_INT_STATUS1 (0x0000) 130 - #define COH901318_INT_STATUS2 (0x0004) 131 - /* TC_INT_STATUS - Terminal Count Interrupt Status Registers 32bit (R/-) */ 132 - #define COH901318_TC_INT_STATUS1 (0x0008) 133 - #define COH901318_TC_INT_STATUS2 (0x000C) 134 - /* TC_INT_CLEAR - Terminal Count Interrupt Clear Registers 32bit (-/W) */ 135 - #define COH901318_TC_INT_CLEAR1 (0x0010) 136 - #define COH901318_TC_INT_CLEAR2 (0x0014) 137 - /* RAW_TC_INT_STATUS - Raw Term Count Interrupt Status Registers 32bit (R/-) */ 138 - #define COH901318_RAW_TC_INT_STATUS1 (0x0018) 139 - #define COH901318_RAW_TC_INT_STATUS2 (0x001C) 140 - /* BE_INT_STATUS - Bus Error Interrupt Status Registers 32bit (R/-) */ 141 - #define COH901318_BE_INT_STATUS1 (0x0020) 142 - #define COH901318_BE_INT_STATUS2 (0x0024) 143 - /* BE_INT_CLEAR - Bus Error Interrupt Clear Registers 32bit (-/W) */ 144 - #define COH901318_BE_INT_CLEAR1 (0x0028) 145 - #define COH901318_BE_INT_CLEAR2 (0x002C) 146 - /* RAW_BE_INT_STATUS - Raw Term Count Interrupt Status Registers 32bit (R/-) */ 147 - #define COH901318_RAW_BE_INT_STATUS1 (0x0030) 148 - #define COH901318_RAW_BE_INT_STATUS2 (0x0034) 149 - 150 - /* 151 - * CX_CFG - Channel Configuration Registers 32bit (R/W) 152 - */ 153 - #define COH901318_CX_CFG (0x0100) 154 - #define COH901318_CX_CFG_SPACING (0x04) 155 - /* Channel enable activates tha dma job */ 156 - #define COH901318_CX_CFG_CH_ENABLE (0x00000001) 157 - #define COH901318_CX_CFG_CH_DISABLE (0x00000000) 158 - /* Request Mode */ 159 - #define COH901318_CX_CFG_RM_MASK (0x00000006) 160 - #define COH901318_CX_CFG_RM_MEMORY_TO_MEMORY (0x0 << 1) 161 - #define COH901318_CX_CFG_RM_PRIMARY_TO_MEMORY (0x1 << 1) 162 - #define COH901318_CX_CFG_RM_MEMORY_TO_PRIMARY (0x1 << 1) 163 - #define COH901318_CX_CFG_RM_PRIMARY_TO_SECONDARY (0x3 << 1) 164 - #define COH901318_CX_CFG_RM_SECONDARY_TO_PRIMARY (0x3 << 1) 165 - /* Linked channel request field. RM must == 11 */ 166 - #define COH901318_CX_CFG_LCRF_SHIFT 3 167 - #define COH901318_CX_CFG_LCRF_MASK (0x000001F8) 168 - #define COH901318_CX_CFG_LCR_DISABLE (0x00000000) 169 - /* Terminal Counter Interrupt Request Mask */ 170 - #define COH901318_CX_CFG_TC_IRQ_ENABLE (0x00000200) 171 - #define COH901318_CX_CFG_TC_IRQ_DISABLE (0x00000000) 172 - /* Bus Error interrupt Mask */ 173 - #define COH901318_CX_CFG_BE_IRQ_ENABLE (0x00000400) 174 - #define COH901318_CX_CFG_BE_IRQ_DISABLE (0x00000000) 175 - 176 - /* 177 - * CX_STAT - Channel Status Registers 32bit (R/-) 178 - */ 179 - #define COH901318_CX_STAT (0x0200) 180 - #define COH901318_CX_STAT_SPACING (0x04) 181 - #define COH901318_CX_STAT_RBE_IRQ_IND (0x00000008) 182 - #define COH901318_CX_STAT_RTC_IRQ_IND (0x00000004) 183 - #define COH901318_CX_STAT_ACTIVE (0x00000002) 184 - #define COH901318_CX_STAT_ENABLED (0x00000001) 185 - 186 - /* 187 - * CX_CTRL - Channel Control Registers 32bit (R/W) 188 - */ 189 - #define COH901318_CX_CTRL (0x0400) 190 - #define COH901318_CX_CTRL_SPACING (0x10) 191 - /* Transfer Count Enable */ 192 - #define COH901318_CX_CTRL_TC_ENABLE (0x00001000) 193 - #define COH901318_CX_CTRL_TC_DISABLE (0x00000000) 194 - /* Transfer Count Value 0 - 4095 */ 195 - #define COH901318_CX_CTRL_TC_VALUE_MASK (0x00000FFF) 196 - /* Burst count */ 197 - #define COH901318_CX_CTRL_BURST_COUNT_MASK (0x0000E000) 198 - #define COH901318_CX_CTRL_BURST_COUNT_64_BYTES (0x7 << 13) 199 - #define COH901318_CX_CTRL_BURST_COUNT_48_BYTES (0x6 << 13) 200 - #define COH901318_CX_CTRL_BURST_COUNT_32_BYTES (0x5 << 13) 201 - #define COH901318_CX_CTRL_BURST_COUNT_16_BYTES (0x4 << 13) 202 - #define COH901318_CX_CTRL_BURST_COUNT_8_BYTES (0x3 << 13) 203 - #define COH901318_CX_CTRL_BURST_COUNT_4_BYTES (0x2 << 13) 204 - #define COH901318_CX_CTRL_BURST_COUNT_2_BYTES (0x1 << 13) 205 - #define COH901318_CX_CTRL_BURST_COUNT_1_BYTE (0x0 << 13) 206 - /* Source bus size */ 207 - #define COH901318_CX_CTRL_SRC_BUS_SIZE_MASK (0x00030000) 208 - #define COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS (0x2 << 16) 209 - #define COH901318_CX_CTRL_SRC_BUS_SIZE_16_BITS (0x1 << 16) 210 - #define COH901318_CX_CTRL_SRC_BUS_SIZE_8_BITS (0x0 << 16) 211 - /* Source address increment */ 212 - #define COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE (0x00040000) 213 - #define COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE (0x00000000) 214 - /* Destination Bus Size */ 215 - #define COH901318_CX_CTRL_DST_BUS_SIZE_MASK (0x00180000) 216 - #define COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS (0x2 << 19) 217 - #define COH901318_CX_CTRL_DST_BUS_SIZE_16_BITS (0x1 << 19) 218 - #define COH901318_CX_CTRL_DST_BUS_SIZE_8_BITS (0x0 << 19) 219 - /* Destination address increment */ 220 - #define COH901318_CX_CTRL_DST_ADDR_INC_ENABLE (0x00200000) 221 - #define COH901318_CX_CTRL_DST_ADDR_INC_DISABLE (0x00000000) 222 - /* Master Mode (Master2 is only connected to MSL) */ 223 - #define COH901318_CX_CTRL_MASTER_MODE_MASK (0x00C00000) 224 - #define COH901318_CX_CTRL_MASTER_MODE_M2R_M1W (0x3 << 22) 225 - #define COH901318_CX_CTRL_MASTER_MODE_M1R_M2W (0x2 << 22) 226 - #define COH901318_CX_CTRL_MASTER_MODE_M2RW (0x1 << 22) 227 - #define COH901318_CX_CTRL_MASTER_MODE_M1RW (0x0 << 22) 228 - /* Terminal Count flag to PER enable */ 229 - #define COH901318_CX_CTRL_TCP_ENABLE (0x01000000) 230 - #define COH901318_CX_CTRL_TCP_DISABLE (0x00000000) 231 - /* Terminal Count flags to CPU enable */ 232 - #define COH901318_CX_CTRL_TC_IRQ_ENABLE (0x02000000) 233 - #define COH901318_CX_CTRL_TC_IRQ_DISABLE (0x00000000) 234 - /* Hand shake to peripheral */ 235 - #define COH901318_CX_CTRL_HSP_ENABLE (0x04000000) 236 - #define COH901318_CX_CTRL_HSP_DISABLE (0x00000000) 237 - #define COH901318_CX_CTRL_HSS_ENABLE (0x08000000) 238 - #define COH901318_CX_CTRL_HSS_DISABLE (0x00000000) 239 - /* DMA mode */ 240 - #define COH901318_CX_CTRL_DDMA_MASK (0x30000000) 241 - #define COH901318_CX_CTRL_DDMA_LEGACY (0x0 << 28) 242 - #define COH901318_CX_CTRL_DDMA_DEMAND_DMA1 (0x1 << 28) 243 - #define COH901318_CX_CTRL_DDMA_DEMAND_DMA2 (0x2 << 28) 244 - /* Primary Request Data Destination */ 245 - #define COH901318_CX_CTRL_PRDD_MASK (0x40000000) 246 - #define COH901318_CX_CTRL_PRDD_DEST (0x1 << 30) 247 - #define COH901318_CX_CTRL_PRDD_SOURCE (0x0 << 30) 248 - 249 - /* 250 - * CX_SRC_ADDR - Channel Source Address Registers 32bit (R/W) 251 - */ 252 - #define COH901318_CX_SRC_ADDR (0x0404) 253 - #define COH901318_CX_SRC_ADDR_SPACING (0x10) 254 - 255 - /* 256 - * CX_DST_ADDR - Channel Destination Address Registers 32bit R/W 257 - */ 258 - #define COH901318_CX_DST_ADDR (0x0408) 259 - #define COH901318_CX_DST_ADDR_SPACING (0x10) 260 - 261 - /* 262 - * CX_LNK_ADDR - Channel Link Address Registers 32bit (R/W) 263 - */ 264 - #define COH901318_CX_LNK_ADDR (0x040C) 265 - #define COH901318_CX_LNK_ADDR_SPACING (0x10) 266 - #define COH901318_CX_LNK_LINK_IMMEDIATE (0x00000001) 267 - #endif /* COH901318_H */
+1 -2
arch/arm/mach-u300/spi.c
··· 10 10 #include <linux/amba/bus.h> 11 11 #include <linux/spi/spi.h> 12 12 #include <linux/amba/pl022.h> 13 + #include <linux/platform_data/dma-coh901318.h> 13 14 #include <linux/err.h> 14 - #include <mach/coh901318.h> 15 - #include "dma_channels.h" 16 15 17 16 /* 18 17 * The following is for the actual devices on the SSP/SPI bus
+1 -1
arch/arm/plat-spear/restart.c
··· 11 11 * warranty of any kind, whether express or implied. 12 12 */ 13 13 #include <linux/io.h> 14 + #include <linux/amba/sp810.h> 14 15 #include <asm/system_misc.h> 15 - #include <asm/hardware/sp810.h> 16 16 #include <mach/spear.h> 17 17 #include <mach/generic.h> 18 18
+1 -2
drivers/clk/versatile/clk-vexpress.c
··· 11 11 * Copyright (C) 2012 ARM Limited 12 12 */ 13 13 14 + #include <linux/amba/sp810.h> 14 15 #include <linux/clkdev.h> 15 16 #include <linux/clk-provider.h> 16 17 #include <linux/err.h> 17 18 #include <linux/of.h> 18 19 #include <linux/of_address.h> 19 20 #include <linux/vexpress.h> 20 - 21 - #include <asm/hardware/sp810.h> 22 21 23 22 static struct clk *vexpress_sp810_timerclken[4]; 24 23 static DEFINE_SPINLOCK(vexpress_sp810_lock);
+11
drivers/clocksource/nomadik-mtu.c
··· 15 15 #include <linux/clocksource.h> 16 16 #include <linux/clk.h> 17 17 #include <linux/jiffies.h> 18 + #include <linux/delay.h> 18 19 #include <linux/err.h> 19 20 #include <linux/platform_data/clocksource-nomadik-mtu.h> 20 21 #include <asm/mach/time.h> ··· 65 64 static bool clkevt_periodic; 66 65 static u32 clk_prescale; 67 66 static u32 nmdk_cycle; /* write-once */ 67 + static struct delay_timer mtu_delay_timer; 68 68 69 69 #ifdef CONFIG_NOMADIK_MTU_SCHED_CLOCK 70 70 /* ··· 81 79 return -readl(mtu_base + MTU_VAL(0)); 82 80 } 83 81 #endif 82 + 83 + static unsigned long nmdk_timer_read_current_timer(void) 84 + { 85 + return ~readl_relaxed(mtu_base + MTU_VAL(0)); 86 + } 84 87 85 88 /* Clockevent device: use one-shot mode */ 86 89 static int nmdk_clkevt_next(unsigned long evt, struct clock_event_device *ev) ··· 241 234 setup_irq(irq, &nmdk_timer_irq); 242 235 nmdk_clkevt.cpumask = cpumask_of(0); 243 236 clockevents_config_and_register(&nmdk_clkevt, rate, 2, 0xffffffffU); 237 + 238 + mtu_delay_timer.read_current_timer = &nmdk_timer_read_current_timer; 239 + mtu_delay_timer.freq = rate; 240 + register_current_timer_delay(&mtu_delay_timer); 244 241 }
+1 -1
drivers/cpufreq/Makefile
··· 44 44 45 45 ################################################################################## 46 46 # ARM SoC drivers 47 - obj-$(CONFIG_UX500_SOC_DB8500) += db8500-cpufreq.o 47 + obj-$(CONFIG_UX500_SOC_DB8500) += dbx500-cpufreq.o 48 48 obj-$(CONFIG_ARM_S3C2416_CPUFREQ) += s3c2416-cpufreq.o 49 49 obj-$(CONFIG_ARM_S3C64XX_CPUFREQ) += s3c64xx-cpufreq.o 50 50 obj-$(CONFIG_ARM_S5PV210_CPUFREQ) += s5pv210-cpufreq.o
+51 -50
drivers/cpufreq/db8500-cpufreq.c drivers/cpufreq/dbx500-cpufreq.c
··· 1 1 /* 2 2 * Copyright (C) STMicroelectronics 2009 3 - * Copyright (C) ST-Ericsson SA 2010 3 + * Copyright (C) ST-Ericsson SA 2010-2012 4 4 * 5 5 * License Terms: GNU General Public License v2 6 6 * Author: Sundar Iyer <sundar.iyer@stericsson.com> 7 7 * Author: Martin Persson <martin.persson@stericsson.com> 8 8 * Author: Jonas Aaberg <jonas.aberg@stericsson.com> 9 - * 10 9 */ 10 + 11 11 #include <linux/module.h> 12 12 #include <linux/kernel.h> 13 13 #include <linux/cpufreq.h> ··· 19 19 static struct cpufreq_frequency_table *freq_table; 20 20 static struct clk *armss_clk; 21 21 22 - static struct freq_attr *db8500_cpufreq_attr[] = { 22 + static struct freq_attr *dbx500_cpufreq_attr[] = { 23 23 &cpufreq_freq_attr_scaling_available_freqs, 24 24 NULL, 25 25 }; 26 26 27 - static int db8500_cpufreq_verify_speed(struct cpufreq_policy *policy) 27 + static int dbx500_cpufreq_verify_speed(struct cpufreq_policy *policy) 28 28 { 29 29 return cpufreq_frequency_table_verify(policy, freq_table); 30 30 } 31 31 32 - static int db8500_cpufreq_target(struct cpufreq_policy *policy, 32 + static int dbx500_cpufreq_target(struct cpufreq_policy *policy, 33 33 unsigned int target_freq, 34 34 unsigned int relation) 35 35 { 36 36 struct cpufreq_freqs freqs; 37 37 unsigned int idx; 38 + int ret; 38 39 39 40 /* scale the target frequency to one of the extremes supported */ 40 41 if (target_freq < policy->cpuinfo.min_freq) ··· 44 43 target_freq = policy->cpuinfo.max_freq; 45 44 46 45 /* Lookup the next frequency */ 47 - if (cpufreq_frequency_table_target 48 - (policy, freq_table, target_freq, relation, &idx)) { 46 + if (cpufreq_frequency_table_target(policy, freq_table, target_freq, 47 + relation, &idx)) 49 48 return -EINVAL; 50 - } 51 49 52 50 freqs.old = policy->cur; 53 51 freqs.new = freq_table[idx].frequency; ··· 59 59 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); 60 60 61 61 /* update armss clk frequency */ 62 - if (clk_set_rate(armss_clk, freq_table[idx].frequency * 1000)) { 63 - pr_err("db8500-cpufreq: Failed to update armss clk\n"); 64 - return -EINVAL; 62 + ret = clk_set_rate(armss_clk, freqs.new * 1000); 63 + 64 + if (ret) { 65 + pr_err("dbx500-cpufreq: Failed to set armss_clk to %d Hz: error %d\n", 66 + freqs.new * 1000, ret); 67 + return ret; 65 68 } 66 69 67 70 /* post change notification */ ··· 74 71 return 0; 75 72 } 76 73 77 - static unsigned int db8500_cpufreq_getspeed(unsigned int cpu) 74 + static unsigned int dbx500_cpufreq_getspeed(unsigned int cpu) 78 75 { 79 76 int i = 0; 80 77 unsigned long freq = clk_get_rate(armss_clk) / 1000; ··· 86 83 } 87 84 88 85 /* We could not find a corresponding frequency. */ 89 - pr_err("db8500-cpufreq: Failed to find cpufreq speed\n"); 86 + pr_err("dbx500-cpufreq: Failed to find cpufreq speed\n"); 90 87 return 0; 91 88 } 92 89 93 - static int __cpuinit db8500_cpufreq_init(struct cpufreq_policy *policy) 90 + static int __cpuinit dbx500_cpufreq_init(struct cpufreq_policy *policy) 94 91 { 95 - int i = 0; 96 92 int res; 97 - 98 - armss_clk = clk_get(NULL, "armss"); 99 - if (IS_ERR(armss_clk)) { 100 - pr_err("db8500-cpufreq : Failed to get armss clk\n"); 101 - return PTR_ERR(armss_clk); 102 - } 103 - 104 - pr_info("db8500-cpufreq : Available frequencies:\n"); 105 - while (freq_table[i].frequency != CPUFREQ_TABLE_END) { 106 - pr_info(" %d Mhz\n", freq_table[i].frequency/1000); 107 - i++; 108 - } 109 93 110 94 /* get policy fields based on the table */ 111 95 res = cpufreq_frequency_table_cpuinfo(policy, freq_table); 112 96 if (!res) 113 97 cpufreq_frequency_table_get_attr(freq_table, policy->cpu); 114 98 else { 115 - pr_err("db8500-cpufreq : Failed to read policy table\n"); 116 - clk_put(armss_clk); 99 + pr_err("dbx500-cpufreq: Failed to read policy table\n"); 117 100 return res; 118 101 } 119 102 120 103 policy->min = policy->cpuinfo.min_freq; 121 104 policy->max = policy->cpuinfo.max_freq; 122 - policy->cur = db8500_cpufreq_getspeed(policy->cpu); 105 + policy->cur = dbx500_cpufreq_getspeed(policy->cpu); 123 106 policy->governor = CPUFREQ_DEFAULT_GOVERNOR; 124 107 125 108 /* ··· 121 132 return 0; 122 133 } 123 134 124 - static struct cpufreq_driver db8500_cpufreq_driver = { 125 - .flags = CPUFREQ_STICKY, 126 - .verify = db8500_cpufreq_verify_speed, 127 - .target = db8500_cpufreq_target, 128 - .get = db8500_cpufreq_getspeed, 129 - .init = db8500_cpufreq_init, 130 - .name = "DB8500", 131 - .attr = db8500_cpufreq_attr, 135 + static struct cpufreq_driver dbx500_cpufreq_driver = { 136 + .flags = CPUFREQ_STICKY | CPUFREQ_CONST_LOOPS, 137 + .verify = dbx500_cpufreq_verify_speed, 138 + .target = dbx500_cpufreq_target, 139 + .get = dbx500_cpufreq_getspeed, 140 + .init = dbx500_cpufreq_init, 141 + .name = "DBX500", 142 + .attr = dbx500_cpufreq_attr, 132 143 }; 133 144 134 - static int db8500_cpufreq_probe(struct platform_device *pdev) 145 + static int dbx500_cpufreq_probe(struct platform_device *pdev) 135 146 { 136 - freq_table = dev_get_platdata(&pdev->dev); 147 + int i = 0; 137 148 149 + freq_table = dev_get_platdata(&pdev->dev); 138 150 if (!freq_table) { 139 - pr_err("db8500-cpufreq: Failed to fetch cpufreq table\n"); 151 + pr_err("dbx500-cpufreq: Failed to fetch cpufreq table\n"); 140 152 return -ENODEV; 141 153 } 142 154 143 - return cpufreq_register_driver(&db8500_cpufreq_driver); 155 + armss_clk = clk_get(&pdev->dev, "armss"); 156 + if (IS_ERR(armss_clk)) { 157 + pr_err("dbx500-cpufreq: Failed to get armss clk\n"); 158 + return PTR_ERR(armss_clk); 159 + } 160 + 161 + pr_info("dbx500-cpufreq: Available frequencies:\n"); 162 + while (freq_table[i].frequency != CPUFREQ_TABLE_END) { 163 + pr_info(" %d Mhz\n", freq_table[i].frequency/1000); 164 + i++; 165 + } 166 + 167 + return cpufreq_register_driver(&dbx500_cpufreq_driver); 144 168 } 145 169 146 - static struct platform_driver db8500_cpufreq_plat_driver = { 170 + static struct platform_driver dbx500_cpufreq_plat_driver = { 147 171 .driver = { 148 - .name = "cpufreq-u8500", 172 + .name = "cpufreq-ux500", 149 173 .owner = THIS_MODULE, 150 174 }, 151 - .probe = db8500_cpufreq_probe, 175 + .probe = dbx500_cpufreq_probe, 152 176 }; 153 177 154 - static int __init db8500_cpufreq_register(void) 178 + static int __init dbx500_cpufreq_register(void) 155 179 { 156 - pr_info("cpufreq for DB8500 started\n"); 157 - return platform_driver_register(&db8500_cpufreq_plat_driver); 180 + return platform_driver_register(&dbx500_cpufreq_plat_driver); 158 181 } 159 - device_initcall(db8500_cpufreq_register); 182 + device_initcall(dbx500_cpufreq_register); 160 183 161 184 MODULE_LICENSE("GPL v2"); 162 - MODULE_DESCRIPTION("cpufreq driver for DB8500"); 185 + MODULE_DESCRIPTION("cpufreq driver for DBX500");
+1252 -50
drivers/dma/coh901318.c
··· 21 21 #include <linux/io.h> 22 22 #include <linux/uaccess.h> 23 23 #include <linux/debugfs.h> 24 - #include <mach/coh901318.h> 24 + #include <linux/platform_data/dma-coh901318.h> 25 25 26 - #include "coh901318_lli.h" 26 + #include "coh901318.h" 27 27 #include "dmaengine.h" 28 + 29 + #define COH901318_MOD32_MASK (0x1F) 30 + #define COH901318_WORD_MASK (0xFFFFFFFF) 31 + /* INT_STATUS - Interrupt Status Registers 32bit (R/-) */ 32 + #define COH901318_INT_STATUS1 (0x0000) 33 + #define COH901318_INT_STATUS2 (0x0004) 34 + /* TC_INT_STATUS - Terminal Count Interrupt Status Registers 32bit (R/-) */ 35 + #define COH901318_TC_INT_STATUS1 (0x0008) 36 + #define COH901318_TC_INT_STATUS2 (0x000C) 37 + /* TC_INT_CLEAR - Terminal Count Interrupt Clear Registers 32bit (-/W) */ 38 + #define COH901318_TC_INT_CLEAR1 (0x0010) 39 + #define COH901318_TC_INT_CLEAR2 (0x0014) 40 + /* RAW_TC_INT_STATUS - Raw Term Count Interrupt Status Registers 32bit (R/-) */ 41 + #define COH901318_RAW_TC_INT_STATUS1 (0x0018) 42 + #define COH901318_RAW_TC_INT_STATUS2 (0x001C) 43 + /* BE_INT_STATUS - Bus Error Interrupt Status Registers 32bit (R/-) */ 44 + #define COH901318_BE_INT_STATUS1 (0x0020) 45 + #define COH901318_BE_INT_STATUS2 (0x0024) 46 + /* BE_INT_CLEAR - Bus Error Interrupt Clear Registers 32bit (-/W) */ 47 + #define COH901318_BE_INT_CLEAR1 (0x0028) 48 + #define COH901318_BE_INT_CLEAR2 (0x002C) 49 + /* RAW_BE_INT_STATUS - Raw Term Count Interrupt Status Registers 32bit (R/-) */ 50 + #define COH901318_RAW_BE_INT_STATUS1 (0x0030) 51 + #define COH901318_RAW_BE_INT_STATUS2 (0x0034) 52 + 53 + /* 54 + * CX_CFG - Channel Configuration Registers 32bit (R/W) 55 + */ 56 + #define COH901318_CX_CFG (0x0100) 57 + #define COH901318_CX_CFG_SPACING (0x04) 58 + /* Channel enable activates tha dma job */ 59 + #define COH901318_CX_CFG_CH_ENABLE (0x00000001) 60 + #define COH901318_CX_CFG_CH_DISABLE (0x00000000) 61 + /* Request Mode */ 62 + #define COH901318_CX_CFG_RM_MASK (0x00000006) 63 + #define COH901318_CX_CFG_RM_MEMORY_TO_MEMORY (0x0 << 1) 64 + #define COH901318_CX_CFG_RM_PRIMARY_TO_MEMORY (0x1 << 1) 65 + #define COH901318_CX_CFG_RM_MEMORY_TO_PRIMARY (0x1 << 1) 66 + #define COH901318_CX_CFG_RM_PRIMARY_TO_SECONDARY (0x3 << 1) 67 + #define COH901318_CX_CFG_RM_SECONDARY_TO_PRIMARY (0x3 << 1) 68 + /* Linked channel request field. RM must == 11 */ 69 + #define COH901318_CX_CFG_LCRF_SHIFT 3 70 + #define COH901318_CX_CFG_LCRF_MASK (0x000001F8) 71 + #define COH901318_CX_CFG_LCR_DISABLE (0x00000000) 72 + /* Terminal Counter Interrupt Request Mask */ 73 + #define COH901318_CX_CFG_TC_IRQ_ENABLE (0x00000200) 74 + #define COH901318_CX_CFG_TC_IRQ_DISABLE (0x00000000) 75 + /* Bus Error interrupt Mask */ 76 + #define COH901318_CX_CFG_BE_IRQ_ENABLE (0x00000400) 77 + #define COH901318_CX_CFG_BE_IRQ_DISABLE (0x00000000) 78 + 79 + /* 80 + * CX_STAT - Channel Status Registers 32bit (R/-) 81 + */ 82 + #define COH901318_CX_STAT (0x0200) 83 + #define COH901318_CX_STAT_SPACING (0x04) 84 + #define COH901318_CX_STAT_RBE_IRQ_IND (0x00000008) 85 + #define COH901318_CX_STAT_RTC_IRQ_IND (0x00000004) 86 + #define COH901318_CX_STAT_ACTIVE (0x00000002) 87 + #define COH901318_CX_STAT_ENABLED (0x00000001) 88 + 89 + /* 90 + * CX_CTRL - Channel Control Registers 32bit (R/W) 91 + */ 92 + #define COH901318_CX_CTRL (0x0400) 93 + #define COH901318_CX_CTRL_SPACING (0x10) 94 + /* Transfer Count Enable */ 95 + #define COH901318_CX_CTRL_TC_ENABLE (0x00001000) 96 + #define COH901318_CX_CTRL_TC_DISABLE (0x00000000) 97 + /* Transfer Count Value 0 - 4095 */ 98 + #define COH901318_CX_CTRL_TC_VALUE_MASK (0x00000FFF) 99 + /* Burst count */ 100 + #define COH901318_CX_CTRL_BURST_COUNT_MASK (0x0000E000) 101 + #define COH901318_CX_CTRL_BURST_COUNT_64_BYTES (0x7 << 13) 102 + #define COH901318_CX_CTRL_BURST_COUNT_48_BYTES (0x6 << 13) 103 + #define COH901318_CX_CTRL_BURST_COUNT_32_BYTES (0x5 << 13) 104 + #define COH901318_CX_CTRL_BURST_COUNT_16_BYTES (0x4 << 13) 105 + #define COH901318_CX_CTRL_BURST_COUNT_8_BYTES (0x3 << 13) 106 + #define COH901318_CX_CTRL_BURST_COUNT_4_BYTES (0x2 << 13) 107 + #define COH901318_CX_CTRL_BURST_COUNT_2_BYTES (0x1 << 13) 108 + #define COH901318_CX_CTRL_BURST_COUNT_1_BYTE (0x0 << 13) 109 + /* Source bus size */ 110 + #define COH901318_CX_CTRL_SRC_BUS_SIZE_MASK (0x00030000) 111 + #define COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS (0x2 << 16) 112 + #define COH901318_CX_CTRL_SRC_BUS_SIZE_16_BITS (0x1 << 16) 113 + #define COH901318_CX_CTRL_SRC_BUS_SIZE_8_BITS (0x0 << 16) 114 + /* Source address increment */ 115 + #define COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE (0x00040000) 116 + #define COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE (0x00000000) 117 + /* Destination Bus Size */ 118 + #define COH901318_CX_CTRL_DST_BUS_SIZE_MASK (0x00180000) 119 + #define COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS (0x2 << 19) 120 + #define COH901318_CX_CTRL_DST_BUS_SIZE_16_BITS (0x1 << 19) 121 + #define COH901318_CX_CTRL_DST_BUS_SIZE_8_BITS (0x0 << 19) 122 + /* Destination address increment */ 123 + #define COH901318_CX_CTRL_DST_ADDR_INC_ENABLE (0x00200000) 124 + #define COH901318_CX_CTRL_DST_ADDR_INC_DISABLE (0x00000000) 125 + /* Master Mode (Master2 is only connected to MSL) */ 126 + #define COH901318_CX_CTRL_MASTER_MODE_MASK (0x00C00000) 127 + #define COH901318_CX_CTRL_MASTER_MODE_M2R_M1W (0x3 << 22) 128 + #define COH901318_CX_CTRL_MASTER_MODE_M1R_M2W (0x2 << 22) 129 + #define COH901318_CX_CTRL_MASTER_MODE_M2RW (0x1 << 22) 130 + #define COH901318_CX_CTRL_MASTER_MODE_M1RW (0x0 << 22) 131 + /* Terminal Count flag to PER enable */ 132 + #define COH901318_CX_CTRL_TCP_ENABLE (0x01000000) 133 + #define COH901318_CX_CTRL_TCP_DISABLE (0x00000000) 134 + /* Terminal Count flags to CPU enable */ 135 + #define COH901318_CX_CTRL_TC_IRQ_ENABLE (0x02000000) 136 + #define COH901318_CX_CTRL_TC_IRQ_DISABLE (0x00000000) 137 + /* Hand shake to peripheral */ 138 + #define COH901318_CX_CTRL_HSP_ENABLE (0x04000000) 139 + #define COH901318_CX_CTRL_HSP_DISABLE (0x00000000) 140 + #define COH901318_CX_CTRL_HSS_ENABLE (0x08000000) 141 + #define COH901318_CX_CTRL_HSS_DISABLE (0x00000000) 142 + /* DMA mode */ 143 + #define COH901318_CX_CTRL_DDMA_MASK (0x30000000) 144 + #define COH901318_CX_CTRL_DDMA_LEGACY (0x0 << 28) 145 + #define COH901318_CX_CTRL_DDMA_DEMAND_DMA1 (0x1 << 28) 146 + #define COH901318_CX_CTRL_DDMA_DEMAND_DMA2 (0x2 << 28) 147 + /* Primary Request Data Destination */ 148 + #define COH901318_CX_CTRL_PRDD_MASK (0x40000000) 149 + #define COH901318_CX_CTRL_PRDD_DEST (0x1 << 30) 150 + #define COH901318_CX_CTRL_PRDD_SOURCE (0x0 << 30) 151 + 152 + /* 153 + * CX_SRC_ADDR - Channel Source Address Registers 32bit (R/W) 154 + */ 155 + #define COH901318_CX_SRC_ADDR (0x0404) 156 + #define COH901318_CX_SRC_ADDR_SPACING (0x10) 157 + 158 + /* 159 + * CX_DST_ADDR - Channel Destination Address Registers 32bit R/W 160 + */ 161 + #define COH901318_CX_DST_ADDR (0x0408) 162 + #define COH901318_CX_DST_ADDR_SPACING (0x10) 163 + 164 + /* 165 + * CX_LNK_ADDR - Channel Link Address Registers 32bit (R/W) 166 + */ 167 + #define COH901318_CX_LNK_ADDR (0x040C) 168 + #define COH901318_CX_LNK_ADDR_SPACING (0x10) 169 + #define COH901318_CX_LNK_LINK_IMMEDIATE (0x00000001) 170 + 171 + /** 172 + * struct coh901318_params - parameters for DMAC configuration 173 + * @config: DMA config register 174 + * @ctrl_lli_last: DMA control register for the last lli in the list 175 + * @ctrl_lli: DMA control register for an lli 176 + * @ctrl_lli_chained: DMA control register for a chained lli 177 + */ 178 + struct coh901318_params { 179 + u32 config; 180 + u32 ctrl_lli_last; 181 + u32 ctrl_lli; 182 + u32 ctrl_lli_chained; 183 + }; 184 + 185 + /** 186 + * struct coh_dma_channel - dma channel base 187 + * @name: ascii name of dma channel 188 + * @number: channel id number 189 + * @desc_nbr_max: number of preallocated descriptors 190 + * @priority_high: prio of channel, 0 low otherwise high. 191 + * @param: configuration parameters 192 + */ 193 + struct coh_dma_channel { 194 + const char name[32]; 195 + const int number; 196 + const int desc_nbr_max; 197 + const int priority_high; 198 + const struct coh901318_params param; 199 + }; 200 + 201 + /** 202 + * struct powersave - DMA power save structure 203 + * @lock: lock protecting data in this struct 204 + * @started_channels: bit mask indicating active dma channels 205 + */ 206 + struct powersave { 207 + spinlock_t lock; 208 + u64 started_channels; 209 + }; 210 + 211 + /* points out all dma slave channels. 212 + * Syntax is [A1, B1, A2, B2, .... ,-1,-1] 213 + * Select all channels from A to B, end of list is marked with -1,-1 214 + */ 215 + static int dma_slave_channels[] = { 216 + U300_DMA_MSL_TX_0, U300_DMA_SPI_RX, 217 + U300_DMA_UART1_TX, U300_DMA_UART1_RX, -1, -1}; 218 + 219 + /* points out all dma memcpy channels. */ 220 + static int dma_memcpy_channels[] = { 221 + U300_DMA_GENERAL_PURPOSE_0, U300_DMA_GENERAL_PURPOSE_8, -1, -1}; 222 + 223 + #define flags_memcpy_config (COH901318_CX_CFG_CH_DISABLE | \ 224 + COH901318_CX_CFG_RM_MEMORY_TO_MEMORY | \ 225 + COH901318_CX_CFG_LCR_DISABLE | \ 226 + COH901318_CX_CFG_TC_IRQ_ENABLE | \ 227 + COH901318_CX_CFG_BE_IRQ_ENABLE) 228 + #define flags_memcpy_lli_chained (COH901318_CX_CTRL_TC_ENABLE | \ 229 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \ 230 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \ 231 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \ 232 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \ 233 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \ 234 + COH901318_CX_CTRL_MASTER_MODE_M1RW | \ 235 + COH901318_CX_CTRL_TCP_DISABLE | \ 236 + COH901318_CX_CTRL_TC_IRQ_DISABLE | \ 237 + COH901318_CX_CTRL_HSP_DISABLE | \ 238 + COH901318_CX_CTRL_HSS_DISABLE | \ 239 + COH901318_CX_CTRL_DDMA_LEGACY | \ 240 + COH901318_CX_CTRL_PRDD_SOURCE) 241 + #define flags_memcpy_lli (COH901318_CX_CTRL_TC_ENABLE | \ 242 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \ 243 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \ 244 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \ 245 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \ 246 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \ 247 + COH901318_CX_CTRL_MASTER_MODE_M1RW | \ 248 + COH901318_CX_CTRL_TCP_DISABLE | \ 249 + COH901318_CX_CTRL_TC_IRQ_DISABLE | \ 250 + COH901318_CX_CTRL_HSP_DISABLE | \ 251 + COH901318_CX_CTRL_HSS_DISABLE | \ 252 + COH901318_CX_CTRL_DDMA_LEGACY | \ 253 + COH901318_CX_CTRL_PRDD_SOURCE) 254 + #define flags_memcpy_lli_last (COH901318_CX_CTRL_TC_ENABLE | \ 255 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \ 256 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \ 257 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \ 258 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \ 259 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \ 260 + COH901318_CX_CTRL_MASTER_MODE_M1RW | \ 261 + COH901318_CX_CTRL_TCP_DISABLE | \ 262 + COH901318_CX_CTRL_TC_IRQ_ENABLE | \ 263 + COH901318_CX_CTRL_HSP_DISABLE | \ 264 + COH901318_CX_CTRL_HSS_DISABLE | \ 265 + COH901318_CX_CTRL_DDMA_LEGACY | \ 266 + COH901318_CX_CTRL_PRDD_SOURCE) 267 + 268 + const struct coh_dma_channel chan_config[U300_DMA_CHANNELS] = { 269 + { 270 + .number = U300_DMA_MSL_TX_0, 271 + .name = "MSL TX 0", 272 + .priority_high = 0, 273 + }, 274 + { 275 + .number = U300_DMA_MSL_TX_1, 276 + .name = "MSL TX 1", 277 + .priority_high = 0, 278 + .param.config = COH901318_CX_CFG_CH_DISABLE | 279 + COH901318_CX_CFG_LCR_DISABLE | 280 + COH901318_CX_CFG_TC_IRQ_ENABLE | 281 + COH901318_CX_CFG_BE_IRQ_ENABLE, 282 + .param.ctrl_lli_chained = 0 | 283 + COH901318_CX_CTRL_TC_ENABLE | 284 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 285 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 286 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 287 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 288 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 289 + COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 290 + COH901318_CX_CTRL_TCP_DISABLE | 291 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 292 + COH901318_CX_CTRL_HSP_ENABLE | 293 + COH901318_CX_CTRL_HSS_DISABLE | 294 + COH901318_CX_CTRL_DDMA_LEGACY | 295 + COH901318_CX_CTRL_PRDD_SOURCE, 296 + .param.ctrl_lli = 0 | 297 + COH901318_CX_CTRL_TC_ENABLE | 298 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 299 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 300 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 301 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 302 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 303 + COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 304 + COH901318_CX_CTRL_TCP_ENABLE | 305 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 306 + COH901318_CX_CTRL_HSP_ENABLE | 307 + COH901318_CX_CTRL_HSS_DISABLE | 308 + COH901318_CX_CTRL_DDMA_LEGACY | 309 + COH901318_CX_CTRL_PRDD_SOURCE, 310 + .param.ctrl_lli_last = 0 | 311 + COH901318_CX_CTRL_TC_ENABLE | 312 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 313 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 314 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 315 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 316 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 317 + COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 318 + COH901318_CX_CTRL_TCP_ENABLE | 319 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 320 + COH901318_CX_CTRL_HSP_ENABLE | 321 + COH901318_CX_CTRL_HSS_DISABLE | 322 + COH901318_CX_CTRL_DDMA_LEGACY | 323 + COH901318_CX_CTRL_PRDD_SOURCE, 324 + }, 325 + { 326 + .number = U300_DMA_MSL_TX_2, 327 + .name = "MSL TX 2", 328 + .priority_high = 0, 329 + .param.config = COH901318_CX_CFG_CH_DISABLE | 330 + COH901318_CX_CFG_LCR_DISABLE | 331 + COH901318_CX_CFG_TC_IRQ_ENABLE | 332 + COH901318_CX_CFG_BE_IRQ_ENABLE, 333 + .param.ctrl_lli_chained = 0 | 334 + COH901318_CX_CTRL_TC_ENABLE | 335 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 336 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 337 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 338 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 339 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 340 + COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 341 + COH901318_CX_CTRL_TCP_DISABLE | 342 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 343 + COH901318_CX_CTRL_HSP_ENABLE | 344 + COH901318_CX_CTRL_HSS_DISABLE | 345 + COH901318_CX_CTRL_DDMA_LEGACY | 346 + COH901318_CX_CTRL_PRDD_SOURCE, 347 + .param.ctrl_lli = 0 | 348 + COH901318_CX_CTRL_TC_ENABLE | 349 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 350 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 351 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 352 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 353 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 354 + COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 355 + COH901318_CX_CTRL_TCP_ENABLE | 356 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 357 + COH901318_CX_CTRL_HSP_ENABLE | 358 + COH901318_CX_CTRL_HSS_DISABLE | 359 + COH901318_CX_CTRL_DDMA_LEGACY | 360 + COH901318_CX_CTRL_PRDD_SOURCE, 361 + .param.ctrl_lli_last = 0 | 362 + COH901318_CX_CTRL_TC_ENABLE | 363 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 364 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 365 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 366 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 367 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 368 + COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 369 + COH901318_CX_CTRL_TCP_ENABLE | 370 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 371 + COH901318_CX_CTRL_HSP_ENABLE | 372 + COH901318_CX_CTRL_HSS_DISABLE | 373 + COH901318_CX_CTRL_DDMA_LEGACY | 374 + COH901318_CX_CTRL_PRDD_SOURCE, 375 + .desc_nbr_max = 10, 376 + }, 377 + { 378 + .number = U300_DMA_MSL_TX_3, 379 + .name = "MSL TX 3", 380 + .priority_high = 0, 381 + .param.config = COH901318_CX_CFG_CH_DISABLE | 382 + COH901318_CX_CFG_LCR_DISABLE | 383 + COH901318_CX_CFG_TC_IRQ_ENABLE | 384 + COH901318_CX_CFG_BE_IRQ_ENABLE, 385 + .param.ctrl_lli_chained = 0 | 386 + COH901318_CX_CTRL_TC_ENABLE | 387 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 388 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 389 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 390 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 391 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 392 + COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 393 + COH901318_CX_CTRL_TCP_DISABLE | 394 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 395 + COH901318_CX_CTRL_HSP_ENABLE | 396 + COH901318_CX_CTRL_HSS_DISABLE | 397 + COH901318_CX_CTRL_DDMA_LEGACY | 398 + COH901318_CX_CTRL_PRDD_SOURCE, 399 + .param.ctrl_lli = 0 | 400 + COH901318_CX_CTRL_TC_ENABLE | 401 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 402 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 403 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 404 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 405 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 406 + COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 407 + COH901318_CX_CTRL_TCP_ENABLE | 408 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 409 + COH901318_CX_CTRL_HSP_ENABLE | 410 + COH901318_CX_CTRL_HSS_DISABLE | 411 + COH901318_CX_CTRL_DDMA_LEGACY | 412 + COH901318_CX_CTRL_PRDD_SOURCE, 413 + .param.ctrl_lli_last = 0 | 414 + COH901318_CX_CTRL_TC_ENABLE | 415 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 416 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 417 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 418 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 419 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 420 + COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 421 + COH901318_CX_CTRL_TCP_ENABLE | 422 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 423 + COH901318_CX_CTRL_HSP_ENABLE | 424 + COH901318_CX_CTRL_HSS_DISABLE | 425 + COH901318_CX_CTRL_DDMA_LEGACY | 426 + COH901318_CX_CTRL_PRDD_SOURCE, 427 + }, 428 + { 429 + .number = U300_DMA_MSL_TX_4, 430 + .name = "MSL TX 4", 431 + .priority_high = 0, 432 + .param.config = COH901318_CX_CFG_CH_DISABLE | 433 + COH901318_CX_CFG_LCR_DISABLE | 434 + COH901318_CX_CFG_TC_IRQ_ENABLE | 435 + COH901318_CX_CFG_BE_IRQ_ENABLE, 436 + .param.ctrl_lli_chained = 0 | 437 + COH901318_CX_CTRL_TC_ENABLE | 438 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 439 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 440 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 441 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 442 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 443 + COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 444 + COH901318_CX_CTRL_TCP_DISABLE | 445 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 446 + COH901318_CX_CTRL_HSP_ENABLE | 447 + COH901318_CX_CTRL_HSS_DISABLE | 448 + COH901318_CX_CTRL_DDMA_LEGACY | 449 + COH901318_CX_CTRL_PRDD_SOURCE, 450 + .param.ctrl_lli = 0 | 451 + COH901318_CX_CTRL_TC_ENABLE | 452 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 453 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 454 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 455 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 456 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 457 + COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 458 + COH901318_CX_CTRL_TCP_ENABLE | 459 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 460 + COH901318_CX_CTRL_HSP_ENABLE | 461 + COH901318_CX_CTRL_HSS_DISABLE | 462 + COH901318_CX_CTRL_DDMA_LEGACY | 463 + COH901318_CX_CTRL_PRDD_SOURCE, 464 + .param.ctrl_lli_last = 0 | 465 + COH901318_CX_CTRL_TC_ENABLE | 466 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 467 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 468 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 469 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 470 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 471 + COH901318_CX_CTRL_MASTER_MODE_M1R_M2W | 472 + COH901318_CX_CTRL_TCP_ENABLE | 473 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 474 + COH901318_CX_CTRL_HSP_ENABLE | 475 + COH901318_CX_CTRL_HSS_DISABLE | 476 + COH901318_CX_CTRL_DDMA_LEGACY | 477 + COH901318_CX_CTRL_PRDD_SOURCE, 478 + }, 479 + { 480 + .number = U300_DMA_MSL_TX_5, 481 + .name = "MSL TX 5", 482 + .priority_high = 0, 483 + }, 484 + { 485 + .number = U300_DMA_MSL_TX_6, 486 + .name = "MSL TX 6", 487 + .priority_high = 0, 488 + }, 489 + { 490 + .number = U300_DMA_MSL_RX_0, 491 + .name = "MSL RX 0", 492 + .priority_high = 0, 493 + }, 494 + { 495 + .number = U300_DMA_MSL_RX_1, 496 + .name = "MSL RX 1", 497 + .priority_high = 0, 498 + .param.config = COH901318_CX_CFG_CH_DISABLE | 499 + COH901318_CX_CFG_LCR_DISABLE | 500 + COH901318_CX_CFG_TC_IRQ_ENABLE | 501 + COH901318_CX_CFG_BE_IRQ_ENABLE, 502 + .param.ctrl_lli_chained = 0 | 503 + COH901318_CX_CTRL_TC_ENABLE | 504 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 505 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 506 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 507 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 508 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 509 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 510 + COH901318_CX_CTRL_TCP_DISABLE | 511 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 512 + COH901318_CX_CTRL_HSP_ENABLE | 513 + COH901318_CX_CTRL_HSS_DISABLE | 514 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 515 + COH901318_CX_CTRL_PRDD_DEST, 516 + .param.ctrl_lli = 0, 517 + .param.ctrl_lli_last = 0 | 518 + COH901318_CX_CTRL_TC_ENABLE | 519 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 520 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 521 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 522 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 523 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 524 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 525 + COH901318_CX_CTRL_TCP_DISABLE | 526 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 527 + COH901318_CX_CTRL_HSP_ENABLE | 528 + COH901318_CX_CTRL_HSS_DISABLE | 529 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 530 + COH901318_CX_CTRL_PRDD_DEST, 531 + }, 532 + { 533 + .number = U300_DMA_MSL_RX_2, 534 + .name = "MSL RX 2", 535 + .priority_high = 0, 536 + .param.config = COH901318_CX_CFG_CH_DISABLE | 537 + COH901318_CX_CFG_LCR_DISABLE | 538 + COH901318_CX_CFG_TC_IRQ_ENABLE | 539 + COH901318_CX_CFG_BE_IRQ_ENABLE, 540 + .param.ctrl_lli_chained = 0 | 541 + COH901318_CX_CTRL_TC_ENABLE | 542 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 543 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 544 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 545 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 546 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 547 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 548 + COH901318_CX_CTRL_TCP_DISABLE | 549 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 550 + COH901318_CX_CTRL_HSP_ENABLE | 551 + COH901318_CX_CTRL_HSS_DISABLE | 552 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 553 + COH901318_CX_CTRL_PRDD_DEST, 554 + .param.ctrl_lli = 0 | 555 + COH901318_CX_CTRL_TC_ENABLE | 556 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 557 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 558 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 559 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 560 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 561 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 562 + COH901318_CX_CTRL_TCP_DISABLE | 563 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 564 + COH901318_CX_CTRL_HSP_ENABLE | 565 + COH901318_CX_CTRL_HSS_DISABLE | 566 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 567 + COH901318_CX_CTRL_PRDD_DEST, 568 + .param.ctrl_lli_last = 0 | 569 + COH901318_CX_CTRL_TC_ENABLE | 570 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 571 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 572 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 573 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 574 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 575 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 576 + COH901318_CX_CTRL_TCP_DISABLE | 577 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 578 + COH901318_CX_CTRL_HSP_ENABLE | 579 + COH901318_CX_CTRL_HSS_DISABLE | 580 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 581 + COH901318_CX_CTRL_PRDD_DEST, 582 + }, 583 + { 584 + .number = U300_DMA_MSL_RX_3, 585 + .name = "MSL RX 3", 586 + .priority_high = 0, 587 + .param.config = COH901318_CX_CFG_CH_DISABLE | 588 + COH901318_CX_CFG_LCR_DISABLE | 589 + COH901318_CX_CFG_TC_IRQ_ENABLE | 590 + COH901318_CX_CFG_BE_IRQ_ENABLE, 591 + .param.ctrl_lli_chained = 0 | 592 + COH901318_CX_CTRL_TC_ENABLE | 593 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 594 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 595 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 596 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 597 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 598 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 599 + COH901318_CX_CTRL_TCP_DISABLE | 600 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 601 + COH901318_CX_CTRL_HSP_ENABLE | 602 + COH901318_CX_CTRL_HSS_DISABLE | 603 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 604 + COH901318_CX_CTRL_PRDD_DEST, 605 + .param.ctrl_lli = 0 | 606 + COH901318_CX_CTRL_TC_ENABLE | 607 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 608 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 609 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 610 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 611 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 612 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 613 + COH901318_CX_CTRL_TCP_DISABLE | 614 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 615 + COH901318_CX_CTRL_HSP_ENABLE | 616 + COH901318_CX_CTRL_HSS_DISABLE | 617 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 618 + COH901318_CX_CTRL_PRDD_DEST, 619 + .param.ctrl_lli_last = 0 | 620 + COH901318_CX_CTRL_TC_ENABLE | 621 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 622 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 623 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 624 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 625 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 626 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 627 + COH901318_CX_CTRL_TCP_DISABLE | 628 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 629 + COH901318_CX_CTRL_HSP_ENABLE | 630 + COH901318_CX_CTRL_HSS_DISABLE | 631 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 632 + COH901318_CX_CTRL_PRDD_DEST, 633 + }, 634 + { 635 + .number = U300_DMA_MSL_RX_4, 636 + .name = "MSL RX 4", 637 + .priority_high = 0, 638 + .param.config = COH901318_CX_CFG_CH_DISABLE | 639 + COH901318_CX_CFG_LCR_DISABLE | 640 + COH901318_CX_CFG_TC_IRQ_ENABLE | 641 + COH901318_CX_CFG_BE_IRQ_ENABLE, 642 + .param.ctrl_lli_chained = 0 | 643 + COH901318_CX_CTRL_TC_ENABLE | 644 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 645 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 646 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 647 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 648 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 649 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 650 + COH901318_CX_CTRL_TCP_DISABLE | 651 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 652 + COH901318_CX_CTRL_HSP_ENABLE | 653 + COH901318_CX_CTRL_HSS_DISABLE | 654 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 655 + COH901318_CX_CTRL_PRDD_DEST, 656 + .param.ctrl_lli = 0 | 657 + COH901318_CX_CTRL_TC_ENABLE | 658 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 659 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 660 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 661 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 662 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 663 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 664 + COH901318_CX_CTRL_TCP_DISABLE | 665 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 666 + COH901318_CX_CTRL_HSP_ENABLE | 667 + COH901318_CX_CTRL_HSS_DISABLE | 668 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 669 + COH901318_CX_CTRL_PRDD_DEST, 670 + .param.ctrl_lli_last = 0 | 671 + COH901318_CX_CTRL_TC_ENABLE | 672 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 673 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 674 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 675 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 676 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 677 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 678 + COH901318_CX_CTRL_TCP_DISABLE | 679 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 680 + COH901318_CX_CTRL_HSP_ENABLE | 681 + COH901318_CX_CTRL_HSS_DISABLE | 682 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 683 + COH901318_CX_CTRL_PRDD_DEST, 684 + }, 685 + { 686 + .number = U300_DMA_MSL_RX_5, 687 + .name = "MSL RX 5", 688 + .priority_high = 0, 689 + .param.config = COH901318_CX_CFG_CH_DISABLE | 690 + COH901318_CX_CFG_LCR_DISABLE | 691 + COH901318_CX_CFG_TC_IRQ_ENABLE | 692 + COH901318_CX_CFG_BE_IRQ_ENABLE, 693 + .param.ctrl_lli_chained = 0 | 694 + COH901318_CX_CTRL_TC_ENABLE | 695 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 696 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 697 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 698 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 699 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 700 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 701 + COH901318_CX_CTRL_TCP_DISABLE | 702 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 703 + COH901318_CX_CTRL_HSP_ENABLE | 704 + COH901318_CX_CTRL_HSS_DISABLE | 705 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 706 + COH901318_CX_CTRL_PRDD_DEST, 707 + .param.ctrl_lli = 0 | 708 + COH901318_CX_CTRL_TC_ENABLE | 709 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 710 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 711 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 712 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 713 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 714 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 715 + COH901318_CX_CTRL_TCP_DISABLE | 716 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 717 + COH901318_CX_CTRL_HSP_ENABLE | 718 + COH901318_CX_CTRL_HSS_DISABLE | 719 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 720 + COH901318_CX_CTRL_PRDD_DEST, 721 + .param.ctrl_lli_last = 0 | 722 + COH901318_CX_CTRL_TC_ENABLE | 723 + COH901318_CX_CTRL_BURST_COUNT_32_BYTES | 724 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 725 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 726 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 727 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 728 + COH901318_CX_CTRL_MASTER_MODE_M2R_M1W | 729 + COH901318_CX_CTRL_TCP_DISABLE | 730 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 731 + COH901318_CX_CTRL_HSP_ENABLE | 732 + COH901318_CX_CTRL_HSS_DISABLE | 733 + COH901318_CX_CTRL_DDMA_DEMAND_DMA1 | 734 + COH901318_CX_CTRL_PRDD_DEST, 735 + }, 736 + { 737 + .number = U300_DMA_MSL_RX_6, 738 + .name = "MSL RX 6", 739 + .priority_high = 0, 740 + }, 741 + /* 742 + * Don't set up device address, burst count or size of src 743 + * or dst bus for this peripheral - handled by PrimeCell 744 + * DMA extension. 745 + */ 746 + { 747 + .number = U300_DMA_MMCSD_RX_TX, 748 + .name = "MMCSD RX TX", 749 + .priority_high = 0, 750 + .param.config = COH901318_CX_CFG_CH_DISABLE | 751 + COH901318_CX_CFG_LCR_DISABLE | 752 + COH901318_CX_CFG_TC_IRQ_ENABLE | 753 + COH901318_CX_CFG_BE_IRQ_ENABLE, 754 + .param.ctrl_lli_chained = 0 | 755 + COH901318_CX_CTRL_TC_ENABLE | 756 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 757 + COH901318_CX_CTRL_TCP_ENABLE | 758 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 759 + COH901318_CX_CTRL_HSP_ENABLE | 760 + COH901318_CX_CTRL_HSS_DISABLE | 761 + COH901318_CX_CTRL_DDMA_LEGACY, 762 + .param.ctrl_lli = 0 | 763 + COH901318_CX_CTRL_TC_ENABLE | 764 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 765 + COH901318_CX_CTRL_TCP_ENABLE | 766 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 767 + COH901318_CX_CTRL_HSP_ENABLE | 768 + COH901318_CX_CTRL_HSS_DISABLE | 769 + COH901318_CX_CTRL_DDMA_LEGACY, 770 + .param.ctrl_lli_last = 0 | 771 + COH901318_CX_CTRL_TC_ENABLE | 772 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 773 + COH901318_CX_CTRL_TCP_DISABLE | 774 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 775 + COH901318_CX_CTRL_HSP_ENABLE | 776 + COH901318_CX_CTRL_HSS_DISABLE | 777 + COH901318_CX_CTRL_DDMA_LEGACY, 778 + 779 + }, 780 + { 781 + .number = U300_DMA_MSPRO_TX, 782 + .name = "MSPRO TX", 783 + .priority_high = 0, 784 + }, 785 + { 786 + .number = U300_DMA_MSPRO_RX, 787 + .name = "MSPRO RX", 788 + .priority_high = 0, 789 + }, 790 + /* 791 + * Don't set up device address, burst count or size of src 792 + * or dst bus for this peripheral - handled by PrimeCell 793 + * DMA extension. 794 + */ 795 + { 796 + .number = U300_DMA_UART0_TX, 797 + .name = "UART0 TX", 798 + .priority_high = 0, 799 + .param.config = COH901318_CX_CFG_CH_DISABLE | 800 + COH901318_CX_CFG_LCR_DISABLE | 801 + COH901318_CX_CFG_TC_IRQ_ENABLE | 802 + COH901318_CX_CFG_BE_IRQ_ENABLE, 803 + .param.ctrl_lli_chained = 0 | 804 + COH901318_CX_CTRL_TC_ENABLE | 805 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 806 + COH901318_CX_CTRL_TCP_ENABLE | 807 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 808 + COH901318_CX_CTRL_HSP_ENABLE | 809 + COH901318_CX_CTRL_HSS_DISABLE | 810 + COH901318_CX_CTRL_DDMA_LEGACY, 811 + .param.ctrl_lli = 0 | 812 + COH901318_CX_CTRL_TC_ENABLE | 813 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 814 + COH901318_CX_CTRL_TCP_ENABLE | 815 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 816 + COH901318_CX_CTRL_HSP_ENABLE | 817 + COH901318_CX_CTRL_HSS_DISABLE | 818 + COH901318_CX_CTRL_DDMA_LEGACY, 819 + .param.ctrl_lli_last = 0 | 820 + COH901318_CX_CTRL_TC_ENABLE | 821 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 822 + COH901318_CX_CTRL_TCP_ENABLE | 823 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 824 + COH901318_CX_CTRL_HSP_ENABLE | 825 + COH901318_CX_CTRL_HSS_DISABLE | 826 + COH901318_CX_CTRL_DDMA_LEGACY, 827 + }, 828 + { 829 + .number = U300_DMA_UART0_RX, 830 + .name = "UART0 RX", 831 + .priority_high = 0, 832 + .param.config = COH901318_CX_CFG_CH_DISABLE | 833 + COH901318_CX_CFG_LCR_DISABLE | 834 + COH901318_CX_CFG_TC_IRQ_ENABLE | 835 + COH901318_CX_CFG_BE_IRQ_ENABLE, 836 + .param.ctrl_lli_chained = 0 | 837 + COH901318_CX_CTRL_TC_ENABLE | 838 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 839 + COH901318_CX_CTRL_TCP_ENABLE | 840 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 841 + COH901318_CX_CTRL_HSP_ENABLE | 842 + COH901318_CX_CTRL_HSS_DISABLE | 843 + COH901318_CX_CTRL_DDMA_LEGACY, 844 + .param.ctrl_lli = 0 | 845 + COH901318_CX_CTRL_TC_ENABLE | 846 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 847 + COH901318_CX_CTRL_TCP_ENABLE | 848 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 849 + COH901318_CX_CTRL_HSP_ENABLE | 850 + COH901318_CX_CTRL_HSS_DISABLE | 851 + COH901318_CX_CTRL_DDMA_LEGACY, 852 + .param.ctrl_lli_last = 0 | 853 + COH901318_CX_CTRL_TC_ENABLE | 854 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 855 + COH901318_CX_CTRL_TCP_ENABLE | 856 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 857 + COH901318_CX_CTRL_HSP_ENABLE | 858 + COH901318_CX_CTRL_HSS_DISABLE | 859 + COH901318_CX_CTRL_DDMA_LEGACY, 860 + }, 861 + { 862 + .number = U300_DMA_APEX_TX, 863 + .name = "APEX TX", 864 + .priority_high = 0, 865 + }, 866 + { 867 + .number = U300_DMA_APEX_RX, 868 + .name = "APEX RX", 869 + .priority_high = 0, 870 + }, 871 + { 872 + .number = U300_DMA_PCM_I2S0_TX, 873 + .name = "PCM I2S0 TX", 874 + .priority_high = 1, 875 + .param.config = COH901318_CX_CFG_CH_DISABLE | 876 + COH901318_CX_CFG_LCR_DISABLE | 877 + COH901318_CX_CFG_TC_IRQ_ENABLE | 878 + COH901318_CX_CFG_BE_IRQ_ENABLE, 879 + .param.ctrl_lli_chained = 0 | 880 + COH901318_CX_CTRL_TC_ENABLE | 881 + COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 882 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 883 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 884 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 885 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 886 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 887 + COH901318_CX_CTRL_TCP_DISABLE | 888 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 889 + COH901318_CX_CTRL_HSP_ENABLE | 890 + COH901318_CX_CTRL_HSS_DISABLE | 891 + COH901318_CX_CTRL_DDMA_LEGACY | 892 + COH901318_CX_CTRL_PRDD_SOURCE, 893 + .param.ctrl_lli = 0 | 894 + COH901318_CX_CTRL_TC_ENABLE | 895 + COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 896 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 897 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 898 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 899 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 900 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 901 + COH901318_CX_CTRL_TCP_ENABLE | 902 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 903 + COH901318_CX_CTRL_HSP_ENABLE | 904 + COH901318_CX_CTRL_HSS_DISABLE | 905 + COH901318_CX_CTRL_DDMA_LEGACY | 906 + COH901318_CX_CTRL_PRDD_SOURCE, 907 + .param.ctrl_lli_last = 0 | 908 + COH901318_CX_CTRL_TC_ENABLE | 909 + COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 910 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 911 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 912 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 913 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 914 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 915 + COH901318_CX_CTRL_TCP_ENABLE | 916 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 917 + COH901318_CX_CTRL_HSP_ENABLE | 918 + COH901318_CX_CTRL_HSS_DISABLE | 919 + COH901318_CX_CTRL_DDMA_LEGACY | 920 + COH901318_CX_CTRL_PRDD_SOURCE, 921 + }, 922 + { 923 + .number = U300_DMA_PCM_I2S0_RX, 924 + .name = "PCM I2S0 RX", 925 + .priority_high = 1, 926 + .param.config = COH901318_CX_CFG_CH_DISABLE | 927 + COH901318_CX_CFG_LCR_DISABLE | 928 + COH901318_CX_CFG_TC_IRQ_ENABLE | 929 + COH901318_CX_CFG_BE_IRQ_ENABLE, 930 + .param.ctrl_lli_chained = 0 | 931 + COH901318_CX_CTRL_TC_ENABLE | 932 + COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 933 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 934 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 935 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 936 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 937 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 938 + COH901318_CX_CTRL_TCP_DISABLE | 939 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 940 + COH901318_CX_CTRL_HSP_ENABLE | 941 + COH901318_CX_CTRL_HSS_DISABLE | 942 + COH901318_CX_CTRL_DDMA_LEGACY | 943 + COH901318_CX_CTRL_PRDD_DEST, 944 + .param.ctrl_lli = 0 | 945 + COH901318_CX_CTRL_TC_ENABLE | 946 + COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 947 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 948 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 949 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 950 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 951 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 952 + COH901318_CX_CTRL_TCP_ENABLE | 953 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 954 + COH901318_CX_CTRL_HSP_ENABLE | 955 + COH901318_CX_CTRL_HSS_DISABLE | 956 + COH901318_CX_CTRL_DDMA_LEGACY | 957 + COH901318_CX_CTRL_PRDD_DEST, 958 + .param.ctrl_lli_last = 0 | 959 + COH901318_CX_CTRL_TC_ENABLE | 960 + COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 961 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 962 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 963 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 964 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 965 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 966 + COH901318_CX_CTRL_TCP_ENABLE | 967 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 968 + COH901318_CX_CTRL_HSP_ENABLE | 969 + COH901318_CX_CTRL_HSS_DISABLE | 970 + COH901318_CX_CTRL_DDMA_LEGACY | 971 + COH901318_CX_CTRL_PRDD_DEST, 972 + }, 973 + { 974 + .number = U300_DMA_PCM_I2S1_TX, 975 + .name = "PCM I2S1 TX", 976 + .priority_high = 1, 977 + .param.config = COH901318_CX_CFG_CH_DISABLE | 978 + COH901318_CX_CFG_LCR_DISABLE | 979 + COH901318_CX_CFG_TC_IRQ_ENABLE | 980 + COH901318_CX_CFG_BE_IRQ_ENABLE, 981 + .param.ctrl_lli_chained = 0 | 982 + COH901318_CX_CTRL_TC_ENABLE | 983 + COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 984 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 985 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 986 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 987 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 988 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 989 + COH901318_CX_CTRL_TCP_DISABLE | 990 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 991 + COH901318_CX_CTRL_HSP_ENABLE | 992 + COH901318_CX_CTRL_HSS_DISABLE | 993 + COH901318_CX_CTRL_DDMA_LEGACY | 994 + COH901318_CX_CTRL_PRDD_SOURCE, 995 + .param.ctrl_lli = 0 | 996 + COH901318_CX_CTRL_TC_ENABLE | 997 + COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 998 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 999 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 1000 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1001 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 1002 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 1003 + COH901318_CX_CTRL_TCP_ENABLE | 1004 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 1005 + COH901318_CX_CTRL_HSP_ENABLE | 1006 + COH901318_CX_CTRL_HSS_DISABLE | 1007 + COH901318_CX_CTRL_DDMA_LEGACY | 1008 + COH901318_CX_CTRL_PRDD_SOURCE, 1009 + .param.ctrl_lli_last = 0 | 1010 + COH901318_CX_CTRL_TC_ENABLE | 1011 + COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1012 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1013 + COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | 1014 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1015 + COH901318_CX_CTRL_DST_ADDR_INC_DISABLE | 1016 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 1017 + COH901318_CX_CTRL_TCP_ENABLE | 1018 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 1019 + COH901318_CX_CTRL_HSP_ENABLE | 1020 + COH901318_CX_CTRL_HSS_DISABLE | 1021 + COH901318_CX_CTRL_DDMA_LEGACY | 1022 + COH901318_CX_CTRL_PRDD_SOURCE, 1023 + }, 1024 + { 1025 + .number = U300_DMA_PCM_I2S1_RX, 1026 + .name = "PCM I2S1 RX", 1027 + .priority_high = 1, 1028 + .param.config = COH901318_CX_CFG_CH_DISABLE | 1029 + COH901318_CX_CFG_LCR_DISABLE | 1030 + COH901318_CX_CFG_TC_IRQ_ENABLE | 1031 + COH901318_CX_CFG_BE_IRQ_ENABLE, 1032 + .param.ctrl_lli_chained = 0 | 1033 + COH901318_CX_CTRL_TC_ENABLE | 1034 + COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1035 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1036 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 1037 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1038 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 1039 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 1040 + COH901318_CX_CTRL_TCP_DISABLE | 1041 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 1042 + COH901318_CX_CTRL_HSP_ENABLE | 1043 + COH901318_CX_CTRL_HSS_DISABLE | 1044 + COH901318_CX_CTRL_DDMA_LEGACY | 1045 + COH901318_CX_CTRL_PRDD_DEST, 1046 + .param.ctrl_lli = 0 | 1047 + COH901318_CX_CTRL_TC_ENABLE | 1048 + COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1049 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1050 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 1051 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1052 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 1053 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 1054 + COH901318_CX_CTRL_TCP_ENABLE | 1055 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 1056 + COH901318_CX_CTRL_HSP_ENABLE | 1057 + COH901318_CX_CTRL_HSS_DISABLE | 1058 + COH901318_CX_CTRL_DDMA_LEGACY | 1059 + COH901318_CX_CTRL_PRDD_DEST, 1060 + .param.ctrl_lli_last = 0 | 1061 + COH901318_CX_CTRL_TC_ENABLE | 1062 + COH901318_CX_CTRL_BURST_COUNT_16_BYTES | 1063 + COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 1064 + COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE | 1065 + COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | 1066 + COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | 1067 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 1068 + COH901318_CX_CTRL_TCP_ENABLE | 1069 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 1070 + COH901318_CX_CTRL_HSP_ENABLE | 1071 + COH901318_CX_CTRL_HSS_DISABLE | 1072 + COH901318_CX_CTRL_DDMA_LEGACY | 1073 + COH901318_CX_CTRL_PRDD_DEST, 1074 + }, 1075 + { 1076 + .number = U300_DMA_XGAM_CDI, 1077 + .name = "XGAM CDI", 1078 + .priority_high = 0, 1079 + }, 1080 + { 1081 + .number = U300_DMA_XGAM_PDI, 1082 + .name = "XGAM PDI", 1083 + .priority_high = 0, 1084 + }, 1085 + /* 1086 + * Don't set up device address, burst count or size of src 1087 + * or dst bus for this peripheral - handled by PrimeCell 1088 + * DMA extension. 1089 + */ 1090 + { 1091 + .number = U300_DMA_SPI_TX, 1092 + .name = "SPI TX", 1093 + .priority_high = 0, 1094 + .param.config = COH901318_CX_CFG_CH_DISABLE | 1095 + COH901318_CX_CFG_LCR_DISABLE | 1096 + COH901318_CX_CFG_TC_IRQ_ENABLE | 1097 + COH901318_CX_CFG_BE_IRQ_ENABLE, 1098 + .param.ctrl_lli_chained = 0 | 1099 + COH901318_CX_CTRL_TC_ENABLE | 1100 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 1101 + COH901318_CX_CTRL_TCP_DISABLE | 1102 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 1103 + COH901318_CX_CTRL_HSP_ENABLE | 1104 + COH901318_CX_CTRL_HSS_DISABLE | 1105 + COH901318_CX_CTRL_DDMA_LEGACY, 1106 + .param.ctrl_lli = 0 | 1107 + COH901318_CX_CTRL_TC_ENABLE | 1108 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 1109 + COH901318_CX_CTRL_TCP_DISABLE | 1110 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 1111 + COH901318_CX_CTRL_HSP_ENABLE | 1112 + COH901318_CX_CTRL_HSS_DISABLE | 1113 + COH901318_CX_CTRL_DDMA_LEGACY, 1114 + .param.ctrl_lli_last = 0 | 1115 + COH901318_CX_CTRL_TC_ENABLE | 1116 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 1117 + COH901318_CX_CTRL_TCP_DISABLE | 1118 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 1119 + COH901318_CX_CTRL_HSP_ENABLE | 1120 + COH901318_CX_CTRL_HSS_DISABLE | 1121 + COH901318_CX_CTRL_DDMA_LEGACY, 1122 + }, 1123 + { 1124 + .number = U300_DMA_SPI_RX, 1125 + .name = "SPI RX", 1126 + .priority_high = 0, 1127 + .param.config = COH901318_CX_CFG_CH_DISABLE | 1128 + COH901318_CX_CFG_LCR_DISABLE | 1129 + COH901318_CX_CFG_TC_IRQ_ENABLE | 1130 + COH901318_CX_CFG_BE_IRQ_ENABLE, 1131 + .param.ctrl_lli_chained = 0 | 1132 + COH901318_CX_CTRL_TC_ENABLE | 1133 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 1134 + COH901318_CX_CTRL_TCP_DISABLE | 1135 + COH901318_CX_CTRL_TC_IRQ_DISABLE | 1136 + COH901318_CX_CTRL_HSP_ENABLE | 1137 + COH901318_CX_CTRL_HSS_DISABLE | 1138 + COH901318_CX_CTRL_DDMA_LEGACY, 1139 + .param.ctrl_lli = 0 | 1140 + COH901318_CX_CTRL_TC_ENABLE | 1141 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 1142 + COH901318_CX_CTRL_TCP_DISABLE | 1143 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 1144 + COH901318_CX_CTRL_HSP_ENABLE | 1145 + COH901318_CX_CTRL_HSS_DISABLE | 1146 + COH901318_CX_CTRL_DDMA_LEGACY, 1147 + .param.ctrl_lli_last = 0 | 1148 + COH901318_CX_CTRL_TC_ENABLE | 1149 + COH901318_CX_CTRL_MASTER_MODE_M1RW | 1150 + COH901318_CX_CTRL_TCP_DISABLE | 1151 + COH901318_CX_CTRL_TC_IRQ_ENABLE | 1152 + COH901318_CX_CTRL_HSP_ENABLE | 1153 + COH901318_CX_CTRL_HSS_DISABLE | 1154 + COH901318_CX_CTRL_DDMA_LEGACY, 1155 + 1156 + }, 1157 + { 1158 + .number = U300_DMA_GENERAL_PURPOSE_0, 1159 + .name = "GENERAL 00", 1160 + .priority_high = 0, 1161 + 1162 + .param.config = flags_memcpy_config, 1163 + .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1164 + .param.ctrl_lli = flags_memcpy_lli, 1165 + .param.ctrl_lli_last = flags_memcpy_lli_last, 1166 + }, 1167 + { 1168 + .number = U300_DMA_GENERAL_PURPOSE_1, 1169 + .name = "GENERAL 01", 1170 + .priority_high = 0, 1171 + 1172 + .param.config = flags_memcpy_config, 1173 + .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1174 + .param.ctrl_lli = flags_memcpy_lli, 1175 + .param.ctrl_lli_last = flags_memcpy_lli_last, 1176 + }, 1177 + { 1178 + .number = U300_DMA_GENERAL_PURPOSE_2, 1179 + .name = "GENERAL 02", 1180 + .priority_high = 0, 1181 + 1182 + .param.config = flags_memcpy_config, 1183 + .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1184 + .param.ctrl_lli = flags_memcpy_lli, 1185 + .param.ctrl_lli_last = flags_memcpy_lli_last, 1186 + }, 1187 + { 1188 + .number = U300_DMA_GENERAL_PURPOSE_3, 1189 + .name = "GENERAL 03", 1190 + .priority_high = 0, 1191 + 1192 + .param.config = flags_memcpy_config, 1193 + .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1194 + .param.ctrl_lli = flags_memcpy_lli, 1195 + .param.ctrl_lli_last = flags_memcpy_lli_last, 1196 + }, 1197 + { 1198 + .number = U300_DMA_GENERAL_PURPOSE_4, 1199 + .name = "GENERAL 04", 1200 + .priority_high = 0, 1201 + 1202 + .param.config = flags_memcpy_config, 1203 + .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1204 + .param.ctrl_lli = flags_memcpy_lli, 1205 + .param.ctrl_lli_last = flags_memcpy_lli_last, 1206 + }, 1207 + { 1208 + .number = U300_DMA_GENERAL_PURPOSE_5, 1209 + .name = "GENERAL 05", 1210 + .priority_high = 0, 1211 + 1212 + .param.config = flags_memcpy_config, 1213 + .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1214 + .param.ctrl_lli = flags_memcpy_lli, 1215 + .param.ctrl_lli_last = flags_memcpy_lli_last, 1216 + }, 1217 + { 1218 + .number = U300_DMA_GENERAL_PURPOSE_6, 1219 + .name = "GENERAL 06", 1220 + .priority_high = 0, 1221 + 1222 + .param.config = flags_memcpy_config, 1223 + .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1224 + .param.ctrl_lli = flags_memcpy_lli, 1225 + .param.ctrl_lli_last = flags_memcpy_lli_last, 1226 + }, 1227 + { 1228 + .number = U300_DMA_GENERAL_PURPOSE_7, 1229 + .name = "GENERAL 07", 1230 + .priority_high = 0, 1231 + 1232 + .param.config = flags_memcpy_config, 1233 + .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1234 + .param.ctrl_lli = flags_memcpy_lli, 1235 + .param.ctrl_lli_last = flags_memcpy_lli_last, 1236 + }, 1237 + { 1238 + .number = U300_DMA_GENERAL_PURPOSE_8, 1239 + .name = "GENERAL 08", 1240 + .priority_high = 0, 1241 + 1242 + .param.config = flags_memcpy_config, 1243 + .param.ctrl_lli_chained = flags_memcpy_lli_chained, 1244 + .param.ctrl_lli = flags_memcpy_lli, 1245 + .param.ctrl_lli_last = flags_memcpy_lli_last, 1246 + }, 1247 + { 1248 + .number = U300_DMA_UART1_TX, 1249 + .name = "UART1 TX", 1250 + .priority_high = 0, 1251 + }, 1252 + { 1253 + .number = U300_DMA_UART1_RX, 1254 + .name = "UART1 RX", 1255 + .priority_high = 0, 1256 + } 1257 + }; 28 1258 29 1259 #define COHC_2_DEV(cohc) (&cohc->chan.dev->device) 30 1260 ··· 1284 54 struct dma_device dma_slave; 1285 55 struct dma_device dma_memcpy; 1286 56 struct coh901318_chan *chans; 1287 - struct coh901318_platform *platform; 1288 57 }; 1289 58 1290 59 struct coh901318_chan { ··· 1304 75 unsigned long nbr_active_done; 1305 76 unsigned long busy; 1306 77 1307 - u32 runtime_addr; 1308 - u32 runtime_ctrl; 78 + u32 addr; 79 + u32 ctrl; 1309 80 1310 81 struct coh901318_base *base; 1311 82 }; ··· 1351 122 1352 123 tmp += sprintf(tmp, "DMA -- enabled dma channels\n"); 1353 124 1354 - for (i = 0; i < debugfs_dma_base->platform->max_channels; i++) 125 + for (i = 0; i < U300_DMA_CHANNELS; i++) 1355 126 if (started_channels & (1 << i)) 1356 127 tmp += sprintf(tmp, "channel %d\n", i); 1357 128 ··· 1416 187 return container_of(chan, struct coh901318_chan, chan); 1417 188 } 1418 189 1419 - static inline dma_addr_t 1420 - cohc_dev_addr(struct coh901318_chan *cohc) 1421 - { 1422 - /* Runtime supplied address will take precedence */ 1423 - if (cohc->runtime_addr) 1424 - return cohc->runtime_addr; 1425 - return cohc->base->platform->chan_conf[cohc->id].dev_addr; 1426 - } 1427 - 1428 190 static inline const struct coh901318_params * 1429 191 cohc_chan_param(struct coh901318_chan *cohc) 1430 192 { 1431 - return &cohc->base->platform->chan_conf[cohc->id].param; 193 + return &chan_config[cohc->id].param; 1432 194 } 1433 195 1434 196 static inline const struct coh_dma_channel * 1435 197 cohc_chan_conf(struct coh901318_chan *cohc) 1436 198 { 1437 - return &cohc->base->platform->chan_conf[cohc->id]; 199 + return &chan_config[cohc->id]; 1438 200 } 1439 201 1440 202 static void enable_powersave(struct coh901318_chan *cohc) ··· 1437 217 1438 218 pm->started_channels &= ~(1ULL << cohc->id); 1439 219 1440 - if (!pm->started_channels) { 1441 - /* DMA no longer intends to access memory */ 1442 - cohc->base->platform->access_memory_state(cohc->base->dev, 1443 - false); 1444 - } 1445 - 1446 220 spin_unlock_irqrestore(&pm->lock, flags); 1447 221 } 1448 222 static void disable_powersave(struct coh901318_chan *cohc) ··· 1445 231 struct powersave *pm = &cohc->base->pm; 1446 232 1447 233 spin_lock_irqsave(&pm->lock, flags); 1448 - 1449 - if (!pm->started_channels) { 1450 - /* DMA intends to access memory */ 1451 - cohc->base->platform->access_memory_state(cohc->base->dev, 1452 - true); 1453 - } 1454 234 1455 235 pm->started_channels |= (1ULL << cohc->id); 1456 236 ··· 1804 596 if (param) 1805 597 p = param; 1806 598 else 1807 - p = &cohc->base->platform->chan_conf[channel].param; 599 + p = cohc_chan_param(cohc); 1808 600 1809 601 /* Clear any pending BE or TC interrupt */ 1810 602 if (channel < 32) { ··· 2260 1052 * sure the bits you set per peripheral channel are 2261 1053 * cleared in the default config from the platform. 2262 1054 */ 2263 - ctrl_chained |= cohc->runtime_ctrl; 2264 - ctrl_last |= cohc->runtime_ctrl; 2265 - ctrl |= cohc->runtime_ctrl; 1055 + ctrl_chained |= cohc->ctrl; 1056 + ctrl_last |= cohc->ctrl; 1057 + ctrl |= cohc->ctrl; 2266 1058 2267 1059 if (direction == DMA_MEM_TO_DEV) { 2268 1060 u32 tx_flags = COH901318_CX_CTRL_PRDD_SOURCE | ··· 2311 1103 2312 1104 /* initiate allocated lli list */ 2313 1105 ret = coh901318_lli_fill_sg(&cohc->base->pool, lli, sgl, sg_len, 2314 - cohc_dev_addr(cohc), 1106 + cohc->addr, 2315 1107 ctrl_chained, 2316 1108 ctrl, 2317 1109 ctrl_last, ··· 2452 1244 dma_addr_t addr; 2453 1245 enum dma_slave_buswidth addr_width; 2454 1246 u32 maxburst; 2455 - u32 runtime_ctrl = 0; 1247 + u32 ctrl = 0; 2456 1248 int i = 0; 2457 1249 2458 1250 /* We only support mem to per or per to mem transfers */ ··· 2473 1265 addr_width); 2474 1266 switch (addr_width) { 2475 1267 case DMA_SLAVE_BUSWIDTH_1_BYTE: 2476 - runtime_ctrl |= 1268 + ctrl |= 2477 1269 COH901318_CX_CTRL_SRC_BUS_SIZE_8_BITS | 2478 1270 COH901318_CX_CTRL_DST_BUS_SIZE_8_BITS; 2479 1271 ··· 2485 1277 2486 1278 break; 2487 1279 case DMA_SLAVE_BUSWIDTH_2_BYTES: 2488 - runtime_ctrl |= 1280 + ctrl |= 2489 1281 COH901318_CX_CTRL_SRC_BUS_SIZE_16_BITS | 2490 1282 COH901318_CX_CTRL_DST_BUS_SIZE_16_BITS; 2491 1283 ··· 2498 1290 break; 2499 1291 case DMA_SLAVE_BUSWIDTH_4_BYTES: 2500 1292 /* Direction doesn't matter here, it's 32/32 bits */ 2501 - runtime_ctrl |= 1293 + ctrl |= 2502 1294 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | 2503 1295 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS; 2504 1296 ··· 2515 1307 return; 2516 1308 } 2517 1309 2518 - runtime_ctrl |= burst_sizes[i].reg; 1310 + ctrl |= burst_sizes[i].reg; 2519 1311 dev_dbg(COHC_2_DEV(cohc), 2520 1312 "selected burst size %d bytes for address width %d bytes, maxburst %d\n", 2521 1313 burst_sizes[i].burst_8bit, addr_width, maxburst); 2522 1314 2523 - cohc->runtime_addr = addr; 2524 - cohc->runtime_ctrl = runtime_ctrl; 1315 + cohc->addr = addr; 1316 + cohc->ctrl = ctrl; 2525 1317 } 2526 1318 2527 1319 static int ··· 2639 1431 static int __init coh901318_probe(struct platform_device *pdev) 2640 1432 { 2641 1433 int err = 0; 2642 - struct coh901318_platform *pdata; 2643 1434 struct coh901318_base *base; 2644 1435 int irq; 2645 1436 struct resource *io; ··· 2654 1447 pdev->dev.driver->name) == NULL) 2655 1448 return -ENOMEM; 2656 1449 2657 - pdata = pdev->dev.platform_data; 2658 - if (!pdata) 2659 - return -ENODEV; 2660 - 2661 1450 base = devm_kzalloc(&pdev->dev, 2662 1451 ALIGN(sizeof(struct coh901318_base), 4) + 2663 - pdata->max_channels * 1452 + U300_DMA_CHANNELS * 2664 1453 sizeof(struct coh901318_chan), 2665 1454 GFP_KERNEL); 2666 1455 if (!base) ··· 2669 1466 return -ENOMEM; 2670 1467 2671 1468 base->dev = &pdev->dev; 2672 - base->platform = pdata; 2673 1469 spin_lock_init(&base->pm.lock); 2674 1470 base->pm.started_channels = 0; 2675 1471 ··· 2690 1488 return err; 2691 1489 2692 1490 /* init channels for device transfers */ 2693 - coh901318_base_init(&base->dma_slave, base->platform->chans_slave, 1491 + coh901318_base_init(&base->dma_slave, dma_slave_channels, 2694 1492 base); 2695 1493 2696 1494 dma_cap_zero(base->dma_slave.cap_mask); ··· 2710 1508 goto err_register_slave; 2711 1509 2712 1510 /* init channels for memcpy */ 2713 - coh901318_base_init(&base->dma_memcpy, base->platform->chans_memcpy, 1511 + coh901318_base_init(&base->dma_memcpy, dma_memcpy_channels, 2714 1512 base); 2715 1513 2716 1514 dma_cap_zero(base->dma_memcpy.cap_mask);
+2 -2
drivers/dma/coh901318_lli.c
··· 11 11 #include <linux/memory.h> 12 12 #include <linux/gfp.h> 13 13 #include <linux/dmapool.h> 14 - #include <mach/coh901318.h> 14 + #include <linux/dmaengine.h> 15 15 16 - #include "coh901318_lli.h" 16 + #include "coh901318.h" 17 17 18 18 #if (defined(CONFIG_DEBUG_FS) && defined(CONFIG_U300_DEBUG)) 19 19 #define DEBUGFS_POOL_COUNTER_RESET(pool) (pool->debugfs_pool_counter = 0)
+26 -9
drivers/dma/coh901318_lli.h drivers/dma/coh901318.h
··· 1 1 /* 2 - * driver/dma/coh901318_lli.h 3 - * 4 - * Copyright (C) 2007-2009 ST-Ericsson 2 + * Copyright (C) 2007-2013 ST-Ericsson 5 3 * License terms: GNU General Public License (GPL) version 2 6 - * Support functions for handling lli for coh901318 4 + * DMA driver for COH 901 318 7 5 * Author: Per Friden <per.friden@stericsson.com> 8 6 */ 9 7 10 - #ifndef COH901318_LLI_H 11 - #define COH901318_LLI_H 8 + #ifndef COH901318_H 9 + #define COH901318_H 12 10 13 - #include <mach/coh901318.h> 11 + #define MAX_DMA_PACKET_SIZE_SHIFT 11 12 + #define MAX_DMA_PACKET_SIZE (1 << MAX_DMA_PACKET_SIZE_SHIFT) 14 13 15 14 struct device; 16 15 ··· 23 24 #endif 24 25 }; 25 26 26 - struct device; 27 + /** 28 + * struct coh901318_lli - linked list item for DMAC 29 + * @control: control settings for DMAC 30 + * @src_addr: transfer source address 31 + * @dst_addr: transfer destination address 32 + * @link_addr: physical address to next lli 33 + * @virt_link_addr: virtual address of next lli (only used by pool_free) 34 + * @phy_this: physical address of current lli (only used by pool_free) 35 + */ 36 + struct coh901318_lli { 37 + u32 control; 38 + dma_addr_t src_addr; 39 + dma_addr_t dst_addr; 40 + dma_addr_t link_addr; 41 + 42 + void *virt_link_addr; 43 + dma_addr_t phy_this; 44 + }; 45 + 27 46 /** 28 47 * coh901318_pool_create() - Creates an dma pool for lli:s 29 48 * @pool: pool handle ··· 138 121 u32 ctrl, u32 ctrl_last, 139 122 enum dma_transfer_direction dir, u32 ctrl_irq_mask); 140 123 141 - #endif /* COH901318_LLI_H */ 124 + #endif /* COH901318_H */
+2 -2
drivers/mfd/db8500-prcmu.c
··· 3102 3102 .pdata_size = sizeof(db8500_regulators), 3103 3103 }, 3104 3104 { 3105 - .name = "cpufreq-u8500", 3106 - .of_compatible = "stericsson,cpufreq-u8500", 3105 + .name = "cpufreq-ux500", 3106 + .of_compatible = "stericsson,cpufreq-ux500", 3107 3107 .platform_data = &db8500_cpufreq_table, 3108 3108 .pdata_size = sizeof(db8500_cpufreq_table), 3109 3109 },
+3 -1
drivers/mtd/nand/omap2.c
··· 1332 1332 dma_cap_mask_t mask; 1333 1333 unsigned sig; 1334 1334 struct resource *res; 1335 + struct mtd_part_parser_data ppdata = {}; 1335 1336 1336 1337 pdata = pdev->dev.platform_data; 1337 1338 if (pdata == NULL) { ··· 1558 1557 goto out_release_mem_region; 1559 1558 } 1560 1559 1561 - mtd_device_parse_register(&info->mtd, NULL, NULL, pdata->parts, 1560 + ppdata.of_node = pdata->of_node; 1561 + mtd_device_parse_register(&info->mtd, NULL, &ppdata, pdata->parts, 1562 1562 pdata->nr_parts); 1563 1563 1564 1564 platform_set_drvdata(pdev, &info->mtd);
+3 -1
drivers/mtd/onenand/omap2.c
··· 637 637 struct onenand_chip *this; 638 638 int r; 639 639 struct resource *res; 640 + struct mtd_part_parser_data ppdata = {}; 640 641 641 642 pdata = pdev->dev.platform_data; 642 643 if (pdata == NULL) { ··· 768 767 if ((r = onenand_scan(&c->mtd, 1)) < 0) 769 768 goto err_release_regulator; 770 769 771 - r = mtd_device_parse_register(&c->mtd, NULL, NULL, 770 + ppdata.of_node = pdata->of_node; 771 + r = mtd_device_parse_register(&c->mtd, NULL, &ppdata, 772 772 pdata ? pdata->parts : NULL, 773 773 pdata ? pdata->nr_parts : 0); 774 774 if (r)
+72
include/linux/platform_data/dma-coh901318.h
··· 1 + /* 2 + * Platform data for the COH901318 DMA controller 3 + * Copyright (C) 2007-2013 ST-Ericsson 4 + * License terms: GNU General Public License (GPL) version 2 5 + */ 6 + 7 + #ifndef PLAT_COH901318_H 8 + #define PLAT_COH901318_H 9 + 10 + #ifdef CONFIG_COH901318 11 + 12 + /* We only support the U300 DMA channels */ 13 + #define U300_DMA_MSL_TX_0 0 14 + #define U300_DMA_MSL_TX_1 1 15 + #define U300_DMA_MSL_TX_2 2 16 + #define U300_DMA_MSL_TX_3 3 17 + #define U300_DMA_MSL_TX_4 4 18 + #define U300_DMA_MSL_TX_5 5 19 + #define U300_DMA_MSL_TX_6 6 20 + #define U300_DMA_MSL_RX_0 7 21 + #define U300_DMA_MSL_RX_1 8 22 + #define U300_DMA_MSL_RX_2 9 23 + #define U300_DMA_MSL_RX_3 10 24 + #define U300_DMA_MSL_RX_4 11 25 + #define U300_DMA_MSL_RX_5 12 26 + #define U300_DMA_MSL_RX_6 13 27 + #define U300_DMA_MMCSD_RX_TX 14 28 + #define U300_DMA_MSPRO_TX 15 29 + #define U300_DMA_MSPRO_RX 16 30 + #define U300_DMA_UART0_TX 17 31 + #define U300_DMA_UART0_RX 18 32 + #define U300_DMA_APEX_TX 19 33 + #define U300_DMA_APEX_RX 20 34 + #define U300_DMA_PCM_I2S0_TX 21 35 + #define U300_DMA_PCM_I2S0_RX 22 36 + #define U300_DMA_PCM_I2S1_TX 23 37 + #define U300_DMA_PCM_I2S1_RX 24 38 + #define U300_DMA_XGAM_CDI 25 39 + #define U300_DMA_XGAM_PDI 26 40 + #define U300_DMA_SPI_TX 27 41 + #define U300_DMA_SPI_RX 28 42 + #define U300_DMA_GENERAL_PURPOSE_0 29 43 + #define U300_DMA_GENERAL_PURPOSE_1 30 44 + #define U300_DMA_GENERAL_PURPOSE_2 31 45 + #define U300_DMA_GENERAL_PURPOSE_3 32 46 + #define U300_DMA_GENERAL_PURPOSE_4 33 47 + #define U300_DMA_GENERAL_PURPOSE_5 34 48 + #define U300_DMA_GENERAL_PURPOSE_6 35 49 + #define U300_DMA_GENERAL_PURPOSE_7 36 50 + #define U300_DMA_GENERAL_PURPOSE_8 37 51 + #define U300_DMA_UART1_TX 38 52 + #define U300_DMA_UART1_RX 39 53 + 54 + #define U300_DMA_DEVICE_CHANNELS 32 55 + #define U300_DMA_CHANNELS 40 56 + 57 + /** 58 + * coh901318_filter_id() - DMA channel filter function 59 + * @chan: dma channel handle 60 + * @chan_id: id of dma channel to be filter out 61 + * 62 + * In dma_request_channel() it specifies what channel id to be requested 63 + */ 64 + bool coh901318_filter_id(struct dma_chan *chan, void *chan_id); 65 + #else 66 + static inline bool coh901318_filter_id(struct dma_chan *chan, void *chan_id) 67 + { 68 + return false; 69 + } 70 + #endif 71 + 72 + #endif /* PLAT_COH901318_H */
+3 -1
include/linux/platform_data/mtd-nand-omap2.h
··· 60 60 int devsize; 61 61 enum omap_ecc ecc_opt; 62 62 struct gpmc_nand_regs reg; 63 - }; 64 63 64 + /* for passing the partitions */ 65 + struct device_node *of_node; 66 + }; 65 67 #endif
+3
include/linux/platform_data/mtd-onenand-omap2.h
··· 29 29 u8 flags; 30 30 u8 regulator_can_sleep; 31 31 u8 skip_initial_unlocking; 32 + 33 + /* for passing the partitions */ 34 + struct device_node *of_node; 32 35 }; 33 36 #endif