arm64: dts: qcom: sa8155p-adp: fix SDHC2 CD pin configuration
authorVolodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Fri, 12 Apr 2024 19:03:25 +0000 (19:03 +0000)
committerBjorn Andersson <andersson@kernel.org>
Sat, 20 Apr 2024 17:58:33 +0000 (12:58 -0500)
There are two 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.

This patch fixes both mentioned issues by providing correct pin handle
and pinctrl configuration.

Fixes: 0deb2624e2d0 ("arm64: dts: qcom: sa8155p-adp: Add support for uSD card")
Cc: stable@vger.kernel.org
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Reviewed-by: Stephan Gerhold <stephan@gerhold.net>
Link: https://lore.kernel.org/r/20240412190310.1647893-1-volodymyr_babchuk@epam.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/sa8155p-adp.dts

index 5e4287f8c8cd19c84181b9533b9476eb0f7927ca..b2cf2c988336c0f7f99a0f710a59fb7fc956d6a3 100644 (file)
        };
 };
 
+&pmm8155au_1_gpios {
+       pmm8155au_1_sdc2_cd: sdc2-cd-default-state {
+               pins = "gpio4";
+               function = "normal";
+               input-enable;
+               bias-pull-up;
+               power-source = <0>;
+       };
+};
+
 &qupv3_id_1 {
        status = "okay";
 };
 &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>;
                        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 {
                        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 {