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

Chen-Yu Tsai wens at kernel.org
Mon Jul 20 07:59:57 PDT 2026


On Sun, Jul 19, 2026 at 11:10 AM Per Larsson <per at palvencia.se> 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 at palvencia.se>
> ---
> 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
>



More information about the linux-arm-kernel mailing list