mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-02-17 20:47:01 +00:00
realtek: 6.6: copy patch 302-clocksource-add-otto-driver
Copy the patch file to 6.6 Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
This commit is contained in:
parent
82732d2ebe
commit
955d6b41f1
@ -0,0 +1,93 @@
|
||||
From 3cc8011171186d906c547bc6f0c1f8e350edc7cf Mon Sep 17 00:00:00 2001
|
||||
From: Markus Stockhausen <markus.stockhausen@gmx.de>
|
||||
Date: Mon, 3 Oct 2022 14:45:21 +0200
|
||||
Subject: [PATCH] realtek: resurrect timer driver
|
||||
|
||||
Now that we provide a clock driver for the Reltek SOCs the CPU frequency might
|
||||
change on demand. This has direct visible effects during operation
|
||||
|
||||
- the CEVT 4K timer is no longer a stable clocksource
|
||||
- after CPU frequencies changes time calculation works wrong
|
||||
- sched_clock falls back to kernel default interval (100 Hz)
|
||||
- timestamps in dmesg have only 2 digits left
|
||||
|
||||
[ 0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps ...
|
||||
[ 0.060000] pid_max: default: 32768 minimum: 301
|
||||
[ 0.070000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
|
||||
[ 0.070000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
|
||||
[ 0.080000] dyndbg: Ignore empty _ddebug table in a CONFIG_DYNAMIC_DEBUG_CORE build
|
||||
[ 0.090000] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, ...
|
||||
|
||||
Looking around where we can start the CEVT timer for RTL930X is a good basis.
|
||||
Initially it was developed as a clocksource driver for the broken timer in that
|
||||
specific SOC series. Afterwards it was shifted around to the CEVT location,
|
||||
got SMP enablement and lost its clocksource feature. So we at least have
|
||||
something to copy from. As the timers on these devices are well understood
|
||||
the implementation follows this way:
|
||||
|
||||
- leave the RTL930X implementation as is
|
||||
- provide a new driver for RTL83XX devices only
|
||||
- swap RTL930X driver at a later time
|
||||
|
||||
Like the clock driver this patch contains a self contained module that is SOC
|
||||
independet and already provides full support for the RTL838X, RTL839X and
|
||||
RTL930X devices. Some of the new (or reestablished) features are:
|
||||
|
||||
- simplified initialization routines
|
||||
- SMP setup with CPU hotplug framework
|
||||
- derived from LXB clock speed
|
||||
- supplied clocksource
|
||||
- dedicated register functions for better readability
|
||||
- documentation about some caveats
|
||||
|
||||
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
|
||||
[remove unused header includes, remove old CONFIG_MIPS dependency, add
|
||||
REALTEK_ prefix to driver symbol]
|
||||
Signed-off-by: Sander Vanheule <sander@svanheule.net>
|
||||
|
||||
---
|
||||
drivers/clocksource/Kconfig | 12 +++
|
||||
drivers/clocksource/Makefile | 1 +
|
||||
include/linux/cpuhotplug.h | 1 +
|
||||
3 files changed, 14 insertions(+)
|
||||
|
||||
--- a/drivers/clocksource/Kconfig
|
||||
+++ b/drivers/clocksource/Kconfig
|
||||
@@ -127,6 +127,17 @@ config RDA_TIMER
|
||||
help
|
||||
Enables the support for the RDA Micro timer driver.
|
||||
|
||||
+config REALTEK_OTTO_TIMER
|
||||
+ bool "Clocksource/timer for the Realtek Otto platform"
|
||||
+ select COMMON_CLK
|
||||
+ select TIMER_OF
|
||||
+ help
|
||||
+ This driver adds support for the timers found in the Realtek RTL83xx
|
||||
+ and RTL93xx SoCs series. This includes chips such as RTL8380, RTL8381
|
||||
+ and RTL832, as well as chips from the RTL839x series, such as RTL8390
|
||||
+ RT8391, RTL8392, RTL8393 and RTL8396 and chips of the RTL930x series
|
||||
+ such as RTL9301, RTL9302 or RTL9303.
|
||||
+
|
||||
config SUN4I_TIMER
|
||||
bool "Sun4i timer driver" if COMPILE_TEST
|
||||
depends on HAS_IOMEM
|
||||
--- a/drivers/clocksource/Makefile
|
||||
+++ b/drivers/clocksource/Makefile
|
||||
@@ -58,6 +58,7 @@ obj-$(CONFIG_MILBEAUT_TIMER) += timer-mi
|
||||
obj-$(CONFIG_SPRD_TIMER) += timer-sprd.o
|
||||
obj-$(CONFIG_NPCM7XX_TIMER) += timer-npcm7xx.o
|
||||
obj-$(CONFIG_RDA_TIMER) += timer-rda.o
|
||||
+obj-$(CONFIG_REALTEK_OTTO_TIMER) += timer-rtl-otto.o
|
||||
|
||||
obj-$(CONFIG_ARC_TIMERS) += arc_timer.o
|
||||
obj-$(CONFIG_ARM_ARCH_TIMER) += arm_arch_timer.o
|
||||
--- a/include/linux/cpuhotplug.h
|
||||
+++ b/include/linux/cpuhotplug.h
|
||||
@@ -176,6 +176,7 @@ enum cpuhp_state {
|
||||
CPUHP_AP_MARCO_TIMER_STARTING,
|
||||
CPUHP_AP_MIPS_GIC_TIMER_STARTING,
|
||||
CPUHP_AP_ARC_TIMER_STARTING,
|
||||
+ CPUHP_AP_REALTEK_TIMER_STARTING,
|
||||
CPUHP_AP_RISCV_TIMER_STARTING,
|
||||
CPUHP_AP_CLINT_TIMER_STARTING,
|
||||
CPUHP_AP_CSKY_TIMER_STARTING,
|
Loading…
Reference in New Issue
Block a user