Thread (33 messages) 33 messages, 7 authors, 2015-06-02

[PATCH 8/8] ARM: mvebu: a38x: Enable A38x XOR engine features

From: Lior Amsalem <hidden>
Date: 2015-05-13 07:17:59
Also in: linux-crypto, lkml

From: Andrew Lunn [mailto:andrew at lunn.ch]
Sent: Tuesday, May 12, 2015 7:13 PM

On Tue, May 12, 2015 at 05:37:43PM +0200, Maxime Ripard wrote:
quoted
From: Lior Amsalem <redacted>

The new XOR engine has a new compatible of its own, together with new
channel capabilities.

Use that new compatible now that we have a driver that can handle it.

Signed-off-by: Lior Amsalem <redacted>
Reviewed-by: Ofer Heifetz <redacted>
Reviewed-by: Nadav Haklai <redacted>
Tested-by: Nadav Haklai <redacted>
---
 arch/arm/boot/dts/armada-38x.dtsi | 20 ++++++--------------
 1 file changed, 6 insertions(+), 14 deletions(-)
diff --git a/arch/arm/boot/dts/armada-38x.dtsi
b/arch/arm/boot/dts/armada-38x.dtsi
index ed2dd8ba4080..6d07b7389415 100644
--- a/arch/arm/boot/dts/armada-38x.dtsi
+++ b/arch/arm/boot/dts/armada-38x.dtsi
@@ -448,7 +448,7 @@
 			};

 			xor at 60800 {
-				compatible = "marvell,orion-xor";
+				compatible = "marvell,a38x-xor";
 				reg = <0x60800 0x100
 				       0x60a00 0x100>;
 				clocks = <&gateclk 22>;
@@ -458,17 +458,13 @@
 					interrupts = <GIC_SPI 22
IRQ_TYPE_LEVEL_HIGH>;
quoted
 					dmacap,memcpy;
 					dmacap,xor;
-				};
-				xor01 {
-					interrupts = <GIC_SPI 23
IRQ_TYPE_LEVEL_HIGH>;
quoted
-					dmacap,memcpy;
-					dmacap,xor;
-					dmacap,memset;
+					dmacap,pq;
+					dmacap,interrupt;
Does this mean the hardware only has one channel?
And memset is no longer supported?
The hardware has two channels per engine and two engines.
However, both on HW side (both channels are on the same "bus port")
and SW (the dma subsystem will assign one channel per CPU).
we found it's better (performance wise) to use only one channel on each engine
and let the framework assign one per CPU.
This way, descriptors chaining was better (cause of the depended descriptors
problem) and overall interrupt number reduced.

Yes, since memset is a problematic one. It can only be done via registers
(and not on descriptors level) plus no one really needs it...
    Andrew

quoted
 				};
 			};

 			xor at 60900 {
-				compatible = "marvell,orion-xor";
+				compatible = "marvell,a38x-xor";
 				reg = <0x60900 0x100
 				       0x60b00 0x100>;
 				clocks = <&gateclk 28>;
@@ -478,12 +474,8 @@
 					interrupts = <GIC_SPI 65
IRQ_TYPE_LEVEL_HIGH>;
quoted
 					dmacap,memcpy;
 					dmacap,xor;
-				};
-				xor11 {
-					interrupts = <GIC_SPI 66
IRQ_TYPE_LEVEL_HIGH>;
quoted
-					dmacap,memcpy;
-					dmacap,xor;
-					dmacap,memset;
+					dmacap,pq;
+					dmacap,interrupt;
 				};
 			};

--
2.4.0

Regards,
Lior Amsalem
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help