Re: [PATCH 4/5] arm64: dts: qcom: sm6350: add LPASS LPI pin controller
From: Luca Weiss
Date: Mon Apr 13 2026 - 04:58:36 EST
Hi Konrad,
On Thu Jan 29, 2026 at 12:19 PM CET, Konrad Dybcio wrote:
> On 1/29/26 9:32 AM, Luca Weiss wrote:
>> On Wed Jan 28, 2026 at 11:16 PM CET, Dmitry Baryshkov wrote:
>>> On Wed, Jan 28, 2026 at 01:26:52PM +0100, Luca Weiss wrote:
>>>> Add LPASS LPI pinctrl node required for audio functionality on SM6350.
>>>>
>>>> Signed-off-by: Luca Weiss <luca.weiss@xxxxxxxxxxxxx>
>>>> ---
>>>> arch/arm64/boot/dts/qcom/sm6350.dtsi | 66 ++++++++++++++++++++++++++++++++++++
>>>> 1 file changed, 66 insertions(+)
>>>>
>>>> diff --git a/arch/arm64/boot/dts/qcom/sm6350.dtsi b/arch/arm64/boot/dts/qcom/sm6350.dtsi
>>>> index 9f9b9f9af0da..b1fb6c812da7 100644
>>>> --- a/arch/arm64/boot/dts/qcom/sm6350.dtsi
>>>> +++ b/arch/arm64/boot/dts/qcom/sm6350.dtsi
>>>> @@ -1448,6 +1448,72 @@ compute-cb@5 {
>>>> };
>>>> };
>>>>
>>>> + lpass_tlmm: pinctrl@33c0000 {
>>>> + compatible = "qcom,sm6350-lpass-lpi-pinctrl";
>>>> + reg = <0x0 0x033c0000 0x0 0x20000>,
>>>> + <0x0 0x03550000 0x0 0x10000>;
>>>> + gpio-controller;
>>>> + #gpio-cells = <2>;
>>>> + gpio-ranges = <&lpass_tlmm 0 0 15>;
>>>> +
>>>> + clocks = <&q6afecc LPASS_HW_MACRO_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
>>>> + <&q6afecc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
>>>> + clock-names = "core",
>>>> + "audio";
>>>> +
>>>> + i2s1_active: i2s1-active-state {
>>>> + clk-pins {
>>>> + pins = "gpio6";
>>>> + function = "i2s1_clk";
>>>> + drive-strength = <8>;
>>>> + bias-disable;
>>>> + output-high;
>>>
>>> This looks suspicious for the clock pin.
>>>
>>>> + };
>>>> +
>>>> + ws-pins {
>>>> + pins = "gpio7";
>>>> + function = "i2s1_ws";
>>>> + drive-strength = <8>;
>>>> + bias-disable;
>>>> + output-high;
>>>
>>> The same
>>>
>>>> + };
>>>> +
>>>> + data-pins {
>>>> + pins = "gpio8", "gpio9";
>>>> + function = "i2s1_data";
>>>> + drive-strength = <8>;
>>>> + bias-disable;
>>>> + output-high;
>>>
>>> And here.
>>
>> I've taken this pinctrl from downstream lagoon-lpi.dtsi. There the
>> active config for these pins have "output-high;" set.
>>
>> And fwiw this pinctrl works fine at runtime for driving the speaker.
>
> I tried to find an answer.
>
> A doc for this SoC says that i2s clock pins should be at output-low
> (2 mA) when muxed to the i2s_xxx function, with no information about
> bias settings (perhaps bias-disable), and in sleep they should be the
> same (minus the drive strength note, but 2mA is the lowest setting)
>
> I am further confused because the output-enable bit in the cfg
> register specifically says "when in GPIO mode"
Thanks for checking.
What should we do here now? Follow what you found in the docs, or follow
what downstream is doing (8ma output-high)?
https://gerrit-public.fairphone.software/plugins/gitiles/kernel/msm-extra/devicetree/+/refs/heads/int/15/fp4/qcom/lagoon-lpi.dtsi#219
I think apart from this question, this patchset should be ready to land.
Regards
Luca
p.s. I also briefly checked Google's repositories (which is the only
known place to have a commit history with devicetree since the
devicetree was just shipped with vendor/qcom/proprietary for everybody
else, without history) but there there's also no hint whether there's
any specific reason they deviate.
https://android.googlesource.com/kernel/msm-extra/devicetree/+log/refs/tags/android-11.0.0_r0.56/qcom/lagoon-lpi.dtsi