Revert "thermal: rockchip: fix up the tsadc pinctrl setting error" [Linux 5.2]

Revert "thermal: rockchip: fix up the tsadc pinctrl setting error" [Linux 5.2]

This Linux kernel change "Revert “thermal: rockchip: fix up the tsadc pinctrl setting error”" is included in the Linux 5.2 release. This change is authored by Heiko Stuebner <heiko [at] sntech.de> on Wed May 22 16:12:36 2019 +0200. The commit for this change in Linux stable tree is 0f5ee06 (patch).

Revert "thermal: rockchip: fix up the tsadc pinctrl setting error"

This reverts commit 28694e009e512451ead5519dd801f9869acb1f60.

The commit causes multiple issues in that:
- the added call to ->control does potentially run unclocked
  causing a hang of the machine
- the added pinctrl-states are undocumented in the binding
- the added pinctrl-states are not backwards compatible, breaking
  old devicetrees.

Fixes: 28694e009e51 ("thermal: rockchip: fix up the tsadc pinctrl setting error")
Signed-off-by: Heiko Stuebner <[email protected]>
Reported-by: kernelci.org bot <[email protected]>
Reported-by: Enric Balletbo Serra <[email protected]>
Reported-by: Vicente Bergas <[email protected]>
Reported-by: Jack Mitchell <[email protected]>
Reported-by: Douglas Anderson <[email protected]>
Tested-by: Douglas Anderson <[email protected]>
Signed-off-by: Eduardo Valentin <[email protected]>

There are 36 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 drivers/thermal/rockchip_thermal.c | 36 +++---------------------------------
 1 file changed, 3 insertions(+), 33 deletions(-)

diff --git a/drivers/thermal/rockchip_thermal.c b/drivers/thermal/rockchip_thermal.c
index bda1ca1..7ef9c7e 100644
--- a/drivers/thermal/rockchip_thermal.c
+++ b/drivers/thermal/rockchip_thermal.c
@@ -172,9 +172,6 @@ struct rockchip_thermal_data {
    int tshut_temp;
    enum tshut_mode tshut_mode;
    enum tshut_polarity tshut_polarity;
-   struct pinctrl *pinctrl;
-   struct pinctrl_state *gpio_state;
-   struct pinctrl_state *otp_state;
 };

 /**
@@ -1283,8 +1280,6 @@ static int rockchip_thermal_probe(struct platform_device *pdev)
        return error;
    }

-   thermal->chip->control(thermal->regs, false);
-
    error = clk_prepare_enable(thermal->clk);
    if (error) {
        dev_err(&pdev->dev, "failed to enable converter clock: %d\n",
@@ -1310,30 +1305,6 @@ static int rockchip_thermal_probe(struct platform_device *pdev)
    thermal->chip->initialize(thermal->grf, thermal->regs,
                  thermal->tshut_polarity);

-   if (thermal->tshut_mode == TSHUT_MODE_GPIO) {
-       thermal->pinctrl = devm_pinctrl_get(&pdev->dev);
-       if (IS_ERR(thermal->pinctrl)) {
-           dev_err(&pdev->dev, "failed to find thermal pinctrl\n");
-           return PTR_ERR(thermal->pinctrl);
-       }
-
-       thermal->gpio_state = pinctrl_lookup_state(thermal->pinctrl,
-                              "gpio");
-       if (IS_ERR_OR_NULL(thermal->gpio_state)) {
-           dev_err(&pdev->dev, "failed to find thermal gpio state\n");
-           return -EINVAL;
-       }
-
-       thermal->otp_state = pinctrl_lookup_state(thermal->pinctrl,
-                             "otpout");
-       if (IS_ERR_OR_NULL(thermal->otp_state)) {
-           dev_err(&pdev->dev, "failed to find thermal otpout state\n");
-           return -EINVAL;
-       }
-
-       pinctrl_select_state(thermal->pinctrl, thermal->otp_state);
-   }
-
    for (i = 0; i < thermal->chip->chn_num; i++) {
        error = rockchip_thermal_register_sensor(pdev, thermal,
                        &thermal->sensors[i],
@@ -1404,8 +1375,8 @@ static int __maybe_unused rockchip_thermal_suspend(struct device *dev)

    clk_disable(thermal->pclk);
    clk_disable(thermal->clk);
-   if (thermal->tshut_mode == TSHUT_MODE_GPIO)
-       pinctrl_select_state(thermal->pinctrl, thermal->gpio_state);
+
+   pinctrl_pm_select_sleep_state(dev);

    return 0;
 }
@@ -1450,8 +1421,7 @@ static int __maybe_unused rockchip_thermal_resume(struct device *dev)
    for (i = 0; i < thermal->chip->chn_num; i++)
        rockchip_thermal_toggle_sensor(&thermal->sensors[i], true);

-   if (thermal->tshut_mode == TSHUT_MODE_GPIO)
-       pinctrl_select_state(thermal->pinctrl, thermal->otp_state);
+   pinctrl_pm_select_default_state(dev);

    return 0;
 }

Leave a Reply

Your email address will not be published. Required fields are marked *