[openwrt/openwrt] ramips: mt76x8: disable unused Ralink systick driver
LEDE Commits
lede-commits at lists.infradead.org
Sun Nov 24 14:29:47 PST 2024
hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0c57510cedeff9caf795930ff86a436aa54bcc6d
commit 0c57510cedeff9caf795930ff86a436aa54bcc6d
Author: Shiji Yang <yangshiji66 at qq.com>
AuthorDate: Sun Nov 3 12:30:21 2024 +0800
ramips: mt76x8: disable unused Ralink systick driver
The mt76x8 series SoCs use the MIPS generic systick timer. Sync the
upstream Ralink systick driver changes and disable it for mt76x8
target to reduce the kernel size.
Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
Link: https://github.com/openwrt/openwrt/pull/16844
Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
target/linux/ramips/mt7620/config-6.6 | 2 +-
target/linux/ramips/mt76x8/config-6.6 | 6 +-
...-drivers-ralink-Add-Ralink-System-Tick-Co.patch | 384 +++++++++++++++++++++
...t_mode-to-enable-disable-the-cevt-r4k-irq.patch | 36 +-
...312-MIPS-ralink-add-cpu-frequency-scaling.patch | 35 +-
...o-not-select-illegal-access-driver-by-def.patch | 4 +-
target/linux/ramips/rt305x/config-6.6 | 2 +-
7 files changed, 426 insertions(+), 43 deletions(-)
diff --git a/target/linux/ramips/mt7620/config-6.6 b/target/linux/ramips/mt7620/config-6.6
index edd64a642c..3e1ef761e0 100644
--- a/target/linux/ramips/mt7620/config-6.6
+++ b/target/linux/ramips/mt7620/config-6.6
@@ -8,7 +8,6 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_BLK_MQ_PCI=y
CONFIG_CEVT_R4K=y
CONFIG_CEVT_SYSTICK_QUIRK=y
-CONFIG_CLKEVT_RT3352=y
CONFIG_CLKSRC_MMIO=y
CONFIG_CLK_MTMIPS=y
CONFIG_CLONE_BACKWARDS=y
@@ -180,6 +179,7 @@ CONFIG_PINCTRL_MTK_MTMIPS=y
CONFIG_PREEMPT_NONE_BUILD=y
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
CONFIG_RALINK=y
+CONFIG_RALINK_TIMER=y
CONFIG_RALINK_WDT=y
CONFIG_RANDSTRUCT_NONE=y
CONFIG_RATIONAL=y
diff --git a/target/linux/ramips/mt76x8/config-6.6 b/target/linux/ramips/mt76x8/config-6.6
index 31dc4a980f..f40d18efcc 100644
--- a/target/linux/ramips/mt76x8/config-6.6
+++ b/target/linux/ramips/mt76x8/config-6.6
@@ -6,9 +6,6 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_BLK_MQ_PCI=y
CONFIG_CEVT_R4K=y
-CONFIG_CEVT_SYSTICK_QUIRK=y
-CONFIG_CLKEVT_RT3352=y
-CONFIG_CLKSRC_MMIO=y
CONFIG_CLK_MTMIPS=y
CONFIG_CLONE_BACKWARDS=y
CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
@@ -173,6 +170,7 @@ CONFIG_PINCTRL_MTK_MTMIPS=y
CONFIG_PREEMPT_NONE_BUILD=y
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
CONFIG_RALINK=y
+# CONFIG_RALINK_TIMER is not set
# CONFIG_RALINK_WDT is not set
CONFIG_RANDSTRUCT_NONE=y
CONFIG_RATIONAL=y
@@ -215,8 +213,6 @@ CONFIG_SYS_SUPPORTS_MIPS16=y
CONFIG_SYS_SUPPORTS_ZBOOT=y
CONFIG_TARGET_ISA_REV=2
CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TIMER_OF=y
-CONFIG_TIMER_PROBE=y
CONFIG_TINY_SRCU=y
CONFIG_USB_SUPPORT=y
CONFIG_USE_OF=y
diff --git a/target/linux/ramips/patches-6.6/001-v6.13-clocksource-drivers-ralink-Add-Ralink-System-Tick-Co.patch b/target/linux/ramips/patches-6.6/001-v6.13-clocksource-drivers-ralink-Add-Ralink-System-Tick-Co.patch
new file mode 100644
index 0000000000..cd2a90826c
--- /dev/null
+++ b/target/linux/ramips/patches-6.6/001-v6.13-clocksource-drivers-ralink-Add-Ralink-System-Tick-Co.patch
@@ -0,0 +1,384 @@
+From 57cbfd333c9d65bfab1a06b49c75536ee28dc2ce Mon Sep 17 00:00:00 2001
+From: Sergio Paracuellos <sergio.paracuellos at gmail.com>
+Date: Mon, 28 Oct 2024 21:36:43 +0100
+Subject: clocksource/drivers/ralink: Add Ralink System Tick Counter driver
+
+System Tick Counter is present on Ralink SoCs RT3352 and MT7620. This
+driver has been in 'arch/mips/ralink' directory since the beggining of
+Ralink architecture support. However, it can be moved into a more proper
+place in 'drivers/clocksource'. Hence add it here adding also support for
+compile test targets and reducing LOC in architecture code folder.
+
+Signed-off-by: Sergio Paracuellos <sergio.paracuellos at gmail.com>
+Link: https://lore.kernel.org/r/20241028203643.191268-2-sergio.paracuellos@gmail.com
+Signed-off-by: Daniel Lezcano <daniel.lezcano at linaro.org>
+---
+ arch/mips/ralink/Kconfig | 7 --
+ arch/mips/ralink/Makefile | 2 -
+ arch/mips/ralink/cevt-rt3352.c | 153 -------------------------------------
+ drivers/clocksource/Kconfig | 9 +++
+ drivers/clocksource/Makefile | 1 +
+ drivers/clocksource/timer-ralink.c | 150 ++++++++++++++++++++++++++++++++++++
+ 6 files changed, 160 insertions(+), 162 deletions(-)
+ delete mode 100644 arch/mips/ralink/cevt-rt3352.c
+ create mode 100644 drivers/clocksource/timer-ralink.c
+
+--- a/arch/mips/ralink/Kconfig
++++ b/arch/mips/ralink/Kconfig
+@@ -1,13 +1,6 @@
+ # SPDX-License-Identifier: GPL-2.0
+ if RALINK
+
+-config CLKEVT_RT3352
+- bool
+- depends on SOC_RT305X || SOC_MT7620
+- default y
+- select TIMER_OF
+- select CLKSRC_MMIO
+-
+ config RALINK_ILL_ACC
+ bool
+ depends on SOC_RT305X
+--- a/arch/mips/ralink/Makefile
++++ b/arch/mips/ralink/Makefile
+@@ -10,8 +10,6 @@ ifndef CONFIG_MIPS_GIC
+ obj-y += clk.o timer.o
+ endif
+
+-obj-$(CONFIG_CLKEVT_RT3352) += cevt-rt3352.o
+-
+ obj-$(CONFIG_RALINK_ILL_ACC) += ill_acc.o
+
+ obj-$(CONFIG_IRQ_INTC) += irq.o
+--- a/arch/mips/ralink/cevt-rt3352.c
++++ /dev/null
+@@ -1,153 +0,0 @@
+-/*
+- * This file is subject to the terms and conditions of the GNU General Public
+- * License. See the file "COPYING" in the main directory of this archive
+- * for more details.
+- *
+- * Copyright (C) 2013 by John Crispin <john at phrozen.org>
+- */
+-
+-#include <linux/clockchips.h>
+-#include <linux/clocksource.h>
+-#include <linux/interrupt.h>
+-#include <linux/reset.h>
+-#include <linux/init.h>
+-#include <linux/time.h>
+-#include <linux/of.h>
+-#include <linux/of_irq.h>
+-#include <linux/of_address.h>
+-
+-#include <asm/mach-ralink/ralink_regs.h>
+-
+-#define SYSTICK_FREQ (50 * 1000)
+-
+-#define SYSTICK_CONFIG 0x00
+-#define SYSTICK_COMPARE 0x04
+-#define SYSTICK_COUNT 0x08
+-
+-/* route systick irq to mips irq 7 instead of the r4k-timer */
+-#define CFG_EXT_STK_EN 0x2
+-/* enable the counter */
+-#define CFG_CNT_EN 0x1
+-
+-struct systick_device {
+- void __iomem *membase;
+- struct clock_event_device dev;
+- int irq_requested;
+- int freq_scale;
+-};
+-
+-static int systick_set_oneshot(struct clock_event_device *evt);
+-static int systick_shutdown(struct clock_event_device *evt);
+-
+-static int systick_next_event(unsigned long delta,
+- struct clock_event_device *evt)
+-{
+- struct systick_device *sdev;
+- u32 count;
+-
+- sdev = container_of(evt, struct systick_device, dev);
+- count = ioread32(sdev->membase + SYSTICK_COUNT);
+- count = (count + delta) % SYSTICK_FREQ;
+- iowrite32(count, sdev->membase + SYSTICK_COMPARE);
+-
+- return 0;
+-}
+-
+-static void systick_event_handler(struct clock_event_device *dev)
+-{
+- /* noting to do here */
+-}
+-
+-static irqreturn_t systick_interrupt(int irq, void *dev_id)
+-{
+- struct clock_event_device *dev = (struct clock_event_device *) dev_id;
+-
+- dev->event_handler(dev);
+-
+- return IRQ_HANDLED;
+-}
+-
+-static struct systick_device systick = {
+- .dev = {
+- /*
+- * cevt-r4k uses 300, make sure systick
+- * gets used if available
+- */
+- .rating = 310,
+- .features = CLOCK_EVT_FEAT_ONESHOT,
+- .set_next_event = systick_next_event,
+- .set_state_shutdown = systick_shutdown,
+- .set_state_oneshot = systick_set_oneshot,
+- .event_handler = systick_event_handler,
+- },
+-};
+-
+-static int systick_shutdown(struct clock_event_device *evt)
+-{
+- struct systick_device *sdev;
+-
+- sdev = container_of(evt, struct systick_device, dev);
+-
+- if (sdev->irq_requested)
+- free_irq(systick.dev.irq, &systick.dev);
+- sdev->irq_requested = 0;
+- iowrite32(0, systick.membase + SYSTICK_CONFIG);
+-
+- return 0;
+-}
+-
+-static int systick_set_oneshot(struct clock_event_device *evt)
+-{
+- const char *name = systick.dev.name;
+- struct systick_device *sdev;
+- int irq = systick.dev.irq;
+-
+- sdev = container_of(evt, struct systick_device, dev);
+-
+- if (!sdev->irq_requested) {
+- if (request_irq(irq, systick_interrupt,
+- IRQF_PERCPU | IRQF_TIMER, name, &systick.dev))
+- pr_err("Failed to request irq %d (%s)\n", irq, name);
+- }
+- sdev->irq_requested = 1;
+- iowrite32(CFG_EXT_STK_EN | CFG_CNT_EN,
+- systick.membase + SYSTICK_CONFIG);
+-
+- return 0;
+-}
+-
+-static int __init ralink_systick_init(struct device_node *np)
+-{
+- int ret;
+-
+- systick.membase = of_iomap(np, 0);
+- if (!systick.membase)
+- return -ENXIO;
+-
+- systick.dev.name = np->name;
+- clockevents_calc_mult_shift(&systick.dev, SYSTICK_FREQ, 60);
+- systick.dev.max_delta_ns = clockevent_delta2ns(0x7fff, &systick.dev);
+- systick.dev.max_delta_ticks = 0x7fff;
+- systick.dev.min_delta_ns = clockevent_delta2ns(0x3, &systick.dev);
+- systick.dev.min_delta_ticks = 0x3;
+- systick.dev.irq = irq_of_parse_and_map(np, 0);
+- if (!systick.dev.irq) {
+- pr_err("%pOFn: request_irq failed", np);
+- return -EINVAL;
+- }
+-
+- ret = clocksource_mmio_init(systick.membase + SYSTICK_COUNT, np->name,
+- SYSTICK_FREQ, 301, 16,
+- clocksource_mmio_readl_up);
+- if (ret)
+- return ret;
+-
+- clockevents_register_device(&systick.dev);
+-
+- pr_info("%pOFn: running - mult: %d, shift: %d\n",
+- np, systick.dev.mult, systick.dev.shift);
+-
+- return 0;
+-}
+-
+-TIMER_OF_DECLARE(systick, "ralink,cevt-systick", ralink_systick_init);
+--- a/drivers/clocksource/Kconfig
++++ b/drivers/clocksource/Kconfig
+@@ -732,4 +732,13 @@ config GOLDFISH_TIMER
+ help
+ Support for the timer/counter of goldfish-rtc
+
++config RALINK_TIMER
++ bool "Ralink System Tick Counter"
++ depends on SOC_RT305X || SOC_MT7620 || COMPILE_TEST
++ select CLKSRC_MMIO
++ select TIMER_OF
++ help
++ Enables support for system tick counter present on
++ Ralink SoCs RT3352 and MT7620.
++
+ endmenu
+--- a/drivers/clocksource/Makefile
++++ b/drivers/clocksource/Makefile
+@@ -89,3 +89,4 @@ obj-$(CONFIG_MSC313E_TIMER) += timer-ms
+ obj-$(CONFIG_GOLDFISH_TIMER) += timer-goldfish.o
+ obj-$(CONFIG_GXP_TIMER) += timer-gxp.o
+ obj-$(CONFIG_CLKSRC_LOONGSON1_PWM) += timer-loongson1-pwm.o
++obj-$(CONFIG_RALINK_TIMER) += timer-ralink.o
+--- /dev/null
++++ b/drivers/clocksource/timer-ralink.c
+@@ -0,0 +1,150 @@
++// SPDX-License-Identifier: GPL-2.0
++/*
++ * Ralink System Tick Counter driver present on RT3352 and MT7620 SoCs.
++ *
++ * Copyright (C) 2013 by John Crispin <john at phrozen.org>
++ */
++
++#include <linux/clockchips.h>
++#include <linux/clocksource.h>
++#include <linux/interrupt.h>
++#include <linux/reset.h>
++#include <linux/init.h>
++#include <linux/time.h>
++#include <linux/of.h>
++#include <linux/of_irq.h>
++#include <linux/of_address.h>
++
++#define SYSTICK_FREQ (50 * 1000)
++
++#define SYSTICK_CONFIG 0x00
++#define SYSTICK_COMPARE 0x04
++#define SYSTICK_COUNT 0x08
++
++/* route systick irq to mips irq 7 instead of the r4k-timer */
++#define CFG_EXT_STK_EN 0x2
++/* enable the counter */
++#define CFG_CNT_EN 0x1
++
++struct systick_device {
++ void __iomem *membase;
++ struct clock_event_device dev;
++ int irq_requested;
++ int freq_scale;
++};
++
++static int systick_set_oneshot(struct clock_event_device *evt);
++static int systick_shutdown(struct clock_event_device *evt);
++
++static int systick_next_event(unsigned long delta,
++ struct clock_event_device *evt)
++{
++ struct systick_device *sdev;
++ u32 count;
++
++ sdev = container_of(evt, struct systick_device, dev);
++ count = ioread32(sdev->membase + SYSTICK_COUNT);
++ count = (count + delta) % SYSTICK_FREQ;
++ iowrite32(count, sdev->membase + SYSTICK_COMPARE);
++
++ return 0;
++}
++
++static void systick_event_handler(struct clock_event_device *dev)
++{
++ /* noting to do here */
++}
++
++static irqreturn_t systick_interrupt(int irq, void *dev_id)
++{
++ struct clock_event_device *dev = (struct clock_event_device *)dev_id;
++
++ dev->event_handler(dev);
++
++ return IRQ_HANDLED;
++}
++
++static struct systick_device systick = {
++ .dev = {
++ /*
++ * cevt-r4k uses 300, make sure systick
++ * gets used if available
++ */
++ .rating = 310,
++ .features = CLOCK_EVT_FEAT_ONESHOT,
++ .set_next_event = systick_next_event,
++ .set_state_shutdown = systick_shutdown,
++ .set_state_oneshot = systick_set_oneshot,
++ .event_handler = systick_event_handler,
++ },
++};
++
++static int systick_shutdown(struct clock_event_device *evt)
++{
++ struct systick_device *sdev;
++
++ sdev = container_of(evt, struct systick_device, dev);
++
++ if (sdev->irq_requested)
++ free_irq(systick.dev.irq, &systick.dev);
++ sdev->irq_requested = 0;
++ iowrite32(0, systick.membase + SYSTICK_CONFIG);
++
++ return 0;
++}
++
++static int systick_set_oneshot(struct clock_event_device *evt)
++{
++ const char *name = systick.dev.name;
++ struct systick_device *sdev;
++ int irq = systick.dev.irq;
++
++ sdev = container_of(evt, struct systick_device, dev);
++
++ if (!sdev->irq_requested) {
++ if (request_irq(irq, systick_interrupt,
++ IRQF_PERCPU | IRQF_TIMER, name, &systick.dev))
++ pr_err("Failed to request irq %d (%s)\n", irq, name);
++ }
++ sdev->irq_requested = 1;
++ iowrite32(CFG_EXT_STK_EN | CFG_CNT_EN,
++ systick.membase + SYSTICK_CONFIG);
++
++ return 0;
++}
++
++static int __init ralink_systick_init(struct device_node *np)
++{
++ int ret;
++
++ systick.membase = of_iomap(np, 0);
++ if (!systick.membase)
++ return -ENXIO;
++
++ systick.dev.name = np->name;
++ clockevents_calc_mult_shift(&systick.dev, SYSTICK_FREQ, 60);
++ systick.dev.max_delta_ns = clockevent_delta2ns(0x7fff, &systick.dev);
++ systick.dev.max_delta_ticks = 0x7fff;
++ systick.dev.min_delta_ns = clockevent_delta2ns(0x3, &systick.dev);
++ systick.dev.min_delta_ticks = 0x3;
++ systick.dev.irq = irq_of_parse_and_map(np, 0);
++ if (!systick.dev.irq) {
++ pr_err("%pOFn: request_irq failed", np);
++ return -EINVAL;
++ }
++
++ ret = clocksource_mmio_init(systick.membase + SYSTICK_COUNT, np->name,
++ SYSTICK_FREQ, 301, 16,
++ clocksource_mmio_readl_up);
++ if (ret)
++ return ret;
++
++ clockevents_register_device(&systick.dev);
++
++ pr_info("%pOFn: running - mult: %d, shift: %d\n",
++ np, systick.dev.mult, systick.dev.shift);
++
++ return 0;
++}
++
++TIMER_OF_DECLARE(systick, "ralink,cevt-systick", ralink_systick_init);
diff --git a/target/linux/ramips/patches-6.6/311-MIPS-use-set_mode-to-enable-disable-the-cevt-r4k-irq.patch b/target/linux/ramips/patches-6.6/311-MIPS-use-set_mode-to-enable-disable-the-cevt-r4k-irq.patch
index 36925b8326..d59a71af88 100644
--- a/target/linux/ramips/patches-6.6/311-MIPS-use-set_mode-to-enable-disable-the-cevt-r4k-irq.patch
+++ b/target/linux/ramips/patches-6.6/311-MIPS-use-set_mode-to-enable-disable-the-cevt-r4k-irq.patch
@@ -1,13 +1,11 @@
-From ce3d4a4111a5f7e6b4e74bceae5faa6ce388e8ec Mon Sep 17 00:00:00 2001
From: John Crispin <blogic at openwrt.org>
Date: Sun, 14 Jul 2013 23:08:11 +0200
-Subject: [PATCH 05/53] MIPS: use set_mode() to enable/disable the cevt-r4k
- irq
+Subject: [PATCH 1/2] MIPS: use set_mode() to enable/disable the cevt-r4k irq
Signed-off-by: John Crispin <blogic at openwrt.org>
---
arch/mips/kernel/cevt-r4k.c | 43 +++++++++++++++++++++++++++++++++++++
- arch/mips/ralink/Kconfig | 5 +++++
+ drivers/clocksource/Kconfig | 5 +++++
2 files changed, 48 insertions(+)
--- a/arch/mips/kernel/cevt-r4k.c
@@ -96,23 +94,21 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
return 0;
}
---- a/arch/mips/ralink/Kconfig
-+++ b/arch/mips/ralink/Kconfig
-@@ -1,12 +1,17 @@
- # SPDX-License-Identifier: GPL-2.0
- if RALINK
-
+--- a/drivers/clocksource/Kconfig
++++ b/drivers/clocksource/Kconfig
+@@ -731,10 +731,15 @@ config GOLDFISH_TIMER
+ depends on RTC_DRV_GOLDFISH
+ help
+ Support for the timer/counter of goldfish-rtc
++
+config CEVT_SYSTICK_QUIRK
+ bool
+ default n
-+
- config CLKEVT_RT3352
- bool
- depends on SOC_RT305X || SOC_MT7620
- default y
- select TIMER_OF
- select CLKSRC_MMIO
-+ select CEVT_SYSTICK_QUIRK
- config RALINK_ILL_ACC
- bool
+ config RALINK_TIMER
+ bool "Ralink System Tick Counter"
+ depends on SOC_RT305X || SOC_MT7620 || COMPILE_TEST
++ select CEVT_SYSTICK_QUIRK
+ select CLKSRC_MMIO
+ select TIMER_OF
+ help
diff --git a/target/linux/ramips/patches-6.6/312-MIPS-ralink-add-cpu-frequency-scaling.patch b/target/linux/ramips/patches-6.6/312-MIPS-ralink-add-cpu-frequency-scaling.patch
index 0d70770941..6acdfff837 100644
--- a/target/linux/ramips/patches-6.6/312-MIPS-ralink-add-cpu-frequency-scaling.patch
+++ b/target/linux/ramips/patches-6.6/312-MIPS-ralink-add-cpu-frequency-scaling.patch
@@ -1,19 +1,26 @@
-From bd30f19a006fb52bac80c6463c49dd2f4159f4ac Mon Sep 17 00:00:00 2001
From: John Crispin <blogic at openwrt.org>
Date: Sun, 28 Jul 2013 16:26:41 +0200
-Subject: [PATCH 06/53] MIPS: ralink: add cpu frequency scaling
+Subject: [PATCH 2/2] MIPS: ralink: add cpu frequency scaling
This feature will break udelay() and cause the delay loop to have longer delays
when the frequency is scaled causing a performance hit.
Signed-off-by: John Crispin <blogic at openwrt.org>
---
- arch/mips/ralink/cevt-rt3352.c | 38 ++++++++++++++++++++++++++++++++++++++
- 1 file changed, 38 insertions(+)
+ drivers/clocksource/timer-ralink.c | 117 ++++++++++++++++++++++-------
+ 1 file changed, 89 insertions(+), 28 deletions(-)
---- a/arch/mips/ralink/cevt-rt3352.c
-+++ b/arch/mips/ralink/cevt-rt3352.c
-@@ -29,6 +29,10 @@
+--- a/drivers/clocksource/timer-ralink.c
++++ b/drivers/clocksource/timer-ralink.c
+@@ -5,6 +5,7 @@
+ * Copyright (C) 2013 by John Crispin <john at phrozen.org>
+ */
+
++#include <asm/mach-ralink/ralink_regs.h>
+ #include <linux/clockchips.h>
+ #include <linux/clocksource.h>
+ #include <linux/interrupt.h>
+@@ -26,6 +27,10 @@
/* enable the counter */
#define CFG_CNT_EN 0x1
@@ -24,7 +31,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
struct systick_device {
void __iomem *membase;
struct clock_event_device dev;
-@@ -36,21 +40,53 @@ struct systick_device {
+@@ -33,21 +38,53 @@ struct systick_device {
int freq_scale;
};
@@ -64,7 +71,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
+}
+
static int systick_next_event(unsigned long delta,
- struct clock_event_device *evt)
+ struct clock_event_device *evt)
{
struct systick_device *sdev;
- u32 count;
@@ -83,18 +90,18 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
}
static void systick_event_handler(struct clock_event_device *dev)
-@@ -60,20 +96,25 @@ static void systick_event_handler(struct
+@@ -57,20 +94,25 @@ static void systick_event_handler(struct
static irqreturn_t systick_interrupt(int irq, void *dev_id)
{
-- struct clock_event_device *dev = (struct clock_event_device *) dev_id;
+- struct clock_event_device *dev = (struct clock_event_device *)dev_id;
+ int ret = 0;
+ struct clock_event_device *cdev;
+ struct systick_device *sdev;
- dev->event_handler(dev);
+ if (read_c0_cause() & STATUSF_IP7) {
-+ cdev = (struct clock_event_device *) dev_id;
++ cdev = (struct clock_event_device *)dev_id;
+ sdev = container_of(cdev, struct systick_device, dev);
+
+ /* Clear Count/Compare Interrupt */
@@ -117,7 +124,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
.features = CLOCK_EVT_FEAT_ONESHOT,
.set_next_event = systick_next_event,
.set_state_shutdown = systick_shutdown,
-@@ -91,7 +132,13 @@ static int systick_shutdown(struct clock
+@@ -88,7 +130,13 @@ static int systick_shutdown(struct clock
if (sdev->irq_requested)
free_irq(systick.dev.irq, &systick.dev);
sdev->irq_requested = 0;
@@ -132,7 +139,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
return 0;
}
-@@ -116,33 +163,46 @@ static int systick_set_oneshot(struct cl
+@@ -113,33 +161,46 @@ static int systick_set_oneshot(struct cl
return 0;
}
diff --git a/target/linux/ramips/patches-6.6/316-arch-mips-do-not-select-illegal-access-driver-by-def.patch b/target/linux/ramips/patches-6.6/316-arch-mips-do-not-select-illegal-access-driver-by-def.patch
index 1dc54ccf23..8568041670 100644
--- a/target/linux/ramips/patches-6.6/316-arch-mips-do-not-select-illegal-access-driver-by-def.patch
+++ b/target/linux/ramips/patches-6.6/316-arch-mips-do-not-select-illegal-access-driver-by-def.patch
@@ -11,8 +11,8 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
--- a/arch/mips/ralink/Kconfig
+++ b/arch/mips/ralink/Kconfig
-@@ -14,9 +14,9 @@ config CLKEVT_RT3352
- select CEVT_SYSTICK_QUIRK
+@@ -2,9 +2,9 @@
+ if RALINK
config RALINK_ILL_ACC
- bool
diff --git a/target/linux/ramips/rt305x/config-6.6 b/target/linux/ramips/rt305x/config-6.6
index 6f7b7ea2a1..33efcba633 100644
--- a/target/linux/ramips/rt305x/config-6.6
+++ b/target/linux/ramips/rt305x/config-6.6
@@ -6,7 +6,6 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_CEVT_R4K=y
CONFIG_CEVT_SYSTICK_QUIRK=y
-CONFIG_CLKEVT_RT3352=y
CONFIG_CLKSRC_MMIO=y
CONFIG_CLK_MTMIPS=y
CONFIG_CLONE_BACKWARDS=y
@@ -160,6 +159,7 @@ CONFIG_PREEMPT_NONE_BUILD=y
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
CONFIG_RALINK=y
# CONFIG_RALINK_ILL_ACC is not set
+CONFIG_RALINK_TIMER=y
CONFIG_RALINK_WDT=y
CONFIG_RANDSTRUCT_NONE=y
CONFIG_RATIONAL=y
More information about the lede-commits
mailing list