Message ID | 20241023075917.186835-8-ryan@testtoast.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | ASoC: add Allwinner H616 audio codec support | expand |
On Wed, 23 Oct 2024 20:57:03 +1300 Ryan Walklin <ryan@testtoast.com> wrote: Hi, > Now that the H616 (and variants) audio codec is supported, enable it for > boards with a mainline DTS. The Tanix TX1, Transpeed 8K618-T and X-96 > Mate have all been tested with the onboard 3.5mm audio jack and the > Orange Pi Zero 3 with a 3.5mm jack connected to the audio header. Martin, if I see this correctly, the Bigtreetech Pi also has an audio jack (but not the Manta)? Should we enable the codec then there, too? Can you maybe test this? > The RG35XX (2024, -H, -Plus and -SP variants) are also tested working > but have a separate mux and GPIO-controlled (PI5) power amplifier to > support both a headphone jack and onboard speakers. > > The headphone jack has a GPIO for jack detection, but this is not > currently supported by the driver, so audio is heard both via the > headphone jack and speakers when the speaker amp is powered (by the > CLDO1 regulator, defined as always-on until proper jack detection is > implemented). Is the support for that board then premature? Because this would introduce a regression, wouldn't it? With kernel 6.13 and this proposed DT it would work, courtesy of regulator-always-on, but future DTs (as provided by up-to-date firmware like U-Boot) with kernel v6.13 would not anymore, as the 6.13 code wouldn't know about the upcoming jack detection bits. So this would break forward compatibility. > Define the audio codec and routing for all supported H616 and variant > boards, and power and speaker amp enablement where present on boards and > known. For TX1, OrangePi, X96 Mate, 8K618-T: Reviewed-by: Andre Przywara <andre.przywara@arm.com> For Tanix TX1, OPi Zero3, X96 Mate, Transpeed 8K618-T: Tested-by: Andre Przywara <andre.przywara@arm.com> Cheers, Andre > > Signed-off-by: Ryan Walklin <ryan@testtoast.com> > Tested-by: Philippe Simons <simons.philippe@gmail.com> > --- > Changelog v1..v2: > - Add codec enablement all supported boards. > --- > .../boot/dts/allwinner/sun50i-h313-tanix-tx1.dts | 5 +++++ > .../dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 5 +++++ > .../boot/dts/allwinner/sun50i-h616-x96-mate.dts | 5 +++++ > .../dts/allwinner/sun50i-h618-orangepi-zero2w.dts | 5 +++++ > .../dts/allwinner/sun50i-h618-transpeed-8k618-t.dts | 5 +++++ > .../allwinner/sun50i-h700-anbernic-rg35xx-2024.dts | 13 +++++++++++-- > 6 files changed, 36 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h313-tanix-tx1.dts b/arch/arm64/boot/dts/allwinner/sun50i-h313-tanix-tx1.dts > index bb2cde59bd033..bafd3e803106b 100644 > --- a/arch/arm64/boot/dts/allwinner/sun50i-h313-tanix-tx1.dts > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h313-tanix-tx1.dts > @@ -65,6 +65,11 @@ reg_vcc5v: vcc5v { > }; > }; > > +&codec { > + allwinner,audio-routing = "Line Out", "LINEOUT"; > + status = "okay"; > +}; > + > &cpu0 { > cpu-supply = <®_dcdc2>; > }; > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi > index fc7315b944065..19c5cf75f3f7d 100644 > --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi > @@ -59,6 +59,11 @@ reg_usb1_vbus: regulator-usb1-vbus { > }; > }; > > +&codec { > + allwinner,audio-routing = "Line Out", "LINEOUT"; > + status = "okay"; > +}; > + > &ehci1 { > status = "okay"; > }; > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts > index 26d25b5b59e0f..6dfe4eab91f6a 100644 > --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts > @@ -33,6 +33,11 @@ reg_vcc5v: vcc5v { > }; > }; > > +&codec { > + allwinner,audio-routing = "Line Out", "LINEOUT"; > + status = "okay"; > +}; > + > &cpu0 { > cpu-supply = <®_dcdca>; > }; > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts > index 6a4f0da972330..a0fe7a9afb77c 100644 > --- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts > @@ -54,6 +54,11 @@ reg_vcc3v3: vcc3v3 { > }; > }; > > +&codec { > + allwinner,audio-routing = "Line Out", "LINEOUT"; > + status = "okay"; > +}; > + > &cpu0 { > cpu-supply = <®_dcdc2>; > }; > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts > index d6631bfe629fa..59ee2b253ea4b 100644 > --- a/arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts > @@ -52,6 +52,11 @@ wifi_pwrseq: pwrseq { > }; > }; > > +&codec { > + allwinner,audio-routing = "Line Out", "LINEOUT"; > + status = "okay"; > +}; > + > &cpu0 { > cpu-supply = <®_dcdc2>; > }; > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts > index 899ae3be5683c..89de86b442155 100644 > --- a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts > @@ -237,6 +237,12 @@ panel_in_rgb: endpoint { > }; > }; > > +&codec { > + allwinner,audio-routing = "Line Out", "LINEOUT"; > + allwinner,pa-gpios = <&pio 8 5 GPIO_ACTIVE_HIGH>; // PI5 > + status = "okay"; > +}; > + > &cpu0 { > cpu-supply = <®_dcdc1>; > }; > @@ -352,7 +358,7 @@ reg_aldo3: aldo3 { > reg_aldo4: aldo4 { > regulator-min-microvolt = <1800000>; > regulator-max-microvolt = <1800000>; > - regulator-name = "vcc-pg"; > + regulator-name = "avcc"; > }; > > reg_bldo1: bldo1 { > @@ -375,7 +381,10 @@ reg_bldo4: bldo4 { > }; > > reg_cldo1: cldo1 { > - /* 3.3v - audio codec - not yet implemented */ > + regulator-always-on; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-name = "vcc-spkr-amp"; > }; > > reg_cldo2: cldo2 {
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h313-tanix-tx1.dts b/arch/arm64/boot/dts/allwinner/sun50i-h313-tanix-tx1.dts index bb2cde59bd033..bafd3e803106b 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h313-tanix-tx1.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h313-tanix-tx1.dts @@ -65,6 +65,11 @@ reg_vcc5v: vcc5v { }; }; +&codec { + allwinner,audio-routing = "Line Out", "LINEOUT"; + status = "okay"; +}; + &cpu0 { cpu-supply = <®_dcdc2>; }; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi index fc7315b944065..19c5cf75f3f7d 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi @@ -59,6 +59,11 @@ reg_usb1_vbus: regulator-usb1-vbus { }; }; +&codec { + allwinner,audio-routing = "Line Out", "LINEOUT"; + status = "okay"; +}; + &ehci1 { status = "okay"; }; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts index 26d25b5b59e0f..6dfe4eab91f6a 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts @@ -33,6 +33,11 @@ reg_vcc5v: vcc5v { }; }; +&codec { + allwinner,audio-routing = "Line Out", "LINEOUT"; + status = "okay"; +}; + &cpu0 { cpu-supply = <®_dcdca>; }; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts index 6a4f0da972330..a0fe7a9afb77c 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts @@ -54,6 +54,11 @@ reg_vcc3v3: vcc3v3 { }; }; +&codec { + allwinner,audio-routing = "Line Out", "LINEOUT"; + status = "okay"; +}; + &cpu0 { cpu-supply = <®_dcdc2>; }; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts index d6631bfe629fa..59ee2b253ea4b 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts @@ -52,6 +52,11 @@ wifi_pwrseq: pwrseq { }; }; +&codec { + allwinner,audio-routing = "Line Out", "LINEOUT"; + status = "okay"; +}; + &cpu0 { cpu-supply = <®_dcdc2>; }; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts index 899ae3be5683c..89de86b442155 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts @@ -237,6 +237,12 @@ panel_in_rgb: endpoint { }; }; +&codec { + allwinner,audio-routing = "Line Out", "LINEOUT"; + allwinner,pa-gpios = <&pio 8 5 GPIO_ACTIVE_HIGH>; // PI5 + status = "okay"; +}; + &cpu0 { cpu-supply = <®_dcdc1>; }; @@ -352,7 +358,7 @@ reg_aldo3: aldo3 { reg_aldo4: aldo4 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; - regulator-name = "vcc-pg"; + regulator-name = "avcc"; }; reg_bldo1: bldo1 { @@ -375,7 +381,10 @@ reg_bldo4: bldo4 { }; reg_cldo1: cldo1 { - /* 3.3v - audio codec - not yet implemented */ + regulator-always-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc-spkr-amp"; }; reg_cldo2: cldo2 {