Re: [PATCH V2] clocksource/drivers/rda: Add sched_clock_register for RDA8810PL SoC

From: enlin.mu
Date: Mon Nov 17 2025 - 05:32:07 EST




On 2025/11/17 17:36, Manivannan Sadhasivam wrote:
On Fri, Nov 07, 2025 at 02:33:47PM +0800, Enlin Mu wrote:
From: Enlin Mu <enlin.mu@xxxxxxxxxx>

The current system log timestamp accuracy is tick, which can not
meet the usage requirements and needs to reach nanoseconds.

Which 'usage requirement' you are referring here?
Hi Mani

When using this chip,the timestamp accuracy of the kernel log is tick,
which makes it difficult to analyze some system exceptions.
Therefore, it is neccessary to adujst the accuracy of the sched_clock function.


Therefore, the sched_clock_register funciton needs to be add.

Signed-off-by: Enlin Mu <enlin.mu@xxxxxxxxxx>

But I'm happy to see a patch from Unisoc for RDA Micro SoC :)

- Mani

---
drivers/clocksource/timer-rda.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/clocksource/timer-rda.c b/drivers/clocksource/timer-rda.c
index fd1199c189bf..0be8e05970e2 100644
--- a/drivers/clocksource/timer-rda.c
+++ b/drivers/clocksource/timer-rda.c
@@ -13,6 +13,7 @@
#include <linux/init.h>
#include <linux/interrupt.h>
+#include <linux/sched_clock.h>
#include "timer-of.h"
@@ -153,7 +154,7 @@ static struct timer_of rda_ostimer_of = {
},
};
-static u64 rda_hwtimer_read(struct clocksource *cs)
+static u64 rda_hwtimer_clocksource_read(void)
{
void __iomem *base = timer_of_base(&rda_ostimer_of);
u32 lo, hi;
@@ -167,6 +168,11 @@ static u64 rda_hwtimer_read(struct clocksource *cs)
return ((u64)hi << 32) | lo;
}
+static u64 rda_hwtimer_read(struct clocksource *cs)
+{
+ return rda_hwtimer_clocksource_read();
+}
+
static struct clocksource rda_hwtimer_clocksource = {
.name = "rda-timer",
.rating = 400,
@@ -185,6 +191,7 @@ static int __init rda_timer_init(struct device_node *np)
return ret;
clocksource_register_hz(&rda_hwtimer_clocksource, rate);
+ sched_clock_register(rda_hwtimer_clocksource_read, 64, rate);
clockevents_config_and_register(&rda_ostimer_of.clkevt, rate,
0x2, UINT_MAX);
--
2.39.5