linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers
@ 2024-01-27 16:32 Chen-Yu Tsai
  2024-01-27 16:32 ` [PATCH v2 1/7] dt-bindings: sound: sun4i-spdif: Fix requirements for H6 Chen-Yu Tsai
                   ` (10 more replies)
  0 siblings, 11 replies; 15+ messages in thread
From: Chen-Yu Tsai @ 2024-01-27 16:32 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Vinod Koul
  Cc: Chen-Yu Tsai, devicetree, linux-arm-kernel, linux-sunxi,
	linux-sound, dmaengine, linux-kernel

From: Chen-Yu Tsai <wens@csie.org>

Hi everyone,

This is v2 of my H616/H618 DMA and SPDIF controller series.

Changes since v1:
- Switch to "contains" for if-properties statement
- Fall back to A100 instead of H6
- Add DMA channels for r_i2c

This series adds DMA and SPDIF controllers for the H616 and H618.
There's also a fix for SPDIF on H6: the controller also has a
receiver that was not correctly modeled.

Patch 1 fixes the binding for the SPDIF controller on the H6 by adding
the RX DMA channel.

Patch 2 adds a compatible string for the H616's SPDIF transmitter to the
binding.

Patch 3 adds a compatible string for the H616's SPDIF transmitter to the
driver.

Patch 4 adds a compatible string for the H616's DMA controller.

Patch 5 adds the RX DMA channel to the SPDIF controller on the H6.

Patch 6 adds a device node for the H616's DMA controller.

Patch 7 adds a device node for the H616's SPDIF controller.


This was tested on the Orange Pi Zero 3 with SPI flash transfers and
SPDIF audio output. The H6 SPDIF change is superficial as the driver
does not support receiving / capturing an audio stream.

Please have a look. I expect the first three patches to go through the
ASoC tree, the fourth patch to either go through the DMA tree, or
through the sunxi tree with an Ack, and the last three through the sunxi
tree.


Thanks
ChenYu


Chen-Yu Tsai (7):
  dt-bindings: sound: sun4i-spdif: Fix requirements for H6
  dt-bindings: sound: sun4i-spdif: Add Allwinner H616 compatible
  ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616
  dt-bindings: dma: allwinner,sun50i-a64-dma: Add compatible for H616
  arm64: dts: allwinner: h6: Add RX DMA channel for SPDIF
  arm64: dts: allwinner: h616: Add DMA controller and DMA channels
  arm64: dts: allwinner: h616: Add SPDIF device node

 .../dma/allwinner,sun50i-a64-dma.yaml         | 12 ++--
 .../sound/allwinner,sun4i-a10-spdif.yaml      |  5 +-
 .../dts/allwinner/sun50i-h6-beelink-gs1.dts   |  2 +
 .../boot/dts/allwinner/sun50i-h6-tanix.dtsi   |  2 +
 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi  |  7 +--
 .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 61 +++++++++++++++++++
 sound/soc/sunxi/sun4i-spdif.c                 |  5 ++
 7 files changed, 85 insertions(+), 9 deletions(-)

