From: Sinthu Raja <sinthu.raja@ti.com>
Kernel Commit 25de4ce5ed02 ("clocksource/drivers/timer-ti-dm: Handle
dra7 timer wrap errata i940") states that "There is a timer wrap issue
on dra7 and as a work around, we need to use timer-ti-dm percpu timers
instead. So, configure dmtimer3 and 4 as percpu timers by default." In
this commit, the author has used ti,no-reset-on-init and ti,no-idle quirks.
The sysc_check_active_timer() checks for these quirks and accordingly,
returns EBUSY error if the quirks match. Because of this, the timer
modules fail to probe as can be observed during bootup :"ti-sysc
4882c000.target-module: probe with driver ti-sysc failed with error -16"
Return 'ENXIO' instead of 'EBUSY' for DRA7 SoC, so that the error is set
to ENXIO and the module gets probed under "certain conditions".
Signed-off-by: Sinthu Raja <sinthu.raja@ti.com>
Signed-off-by: Anurag Dutta <a-dutta@ti.com>
---
drivers/bus/ti-sysc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
index 5566ad11399e..90766f804706 100644
--- a/drivers/bus/ti-sysc.c
+++ b/drivers/bus/ti-sysc.c
@@ -3117,7 +3117,8 @@ static int sysc_check_active_timer(struct sysc *ddata)
* can be dropped if we stop supporting old beagleboard revisions
* A to B4 at some point.
*/
- if (sysc_soc->soc == SOC_3430 || sysc_soc->soc == SOC_AM35)
+ if (sysc_soc->soc == SOC_3430 || sysc_soc->soc == SOC_AM35 ||
+ sysc_soc->soc == SOC_DRA7)
error = -ENXIO;
else
error = -EBUSY;
--
2.34.1
On 8/29/2025 2:59 PM, Anurag Dutta wrote:
> From: Sinthu Raja <sinthu.raja@ti.com>
>
> Kernel Commit 25de4ce5ed02 ("clocksource/drivers/timer-ti-dm: Handle
> dra7 timer wrap errata i940") states that "There is a timer wrap issue
> on dra7 and as a work around, we need to use timer-ti-dm percpu timers
> instead. So, configure dmtimer3 and 4 as percpu timers by default." In
> this commit, the author has used ti,no-reset-on-init and ti,no-idle quirks.
>
> The sysc_check_active_timer() checks for these quirks and accordingly,
> returns EBUSY error if the quirks match. Because of this, the timer
> modules fail to probe as can be observed during bootup :"ti-sysc
> 4882c000.target-module: probe with driver ti-sysc failed with error -16"
>
> Return 'ENXIO' instead of 'EBUSY' for DRA7 SoC, so that the error is set
> to ENXIO and the module gets probed under "certain conditions".
Please define, what are "certain conditions".
With addition of conditions in commit message, for this patch
Reviewed-by: Udit Kumar <u-kumar1@ti.com>
>
> Signed-off-by: Sinthu Raja <sinthu.raja@ti.com>
> Signed-off-by: Anurag Dutta <a-dutta@ti.com>
> ---
> drivers/bus/ti-sysc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
> index 5566ad11399e..90766f804706 100644
> --- a/drivers/bus/ti-sysc.c
> +++ b/drivers/bus/ti-sysc.c
> @@ -3117,7 +3117,8 @@ static int sysc_check_active_timer(struct sysc *ddata)
> * can be dropped if we stop supporting old beagleboard revisions
> * A to B4 at some point.
> */
> - if (sysc_soc->soc == SOC_3430 || sysc_soc->soc == SOC_AM35)
> + if (sysc_soc->soc == SOC_3430 || sysc_soc->soc == SOC_AM35 ||
> + sysc_soc->soc == SOC_DRA7)
> error = -ENXIO;
> else
> error = -EBUSY;
© 2016 - 2026 Red Hat, Inc.