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]>
---
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 bda1ca199abd..7ef9c7efe950 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;
}
--
2.20.1
Hi,
On Wed, May 22, 2019 at 7:12 AM Heiko Stuebner <[email protected]> wrote:
>
> 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]>
> ---
> drivers/thermal/rockchip_thermal.c | 36 +++---------------------------
> 1 file changed, 3 insertions(+), 33 deletions(-)
In case it helps with the urgency, there are lots of people who have
all independently needed to identify which commit stopped their boards
from booting mainline or broke temperature reading. I'm aware of at
least these reports:
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]>
I can confirm that my board boots again after this revert, thus:
Tested-by: Douglas Anderson <[email protected]>
On Wed, May 22, 2019 at 08:34:34AM -0700, Doug Anderson wrote:
> Hi,
>
> On Wed, May 22, 2019 at 7:12 AM Heiko Stuebner <[email protected]> wrote:
> >
> > 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]>
> > ---
> > drivers/thermal/rockchip_thermal.c | 36 +++---------------------------
> > 1 file changed, 3 insertions(+), 33 deletions(-)
>
> In case it helps with the urgency, there are lots of people who have
> all independently needed to identify which commit stopped their boards
> from booting mainline or broke temperature reading. I'm aware of at
> least these reports:
>
> 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]>
>
> I can confirm that my board boots again after this revert, thus:
>
> Tested-by: Douglas Anderson <[email protected]>
I see. I can collect this revert if that is what unblocks you guys.
Elaine, do you mind checking why these pinctrl changes are causing
boot issues?
Am Freitag, 24. Mai 2019, 04:20:43 CEST schrieb Eduardo Valentin:
> On Wed, May 22, 2019 at 08:34:34AM -0700, Doug Anderson wrote:
> > Hi,
> >
> > On Wed, May 22, 2019 at 7:12 AM Heiko Stuebner <[email protected]> wrote:
> > >
> > > 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]>
> > > ---
> > > drivers/thermal/rockchip_thermal.c | 36 +++---------------------------
> > > 1 file changed, 3 insertions(+), 33 deletions(-)
> >
> > In case it helps with the urgency, there are lots of people who have
> > all independently needed to identify which commit stopped their boards
> > from booting mainline or broke temperature reading. I'm aware of at
> > least these reports:
> >
> > 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]>
> >
> > I can confirm that my board boots again after this revert, thus:
> >
> > Tested-by: Douglas Anderson <[email protected]>
>
> I see. I can collect this revert if that is what unblocks you guys.
>
> Elaine, do you mind checking why these pinctrl changes are causing
> boot issues?
The pinctrl issue is secondary, it makes the thermal driver fail to
probe, due to not handling existing devicetrees properly.
Hence the driver needs to stay backwards compatible with existing
devicetrees.
The hang is caused by the call to the per-soc ->control callback before
the clocks get enabled, relying on it being on at boot and that isn't the
case everywhere.
Heiko