Add the sound card node with tested playback over max98357a
I2S speakers amplifier and I2S mic.
Introduce HS (High-Speed) MI2S pin control support.
The I2S max98357a speaker amplifier is connected via HS0 and I2S
microphones utilize the HS2 interface.
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
---
.../boot/dts/qcom/qcs9075-iq-9075-evk.dts | 52 +++++++++++++++++++
arch/arm64/boot/dts/qcom/sa8775p.dtsi | 14 +++++
2 files changed, 66 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts b/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts
index ab161180d1d5..d073c6f95d4c 100644
--- a/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts
+++ b/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts
@@ -5,6 +5,7 @@
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/sound/qcom,q6afe.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include "qcs9075.dtsi"
@@ -21,6 +22,57 @@ aliases {
chosen {
stdout-path = "serial0:115200n8";
};
+
+ max98357a: audio-codec-0 {
+ compatible = "maxim,max98357a";
+ #sound-dai-cells = <0>;
+ };
+
+ dmic: audio-codec-1 {
+ compatible = "dmic-codec";
+ #sound-dai-cells = <0>;
+ num-channels = <1>;
+ };
+
+ sound {
+ compatible = "qcom,qcs9075-sndcard";
+ model = "qcs9075-iq-evk-snd-card";
+
+ pinctrl-0 = <&hs0_mi2s_active>, <&hs2_mi2s_active>;
+ pinctrl-names = "default";
+
+ hs0-mi2s-playback-dai-link {
+ link-name = "HS0 mi2s playback";
+
+ codec {
+ sound-dai = <&max98357a>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai PRIMARY_MI2S_RX>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ hs2-mi2s-capture-dai-link {
+ link-name = "HS2 mi2s capture";
+
+ codec {
+ sound-dai = <&dmic>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai TERTIARY_MI2S_TX>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+ };
};
&apps_rsc {
diff --git a/arch/arm64/boot/dts/qcom/sa8775p.dtsi b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
index 07ca6dd4f759..968730da180d 100644
--- a/arch/arm64/boot/dts/qcom/sa8775p.dtsi
+++ b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
@@ -4711,6 +4711,20 @@ tlmm: pinctrl@f000000 {
gpio-ranges = <&tlmm 0 0 149>;
wakeup-parent = <&pdc>;
+ hs0_mi2s_active: hs0-mi2s-active-state {
+ pins = "gpio114", "gpio115", "gpio116", "gpio117";
+ function = "hs0_mi2s";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ hs2_mi2s_active: hs2-mi2s-active-state {
+ pins = "gpio122", "gpio123", "gpio124", "gpio125";
+ function = "hs2_mi2s";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
qup_i2c0_default: qup-i2c0-state {
pins = "gpio20", "gpio21";
function = "qup0_se0";
--
2.34.1
On 6/16/25 9:04 AM, Mohammad Rafi Shaik wrote: > Add the sound card node with tested playback over max98357a > I2S speakers amplifier and I2S mic. > > Introduce HS (High-Speed) MI2S pin control support. > The I2S max98357a speaker amplifier is connected via HS0 and I2S > microphones utilize the HS2 interface. > > Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com> > --- > .../boot/dts/qcom/qcs9075-iq-9075-evk.dts | 52 +++++++++++++++++++ > arch/arm64/boot/dts/qcom/sa8775p.dtsi | 14 +++++ > 2 files changed, 66 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts b/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts > index ab161180d1d5..d073c6f95d4c 100644 > --- a/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts > +++ b/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts > @@ -5,6 +5,7 @@ > /dts-v1/; > > #include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/sound/qcom,q6afe.h> > #include <dt-bindings/regulator/qcom,rpmh-regulator.h> 'r'egulator < 's'ound> > #include "qcs9075.dtsi" > @@ -21,6 +22,57 @@ aliases { > chosen { > stdout-path = "serial0:115200n8"; > }; > + > + max98357a: audio-codec-0 { > + compatible = "maxim,max98357a"; > + #sound-dai-cells = <0>; > + }; > + > + dmic: audio-codec-1 { > + compatible = "dmic-codec"; > + #sound-dai-cells = <0>; > + num-channels = <1>; > + }; > + > + sound { > + compatible = "qcom,qcs9075-sndcard"; > + model = "qcs9075-iq-evk-snd-card"; > + > + pinctrl-0 = <&hs0_mi2s_active>, <&hs2_mi2s_active>; > + pinctrl-names = "default"; > + > + hs0-mi2s-playback-dai-link { > + link-name = "HS0 mi2s playback"; "HS0 MI2S Playback", please, similarly below lg otherwise Konrad
On 16/06/2025 10:04, Mohammad Rafi Shaik wrote: > Add the sound card node with tested playback over max98357a > I2S speakers amplifier and I2S mic. > > Introduce HS (High-Speed) MI2S pin control support. > The I2S max98357a speaker amplifier is connected via HS0 and I2S > microphones utilize the HS2 interface. > > Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com> > --- > .../boot/dts/qcom/qcs9075-iq-9075-evk.dts | 52 +++++++++++++++++++ > arch/arm64/boot/dts/qcom/sa8775p.dtsi | 14 +++++ > 2 files changed, 66 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts b/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts > index ab161180d1d5..d073c6f95d4c 100644 > --- a/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts > +++ b/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts > @@ -5,6 +5,7 @@ > /dts-v1/; > > #include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/sound/qcom,q6afe.h> > #include <dt-bindings/regulator/qcom,rpmh-regulator.h> > > #include "qcs9075.dtsi" > @@ -21,6 +22,57 @@ aliases { > chosen { > stdout-path = "serial0:115200n8"; > }; > + > + max98357a: audio-codec-0 { This wasn't sorted out properly. > + compatible = "maxim,max98357a"; No SD_MODE pin? > + #sound-dai-cells = <0>; > + }; > + > + dmic: audio-codec-1 { > + compatible = "dmic-codec"; > + #sound-dai-cells = <0>; > + num-channels = <1>; no enable GPIO, no vref-supply? > + }; > + > + sound { > + compatible = "qcom,qcs9075-sndcard"; > + model = "qcs9075-iq-evk-snd-card"; > + > + pinctrl-0 = <&hs0_mi2s_active>, <&hs2_mi2s_active>; > + pinctrl-names = "default"; > + > + hs0-mi2s-playback-dai-link { > + link-name = "HS0 mi2s playback"; > + > + codec { > + sound-dai = <&max98357a>; > + }; > + > + cpu { > + sound-dai = <&q6apmbedai PRIMARY_MI2S_RX>; > + }; > + > + platform { > + sound-dai = <&q6apm>; > + }; > + }; > + > + hs2-mi2s-capture-dai-link { > + link-name = "HS2 mi2s capture"; > + > + codec { > + sound-dai = <&dmic>; > + }; > + > + cpu { > + sound-dai = <&q6apmbedai TERTIARY_MI2S_TX>; > + }; > + > + platform { > + sound-dai = <&q6apm>; > + }; > + }; > + }; > }; > > &apps_rsc { > diff --git a/arch/arm64/boot/dts/qcom/sa8775p.dtsi b/arch/arm64/boot/dts/qcom/sa8775p.dtsi > index 07ca6dd4f759..968730da180d 100644 > --- a/arch/arm64/boot/dts/qcom/sa8775p.dtsi > +++ b/arch/arm64/boot/dts/qcom/sa8775p.dtsi > @@ -4711,6 +4711,20 @@ tlmm: pinctrl@f000000 { > gpio-ranges = <&tlmm 0 0 149>; > wakeup-parent = <&pdc>; > > + hs0_mi2s_active: hs0-mi2s-active-state { > + pins = "gpio114", "gpio115", "gpio116", "gpio117"; > + function = "hs0_mi2s"; > + drive-strength = <8>; > + bias-disable; > + }; > + > + hs2_mi2s_active: hs2-mi2s-active-state { > + pins = "gpio122", "gpio123", "gpio124", "gpio125"; > + function = "hs2_mi2s"; > + drive-strength = <8>; > + bias-disable; > + }; > + > qup_i2c0_default: qup-i2c0-state { > pins = "gpio20", "gpio21"; > function = "qup0_se0"; -- With best wishes Dmitry
On 6/16/2025 4:54 PM, Dmitry Baryshkov wrote: > On 16/06/2025 10:04, Mohammad Rafi Shaik wrote: >> Add the sound card node with tested playback over max98357a >> I2S speakers amplifier and I2S mic. >> >> Introduce HS (High-Speed) MI2S pin control support. >> The I2S max98357a speaker amplifier is connected via HS0 and I2S >> microphones utilize the HS2 interface. >> >> Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com> >> --- >> .../boot/dts/qcom/qcs9075-iq-9075-evk.dts | 52 +++++++++++++++++++ >> arch/arm64/boot/dts/qcom/sa8775p.dtsi | 14 +++++ >> 2 files changed, 66 insertions(+) >> >> diff --git a/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts b/arch/ >> arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts >> index ab161180d1d5..d073c6f95d4c 100644 >> --- a/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts >> +++ b/arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts >> @@ -5,6 +5,7 @@ >> /dts-v1/; >> #include <dt-bindings/gpio/gpio.h> >> +#include <dt-bindings/sound/qcom,q6afe.h> >> #include <dt-bindings/regulator/qcom,rpmh-regulator.h> >> #include "qcs9075.dtsi" >> @@ -21,6 +22,57 @@ aliases { >> chosen { >> stdout-path = "serial0:115200n8"; >> }; >> + >> + max98357a: audio-codec-0 { > > This wasn't sorted out properly. > Ack, will take care in next version. >> + compatible = "maxim,max98357a"; > > No SD_MODE pin? > Yes, SD_MODE pin is always on in this specific qcs9075-iq-evk board hw. No need to handle. >> + #sound-dai-cells = <0>; >> + }; >> + >> + dmic: audio-codec-1 { >> + compatible = "dmic-codec"; >> + #sound-dai-cells = <0>; >> + num-channels = <1>; > > no enable GPIO, no vref-supply? On qcs9075-iq-evk boards the enable gpios and vref-spply is always on. Not configurable from DT. Thanks & best regards, Rafi. > >> + }; >> + >> + sound { >> + compatible = "qcom,qcs9075-sndcard"; >> + model = "qcs9075-iq-evk-snd-card"; >> + >> + pinctrl-0 = <&hs0_mi2s_active>, <&hs2_mi2s_active>; >> + pinctrl-names = "default"; >> + >> + hs0-mi2s-playback-dai-link { >> + link-name = "HS0 mi2s playback"; >> + >> + codec { >> + sound-dai = <&max98357a>; >> + }; >> + >> + cpu { >> + sound-dai = <&q6apmbedai PRIMARY_MI2S_RX>; >> + }; >> + >> + platform { >> + sound-dai = <&q6apm>; >> + }; >> + }; >> + >> + hs2-mi2s-capture-dai-link { >> + link-name = "HS2 mi2s capture"; >> + >> + codec { >> + sound-dai = <&dmic>; >> + }; >> + >> + cpu { >> + sound-dai = <&q6apmbedai TERTIARY_MI2S_TX>; >> + }; >> + >> + platform { >> + sound-dai = <&q6apm>; >> + }; >> + }; >> + }; >> }; >> &apps_rsc { >> diff --git a/arch/arm64/boot/dts/qcom/sa8775p.dtsi b/arch/arm64/boot/ >> dts/qcom/sa8775p.dtsi >> index 07ca6dd4f759..968730da180d 100644 >> --- a/arch/arm64/boot/dts/qcom/sa8775p.dtsi >> +++ b/arch/arm64/boot/dts/qcom/sa8775p.dtsi >> @@ -4711,6 +4711,20 @@ tlmm: pinctrl@f000000 { >> gpio-ranges = <&tlmm 0 0 149>; >> wakeup-parent = <&pdc>; >> + hs0_mi2s_active: hs0-mi2s-active-state { >> + pins = "gpio114", "gpio115", "gpio116", "gpio117"; >> + function = "hs0_mi2s"; >> + drive-strength = <8>; >> + bias-disable; >> + }; >> + >> + hs2_mi2s_active: hs2-mi2s-active-state { >> + pins = "gpio122", "gpio123", "gpio124", "gpio125"; >> + function = "hs2_mi2s"; >> + drive-strength = <8>; >> + bias-disable; >> + }; >> + >> qup_i2c0_default: qup-i2c0-state { >> pins = "gpio20", "gpio21"; >> function = "qup0_se0"; > >
© 2016 - 2025 Red Hat, Inc.