Re: Re: [PATCH v12 4/4] dt-bindings: timer: dwc: Update resets property items
"Xuyang Dong" <[email protected]> Thu, 23 Jul 2026 15:18:31 +0800 (GMT+08:00)
| Newsgroups | org.kernel.vger.linux-pwm,dev.linux.lists.sashiko-reviews,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
> > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > - [High] The timer driver ignores the newly documented APB interface reset (`presetn`), leading to system hangs if specified. > -- > > --- Patch [4]: [PATCH v12 4/4] dt-bindings: timer: dwc: Update resets property items --- > commit 0298afcc08fcedc8999619356e00017ff450203d > Author: Xuyang Dong <[email protected]> > > dt-bindings: timer: dwc: Update resets property items > > This commit updates the snps,dw-apb-timer binding to allow up to two reset > lines. It specifically documents the timer_N_resetn and presetn reset inputs > to match the hardware capabilities of the DesignWare IP family. > > > diff --git a/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml b/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml > > index d33c9205a9093..4d30cd01ac65f 100644 > > --- a/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml > > +++ b/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml > > @@ -25,7 +25,10 @@ properties: > > maxItems: 1 > > > > resets: > > - maxItems: 1 > > + minItems: 1 > > + items: > > + - description: Timer ticks reference (timer_N_resetn) reset > > + - description: APB interface (presetn) reset > > [Severity: High] > Will this cause a system bus hang if a device tree is updated to specify > both resets? > > Looking at timer_get_base_and_rate() in > drivers/clocksource/dw_apb_timer_of.c, the driver unconditionally fetches > and deasserts only the first reset by passing NULL as the id: > > drivers/clocksource/dw_apb_timer_of.c:timer_get_base_and_rate() { > ... > /* > * Reset the timer if the reset control is available, wiping > * out the state the firmware may have left it > */ > rstc = of_reset_control_get(np, NULL); > if (!IS_ERR(rstc)) { > reset_control_assert(rstc); > reset_control_deassert(rstc); > } > ... > } > > If the device tree specifies both resets to match this newly added schema > capability, the second reset (presetn, which controls the APB bus interface) > will be completely ignored and left asserted. > > Should the driver be updated to explicitly fetch and deassert both resets > (e.g., via reset_control_bulk_get) before extending the binding, to avoid > system hangs when memory-mapped registers are accessed? > Hi Sashiko, In the next version, replace of_reset_control_get() with of_reset_control_array_get_optional_exclusive() to ensure all resets can be deasserted. Best regards, Xuyang Dong > > > > clocks: > > minItems: 1 > > -- > Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=4