One WSA881X amplifier is connected on QRB4210 RB2 board
hence only mono speaker is supported. This amplifier is set
to work in analog mode only. Also add required powerdown
pins/gpios.
Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
---
arch/arm64/boot/dts/qcom/qrb4210-rb2.dts | 45 ++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts b/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
index fc71f5930688..76b9ae1b0ebc 100644
--- a/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
+++ b/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
@@ -63,6 +63,16 @@ hdmi_con: endpoint {
};
};
+ i2c0_gpio: i2c0 {
+ compatible = "i2c-gpio";
+
+ sda-gpios = <&tlmm 4 GPIO_ACTIVE_HIGH>;
+ scl-gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
i2c2_gpio: i2c {
compatible = "i2c-gpio";
@@ -272,6 +282,25 @@ zap-shader {
};
};
+&i2c0_gpio {
+ clock-frequency = <400000>;
+ status = "okay";
+
+ wsa881x: codec@f {
+ compatible = "qcom,qrb4210-wsa881x-i2c-codec";
+ reg = <0x0f>;
+ pinctrl-0 = <&wsa_en_active>;
+ pinctrl-1 = <&wsa_en_sleep>;
+ pinctrl-names = "default", "sleep";
+ clocks = <&q6afecc LPASS_CLK_ID_MCLK_2 LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+ clock-names = "wsa_mclk";
+ powerdown-gpios = <&lpass_tlmm 16 GPIO_ACTIVE_LOW>;
+ mclk-gpios = <&lpass_tlmm 18 GPIO_ACTIVE_HIGH>;
+ sound-name-prefix = "SpkrMono";
+ #sound-dai-cells = <0>;
+ };
+};
+
&i2c2_gpio {
clock-frequency = <400000>;
status = "okay";
@@ -746,6 +775,22 @@ wcd_reset_n_sleep: wcd-reset-n-sleep-state {
bias-disable;
output-low;
};
+
+ wsa_en_active: wsa-en-active-state {
+ pins = "gpio106";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ output-high;
+ };
+
+ wsa_en_sleep: wsa-en-sleep-state {
+ pins = "gpio106";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ input-enable;
+ };
};
&uart3 {
--
2.45.2
On 1.11.2024 6:31 AM, Alexey Klimov wrote:
> One WSA881X amplifier is connected on QRB4210 RB2 board
> hence only mono speaker is supported. This amplifier is set
> to work in analog mode only. Also add required powerdown
> pins/gpios.
>
> Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
> ---
> arch/arm64/boot/dts/qcom/qrb4210-rb2.dts | 45 ++++++++++++++++++++++++
> 1 file changed, 45 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts b/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> index fc71f5930688..76b9ae1b0ebc 100644
> --- a/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> +++ b/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> @@ -63,6 +63,16 @@ hdmi_con: endpoint {
> };
> };
>
> + i2c0_gpio: i2c0 {
> + compatible = "i2c-gpio";
> +
> + sda-gpios = <&tlmm 4 GPIO_ACTIVE_HIGH>;
> + scl-gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + status = "disabled";
Does it not work with &i2c1?
Konrad
On Sat Nov 2, 2024 at 9:30 AM GMT, Konrad Dybcio wrote:
> On 1.11.2024 6:31 AM, Alexey Klimov wrote:
> > One WSA881X amplifier is connected on QRB4210 RB2 board
> > hence only mono speaker is supported. This amplifier is set
> > to work in analog mode only. Also add required powerdown
> > pins/gpios.
> >
> > Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> > Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
> > ---
> > arch/arm64/boot/dts/qcom/qrb4210-rb2.dts | 45 ++++++++++++++++++++++++
> > 1 file changed, 45 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts b/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> > index fc71f5930688..76b9ae1b0ebc 100644
> > --- a/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> > +++ b/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> > @@ -63,6 +63,16 @@ hdmi_con: endpoint {
> > };
> > };
> >
> > + i2c0_gpio: i2c0 {
> > + compatible = "i2c-gpio";
> > +
> > + sda-gpios = <&tlmm 4 GPIO_ACTIVE_HIGH>;
> > + scl-gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>;
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > + status = "disabled";
>
> Does it not work with &i2c1?
Actually it does work with i2c1 (non-gpio version).
I am going to use that and will see how it behaves.
Thanks!
Best regards,
Alexey
On Fri, Nov 01, 2024 at 05:31:52AM +0000, Alexey Klimov wrote:
> One WSA881X amplifier is connected on QRB4210 RB2 board
> hence only mono speaker is supported. This amplifier is set
> to work in analog mode only. Also add required powerdown
> pins/gpios.
>
> Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
> ---
> arch/arm64/boot/dts/qcom/qrb4210-rb2.dts | 45 ++++++++++++++++++++++++
> 1 file changed, 45 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts b/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> index fc71f5930688..76b9ae1b0ebc 100644
> --- a/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> +++ b/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> @@ -63,6 +63,16 @@ hdmi_con: endpoint {
> };
> };
>
> + i2c0_gpio: i2c0 {
Is 0 name on the schematics or datasheet? If yes, then i2c-0. If not,
then i2c-1
> + compatible = "i2c-gpio";
> +
> + sda-gpios = <&tlmm 4 GPIO_ACTIVE_HIGH>;
> + scl-gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + status = "disabled";
> + };
> +
> i2c2_gpio: i2c {
i2c-(x+1)
> compatible = "i2c-gpio";
>
> @@ -272,6 +282,25 @@ zap-shader {
> };
> };
>
> +&i2c0_gpio {
> + clock-frequency = <400000>;
> + status = "okay";
> +
> + wsa881x: codec@f {
> + compatible = "qcom,qrb4210-wsa881x-i2c-codec";
> + reg = <0x0f>;
> + pinctrl-0 = <&wsa_en_active>;
> + pinctrl-1 = <&wsa_en_sleep>;
> + pinctrl-names = "default", "sleep";
> + clocks = <&q6afecc LPASS_CLK_ID_MCLK_2 LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
> + clock-names = "wsa_mclk";
> + powerdown-gpios = <&lpass_tlmm 16 GPIO_ACTIVE_LOW>;
> + mclk-gpios = <&lpass_tlmm 18 GPIO_ACTIVE_HIGH>;
> + sound-name-prefix = "SpkrMono";
> + #sound-dai-cells = <0>;
> + };
> +};
> +
> &i2c2_gpio {
> clock-frequency = <400000>;
> status = "okay";
> @@ -746,6 +775,22 @@ wcd_reset_n_sleep: wcd-reset-n-sleep-state {
> bias-disable;
> output-low;
> };
> +
> + wsa_en_active: wsa-en-active-state {
> + pins = "gpio106";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-disable;
> + output-high;
> + };
> +
> + wsa_en_sleep: wsa-en-sleep-state {
> + pins = "gpio106";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + input-enable;
Are you sure this passes dtbs_check? I think this was not allowed since
1.5 years.
Best regards,
Krzysztof
On Fri Nov 1, 2024 at 8:14 AM GMT, Krzysztof Kozlowski wrote:
> On Fri, Nov 01, 2024 at 05:31:52AM +0000, Alexey Klimov wrote:
> > One WSA881X amplifier is connected on QRB4210 RB2 board
> > hence only mono speaker is supported. This amplifier is set
> > to work in analog mode only. Also add required powerdown
> > pins/gpios.
> >
> > Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> > Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
> > ---
> > arch/arm64/boot/dts/qcom/qrb4210-rb2.dts | 45 ++++++++++++++++++++++++
> > 1 file changed, 45 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts b/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> > index fc71f5930688..76b9ae1b0ebc 100644
> > --- a/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> > +++ b/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> > @@ -63,6 +63,16 @@ hdmi_con: endpoint {
[..]
> > + wsa_en_sleep: wsa-en-sleep-state {
> > + pins = "gpio106";
> > + function = "gpio";
> > + drive-strength = <2>;
> > + bias-pull-down;
> > + input-enable;
>
> Are you sure this passes dtbs_check? I think this was not allowed since
> 1.5 years.
I guess you were referring to thing that input-enable is not allowed
and output-disable must be used instead introduced by:
c4a48b0df8bf dt-bindings: pinctrl: qcom: tlmm should use output-disable, not input-enable
Noted.
This sleep state seems to be unused hence I will remove it.
Also, I am going to use Konrad's suggestion about i2c gpio for now. Hope it
is okay.
Thanks,
Alexey
© 2016 - 2026 Red Hat, Inc.