From: dongxuyang@eswincomputing.com
To: ukleinek@kernel.org, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, ben-linux@fluff.org,
ben.dooks@codethink.co.uk, linux-pwm@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
p.zabel@pengutronix.de, daniel.lezcano@kernel.org,
tglx@kernel.org
Cc: ningyu@eswincomputing.com, linmin@eswincomputing.com,
xuxiang@eswincomputing.com, wangguosheng@eswincomputing.com,
pinkesh.vaghela@einfochips.com,
Xuyang Dong <dongxuyang@eswincomputing.com>
Subject: [PATCH v14 5/5] clocksource: dw_apb_timer: Use reset array API to handle all resets
Date: Thu, 30 Jul 2026 19:16:28 +0800 [thread overview]
Message-ID: <20260730111628.1990-1-dongxuyang@eswincomputing.com> (raw)
In-Reply-To: <20260730111425.1680-1-dongxuyang@eswincomputing.com>
From: Xuyang Dong <dongxuyang@eswincomputing.com>
timer_get_base_and_rate() only fetched a single, index-0 reset control
via of_reset_control_get(np, NULL), which does not consult reset-names
and always resolves to the first entry. With the binding now allowing a
second entry (APB interface reset), a device tree that lists both lines
would leave the second entry permanently unasserted, since the driver
never touches it.
Replace it with of_reset_control_array_get_optional_exclusive() to
fetch and trigger all reset lines listed in the device tree at once,
ensuring every line is properly asserted and deasserted rather than
only the first. The exclusive references are intentionally retained
for the lifetime of the timer -- the hardware continues to operate
after initialization, and holding the references keeps the resets
deasserted, preventing other devices on the bus from re-asserting
them while the timer is running.
Signed-off-by: Xuyang Dong <dongxuyang@eswincomputing.com>
---
drivers/clocksource/dw_apb_timer_of.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/clocksource/dw_apb_timer_of.c b/drivers/clocksource/dw_apb_timer_of.c
index 3245eb0c602d..3788b46e49ed 100644
--- a/drivers/clocksource/dw_apb_timer_of.c
+++ b/drivers/clocksource/dw_apb_timer_of.c
@@ -29,9 +29,14 @@ static int __init timer_get_base_and_rate(struct device_node *np,
/*
* Reset the timer if the reset control is available, wiping
- * out the state the firmware may have left it
+ * out the state the firmware may have left it.
+ * Use the array variant to fetch and trigger all reset lines
+ * (e.g., timer and APB interface resets) together, without
+ * ordering requirements.
+ * The exclusive references are intentionally held to keep the
+ * resets deasserted while the timer is running.
*/
- rstc = of_reset_control_get(np, NULL);
+ rstc = of_reset_control_array_get_optional_exclusive(np);
if (!IS_ERR(rstc)) {
reset_control_assert(rstc);
reset_control_deassert(rstc);
--
2.34.1
prev parent reply other threads:[~2026-07-30 11:16 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-30 11:14 [PATCH v14 0/5] Update designware pwm driver dongxuyang
2026-07-30 11:15 ` [PATCH v14 1/5] dt-bindings: pwm: dwc: Document optional resets property dongxuyang
2026-07-30 11:15 ` [PATCH v14 2/5] dt-bindings: pwm: dwc: Add eswin compatible dongxuyang
2026-07-30 11:15 ` [PATCH v14 3/5] pwm: dwc: add of/platform support dongxuyang
2026-07-30 11:16 ` [PATCH v14 4/5] dt-bindings: timer: dwc: Update resets property items dongxuyang
2026-07-30 11:16 ` dongxuyang [this message]
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=20260730111628.1990-1-dongxuyang@eswincomputing.com \
--to=dongxuyang@eswincomputing.com \
--cc=ben-linux@fluff.org \
--cc=ben.dooks@codethink.co.uk \
--cc=conor+dt@kernel.org \
--cc=daniel.lezcano@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linmin@eswincomputing.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=ningyu@eswincomputing.com \
--cc=p.zabel@pengutronix.de \
--cc=pinkesh.vaghela@einfochips.com \
--cc=robh@kernel.org \
--cc=tglx@kernel.org \
--cc=ukleinek@kernel.org \
--cc=wangguosheng@eswincomputing.com \
--cc=xuxiang@eswincomputing.com \
/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