[PATCH 1/2] bus: ti-sysc: Add DRA7 SoC matching

Anurag Dutta posted 2 patches 1 month ago
There is a newer version of this series
[PATCH 1/2] bus: ti-sysc: Add DRA7 SoC matching
Posted by Anurag Dutta 1 month ago
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
Re: [PATCH 1/2] bus: ti-sysc: Add DRA7 SoC matching
Posted by Kumar, Udit 1 month ago
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;