Message ID | 20191104133020.8820-2-p.paillet@st.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | thermal: stm32: driver improvements | expand |
On 04/11/2019 14:30, Pascal Paillet wrote: > Remove hardware irq handler because it is not needed to disable the > interrupt before the threaded handler. The goal is to simplify > the code. Please elaborate the explanation here. I guess all the code removed is because of: /* read IT reason in SR and clear flags */ value = readl_relaxed(sensor->base + DTS_SR_OFFSET); Right? > Change-Id: Ida967e8543c8dafc6a24508000f64f6405add31d Remove Change-Id. Missing SoB. > --- > drivers/thermal/st/stm_thermal.c | 25 +------------------------ > 1 file changed, 1 insertion(+), 24 deletions(-) > > diff --git a/drivers/thermal/st/stm_thermal.c b/drivers/thermal/st/stm_thermal.c > index cf9ddc52f30e..31aa63fb3db1 100644 > --- a/drivers/thermal/st/stm_thermal.c > +++ b/drivers/thermal/st/stm_thermal.c > @@ -98,21 +98,10 @@ struct stm_thermal_sensor { > unsigned int low_temp_enabled; > int num_trips; > int irq; > - unsigned int irq_enabled; > void __iomem *base; > int t0, fmt0, ramp_coeff; > }; > > -static irqreturn_t stm_thermal_alarm_irq(int irq, void *sdata) > -{ > - struct stm_thermal_sensor *sensor = sdata; > - > - disable_irq_nosync(irq); > - sensor->irq_enabled = false; > - > - return IRQ_WAKE_THREAD; > -} > - > static irqreturn_t stm_thermal_alarm_irq_thread(int irq, void *sdata) > { > u32 value; > @@ -464,16 +453,6 @@ static int stm_thermal_get_temp(void *data, int *temp) > if (ret) > return ret; > } > - > - /* > - * Re-enable alarm IRQ if temperature below critical > - * temperature > - */ > - if (!sensor->irq_enabled && > - (celsius(*temp) < sensor->temp_critical)) { > - sensor->irq_enabled = true; > - enable_irq(sensor->irq); > - } > } > > return 0; > @@ -493,7 +472,7 @@ static int stm_register_irq(struct stm_thermal_sensor *sensor) > } > > ret = devm_request_threaded_irq(dev, sensor->irq, > - stm_thermal_alarm_irq, > + NULL, > stm_thermal_alarm_irq_thread, > IRQF_ONESHOT, > dev->driver->name, sensor); > @@ -503,8 +482,6 @@ static int stm_register_irq(struct stm_thermal_sensor *sensor) > return ret; > } > > - sensor->irq_enabled = true; > - > dev_dbg(dev, "%s: thermal IRQ registered", __func__); > > return 0; >
diff --git a/drivers/thermal/st/stm_thermal.c b/drivers/thermal/st/stm_thermal.c index cf9ddc52f30e..31aa63fb3db1 100644 --- a/drivers/thermal/st/stm_thermal.c +++ b/drivers/thermal/st/stm_thermal.c @@ -98,21 +98,10 @@ struct stm_thermal_sensor { unsigned int low_temp_enabled; int num_trips; int irq; - unsigned int irq_enabled; void __iomem *base; int t0, fmt0, ramp_coeff; }; -static irqreturn_t stm_thermal_alarm_irq(int irq, void *sdata) -{ - struct stm_thermal_sensor *sensor = sdata; - - disable_irq_nosync(irq); - sensor->irq_enabled = false; - - return IRQ_WAKE_THREAD; -} - static irqreturn_t stm_thermal_alarm_irq_thread(int irq, void *sdata) { u32 value; @@ -464,16 +453,6 @@ static int stm_thermal_get_temp(void *data, int *temp) if (ret) return ret; } - - /* - * Re-enable alarm IRQ if temperature below critical - * temperature - */ - if (!sensor->irq_enabled && - (celsius(*temp) < sensor->temp_critical)) { - sensor->irq_enabled = true; - enable_irq(sensor->irq); - } } return 0; @@ -493,7 +472,7 @@ static int stm_register_irq(struct stm_thermal_sensor *sensor) } ret = devm_request_threaded_irq(dev, sensor->irq, - stm_thermal_alarm_irq, + NULL, stm_thermal_alarm_irq_thread, IRQF_ONESHOT, dev->driver->name, sensor); @@ -503,8 +482,6 @@ static int stm_register_irq(struct stm_thermal_sensor *sensor) return ret; } - sensor->irq_enabled = true; - dev_dbg(dev, "%s: thermal IRQ registered", __func__); return 0;