-- 
2.39.2


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH v2 1/7] dt-bindings: sound: sun4i-spdif: Fix requirements for H6
  2024-01-27 16:32 [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Chen-Yu Tsai
@ 2024-01-27 16:32 ` Chen-Yu Tsai
  2024-01-27 16:32 ` [PATCH v2 2/7] dt-bindings: sound: sun4i-spdif: Add Allwinner H616 compatible Chen-Yu Tsai
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Chen-Yu Tsai @ 2024-01-27 16:32 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Vinod Koul
  Cc: Chen-Yu Tsai, devicetree, linux-arm-kernel, linux-sunxi,
	linux-sound, dmaengine, linux-kernel, Conor Dooley

From: Chen-Yu Tsai <wens@csie.org>

When the H6 was added to the bindings, only the TX DMA channel was
added. As the hardware supports both transmit and receive functions,
the binding is missing the RX DMA channel and is thus incorrect.
Also, the reset control was not made mandatory.

Add the RX DMA channel for SPDIF on H6 by removing the compatible from
the list of compatibles that should only have a TX DMA channel. And add
the H6 compatible to the list of compatibles that require the reset
control to be present.

Fixes: b20453031472 ("dt-bindings: sound: sun4i-spdif: Add Allwinner H6 compatible")
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
---
 .../devicetree/bindings/sound/allwinner,sun4i-a10-spdif.yaml    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/sound/allwinner,sun4i-a10-spdif.yaml b/Documentation/devicetree/bindings/sound/allwinner,sun4i-a10-spdif.yaml
index 8108c564dd78..98e2e053fa19 100644
--- a/Documentation/devicetree/bindings/sound/allwinner,sun4i-a10-spdif.yaml
+++ b/Documentation/devicetree/bindings/sound/allwinner,sun4i-a10-spdif.yaml
@@ -62,6 +62,7 @@ allOf:
             enum:
               - allwinner,sun6i-a31-spdif
               - allwinner,sun8i-h3-spdif
+              - allwinner,sun50i-h6-spdif
 
     then:
       required:
@@ -73,7 +74,6 @@ allOf:
           contains:
             enum:
               - allwinner,sun8i-h3-spdif
-              - allwinner,sun50i-h6-spdif
 
     then:
       properties:
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 2/7] dt-bindings: sound: sun4i-spdif: Add Allwinner H616 compatible
  2024-01-27 16:32 [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Chen-Yu Tsai
  2024-01-27 16:32 ` [PATCH v2 1/7] dt-bindings: sound: sun4i-spdif: Fix requirements for H6 Chen-Yu Tsai
@ 2024-01-27 16:32 ` Chen-Yu Tsai
  2024-01-27 16:32 ` [PATCH v2 3/7] ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616 Chen-Yu Tsai
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Chen-Yu Tsai @ 2024-01-27 16:32 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Vinod Koul
  Cc: Chen-Yu Tsai, devicetree, linux-arm-kernel, linux-sunxi,
	linux-sound, dmaengine, linux-kernel, Conor Dooley

From: Chen-Yu Tsai <wens@csie.org>

The SPDIF hardware block found in the H616 SoC has the same layout as
the one found in the H6 SoC, except that it is missing the receiver
side.

Add a new compatible string for it.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
---
 .../devicetree/bindings/sound/allwinner,sun4i-a10-spdif.yaml   | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/allwinner,sun4i-a10-spdif.yaml b/Documentation/devicetree/bindings/sound/allwinner,sun4i-a10-spdif.yaml
index 98e2e053fa19..aa32dc950e72 100644
--- a/Documentation/devicetree/bindings/sound/allwinner,sun4i-a10-spdif.yaml
+++ b/Documentation/devicetree/bindings/sound/allwinner,sun4i-a10-spdif.yaml
@@ -22,6 +22,7 @@ properties:
       - const: allwinner,sun6i-a31-spdif
       - const: allwinner,sun8i-h3-spdif
       - const: allwinner,sun50i-h6-spdif
+      - const: allwinner,sun50i-h616-spdif
       - items:
           - const: allwinner,sun8i-a83t-spdif
           - const: allwinner,sun8i-h3-spdif
@@ -63,6 +64,7 @@ allOf:
               - allwinner,sun6i-a31-spdif
               - allwinner,sun8i-h3-spdif
               - allwinner,sun50i-h6-spdif
+              - allwinner,sun50i-h616-spdif
 
     then:
       required:
@@ -74,6 +76,7 @@ allOf:
           contains:
             enum:
               - allwinner,sun8i-h3-spdif
+              - allwinner,sun50i-h616-spdif
 
     then:
       properties:
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 3/7] ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616
  2024-01-27 16:32 [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Chen-Yu Tsai
  2024-01-27 16:32 ` [PATCH v2 1/7] dt-bindings: sound: sun4i-spdif: Fix requirements for H6 Chen-Yu Tsai
  2024-01-27 16:32 ` [PATCH v2 2/7] dt-bindings: sound: sun4i-spdif: Add Allwinner H616 compatible Chen-Yu Tsai
@ 2024-01-27 16:32 ` Chen-Yu Tsai
  2024-01-27 16:32 ` [PATCH v2 4/7] dt-bindings: dma: allwinner,sun50i-a64-dma: Add compatible for H616 Chen-Yu Tsai
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Chen-Yu Tsai @ 2024-01-27 16:32 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Vinod Koul
  Cc: Chen-Yu Tsai, devicetree, linux-arm-kernel, linux-sunxi,
	linux-sound, dmaengine, linux-kernel, Andre Przywara

From: Chen-Yu Tsai <wens@csie.org>

The SPDIF hardware block found in the H616 SoC has the same layout as
the one found in the H6 SoC, except that it is missing the receiver
side.

Since the driver currently only supports the transmit function, support
for the H616 is identical to what is currently done for the H6.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
---
 sound/soc/sunxi/sun4i-spdif.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/sound/soc/sunxi/sun4i-spdif.c b/sound/soc/sunxi/sun4i-spdif.c
index 702386823d17..f41c30955857 100644
--- a/sound/soc/sunxi/sun4i-spdif.c
+++ b/sound/soc/sunxi/sun4i-spdif.c
@@ -577,6 +577,11 @@ static const struct of_device_id sun4i_spdif_of_match[] = {
 		.compatible = "allwinner,sun50i-h6-spdif",
 		.data = &sun50i_h6_spdif_quirks,
 	},
+	{
+		.compatible = "allwinner,sun50i-h616-spdif",
+		/* Essentially the same as the H6, but without RX */
+		.data = &sun50i_h6_spdif_quirks,
+	},
 	{ /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(of, sun4i_spdif_of_match);
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 4/7] dt-bindings: dma: allwinner,sun50i-a64-dma: Add compatible for H616
  2024-01-27 16:32 [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Chen-Yu Tsai
                   ` (2 preceding siblings ...)
  2024-01-27 16:32 ` [PATCH v2 3/7] ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616 Chen-Yu Tsai
@ 2024-01-27 16:32 ` Chen-Yu Tsai
  2024-01-28 11:52   ` Conor Dooley
  2024-01-29 16:59   ` Andre Przywara
  2024-01-27 16:32 ` [PATCH v2 5/7] arm64: dts: allwinner: h6: Add RX DMA channel for SPDIF Chen-Yu Tsai
                   ` (6 subsequent siblings)
  10 siblings, 2 replies; 15+ messages in thread
From: Chen-Yu Tsai @ 2024-01-27 16:32 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Vinod Koul
  Cc: Chen-Yu Tsai, devicetree, linux-arm-kernel, linux-sunxi,
	linux-sound, dmaengine, linux-kernel

From: Chen-Yu Tsai <wens@csie.org>

The DMA controllers found on the H616 and H618 are the same as the one
found on the A100. The only difference is the DMA endpoint (DRQ) layout.

Since the number of channels and endpoints are described with additional
generic properties, just add a new H616-specific compatible string and
fallback to the A100 one.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
Changes since v1:
- Switch to "contains" for if-properties statement
- Fall back to A100 instead of H6

 .../bindings/dma/allwinner,sun50i-a64-dma.yaml       | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml b/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml
index ec2d7a789ffe..0f2501f72cca 100644
--- a/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml
+++ b/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml
@@ -28,6 +28,9 @@ properties:
       - items:
           - const: allwinner,sun8i-r40-dma
           - const: allwinner,sun50i-a64-dma
+      - items:
+          - const: allwinner,sun50i-h616-dma
+          - const: allwinner,sun50i-a100-dma
 
   reg:
     maxItems: 1
@@ -59,10 +62,11 @@ required:
 if:
   properties:
     compatible:
-      enum:
-        - allwinner,sun20i-d1-dma
-        - allwinner,sun50i-a100-dma
-        - allwinner,sun50i-h6-dma
+      contains:
+        enum:
+          - allwinner,sun20i-d1-dma
+          - allwinner,sun50i-a100-dma
+          - allwinner,sun50i-h6-dma
 
 then:
   properties:
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 5/7] arm64: dts: allwinner: h6: Add RX DMA channel for SPDIF
  2024-01-27 16:32 [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Chen-Yu Tsai
                   ` (3 preceding siblings ...)
  2024-01-27 16:32 ` [PATCH v2 4/7] dt-bindings: dma: allwinner,sun50i-a64-dma: Add compatible for H616 Chen-Yu Tsai
@ 2024-01-27 16:32 ` Chen-Yu Tsai
  2024-01-27 16:32 ` [PATCH v2 6/7] arm64: dts: allwinner: h616: Add DMA controller and DMA channels Chen-Yu Tsai
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Chen-Yu Tsai @ 2024-01-27 16:32 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Vinod Koul
  Cc: Chen-Yu Tsai, devicetree, linux-arm-kernel, linux-sunxi,
	linux-sound, dmaengine, linux-kernel, Andre Przywara

From: Chen-Yu Tsai <wens@csie.org>

The SPDIF hardware found on the H6 supports both transmit and receive
functions. However it is missing the RX DMA channel.

Add the SPDIF hardware block's RX DMA channel. Also remove the
by-default pinmux, since the end device can choose to implement
either or both functionalities.

Fixes: f95b598df419 ("arm64: dts: allwinner: Add SPDIF node for Allwinner H6")
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
---
 arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts | 2 ++
 arch/arm64/boot/dts/allwinner/sun50i-h6-tanix.dtsi      | 2 ++
 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi            | 7 +++----
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts
index 9ec49ac2f6fd..381d58cea092 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts
@@ -291,6 +291,8 @@ sw {
 };
 
 &spdif {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spdif_tx_pin>;
 	status = "okay";
 };
 
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix.dtsi
index 4903d6358112..855b7d43bc50 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix.dtsi
@@ -166,6 +166,8 @@ &r_ir {
 };
 
 &spdif {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spdif_tx_pin>;
 	status = "okay";
 };
 
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
index ca1d287a0a01..d11e5041bae9 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
@@ -406,6 +406,7 @@ spi1_cs_pin: spi1-cs-pin {
 				function = "spi1";
 			};
 
+			/omit-if-no-ref/
 			spdif_tx_pin: spdif-tx-pin {
 				pins = "PH7";
 				function = "spdif";
@@ -655,10 +656,8 @@ spdif: spdif@5093000 {
 			clocks = <&ccu CLK_BUS_SPDIF>, <&ccu CLK_SPDIF>;
 			clock-names = "apb", "spdif";
 			resets = <&ccu RST_BUS_SPDIF>;
-			dmas = <&dma 2>;
-			dma-names = "tx";
-			pinctrl-names = "default";
-			pinctrl-0 = <&spdif_tx_pin>;
+			dmas = <&dma 2>, <&dma 2>;
+			dma-names = "rx", "tx";
 			status = "disabled";
 		};
 
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 6/7] arm64: dts: allwinner: h616: Add DMA controller and DMA channels
  2024-01-27 16:32 [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Chen-Yu Tsai
                   ` (4 preceding siblings ...)
  2024-01-27 16:32 ` [PATCH v2 5/7] arm64: dts: allwinner: h6: Add RX DMA channel for SPDIF Chen-Yu Tsai
@ 2024-01-27 16:32 ` Chen-Yu Tsai
  2024-01-29 16:03   ` Andre Przywara
  2024-01-27 16:32 ` [PATCH v2 7/7] arm64: dts: allwinner: h616: Add SPDIF device node Chen-Yu Tsai
                   ` (4 subsequent siblings)
  10 siblings, 1 reply; 15+ messages in thread
From: Chen-Yu Tsai @ 2024-01-27 16:32 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Vinod Koul
  Cc: Chen-Yu Tsai, devicetree, linux-arm-kernel, linux-sunxi,
	linux-sound, dmaengine, linux-kernel

From: Chen-Yu Tsai <wens@csie.org>

The DMA controllers found on the H616 and H618 are the same as the one
found on the A100. The only difference is the DMA endpoint (DRQ) layout.

Add a device node for it, and add DMA channels for existing peripherals.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
Changes since v1:
- Fall back to A100 instead of H6
- Add DMA channels for r_i2c

 .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 41 +++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
index d549d277d972..885809137b9d 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
@@ -133,6 +133,19 @@ ccu: clock@3001000 {
 			#reset-cells = <1>;
 		};
 
+		dma: dma-controller@3002000 {
+			compatible = "allwinner,sun50i-h616-dma",
+				     "allwinner,sun50i-a100-dma";
+			reg = <0x03002000 0x1000>;
+			interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>;
+			clock-names = "bus", "mbus";
+			dma-channels = <16>;
+			dma-requests = <49>;
+			resets = <&ccu RST_BUS_DMA>;
+			#dma-cells = <1>;
+		};
+
 		sid: efuse@3006000 {
 			compatible = "allwinner,sun50i-h616-sid", "allwinner,sun50i-a64-sid";
 			reg = <0x03006000 0x1000>;
@@ -339,6 +352,8 @@ uart0: serial@5000000 {
 			reg-shift = <2>;
 			reg-io-width = <4>;
 			clocks = <&ccu CLK_BUS_UART0>;
+			dmas = <&dma 14>, <&dma 14>;
+			dma-names = "tx", "rx";
 			resets = <&ccu RST_BUS_UART0>;
 			status = "disabled";
 		};
@@ -350,6 +365,8 @@ uart1: serial@5000400 {
 			reg-shift = <2>;
 			reg-io-width = <4>;
 			clocks = <&ccu CLK_BUS_UART1>;
+			dmas = <&dma 15>, <&dma 15>;
+			dma-names = "tx", "rx";
 			resets = <&ccu RST_BUS_UART1>;
 			status = "disabled";
 		};
@@ -361,6 +378,8 @@ uart2: serial@5000800 {
 			reg-shift = <2>;
 			reg-io-width = <4>;
 			clocks = <&ccu CLK_BUS_UART2>;
+			dmas = <&dma 16>, <&dma 16>;
+			dma-names = "tx", "rx";
 			resets = <&ccu RST_BUS_UART2>;
 			status = "disabled";
 		};
@@ -372,6 +391,8 @@ uart3: serial@5000c00 {
 			reg-shift = <2>;
 			reg-io-width = <4>;
 			clocks = <&ccu CLK_BUS_UART3>;
+			dmas = <&dma 17>, <&dma 17>;
+			dma-names = "tx", "rx";
 			resets = <&ccu RST_BUS_UART3>;
 			status = "disabled";
 		};
@@ -383,6 +404,8 @@ uart4: serial@5001000 {
 			reg-shift = <2>;
 			reg-io-width = <4>;
 			clocks = <&ccu CLK_BUS_UART4>;
+			dmas = <&dma 18>, <&dma 18>;
+			dma-names = "tx", "rx";
 			resets = <&ccu RST_BUS_UART4>;
 			status = "disabled";
 		};
@@ -394,6 +417,8 @@ uart5: serial@5001400 {
 			reg-shift = <2>;
 			reg-io-width = <4>;
 			clocks = <&ccu CLK_BUS_UART5>;
+			dmas = <&dma 19>, <&dma 19>;
+			dma-names = "tx", "rx";
 			resets = <&ccu RST_BUS_UART5>;
 			status = "disabled";
 		};
@@ -405,6 +430,8 @@ i2c0: i2c@5002000 {
 			reg = <0x05002000 0x400>;
 			interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&ccu CLK_BUS_I2C0>;
+			dmas = <&dma 43>, <&dma 43>;
+			dma-names = "rx", "tx";
 			resets = <&ccu RST_BUS_I2C0>;
 			pinctrl-names = "default";
 			pinctrl-0 = <&i2c0_pins>;
@@ -420,6 +447,8 @@ i2c1: i2c@5002400 {
 			reg = <0x05002400 0x400>;
 			interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&ccu CLK_BUS_I2C1>;
+			dmas = <&dma 44>, <&dma 44>;
+			dma-names = "rx", "tx";
 			resets = <&ccu RST_BUS_I2C1>;
 			status = "disabled";
 			#address-cells = <1>;
@@ -433,6 +462,8 @@ i2c2: i2c@5002800 {
 			reg = <0x05002800 0x400>;
 			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&ccu CLK_BUS_I2C2>;
+			dmas = <&dma 45>, <&dma 45>;
+			dma-names = "rx", "tx";
 			resets = <&ccu RST_BUS_I2C2>;
 			status = "disabled";
 			#address-cells = <1>;
@@ -446,6 +477,8 @@ i2c3: i2c@5002c00 {
 			reg = <0x05002c00 0x400>;
 			interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&ccu CLK_BUS_I2C3>;
+			dmas = <&dma 46>, <&dma 46>;
+			dma-names = "rx", "tx";
 			resets = <&ccu RST_BUS_I2C3>;
 			status = "disabled";
 			#address-cells = <1>;
@@ -459,6 +492,8 @@ i2c4: i2c@5003000 {
 			reg = <0x05003000 0x400>;
 			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&ccu CLK_BUS_I2C4>;
+			dmas = <&dma 47>, <&dma 47>;
+			dma-names = "rx", "tx";
 			resets = <&ccu RST_BUS_I2C4>;
 			status = "disabled";
 			#address-cells = <1>;
@@ -472,6 +507,8 @@ spi0: spi@5010000 {
 			interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
 			clock-names = "ahb", "mod";
+			dmas = <&dma 22>, <&dma 22>;
+			dma-names = "rx", "tx";
 			resets = <&ccu RST_BUS_SPI0>;
 			status = "disabled";
 			#address-cells = <1>;
@@ -485,6 +522,8 @@ spi1: spi@5011000 {
 			interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
 			clock-names = "ahb", "mod";
+			dmas = <&dma 23>, <&dma 23>;
+			dma-names = "rx", "tx";
 			resets = <&ccu RST_BUS_SPI1>;
 			status = "disabled";
 			#address-cells = <1>;
@@ -734,6 +773,8 @@ r_i2c: i2c@7081400 {
 			reg = <0x07081400 0x400>;
 			interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&r_ccu CLK_R_APB2_I2C>;
+			dmas = <&dma 48>, <&dma 48>;
+			dma-names = "rx", "tx";
 			resets = <&r_ccu RST_R_APB2_I2C>;
 			status = "disabled";
 			#address-cells = <1>;
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 7/7] arm64: dts: allwinner: h616: Add SPDIF device node
  2024-01-27 16:32 [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Chen-Yu Tsai
                   ` (5 preceding siblings ...)
  2024-01-27 16:32 ` [PATCH v2 6/7] arm64: dts: allwinner: h616: Add DMA controller and DMA channels Chen-Yu Tsai
@ 2024-01-27 16:32 ` Chen-Yu Tsai
  2024-01-29 16:55 ` [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Mark Brown
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Chen-Yu Tsai @ 2024-01-27 16:32 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Vinod Koul
  Cc: Chen-Yu Tsai, devicetree, linux-arm-kernel, linux-sunxi,
	linux-sound, dmaengine, linux-kernel, Andre Przywara

From: Chen-Yu Tsai <wens@csie.org>

The H616 SoC has an SPDIF transmitter hardware block, which has the same
layout as the one in the H6, minus the receiver side.

Add a device node for it, and a default pinmux.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
---
 .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 20 +++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
index 885809137b9d..b1bf4fb5fc58 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
@@ -253,6 +253,11 @@ spi1_cs0_pin: spi1-cs0-pin {
 				function = "spi1";
 			};
 
+			spdif_tx_pin: spdif-tx-pin {
+				pins = "PH4";
+				function = "spdif";
+			};
+
 			uart0_ph_pins: uart0-ph-pins {
 				pins = "PH0", "PH1";
 				function = "uart0";
@@ -550,6 +555,21 @@ mdio0: mdio {
 			};
 		};
 
+		spdif: spdif@5093000 {
+			compatible = "allwinner,sun50i-h616-spdif";
+			reg = <0x05093000 0x400>;
+			interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&ccu CLK_BUS_SPDIF>, <&ccu CLK_SPDIF>;
+			clock-names = "apb", "spdif";
+			resets = <&ccu RST_BUS_SPDIF>;
+			dmas = <&dma 2>;
+			dma-names = "tx";
+			pinctrl-names = "default";
+			pinctrl-0 = <&spdif_tx_pin>;
+			#sound-dai-cells = <0>;
+			status = "disabled";
+		};
+
 		usbotg: usb@5100000 {
 			compatible = "allwinner,sun50i-h616-musb",
 				     "allwinner,sun8i-h3-musb";
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 4/7] dt-bindings: dma: allwinner,sun50i-a64-dma: Add compatible for H616
  2024-01-27 16:32 ` [PATCH v2 4/7] dt-bindings: dma: allwinner,sun50i-a64-dma: Add compatible for H616 Chen-Yu Tsai
@ 2024-01-28 11:52   ` Conor Dooley
  2024-01-29 16:59   ` Andre Przywara
  1 sibling, 0 replies; 15+ messages in thread
From: Conor Dooley @ 2024-01-28 11:52 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Vinod Koul, Chen-Yu Tsai, devicetree,
	linux-arm-kernel, linux-sunxi, linux-sound, dmaengine,
	linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1895 bytes --]

On Sun, Jan 28, 2024 at 12:32:44AM +0800, Chen-Yu Tsai wrote:
> From: Chen-Yu Tsai <wens@csie.org>
> 
> The DMA controllers found on the H616 and H618 are the same as the one
> found on the A100. The only difference is the DMA endpoint (DRQ) layout.
> 
> Since the number of channels and endpoints are described with additional
> generic properties, just add a new H616-specific compatible string and
> fallback to the A100 one.
> 
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>

Acked-by: Conor Dooley <conor.dooley@microchip.com>

Cheers,
Conor.

> ---
> Changes since v1:
> - Switch to "contains" for if-properties statement
> - Fall back to A100 instead of H6
> 
>  .../bindings/dma/allwinner,sun50i-a64-dma.yaml       | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml b/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml
> index ec2d7a789ffe..0f2501f72cca 100644
> --- a/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml
> +++ b/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml
> @@ -28,6 +28,9 @@ properties:
>        - items:
>            - const: allwinner,sun8i-r40-dma
>            - const: allwinner,sun50i-a64-dma
> +      - items:
> +          - const: allwinner,sun50i-h616-dma
> +          - const: allwinner,sun50i-a100-dma
>  
>    reg:
>      maxItems: 1
> @@ -59,10 +62,11 @@ required:
>  if:
>    properties:
>      compatible:
> -      enum:
> -        - allwinner,sun20i-d1-dma
> -        - allwinner,sun50i-a100-dma
> -        - allwinner,sun50i-h6-dma
> +      contains:
> +        enum:
> +          - allwinner,sun20i-d1-dma
> +          - allwinner,sun50i-a100-dma
> +          - allwinner,sun50i-h6-dma
>  
>  then:
>    properties:
> -- 
> 2.39.2
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 6/7] arm64: dts: allwinner: h616: Add DMA controller and DMA channels
  2024-01-27 16:32 ` [PATCH v2 6/7] arm64: dts: allwinner: h616: Add DMA controller and DMA channels Chen-Yu Tsai
@ 2024-01-29 16:03   ` Andre Przywara
  0 siblings, 0 replies; 15+ messages in thread
From: Andre Przywara @ 2024-01-29 16:03 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Vinod Koul, Chen-Yu Tsai, devicetree,
	linux-arm-kernel, linux-sunxi, linux-sound, dmaengine,
	linux-kernel

On Sun, 28 Jan 2024 00:32:46 +0800
Chen-Yu Tsai <wens@kernel.org> wrote:

> From: Chen-Yu Tsai <wens@csie.org>
> 
> The DMA controllers found on the H616 and H618 are the same as the one
> found on the A100. The only difference is the DMA endpoint (DRQ) layout.
> 
> Add a device node for it, and add DMA channels for existing peripherals.

Thanks for the changes! I compared all bits against the manual: they match.

> Signed-off-by: Chen-Yu Tsai <wens@csie.org>

Reviewed-by: Andre Przywara <andre.przywara@arm.com>

Cheers,
Andre

> ---
> Changes since v1:
> - Fall back to A100 instead of H6
> - Add DMA channels for r_i2c
> 
>  .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 41 +++++++++++++++++++
>  1 file changed, 41 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> index d549d277d972..885809137b9d 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> @@ -133,6 +133,19 @@ ccu: clock@3001000 {
>  			#reset-cells = <1>;
>  		};
>  
> +		dma: dma-controller@3002000 {
> +			compatible = "allwinner,sun50i-h616-dma",
> +				     "allwinner,sun50i-a100-dma";
> +			reg = <0x03002000 0x1000>;
> +			interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>;
> +			clock-names = "bus", "mbus";
> +			dma-channels = <16>;
> +			dma-requests = <49>;
> +			resets = <&ccu RST_BUS_DMA>;
> +			#dma-cells = <1>;
> +		};
> +
>  		sid: efuse@3006000 {
>  			compatible = "allwinner,sun50i-h616-sid", "allwinner,sun50i-a64-sid";
>  			reg = <0x03006000 0x1000>;
> @@ -339,6 +352,8 @@ uart0: serial@5000000 {
>  			reg-shift = <2>;
>  			reg-io-width = <4>;
>  			clocks = <&ccu CLK_BUS_UART0>;
> +			dmas = <&dma 14>, <&dma 14>;
> +			dma-names = "tx", "rx";
>  			resets = <&ccu RST_BUS_UART0>;
>  			status = "disabled";
>  		};
> @@ -350,6 +365,8 @@ uart1: serial@5000400 {
>  			reg-shift = <2>;
>  			reg-io-width = <4>;
>  			clocks = <&ccu CLK_BUS_UART1>;
> +			dmas = <&dma 15>, <&dma 15>;
> +			dma-names = "tx", "rx";
>  			resets = <&ccu RST_BUS_UART1>;
>  			status = "disabled";
>  		};
> @@ -361,6 +378,8 @@ uart2: serial@5000800 {
>  			reg-shift = <2>;
>  			reg-io-width = <4>;
>  			clocks = <&ccu CLK_BUS_UART2>;
> +			dmas = <&dma 16>, <&dma 16>;
> +			dma-names = "tx", "rx";
>  			resets = <&ccu RST_BUS_UART2>;
>  			status = "disabled";
>  		};
> @@ -372,6 +391,8 @@ uart3: serial@5000c00 {
>  			reg-shift = <2>;
>  			reg-io-width = <4>;
>  			clocks = <&ccu CLK_BUS_UART3>;
> +			dmas = <&dma 17>, <&dma 17>;
> +			dma-names = "tx", "rx";
>  			resets = <&ccu RST_BUS_UART3>;
>  			status = "disabled";
>  		};
> @@ -383,6 +404,8 @@ uart4: serial@5001000 {
>  			reg-shift = <2>;
>  			reg-io-width = <4>;
>  			clocks = <&ccu CLK_BUS_UART4>;
> +			dmas = <&dma 18>, <&dma 18>;
> +			dma-names = "tx", "rx";
>  			resets = <&ccu RST_BUS_UART4>;
>  			status = "disabled";
>  		};
> @@ -394,6 +417,8 @@ uart5: serial@5001400 {
>  			reg-shift = <2>;
>  			reg-io-width = <4>;
>  			clocks = <&ccu CLK_BUS_UART5>;
> +			dmas = <&dma 19>, <&dma 19>;
> +			dma-names = "tx", "rx";
>  			resets = <&ccu RST_BUS_UART5>;
>  			status = "disabled";
>  		};
> @@ -405,6 +430,8 @@ i2c0: i2c@5002000 {
>  			reg = <0x05002000 0x400>;
>  			interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
>  			clocks = <&ccu CLK_BUS_I2C0>;
> +			dmas = <&dma 43>, <&dma 43>;
> +			dma-names = "rx", "tx";
>  			resets = <&ccu RST_BUS_I2C0>;
>  			pinctrl-names = "default";
>  			pinctrl-0 = <&i2c0_pins>;
> @@ -420,6 +447,8 @@ i2c1: i2c@5002400 {
>  			reg = <0x05002400 0x400>;
>  			interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
>  			clocks = <&ccu CLK_BUS_I2C1>;
> +			dmas = <&dma 44>, <&dma 44>;
> +			dma-names = "rx", "tx";
>  			resets = <&ccu RST_BUS_I2C1>;
>  			status = "disabled";
>  			#address-cells = <1>;
> @@ -433,6 +462,8 @@ i2c2: i2c@5002800 {
>  			reg = <0x05002800 0x400>;
>  			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
>  			clocks = <&ccu CLK_BUS_I2C2>;
> +			dmas = <&dma 45>, <&dma 45>;
> +			dma-names = "rx", "tx";
>  			resets = <&ccu RST_BUS_I2C2>;
>  			status = "disabled";
>  			#address-cells = <1>;
> @@ -446,6 +477,8 @@ i2c3: i2c@5002c00 {
>  			reg = <0x05002c00 0x400>;
>  			interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
>  			clocks = <&ccu CLK_BUS_I2C3>;
> +			dmas = <&dma 46>, <&dma 46>;
> +			dma-names = "rx", "tx";
>  			resets = <&ccu RST_BUS_I2C3>;
>  			status = "disabled";
>  			#address-cells = <1>;
> @@ -459,6 +492,8 @@ i2c4: i2c@5003000 {
>  			reg = <0x05003000 0x400>;
>  			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
>  			clocks = <&ccu CLK_BUS_I2C4>;
> +			dmas = <&dma 47>, <&dma 47>;
> +			dma-names = "rx", "tx";
>  			resets = <&ccu RST_BUS_I2C4>;
>  			status = "disabled";
>  			#address-cells = <1>;
> @@ -472,6 +507,8 @@ spi0: spi@5010000 {
>  			interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
>  			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
>  			clock-names = "ahb", "mod";
> +			dmas = <&dma 22>, <&dma 22>;
> +			dma-names = "rx", "tx";
>  			resets = <&ccu RST_BUS_SPI0>;
>  			status = "disabled";
>  			#address-cells = <1>;
> @@ -485,6 +522,8 @@ spi1: spi@5011000 {
>  			interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
>  			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
>  			clock-names = "ahb", "mod";
> +			dmas = <&dma 23>, <&dma 23>;
> +			dma-names = "rx", "tx";
>  			resets = <&ccu RST_BUS_SPI1>;
>  			status = "disabled";
>  			#address-cells = <1>;
> @@ -734,6 +773,8 @@ r_i2c: i2c@7081400 {
>  			reg = <0x07081400 0x400>;
>  			interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
>  			clocks = <&r_ccu CLK_R_APB2_I2C>;
> +			dmas = <&dma 48>, <&dma 48>;
> +			dma-names = "rx", "tx";
>  			resets = <&r_ccu RST_R_APB2_I2C>;
>  			status = "disabled";
>  			#address-cells = <1>;


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers
  2024-01-27 16:32 [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Chen-Yu Tsai
                   ` (6 preceding siblings ...)
  2024-01-27 16:32 ` [PATCH v2 7/7] arm64: dts: allwinner: h616: Add SPDIF device node Chen-Yu Tsai
@ 2024-01-29 16:55 ` Mark Brown
  2024-01-29 23:08 ` (subset) " Mark Brown
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Mark Brown @ 2024-01-29 16:55 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Jaroslav Kysela, Takashi Iwai,
	Vinod Koul, Chen-Yu Tsai, devicetree, linux-arm-kernel,
	linux-sunxi, linux-sound, dmaengine, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 542 bytes --]

On Sun, Jan 28, 2024 at 12:32:40AM +0800, Chen-Yu Tsai wrote:

> Chen-Yu Tsai (7):
>   dt-bindings: sound: sun4i-spdif: Fix requirements for H6
>   dt-bindings: sound: sun4i-spdif: Add Allwinner H616 compatible

Please submit patches using subject lines reflecting the style for the
subsystem, this makes it easier for people to identify relevant patches.
Look at what existing commits in the area you're changing are doing and
make sure your subject lines visually resemble what they're doing.
There's no need to resubmit to fix this alone.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 4/7] dt-bindings: dma: allwinner,sun50i-a64-dma: Add compatible for H616
  2024-01-27 16:32 ` [PATCH v2 4/7] dt-bindings: dma: allwinner,sun50i-a64-dma: Add compatible for H616 Chen-Yu Tsai
  2024-01-28 11:52   ` Conor Dooley
@ 2024-01-29 16:59   ` Andre Przywara
  1 sibling, 0 replies; 15+ messages in thread
From: Andre Przywara @ 2024-01-29 16:59 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Vinod Koul, Chen-Yu Tsai, devicetree,
	linux-arm-kernel, linux-sunxi, linux-sound, dmaengine,
	linux-kernel

On Sun, 28 Jan 2024 00:32:44 +0800
Chen-Yu Tsai <wens@kernel.org> wrote:

Hi,

> From: Chen-Yu Tsai <wens@csie.org>
> 
> The DMA controllers found on the H616 and H618 are the same as the one
> found on the A100. The only difference is the DMA endpoint (DRQ) layout.
> 
> Since the number of channels and endpoints are described with additional
> generic properties, just add a new H616-specific compatible string and
> fallback to the A100 one.
> 
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>

Looks good, A100 is the right fallback string. dt-binding_check passed for
me.

Reviewed-by: Andre Przywara <andre.przywara@arm.com>

Cheers,
Andre

> ---
> Changes since v1:
> - Switch to "contains" for if-properties statement
> - Fall back to A100 instead of H6
> 
>  .../bindings/dma/allwinner,sun50i-a64-dma.yaml       | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml b/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml
> index ec2d7a789ffe..0f2501f72cca 100644
> --- a/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml
> +++ b/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml
> @@ -28,6 +28,9 @@ properties:
>        - items:
>            - const: allwinner,sun8i-r40-dma
>            - const: allwinner,sun50i-a64-dma
> +      - items:
> +          - const: allwinner,sun50i-h616-dma
> +          - const: allwinner,sun50i-a100-dma
>  
>    reg:
>      maxItems: 1
> @@ -59,10 +62,11 @@ required:
>  if:
>    properties:
>      compatible:
> -      enum:
> -        - allwinner,sun20i-d1-dma
> -        - allwinner,sun50i-a100-dma
> -        - allwinner,sun50i-h6-dma
> +      contains:
> +        enum:
> +          - allwinner,sun20i-d1-dma
> +          - allwinner,sun50i-a100-dma
> +          - allwinner,sun50i-h6-dma
>  
>  then:
>    properties:


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: (subset) [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers
  2024-01-27 16:32 [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Chen-Yu Tsai
                   ` (7 preceding siblings ...)
  2024-01-29 16:55 ` [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Mark Brown
@ 2024-01-29 23:08 ` Mark Brown
  2024-01-30 16:50 ` Vinod Koul
  2024-01-30 19:48 ` Jernej Škrabec
  10 siblings, 0 replies; 15+ messages in thread
From: Mark Brown @ 2024-01-29 23:08 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Jaroslav Kysela, Takashi Iwai,
	Vinod Koul, Chen-Yu Tsai
  Cc: Chen-Yu Tsai, devicetree, linux-arm-kernel, linux-sunxi,
	linux-sound, dmaengine, linux-kernel

On Sun, 28 Jan 2024 00:32:40 +0800, Chen-Yu Tsai wrote:
> This is v2 of my H616/H618 DMA and SPDIF controller series.
> 
> Changes since v1:
> - Switch to "contains" for if-properties statement
> - Fall back to A100 instead of H6
> - Add DMA channels for r_i2c
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/7] dt-bindings: sound: sun4i-spdif: Fix requirements for H6
      commit: 57b3c130d97e45b8a07586e0ae113e43776c5ea8
[2/7] dt-bindings: sound: sun4i-spdif: Add Allwinner H616 compatible
      commit: 7a9dc944f129bb56ef855d9c0b0647bc3e98a56f
[3/7] ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616
      commit: 0adf963b8463faa44653e22e56ce55f747e68868

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: (subset) [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers
  2024-01-27 16:32 [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Chen-Yu Tsai
                   ` (8 preceding siblings ...)
  2024-01-29 23:08 ` (subset) " Mark Brown
@ 2024-01-30 16:50 ` Vinod Koul
  2024-01-30 19:48 ` Jernej Škrabec
  10 siblings, 0 replies; 15+ messages in thread
From: Vinod Koul @ 2024-01-30 16:50 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Chen-Yu Tsai
  Cc: Chen-Yu Tsai, devicetree, linux-arm-kernel, linux-sunxi,
	linux-sound, dmaengine, linux-kernel


On Sun, 28 Jan 2024 00:32:40 +0800, Chen-Yu Tsai wrote:
> This is v2 of my H616/H618 DMA and SPDIF controller series.
> 
> Changes since v1:
> - Switch to "contains" for if-properties statement
> - Fall back to A100 instead of H6
> - Add DMA channels for r_i2c
> 
> [...]

Applied, thanks!

[4/7] dt-bindings: dma: allwinner,sun50i-a64-dma: Add compatible for H616
      commit: b32eb97edeb8d69092d57419917b19c909ff962a

Best regards,
-- 
~Vinod



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers
  2024-01-27 16:32 [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Chen-Yu Tsai
                   ` (9 preceding siblings ...)
  2024-01-30 16:50 ` Vinod Koul
@ 2024-01-30 19:48 ` Jernej Škrabec
  10 siblings, 0 replies; 15+ messages in thread
From: Jernej Škrabec @ 2024-01-30 19:48 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Samuel Holland,
	Liam Girdwood, Mark Brown, Jaroslav Kysela, Takashi Iwai,
	Vinod Koul, Chen-Yu Tsai
  Cc: Chen-Yu Tsai, devicetree, linux-arm-kernel, linux-sunxi,
	linux-sound, dmaengine, linux-kernel

Dne sobota, 27. januar 2024 ob 17:32:40 CET je Chen-Yu Tsai napisal(a):
> From: Chen-Yu Tsai <wens@csie.org>
> 
> Hi everyone,
> 
> This is v2 of my H616/H618 DMA and SPDIF controller series.
> 
> Changes since v1:
> - Switch to "contains" for if-properties statement
> - Fall back to A100 instead of H6
> - Add DMA channels for r_i2c
> 
> This series adds DMA and SPDIF controllers for the H616 and H618.
> There's also a fix for SPDIF on H6: the controller also has a
> receiver that was not correctly modeled.
> 
> Patch 1 fixes the binding for the SPDIF controller on the H6 by adding
> the RX DMA channel.
> 
> Patch 2 adds a compatible string for the H616's SPDIF transmitter to the
> binding.
> 
> Patch 3 adds a compatible string for the H616's SPDIF transmitter to the
> driver.
> 
> Patch 4 adds a compatible string for the H616's DMA controller.
> 
> Patch 5 adds the RX DMA channel to the SPDIF controller on the H6.
> 
> Patch 6 adds a device node for the H616's DMA controller.
> 
> Patch 7 adds a device node for the H616's SPDIF controller.
> 
> 
> This was tested on the Orange Pi Zero 3 with SPI flash transfers and
> SPDIF audio output. The H6 SPDIF change is superficial as the driver
> does not support receiving / capturing an audio stream.
> 
> Please have a look. I expect the first three patches to go through the
> ASoC tree, the fourth patch to either go through the DMA tree, or
> through the sunxi tree with an Ack, and the last three through the sunxi
> tree.
> 
> 
> Thanks
> ChenYu
> 
> 
> Chen-Yu Tsai (7):
>   dt-bindings: sound: sun4i-spdif: Fix requirements for H6
>   dt-bindings: sound: sun4i-spdif: Add Allwinner H616 compatible
>   ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616
>   dt-bindings: dma: allwinner,sun50i-a64-dma: Add compatible for H616
>   arm64: dts: allwinner: h6: Add RX DMA channel for SPDIF
>   arm64: dts: allwinner: h616: Add DMA controller and DMA channels
>   arm64: dts: allwinner: h616: Add SPDIF device node
> 
>  .../dma/allwinner,sun50i-a64-dma.yaml         | 12 ++--
>  .../sound/allwinner,sun4i-a10-spdif.yaml      |  5 +-
>  .../dts/allwinner/sun50i-h6-beelink-gs1.dts   |  2 +
>  .../boot/dts/allwinner/sun50i-h6-tanix.dtsi   |  2 +
>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi  |  7 +--
>  .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 61 +++++++++++++++++++
>  sound/soc/sunxi/sun4i-spdif.c                 |  5 ++
>  7 files changed, 85 insertions(+), 9 deletions(-)
> 
> 

Applied patches 5-7 to sunxi tree, thanks!

Best regards,
Jernej





^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2024-01-30 19:48 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-27 16:32 [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Chen-Yu Tsai
2024-01-27 16:32 ` [PATCH v2 1/7] dt-bindings: sound: sun4i-spdif: Fix requirements for H6 Chen-Yu Tsai
2024-01-27 16:32 ` [PATCH v2 2/7] dt-bindings: sound: sun4i-spdif: Add Allwinner H616 compatible Chen-Yu Tsai
2024-01-27 16:32 ` [PATCH v2 3/7] ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616 Chen-Yu Tsai
2024-01-27 16:32 ` [PATCH v2 4/7] dt-bindings: dma: allwinner,sun50i-a64-dma: Add compatible for H616 Chen-Yu Tsai
2024-01-28 11:52   ` Conor Dooley
2024-01-29 16:59   ` Andre Przywara
2024-01-27 16:32 ` [PATCH v2 5/7] arm64: dts: allwinner: h6: Add RX DMA channel for SPDIF Chen-Yu Tsai
2024-01-27 16:32 ` [PATCH v2 6/7] arm64: dts: allwinner: h616: Add DMA controller and DMA channels Chen-Yu Tsai
2024-01-29 16:03   ` Andre Przywara
2024-01-27 16:32 ` [PATCH v2 7/7] arm64: dts: allwinner: h616: Add SPDIF device node Chen-Yu Tsai
2024-01-29 16:55 ` [PATCH v2 0/7] arm64: sun50i-h616: Add DMA and SPDIF controllers Mark Brown
2024-01-29 23:08 ` (subset) " Mark Brown
2024-01-30 16:50 ` Vinod Koul
2024-01-30 19:48 ` Jernej Škrabec

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).