Re: [PATCH v2] arm64: dts: qcom: sa8155p-adp: fix SDHC2 configuration

From: Volodymyr Babchuk
Date: Fri Apr 12 2024 - 11:25:17 EST



Hi Krzysztof,

Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> writes:

> On 11/04/2024 13:55, Volodymyr Babchuk wrote:
>> There are multiple issues with SDHC2 configuration for SA8155P-ADP,
>> which prevent use of SDHC2 and causes issues with ethernet:
>>
>> - Card Detect pin for SHDC2 on SA8155P-ADP is connected to gpio4 of
>> PMM8155AU_1, not to SoC itself. SoC's gpio4 is used for DWMAC
>> TX. If sdhc driver probes after dwmac driver, it reconfigures
>> gpio4 and this breaks Ethernet MAC.
>>
>> - pinctrl configuration mentions gpio96 as CD pin. It seems it was
>> copied from some SM8150 example, because as mentioned above,
>> correct CD pin is gpio4 on PMM8155AU_1.
>>
>> - L13C voltage regulator limits minimal voltage to 2.504V, which
>> prevents use 1.8V to power SD card, which in turns does not allow
>> card to work in UHS mode.
>
> That's not really related. One issue, one commit.
>
>>
>> This patch fixes all the mentioned issues.
>>
>> Fixes: 0deb2624e2d0 ("arm64: dts: qcom: sa8155p-adp: Add support for uSD card")
>> Cc: stable@xxxxxxxxxxxxxxx
>> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@xxxxxxxx>
>>
>> ---
>>
>> In v2:
>> - Added "Fixes:" tag
>> - CCed stable ML
>> - Fixed pinctrl configuration
>> - Extended voltage range for L13C voltage regulator
>> ---
>> arch/arm64/boot/dts/qcom/sa8155p-adp.dts | 32 +++++++++++-------------
>> 1 file changed, 14 insertions(+), 18 deletions(-)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/sa8155p-adp.dts b/arch/arm64/boot/dts/qcom/sa8155p-adp.dts
>> index 5e4287f8c8cd1..b9d56bda96759 100644
>> --- a/arch/arm64/boot/dts/qcom/sa8155p-adp.dts
>> +++ b/arch/arm64/boot/dts/qcom/sa8155p-adp.dts
>> @@ -283,7 +283,7 @@ vreg_l12c_1p808: ldo12 {
>>
>> vreg_l13c_2p96: ldo13 {
>> regulator-name = "vreg_l13c_2p96";
>> - regulator-min-microvolt = <2504000>;
>> + regulator-min-microvolt = <1800000>;
>> regulator-max-microvolt = <2960000>;
>> regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> };
>> @@ -384,10 +384,10 @@ &remoteproc_cdsp {
>> &sdhc_2 {
>> status = "okay";
>>
>> - cd-gpios = <&tlmm 4 GPIO_ACTIVE_LOW>;
>> + cd-gpios = <&pmm8155au_1_gpios 4 GPIO_ACTIVE_LOW>;
>> pinctrl-names = "default", "sleep";
>> - pinctrl-0 = <&sdc2_on>;
>> - pinctrl-1 = <&sdc2_off>;
>> + pinctrl-0 = <&sdc2_on &pmm8155au_1_sdc2_cd>;
>> + pinctrl-1 = <&sdc2_off &pmm8155au_1_sdc2_cd>;
>> vqmmc-supply = <&vreg_l13c_2p96>; /* IO line power */
>> vmmc-supply = <&vreg_l17a_2p96>; /* Card power line */
>> bus-width = <4>;
>> @@ -505,13 +505,6 @@ data-pins {
>> bias-pull-up; /* pull up */
>> drive-strength = <16>; /* 16 MA */
>> };
>> -
>> - sd-cd-pins {
>> - pins = "gpio96";
>> - function = "gpio";
>> - bias-pull-up; /* pull up */
>> - drive-strength = <2>; /* 2 MA */
>> - };
>> };
>>
>> sdc2_off: sdc2-off-state {
>> @@ -532,13 +525,6 @@ data-pins {
>> bias-pull-up; /* pull up */
>> drive-strength = <2>; /* 2 MA */
>> };
>> -
>> - sd-cd-pins {
>> - pins = "gpio96";
>> - function = "gpio";
>> - bias-pull-up; /* pull up */
>> - drive-strength = <2>; /* 2 MA */
>> - };
>> };
>>
>> usb2phy_ac_en1_default: usb2phy-ac-en1-default-state {
>> @@ -604,3 +590,13 @@ phy-reset-pins {
>> };
>> };
>> };
>> +
>> +&pmm8155au_1_gpios {
>> + pmm8155au_1_sdc2_cd: pmm8155au_1-sdc2-cd {
>
> No underscores in node names.

Fill fix.

> Please also follow tlmm style of naming nodes.

Just to be on the same page, will "pmm8155au_1_sdc2_cd: sdc2-cd-pins" be fine?

> Also does not look like node is placed in alphabetical place. Where did
> you put it?

I can't say that the file is sorted in the first place:

# grep "^&" arch/arm64/boot/dts/qcom/sa8155p-adp.dts
&apps_rsc {
&ethernet {
&qupv3_id_1 {
&remoteproc_adsp {
&remoteproc_cdsp {
&sdhc_2 {
&uart2 {
&uart9 {
&ufs_mem_hc {
&ufs_mem_phy {
&usb_1 {
&usb_1_dwc3 {
&usb_1_hsphy {
&usb_1_qmpphy {
&usb_2 {
&usb_2_dwc3 {
&usb_2_hsphy {
&usb_2_qmpphy {
&pcie0 {
&pcie0_phy {
&pcie1_phy {
&tlmm {
&pmm8155au_1_gpios {


So, I can put after &pci1 to have it grouped with other entries that
start with p*, or I can put right after &ethernet to make it appear in
alphabetical order. It is your call.

--
WBR, Volodymyr