In R-CAR Gen3 series, it has some thermal sensors. The interrupt I/F that can be used in thermal sensors is three. So it should be used the interrupt I/F as shared. This patch changes the shared settings for the thermal interrupts. Signed-off-by: Gaku Inami <gaku.inami.xw@xxxxxxxxxxxxxx> Signed-off-by: Khiem Nguyen <khiem.nguyen.xt@xxxxxxxxxxxxxxx> --- drivers/thermal/rcar_gen3_thermal.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/drivers/thermal/rcar_gen3_thermal.c b/drivers/thermal/rcar_gen3_thermal.c index a9a372b..e640a14 100644 --- a/drivers/thermal/rcar_gen3_thermal.c +++ b/drivers/thermal/rcar_gen3_thermal.c @@ -416,6 +416,7 @@ static int rcar_gen3_thermal_probe(struct platform_device *pdev) int ret = -ENODEV; int idle; struct device_node *tz_nd, *tmp_nd; + int i, irq_cnt; priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); if (!priv) @@ -489,13 +490,18 @@ static int rcar_gen3_thermal_probe(struct platform_device *pdev) rcar_gen3_thermal_irq_enable(priv); /* Interrupt */ - if (irq) { - ret = devm_request_irq(dev, irq->start, - rcar_gen3_thermal_irq, 0, - dev_name(dev), priv); - if (ret) { - dev_err(dev, "IRQ request failed\n "); - goto error_unregister; + if (rcar_has_irq_support(priv)) { + irq_cnt = platform_irq_count(pdev); + for (i = 0; i < irq_cnt; i++) { + irq = platform_get_resource(pdev, IORESOURCE_IRQ, i); + ret = devm_request_irq(dev, irq->start, + rcar_gen3_thermal_irq, + IRQF_SHARED, + dev_name(dev), priv); + if (ret) { + dev_err(dev, "IRQ request failed\n "); + goto error_unregister; + } } } -- 1.9.1