diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2013-06-20 06:13:04 -0400 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2013-08-09 10:40:16 -0400 |
commit | 9b3452d1fa3c017d3664ff9e6a601daa6e0576eb (patch) | |
tree | ac2fdd71c45975f2430d094ef138ccd0a2d835c0 /arch/arm | |
parent | 97238b35d5bbb5d5312d83c30a429824b777619f (diff) |
usb: musb dma: add cppi41 dma driver
This driver is currently used by musb' cppi41 couter part. I may merge
both dma engine user of musb at some point but not just yet.
The driver seems to work in RX/TX mode in host mode, tested on mass
storage. I increaed the size of the TX / RX transfers and waited for the
core code to cancel a transfers and it seems to recover.
v2..3:
- use mall transfers on RX side and check data toggle.
- use rndis mode on tx side so we haveon interrupt for 4096 transfers.
- remove custom "transferred" hack and use dmaengine_tx_status() to
compute the total amount of data that has been transferred.
- cancel transfers and reclaim descriptors
v1..v2:
- RX path added
- dma mode 0 & 1 is working
- device tree nodes re-created.
Cc: Vinod Koul <vinod.koul@intel.com>
Cc: Dan Williams <djbw@fb.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/boot/dts/am335x-evm.dts | 4 | ||||
-rw-r--r-- | arch/arm/boot/dts/am33xx.dtsi | 61 |
2 files changed, 65 insertions, 0 deletions
diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts index b2987e03b19f..c26c16cace3c 100644 --- a/arch/arm/boot/dts/am335x-evm.dts +++ b/arch/arm/boot/dts/am335x-evm.dts | |||
@@ -193,6 +193,10 @@ | |||
193 | usb@47401800 { | 193 | usb@47401800 { |
194 | status = "okay"; | 194 | status = "okay"; |
195 | }; | 195 | }; |
196 | |||
197 | dma@07402000 { | ||
198 | status = "okay"; | ||
199 | }; | ||
196 | }; | 200 | }; |
197 | 201 | ||
198 | i2c1: i2c@4802a000 { | 202 | i2c1: i2c@4802a000 { |
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi index e1e773cd2556..24d63095ab83 100644 --- a/arch/arm/boot/dts/am33xx.dtsi +++ b/arch/arm/boot/dts/am33xx.dtsi | |||
@@ -383,6 +383,29 @@ | |||
383 | port-mode = <3>; | 383 | port-mode = <3>; |
384 | power = <250>; | 384 | power = <250>; |
385 | phys = <&usb0_phy>; | 385 | phys = <&usb0_phy>; |
386 | |||
387 | dmas = <&cppi41dma 0 0 &cppi41dma 1 0 | ||
388 | &cppi41dma 2 0 &cppi41dma 3 0 | ||
389 | &cppi41dma 4 0 &cppi41dma 5 0 | ||
390 | &cppi41dma 6 0 &cppi41dma 7 0 | ||
391 | &cppi41dma 8 0 &cppi41dma 9 0 | ||
392 | &cppi41dma 10 0 &cppi41dma 11 0 | ||
393 | &cppi41dma 12 0 &cppi41dma 13 0 | ||
394 | &cppi41dma 14 0 &cppi41dma 0 1 | ||
395 | &cppi41dma 1 1 &cppi41dma 2 1 | ||
396 | &cppi41dma 3 1 &cppi41dma 4 1 | ||
397 | &cppi41dma 5 1 &cppi41dma 6 1 | ||
398 | &cppi41dma 7 1 &cppi41dma 8 1 | ||
399 | &cppi41dma 9 1 &cppi41dma 10 1 | ||
400 | &cppi41dma 11 1 &cppi41dma 12 1 | ||
401 | &cppi41dma 13 1 &cppi41dma 14 1>; | ||
402 | dma-names = | ||
403 | "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", | ||
404 | "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", | ||
405 | "rx14", "rx15", | ||
406 | "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", | ||
407 | "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", | ||
408 | "tx14", "tx15"; | ||
386 | }; | 409 | }; |
387 | }; | 410 | }; |
388 | 411 | ||
@@ -415,8 +438,46 @@ | |||
415 | port-mode = <3>; | 438 | port-mode = <3>; |
416 | power = <250>; | 439 | power = <250>; |
417 | phys = <&usb1_phy>; | 440 | phys = <&usb1_phy>; |
441 | |||
442 | dmas = <&cppi41dma 15 0 &cppi41dma 16 0 | ||
443 | &cppi41dma 17 0 &cppi41dma 18 0 | ||
444 | &cppi41dma 19 0 &cppi41dma 20 0 | ||
445 | &cppi41dma 21 0 &cppi41dma 22 0 | ||
446 | &cppi41dma 23 0 &cppi41dma 24 0 | ||
447 | &cppi41dma 25 0 &cppi41dma 26 0 | ||
448 | &cppi41dma 27 0 &cppi41dma 28 0 | ||
449 | &cppi41dma 29 0 &cppi41dma 15 1 | ||
450 | &cppi41dma 16 1 &cppi41dma 17 1 | ||
451 | &cppi41dma 18 1 &cppi41dma 19 1 | ||
452 | &cppi41dma 20 1 &cppi41dma 21 1 | ||
453 | &cppi41dma 22 1 &cppi41dma 23 1 | ||
454 | &cppi41dma 24 1 &cppi41dma 25 1 | ||
455 | &cppi41dma 26 1 &cppi41dma 27 1 | ||
456 | &cppi41dma 28 1 &cppi41dma 29 1>; | ||
457 | dma-names = | ||
458 | "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", | ||
459 | "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", | ||
460 | "rx14", "rx15", | ||
461 | "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", | ||
462 | "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", | ||
463 | "tx14", "tx15"; | ||
418 | }; | 464 | }; |
419 | }; | 465 | }; |
466 | |||
467 | cppi41dma: dma@07402000 { | ||
468 | compatible = "ti,am3359-cppi41"; | ||
469 | reg = <0x47400000 0x1000 | ||
470 | 0x47402000 0x1000 | ||
471 | 0x47403000 0x1000 | ||
472 | 0x47404000 0x4000>; | ||
473 | reg-names = "glue controller scheduler queuemgr"; | ||
474 | interrupts = <17>; | ||
475 | interrupt-names = "glue"; | ||
476 | #dma-cells = <2>; | ||
477 | #dma-channels = <30>; | ||
478 | #dma-requests = <256>; | ||
479 | status = "disabled"; | ||
480 | }; | ||
420 | }; | 481 | }; |
421 | 482 | ||
422 | epwmss0: epwmss@48300000 { | 483 | epwmss0: epwmss@48300000 { |