Re: [PATCH RFC] arm64: dts: allwinner: a523: Add SPDIF to x96qproplus device

From: Chen-Yu Tsai

Date: Mon Jul 20 2026 - 12:08:04 EST


On Sun, Jul 19, 2026 at 11:10 AM Per Larsson <per@xxxxxxxxxxxx> wrote:
>
> When spdif support was added for the Allwinner A523 family of SoCs, only
> two of the three possible pins were added to the dtsi, since the third
> would clash with the first ethernet port (emac0)
> However, some devices don't use emac0 and instead use emac1 for the only
> available ethernet port, leaving the pin free to use for spdif.
>
> Add it to the dtsi, and to such a device where this pin is used for spdif
>
> Signed-off-by: Per Larsson <per@xxxxxxxxxxxx>
> ---
> Marking this as RFC for a few reasons
> 1. This is my first submission, hoping everything is properly organized.

This is pretty good. The commit message is also well written. I would
like to see the patch split into two patches though. The first adds the
pinmux (and you can mention in the commit message that a subsequent
patch will reference it). The second patch enables SPDIF on the device
you have.

> 2. My testing setup is not the best: I get sound with this patch, but
> the pulseaudio daemon needs to be restarted far too often.
> Hopefully it's just something on this minirootfs. Testing welcome.
> 3. Not sure where to get the hash for a fixes tag or if that's even OK

This is a new addition, not a fix, so no fixes tag is warranted.


Thanks
ChenYu

> ---
> .../arm64/boot/dts/allwinner/sun55i-a523.dtsi | 7 ++++++
> .../dts/allwinner/sun55i-h728-x96qpro+.dts | 24 +++++++++++++++++++
> 2 files changed, 31 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi b/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi
> index ca6a16807049..7370e8ed24ec 100644
> --- a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi
> @@ -216,6 +216,13 @@ spdif_out_pb_pin: spdif-pb-pin {
> allwinner,pinmux = <2>;
> };
>
> + /omit-if-no-ref/
> + spdif_out_ph_pin: spdif-ph-pin {
> + pins = "PH7";
> + function = "spdif";
> + allwinner,pinmux = <4>;
> + };
> +
> /omit-if-no-ref/
> spdif_out_pi_pin: spdif-pi-pin {
> pins = "PI10";
> diff --git a/arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dts b/arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dts
> index a96927fbdadd..b172985583f8 100644
> --- a/arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dts
> +++ b/arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dts
> @@ -44,6 +44,24 @@ reg_vcc3v3: vcc3v3 {
> vin-supply = <&reg_vcc5v>;
> regulator-always-on;
> };
> +
> + sound-spdif {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "spdif-out";
> +
> + simple-audio-card,cpu {
> + sound-dai = <&spdif>;
> + };
> +
> + simple-audio-card,codec {
> + sound-dai = <&spdif_out>;
> + };
> + };
> +
> + spdif_out: spdif-out {
> + #sound-dai-cells = <0>;
> + compatible = "linux,spdif-dit";
> + };
> };
>
> &ehci0 {
> @@ -275,6 +293,12 @@ &r_pio {
> vcc-pm-supply = <&reg_aldo3>;
> };
>
> +&spdif {
> + pinctrl-names = "default";
> + pinctrl-0 = <&spdif_out_ph_pin>;
> + status = "okay";
> +};
> +
> &uart0 {
> pinctrl-names = "default";
> pinctrl-0 = <&uart0_pb_pins>;
> --
> 2.48.1
>