From: "Nuno Sá" <nuno.sa@analog.com>
To: <linux-hwmon@vger.kernel.org>, <devicetree@vger.kernel.org>
Cc: Guenter Roeck <linux@roeck-us.net>,
Rob Herring <robh+dt@kernel.org>,
Jean Delvare <jdelvare@suse.com>
Subject: [RFC PATCH 4/6] hwmon: axi-fan-control: handle irqs in natural order
Date: Thu, 8 Jul 2021 14:01:09 +0200 [thread overview]
Message-ID: <20210708120111.519444-5-nuno.sa@analog.com> (raw)
In-Reply-To: <20210708120111.519444-1-nuno.sa@analog.com>
The core will now start out of reset at boot as soon as clocking is
available. Hence, by the time we unmask the interrupts we already might
have some of them set. Thus, it's important to handle them in the
natural order the core generates them. Otherwise, we could process
'ADI_IRQ_SRC_PWM_CHANGED' before 'ADI_IRQ_SRC_TEMP_INCREASE' and
erroneously set 'update_tacho_params' to true.
Signed-off-by: Nuno Sá <nuno.sa@analog.com>
---
drivers/hwmon/axi-fan-control.c | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/drivers/hwmon/axi-fan-control.c b/drivers/hwmon/axi-fan-control.c
index aa5a922f684d..d4b62d54375b 100644
--- a/drivers/hwmon/axi-fan-control.c
+++ b/drivers/hwmon/axi-fan-control.c
@@ -291,18 +291,9 @@ static irqreturn_t axi_fan_control_irq_handler(int irq, void *data)
u32 irq_pending = axi_ioread(ADI_REG_IRQ_PENDING, ctl);
u32 clear_mask;
- if (irq_pending & ADI_IRQ_SRC_NEW_MEASUR) {
- if (ctl->update_tacho_params) {
- u32 new_tach = axi_ioread(ADI_REG_TACH_MEASUR, ctl);
-
- /* get 25% tolerance */
- u32 tach_tol = DIV_ROUND_CLOSEST(new_tach * 25, 100);
- /* set new tacho parameters */
- axi_iowrite(new_tach, ADI_REG_TACH_PERIOD, ctl);
- axi_iowrite(tach_tol, ADI_REG_TACH_TOLERANCE, ctl);
- ctl->update_tacho_params = false;
- }
- }
+ if (irq_pending & ADI_IRQ_SRC_TEMP_INCREASE)
+ /* hardware requested a new pwm */
+ ctl->hw_pwm_req = true;
if (irq_pending & ADI_IRQ_SRC_PWM_CHANGED) {
/*
@@ -318,9 +309,18 @@ static irqreturn_t axi_fan_control_irq_handler(int irq, void *data)
}
}
- if (irq_pending & ADI_IRQ_SRC_TEMP_INCREASE)
- /* hardware requested a new pwm */
- ctl->hw_pwm_req = true;
+ if (irq_pending & ADI_IRQ_SRC_NEW_MEASUR) {
+ if (ctl->update_tacho_params) {
+ u32 new_tach = axi_ioread(ADI_REG_TACH_MEASUR, ctl);
+ /* get 25% tolerance */
+ u32 tach_tol = DIV_ROUND_CLOSEST(new_tach * 25, 100);
+
+ /* set new tacho parameters */
+ axi_iowrite(new_tach, ADI_REG_TACH_PERIOD, ctl);
+ axi_iowrite(tach_tol, ADI_REG_TACH_TOLERANCE, ctl);
+ ctl->update_tacho_params = false;
+ }
+ }
if (irq_pending & ADI_IRQ_SRC_TACH_ERR)
ctl->fan_fault = 1;
--
2.32.0
next prev parent reply other threads:[~2021-07-08 11:59 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-08 12:01 [RFC PATCH 0/6] AXI FAN new features and improvements Nuno Sá
2021-07-08 12:01 ` [RFC PATCH 1/6] hwmon: axi-fan-control: make sure the clock is enabled Nuno Sá
2021-07-17 17:24 ` Guenter Roeck
2021-07-19 7:27 ` Sa, Nuno
2021-07-08 12:01 ` [RFC PATCH 2/6] hwmon: axi-fan-control: add tacho devicetree properties Nuno Sá
2021-07-08 12:01 ` [RFC PATCH 3/6] dt-bindings: axi-fan-control: add tacho properties Nuno Sá
2021-07-12 17:26 ` Rob Herring
2021-07-15 10:26 ` Sa, Nuno
2021-07-15 20:39 ` Guenter Roeck
2021-07-16 7:44 ` Sa, Nuno
2021-07-16 15:03 ` Guenter Roeck
2021-07-19 7:46 ` Sa, Nuno
2021-07-21 15:00 ` Guenter Roeck
2021-07-22 13:00 ` Sa, Nuno
2021-07-22 15:23 ` Guenter Roeck
2021-07-08 12:01 ` Nuno Sá [this message]
2021-07-08 12:01 ` [RFC PATCH 5/6] hwmon: axi-fan-control: clear the fan fault irq at startup Nuno Sá
2021-07-08 12:01 ` [RFC PATCH 6/6] hwmon: axi-fan-control: support temperature vs pwm points Nuno Sá
2021-07-17 17:22 ` Guenter Roeck
2021-07-19 7:23 ` Sa, Nuno
2021-07-27 8:42 ` [RFC PATCH 0/6] AXI FAN new features and improvements Sa, Nuno
2021-07-28 18:38 ` Guenter Roeck
2021-08-02 8:04 ` Sa, Nuno
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210708120111.519444-5-nuno.sa@analog.com \
--to=nuno.sa@analog.com \
--cc=devicetree@vger.kernel.org \
--cc=jdelvare@suse.com \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).