diff mbox series

[v3,2/2] thermal: rcar_gen3_thermal: disable interrupt in .remove

Message ID 20190423141414.24264-3-jiada_wang@mentor.com (mailing list archive)
State Superseded, archived
Delegated to: Eduardo Valentin
Headers show
Series thermal: rcar_gen3_thermal: fix IRQ issues | expand

Commit Message

Wang, Jiada April 23, 2019, 2:14 p.m. UTC
Currently IRQ is remain enabled after .remove, later if device is probed,
IRQ is requested before .thermal_init, this may cause IRQ function be
called before device is initialized.

this patch by disable interrupt in .remove, to ensure irq function
only be called after device is fully initialized.

Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
---
 drivers/thermal/rcar_gen3_thermal.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Sergei Shtylyov April 23, 2019, 2:44 p.m. UTC | #1
On 04/23/2019 05:14 PM, Jiada Wang wrote:

> Currently IRQ is remain enabled after .remove, later if device is probed,

   IRQ remains enabled.

> IRQ is requested before .thermal_init, this may cause IRQ function be
> called before device is initialized.
> 
> this patch by disable interrupt in .remove, to ensure irq function

   s/by disable/disables/.

> only be called after device is fully initialized.
> 
> Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
[...]

MBR, Sergei
diff mbox series

Patch

diff --git a/drivers/thermal/rcar_gen3_thermal.c b/drivers/thermal/rcar_gen3_thermal.c
index ebbaef5a3cf1..c63a86d3dac6 100644
--- a/drivers/thermal/rcar_gen3_thermal.c
+++ b/drivers/thermal/rcar_gen3_thermal.c
@@ -309,6 +309,9 @@  MODULE_DEVICE_TABLE(of, rcar_gen3_thermal_dt_ids);
 static int rcar_gen3_thermal_remove(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
+	struct rcar_gen3_thermal_priv *priv = dev_get_drvdata(dev);
+
+	rcar_thermal_irq_set(priv, false);
 
 	pm_runtime_put(dev);
 	pm_runtime_disable(dev);