ramips: mt76x8: disable unused Ralink systick driver
authorShiji Yang <yangshiji66@qq.com>
Sun, 3 Nov 2024 04:30:21 +0000 (12:30 +0800)
committerPetr Štetiar <ynezz@true.cz>
Thu, 28 Nov 2024 18:49:27 +0000 (18:49 +0000)
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@qq.com>
Link: https://github.com/openwrt/openwrt/pull/16844
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 0c57510cedeff9caf795930ff86a436aa54bcc6d)
Link: https://github.com/openwrt/openwrt/pull/17097
Signed-off-by: Petr Štetiar <ynezz@true.cz>
target/linux/ramips/mt7620/config-6.6
target/linux/ramips/mt76x8/config-6.6
target/linux/ramips/patches-6.6/001-v6.13-clocksource-drivers-ralink-Add-Ralink-System-Tick-Co.patch [new file with mode: 0644]
target/linux/ramips/patches-6.6/311-MIPS-use-set_mode-to-enable-disable-the-cevt-r4k-irq.patch
target/linux/ramips/patches-6.6/312-MIPS-ralink-add-cpu-frequency-scaling.patch
target/linux/ramips/patches-6.6/316-arch-mips-do-not-select-illegal-access-driver-by-def.patch
target/linux/ramips/rt305x/config-6.6

index edd64a642cdd6f535f4b3d8d23a466b4b15ba3d5..3e1ef761e029b92d180366d8342bca98baff06f1 100644 (file)
@@ -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
index 31dc4a980f948e832fbc50a5a7f3399941fe1c61..f40d18efcce52390b41c807f8c7e228d9636557e 100644 (file)
@@ -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 (file)
index 0000000..cd2a908
--- /dev/null
@@ -0,0 +1,384 @@
+From 57cbfd333c9d65bfab1a06b49c75536ee28dc2ce Mon Sep 17 00:00:00 2001
+From: Sergio Paracuellos <sergio.paracuellos@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@gmail.com>
+Link: https://lore.kernel.org/r/20241028203643.191268-2-sergio.paracuellos@gmail.com
+Signed-off-by: Daniel Lezcano <daniel.lezcano@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@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@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);
index 36925b83267cf4d77b0dec3c6258c09fceb09bb3..d59a71af88b0a94976ac1f1d611dbe8d42463d79 100644 (file)
@@ -1,13 +1,11 @@
-From ce3d4a4111a5f7e6b4e74bceae5faa6ce388e8ec Mon Sep 17 00:00:00 2001
 From: John Crispin <blogic@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@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@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
index 0d70770941ecf85f42cf01a28e6b99210036c404..6acdfff837cca335139f80bff4d49787b30ae980 100644 (file)
@@ -1,19 +1,26 @@
-From bd30f19a006fb52bac80c6463c49dd2f4159f4ac Mon Sep 17 00:00:00 2001
 From: John Crispin <blogic@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@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@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@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@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@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@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@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;
  }
  
index 1dc54ccf232627386f13a8bb12acaeb3a3cda2c3..856804167096164b6b5638aad133061ff1372eb7 100644 (file)
@@ -11,8 +11,8 @@ Signed-off-by: John Crispin <blogic@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
index 6f7b7ea2a1741a92e18ffc100d89ff92fd485e0b..33efcba6332f061ccb51ec04fc51794c255de6af 100644 (file)
@@ -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