[PATCH V2 3/3] arm64: dts: rockchip: add Awinic aw87391 for Anbernic RG-DS
Chris Morgan
macroalpha82 at gmail.com
Wed Jan 28 09:46:08 PST 2026
From: Chris Morgan <macromorgan at hotmail.com>
Add support for the two Awinic aw87391 audio amplifiers used in the
Anbernic RG-DS. These amplifiers require a specific init sequence to
start which is usually provided by a firmware file, but in our case
the manufacturer only provided the sequence. As a result, we hard-code
a device specific compatible.
Additionally, add support for the VDD regulator used to power both
amplifiers. Note that the amps can accept and respond to i2c commands
even without regulator power (perhaps due to a secondary power source)
but cannot play audio.
Signed-off-by: Chris Morgan <macromorgan at hotmail.com>
---
.../dts/rockchip/rk3568-anbernic-rg-ds.dts | 44 +++++++++++++++++--
1 file changed, 40 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/boot/dts/rockchip/rk3568-anbernic-rg-ds.dts b/arch/arm64/boot/dts/rockchip/rk3568-anbernic-rg-ds.dts
index 6ac1fe0d3c98..8d906ab02c5f 100644
--- a/arch/arm64/boot/dts/rockchip/rk3568-anbernic-rg-ds.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3568-anbernic-rg-ds.dts
@@ -354,6 +354,7 @@ sound {
compatible = "simple-audio-card";
pinctrl-0 = <&hp_det>;
pinctrl-names = "default";
+ simple-audio-card,aux-devs = <&aw87391_pa_l>, <&aw87391_pa_r>;
simple-audio-card,format = "i2s";
simple-audio-card,hp-det-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>;
simple-audio-card,mclk-fs = <256>;
@@ -363,8 +364,10 @@ sound {
"MICL", "Mic Jack",
"Headphones", "HPOL",
"Headphones", "HPOR",
- "Internal Speakers", "HPOL",
- "Internal Speakers", "HPOR";
+ "Internal Speakers", "Left Amp OUT",
+ "Internal Speakers", "Right Amp OUT",
+ "Left Amp IN", "HPOL",
+ "Right Amp IN", "HPOR";
simple-audio-card,widgets =
"Microphone", "Mic Jack",
"Headphone", "Headphones",
@@ -468,6 +471,18 @@ vcc_wifi: regulator-vcc-wifi {
regulator-max-microvolt = <3300000>;
regulator-name = "vcc_wifi";
};
+
+ vdd_amp: regulator-vcc-amp {
+ compatible = "regulator-fixed";
+ enable-active-high;
+ gpio = <&gpio4 RK_PC3 GPIO_ACTIVE_HIGH>;
+ pinctrl-0 = <&vdd_amp_h>;
+ pinctrl-names = "default";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&vccio_acodec>;
+ regulator-name = "vdd_amp";
+ };
};
&cpu0 {
@@ -840,8 +855,22 @@ &i2c2 {
pinctrl-names = "default";
status = "okay";
- /* awinic,aw87391 at 0x58 */
- /* awinic,aw87391 at 0x5b */
+ aw87391_pa_l: audio-codec at 58 {
+ compatible = "anbernic,rgds-amp", "awinic,aw87391";
+ reg = <0x58>;
+ vdd-supply = <&vdd_amp>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "Left Amp";
+ };
+
+ aw87391_pa_r: audio-codec at 5b {
+ compatible = "anbernic,rgds-amp", "awinic,aw87391";
+ reg = <0x5b>;
+ vdd-supply = <&vdd_amp>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "Right Amp";
+ };
+
/* invensense,icm42607p at 0x68 */
};
@@ -1014,6 +1043,13 @@ touch1_irq: touch1-irq {
};
};
+ vdd-amp {
+ vdd_amp_h: vdd-amp-h {
+ rockchip,pins =
+ <4 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
vcc-lcd {
vdd_lcd0_h: vdd-lcd0-h {
rockchip,pins =
--
2.43.0
More information about the Linux-rockchip
mailing list