+++ /dev/null
-From 79717ef45f51ab97a06693a3e7480b02d351f2de Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 6 Oct 2023 17:16:03 -0700
-Subject: ARM: OMAP: timer32K: fix all kernel-doc warnings
-
-From: Randy Dunlap <rdunlap@infradead.org>
-
-[ Upstream commit 7eeca8ccd1066c68d6002dbbe26433f8c17c53eb ]
-
-Fix kernel-doc warnings reported by the kernel test robot:
-
-timer32k.c:186: warning: cannot understand function prototype: 'struct timespec64 persistent_ts; '
-timer32k.c:191: warning: Function parameter or member 'ts' not described in 'omap_read_persistent_clock64'
-timer32k.c:216: warning: Function parameter or member 'vbase' not described in 'omap_init_clocksource_32k'
-timer32k.c:216: warning: Excess function parameter 'pbase' description in 'omap_init_clocksource_32k'
-timer32k.c:216: warning: Excess function parameter 'size' description in 'omap_init_clocksource_32k'
-timer32k.c:216: warning: No description found for return value of 'omap_init_clocksource_32k'
-
-Fixes: a451570c008b ("ARM: OMAP: 32k counter: Provide y2038-safe omap_read_persistent_clock() replacement")
-Fixes: 1fe97c8f6a1d ("ARM: OMAP: Make OMAP clocksource source selection using kernel param")
-Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
-Reported-by: kernel test robot <lkp@intel.com>
-Closes: https://lore.kernel.org/all/202310070106.8QSyJOm3-lkp@intel.com/
-Cc: Arnd Bergmann <arnd@arndb.de>
-Cc: Vaibhav Hiremath <hvaibhav@ti.com>
-Cc: Felipe Balbi <balbi@ti.com>
-Cc: Tony Lindgren <tony@atomide.com>
-Cc: Xunlei Pang <pang.xunlei@linaro.org>
-Cc: John Stultz <john.stultz@linaro.org>
-Cc: Ingo Molnar <mingo@kernel.org>
-Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
-Cc: Janusz Krzysztofik <jmkrzyszt@gmail.com>
-Cc: linux-omap@vger.kernel.org
-Cc: linux-arm-kernel@lists.infradead.org
-Message-ID: <20231007001603.24972-1-rdunlap@infradead.org>
-Signed-off-by: Tony Lindgren <tony@atomide.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/arm/mach-omap1/timer32k.c | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c
-index 11958ccd894dc..747899083f238 100644
---- a/arch/arm/mach-omap1/timer32k.c
-+++ b/arch/arm/mach-omap1/timer32k.c
-@@ -176,17 +176,18 @@ static u64 notrace omap_32k_read_sched_clock(void)
- return sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
- }
-
-+static struct timespec64 persistent_ts;
-+static cycles_t cycles;
-+static unsigned int persistent_mult, persistent_shift;
-+
- /**
- * omap_read_persistent_clock64 - Return time from a persistent clock.
-+ * @ts: &struct timespec64 for the returned time
- *
- * Reads the time from a source which isn't disabled during PM, the
- * 32k sync timer. Convert the cycles elapsed since last read into
- * nsecs and adds to a monotonically increasing timespec64.
- */
--static struct timespec64 persistent_ts;
--static cycles_t cycles;
--static unsigned int persistent_mult, persistent_shift;
--
- static void omap_read_persistent_clock64(struct timespec64 *ts)
- {
- unsigned long long nsecs;
-@@ -206,10 +207,9 @@ static void omap_read_persistent_clock64(struct timespec64 *ts)
- /**
- * omap_init_clocksource_32k - setup and register counter 32k as a
- * kernel clocksource
-- * @pbase: base addr of counter_32k module
-- * @size: size of counter_32k to map
-+ * @vbase: base addr of counter_32k module
- *
-- * Returns 0 upon success or negative error code upon failure.
-+ * Returns: %0 upon success or negative error code upon failure.
- *
- */
- int __init omap_init_clocksource_32k(void __iomem *vbase)
---
-2.42.0
-
+++ /dev/null
-From 85166f1cd7f9b5757bd09dd8ec1afdbbe93640ce Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 20 Sep 2019 13:57:31 +0200
-Subject: ARM: omap1: move 32k counter from plat-omap to mach-omap1
-
-From: Arnd Bergmann <arnd@arndb.de>
-
-[ Upstream commit d379e8899a8da1041c347ae5b792773c48a559a9 ]
-
-omap2 stopped using this code with commit 8d39ff3d1696 ("ARM: OMAP2+:
-Remove unused legacy code for timer"), so just move it to mach-omap1 now,
-along with the other half of that driver.
-
-Acked-by: Tony Lindgren <tony@atomide.com>
-Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-Stable-dep-of: 7eeca8ccd106 ("ARM: OMAP: timer32K: fix all kernel-doc warnings")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/arm/mach-omap1/Kconfig | 16 +++
- arch/arm/mach-omap1/timer32k.c | 96 ++++++++++++++-
- arch/arm/plat-omap/Kconfig | 17 ---
- arch/arm/plat-omap/Makefile | 2 +-
- arch/arm/plat-omap/counter_32k.c | 114 ------------------
- arch/arm/plat-omap/include/plat/counter-32k.h | 1 -
- 6 files changed, 110 insertions(+), 136 deletions(-)
- delete mode 100644 arch/arm/plat-omap/counter_32k.c
- delete mode 100644 arch/arm/plat-omap/include/plat/counter-32k.h
-
-diff --git a/arch/arm/mach-omap1/Kconfig b/arch/arm/mach-omap1/Kconfig
-index 9536b8f3c07db..5b28f747c10d2 100644
---- a/arch/arm/mach-omap1/Kconfig
-+++ b/arch/arm/mach-omap1/Kconfig
-@@ -53,6 +53,22 @@ config OMAP_MUX_WARNINGS
- to change the pin multiplexing setup. When there are no warnings
- printed, it's safe to deselect OMAP_MUX for your product.
-
-+config OMAP_32K_TIMER
-+ bool "Use 32KHz timer"
-+ depends on ARCH_OMAP16XX
-+ default ARCH_OMAP16XX
-+ help
-+ Select this option if you want to enable the OMAP 32KHz timer.
-+ This timer saves power compared to the OMAP_MPU_TIMER, and has
-+ support for no tick during idle. The 32KHz timer provides less
-+ intra-tick resolution than OMAP_MPU_TIMER. The 32KHz timer is
-+ currently only available for OMAP16XX, 24XX, 34XX, OMAP4/5 and DRA7XX.
-+
-+ On OMAP2PLUS this value is only used for CONFIG_HZ and
-+ CLOCK_TICK_RATE compile time calculation.
-+ The actual timer selection is done in the board file
-+ through the (DT_)MACHINE_START structure.
-+
- comment "OMAP Board Type"
-
- config MACH_OMAP_INNOVATOR
-diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c
-index 780fdf03c3cee..11958ccd894dc 100644
---- a/arch/arm/mach-omap1/timer32k.c
-+++ b/arch/arm/mach-omap1/timer32k.c
-@@ -45,15 +45,13 @@
- #include <linux/clocksource.h>
- #include <linux/clockchips.h>
- #include <linux/io.h>
-+#include <linux/sched_clock.h>
-
- #include <asm/irq.h>
- #include <asm/mach/irq.h>
- #include <asm/mach/time.h>
-
--#include <plat/counter-32k.h>
--
- #include <mach/hardware.h>
--
- #include "common.h"
-
- /*
-@@ -159,6 +157,98 @@ static __init void omap_init_32k_timer(void)
- OMAP_32K_TICKS_PER_SEC, 1, 0xfffffffe);
- }
-
-+/* OMAP2_32KSYNCNT_CR_OFF: offset of 32ksync counter register */
-+#define OMAP2_32KSYNCNT_REV_OFF 0x0
-+#define OMAP2_32KSYNCNT_REV_SCHEME (0x3 << 30)
-+#define OMAP2_32KSYNCNT_CR_OFF_LOW 0x10
-+#define OMAP2_32KSYNCNT_CR_OFF_HIGH 0x30
-+
-+/*
-+ * 32KHz clocksource ... always available, on pretty most chips except
-+ * OMAP 730 and 1510. Other timers could be used as clocksources, with
-+ * higher resolution in free-running counter modes (e.g. 12 MHz xtal),
-+ * but systems won't necessarily want to spend resources that way.
-+ */
-+static void __iomem *sync32k_cnt_reg;
-+
-+static u64 notrace omap_32k_read_sched_clock(void)
-+{
-+ return sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
-+}
-+
-+/**
-+ * omap_read_persistent_clock64 - Return time from a persistent clock.
-+ *
-+ * Reads the time from a source which isn't disabled during PM, the
-+ * 32k sync timer. Convert the cycles elapsed since last read into
-+ * nsecs and adds to a monotonically increasing timespec64.
-+ */
-+static struct timespec64 persistent_ts;
-+static cycles_t cycles;
-+static unsigned int persistent_mult, persistent_shift;
-+
-+static void omap_read_persistent_clock64(struct timespec64 *ts)
-+{
-+ unsigned long long nsecs;
-+ cycles_t last_cycles;
-+
-+ last_cycles = cycles;
-+ cycles = sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
-+
-+ nsecs = clocksource_cyc2ns(cycles - last_cycles,
-+ persistent_mult, persistent_shift);
-+
-+ timespec64_add_ns(&persistent_ts, nsecs);
-+
-+ *ts = persistent_ts;
-+}
-+
-+/**
-+ * omap_init_clocksource_32k - setup and register counter 32k as a
-+ * kernel clocksource
-+ * @pbase: base addr of counter_32k module
-+ * @size: size of counter_32k to map
-+ *
-+ * Returns 0 upon success or negative error code upon failure.
-+ *
-+ */
-+int __init omap_init_clocksource_32k(void __iomem *vbase)
-+{
-+ int ret;
-+
-+ /*
-+ * 32k sync Counter IP register offsets vary between the
-+ * highlander version and the legacy ones.
-+ * The 'SCHEME' bits(30-31) of the revision register is used
-+ * to identify the version.
-+ */
-+ if (readl_relaxed(vbase + OMAP2_32KSYNCNT_REV_OFF) &
-+ OMAP2_32KSYNCNT_REV_SCHEME)
-+ sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF_HIGH;
-+ else
-+ sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF_LOW;
-+
-+ /*
-+ * 120000 rough estimate from the calculations in
-+ * __clocksource_update_freq_scale.
-+ */
-+ clocks_calc_mult_shift(&persistent_mult, &persistent_shift,
-+ 32768, NSEC_PER_SEC, 120000);
-+
-+ ret = clocksource_mmio_init(sync32k_cnt_reg, "32k_counter", 32768,
-+ 250, 32, clocksource_mmio_readl_up);
-+ if (ret) {
-+ pr_err("32k_counter: can't register clocksource\n");
-+ return ret;
-+ }
-+
-+ sched_clock_register(omap_32k_read_sched_clock, 32, 32768);
-+ register_persistent_clock(omap_read_persistent_clock64);
-+ pr_info("OMAP clocksource: 32k_counter at 32768 Hz\n");
-+
-+ return 0;
-+}
-+
- /*
- * ---------------------------------------------------------------------------
- * Timer initialization
-diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
-index 272670ef1e92d..dfa19d5030e35 100644
---- a/arch/arm/plat-omap/Kconfig
-+++ b/arch/arm/plat-omap/Kconfig
-@@ -72,23 +72,6 @@ config OMAP_MPU_TIMER
- timer provides more intra-tick resolution than the 32KHz timer,
- but consumes more power.
-
--config OMAP_32K_TIMER
-- bool "Use 32KHz timer"
-- depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS
-- default y if (ARCH_OMAP16XX || ARCH_OMAP2PLUS)
-- help
-- Select this option if you want to enable the OMAP 32KHz timer.
-- This timer saves power compared to the OMAP_MPU_TIMER, and has
-- support for no tick during idle. The 32KHz timer provides less
-- intra-tick resolution than OMAP_MPU_TIMER. The 32KHz timer is
-- currently only available for OMAP16XX, 24XX, 34XX, OMAP4/5 and DRA7XX.
--
-- On OMAP2PLUS this value is only used for CONFIG_HZ and
-- CLOCK_TICK_RATE compile time calculation.
-- The actual timer selection is done in the board file
-- through the (DT_)MACHINE_START structure.
--
--
- config OMAP3_L2_AUX_SECURE_SAVE_RESTORE
- bool "OMAP3 HS/EMU save and restore for L2 AUX control register"
- depends on ARCH_OMAP3 && PM
-diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
-index 371f2ed00eda2..98a7b607873a2 100644
---- a/arch/arm/plat-omap/Makefile
-+++ b/arch/arm/plat-omap/Makefile
-@@ -6,7 +6,7 @@
- ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-omap/include
-
- # Common support
--obj-y := sram.o dma.o counter_32k.o
-+obj-y := sram.o dma.o
-
- # omap_device support (OMAP2+ only at the moment)
-
-diff --git a/arch/arm/plat-omap/counter_32k.c b/arch/arm/plat-omap/counter_32k.c
-deleted file mode 100644
-index 7a729ade21057..0000000000000
---- a/arch/arm/plat-omap/counter_32k.c
-+++ /dev/null
-@@ -1,114 +0,0 @@
--// SPDX-License-Identifier: GPL-2.0-only
--/*
-- * OMAP 32ksynctimer/counter_32k-related code
-- *
-- * Copyright (C) 2009 Texas Instruments
-- * Copyright (C) 2010 Nokia Corporation
-- * Tony Lindgren <tony@atomide.com>
-- * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com>
-- *
-- * NOTE: This timer is not the same timer as the old OMAP1 MPU timer.
-- */
--#include <linux/kernel.h>
--#include <linux/init.h>
--#include <linux/clk.h>
--#include <linux/err.h>
--#include <linux/io.h>
--#include <linux/clocksource.h>
--#include <linux/sched_clock.h>
--
--#include <asm/mach/time.h>
--
--#include <plat/counter-32k.h>
--
--/* OMAP2_32KSYNCNT_CR_OFF: offset of 32ksync counter register */
--#define OMAP2_32KSYNCNT_REV_OFF 0x0
--#define OMAP2_32KSYNCNT_REV_SCHEME (0x3 << 30)
--#define OMAP2_32KSYNCNT_CR_OFF_LOW 0x10
--#define OMAP2_32KSYNCNT_CR_OFF_HIGH 0x30
--
--/*
-- * 32KHz clocksource ... always available, on pretty most chips except
-- * OMAP 730 and 1510. Other timers could be used as clocksources, with
-- * higher resolution in free-running counter modes (e.g. 12 MHz xtal),
-- * but systems won't necessarily want to spend resources that way.
-- */
--static void __iomem *sync32k_cnt_reg;
--
--static u64 notrace omap_32k_read_sched_clock(void)
--{
-- return sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
--}
--
--/**
-- * omap_read_persistent_clock64 - Return time from a persistent clock.
-- *
-- * Reads the time from a source which isn't disabled during PM, the
-- * 32k sync timer. Convert the cycles elapsed since last read into
-- * nsecs and adds to a monotonically increasing timespec64.
-- */
--static struct timespec64 persistent_ts;
--static cycles_t cycles;
--static unsigned int persistent_mult, persistent_shift;
--
--static void omap_read_persistent_clock64(struct timespec64 *ts)
--{
-- unsigned long long nsecs;
-- cycles_t last_cycles;
--
-- last_cycles = cycles;
-- cycles = sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
--
-- nsecs = clocksource_cyc2ns(cycles - last_cycles,
-- persistent_mult, persistent_shift);
--
-- timespec64_add_ns(&persistent_ts, nsecs);
--
-- *ts = persistent_ts;
--}
--
--/**
-- * omap_init_clocksource_32k - setup and register counter 32k as a
-- * kernel clocksource
-- * @pbase: base addr of counter_32k module
-- * @size: size of counter_32k to map
-- *
-- * Returns 0 upon success or negative error code upon failure.
-- *
-- */
--int __init omap_init_clocksource_32k(void __iomem *vbase)
--{
-- int ret;
--
-- /*
-- * 32k sync Counter IP register offsets vary between the
-- * highlander version and the legacy ones.
-- * The 'SCHEME' bits(30-31) of the revision register is used
-- * to identify the version.
-- */
-- if (readl_relaxed(vbase + OMAP2_32KSYNCNT_REV_OFF) &
-- OMAP2_32KSYNCNT_REV_SCHEME)
-- sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF_HIGH;
-- else
-- sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF_LOW;
--
-- /*
-- * 120000 rough estimate from the calculations in
-- * __clocksource_update_freq_scale.
-- */
-- clocks_calc_mult_shift(&persistent_mult, &persistent_shift,
-- 32768, NSEC_PER_SEC, 120000);
--
-- ret = clocksource_mmio_init(sync32k_cnt_reg, "32k_counter", 32768,
-- 250, 32, clocksource_mmio_readl_up);
-- if (ret) {
-- pr_err("32k_counter: can't register clocksource\n");
-- return ret;
-- }
--
-- sched_clock_register(omap_32k_read_sched_clock, 32, 32768);
-- register_persistent_clock(omap_read_persistent_clock64);
-- pr_info("OMAP clocksource: 32k_counter at 32768 Hz\n");
--
-- return 0;
--}
-diff --git a/arch/arm/plat-omap/include/plat/counter-32k.h b/arch/arm/plat-omap/include/plat/counter-32k.h
-deleted file mode 100644
-index da000d482ff26..0000000000000
---- a/arch/arm/plat-omap/include/plat/counter-32k.h
-+++ /dev/null
-@@ -1 +0,0 @@
--int omap_init_clocksource_32k(void __iomem *vbase);
---
-2.42.0
-
mm-page_alloc-correct-start-page-when-guard-page-debug-is-enabled.patch
mmc-renesas_sdhi-use-custom-mask-for-tmio_mask_all.patch
drm-dp_mst-fix-null-deref-in-get_mst_branch_device_b.patch
-arm-omap1-move-32k-counter-from-plat-omap-to-mach-om.patch
-arm-omap-timer32k-fix-all-kernel-doc-warnings.patch
r8169-fix-the-kcsan-reported-data-race-in-rtl_tx-whi.patch
r8169-fix-the-kcsan-reported-data-race-in-rtl_rx-whi.patch
treewide-spelling-fix-in-comment.patch
+++ /dev/null
-From fc2bd66cfaee20c2988212bff3829003155b0da0 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 6 Oct 2023 17:16:03 -0700
-Subject: ARM: OMAP: timer32K: fix all kernel-doc warnings
-
-From: Randy Dunlap <rdunlap@infradead.org>
-
-[ Upstream commit 7eeca8ccd1066c68d6002dbbe26433f8c17c53eb ]
-
-Fix kernel-doc warnings reported by the kernel test robot:
-
-timer32k.c:186: warning: cannot understand function prototype: 'struct timespec64 persistent_ts; '
-timer32k.c:191: warning: Function parameter or member 'ts' not described in 'omap_read_persistent_clock64'
-timer32k.c:216: warning: Function parameter or member 'vbase' not described in 'omap_init_clocksource_32k'
-timer32k.c:216: warning: Excess function parameter 'pbase' description in 'omap_init_clocksource_32k'
-timer32k.c:216: warning: Excess function parameter 'size' description in 'omap_init_clocksource_32k'
-timer32k.c:216: warning: No description found for return value of 'omap_init_clocksource_32k'
-
-Fixes: a451570c008b ("ARM: OMAP: 32k counter: Provide y2038-safe omap_read_persistent_clock() replacement")
-Fixes: 1fe97c8f6a1d ("ARM: OMAP: Make OMAP clocksource source selection using kernel param")
-Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
-Reported-by: kernel test robot <lkp@intel.com>
-Closes: https://lore.kernel.org/all/202310070106.8QSyJOm3-lkp@intel.com/
-Cc: Arnd Bergmann <arnd@arndb.de>
-Cc: Vaibhav Hiremath <hvaibhav@ti.com>
-Cc: Felipe Balbi <balbi@ti.com>
-Cc: Tony Lindgren <tony@atomide.com>
-Cc: Xunlei Pang <pang.xunlei@linaro.org>
-Cc: John Stultz <john.stultz@linaro.org>
-Cc: Ingo Molnar <mingo@kernel.org>
-Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
-Cc: Janusz Krzysztofik <jmkrzyszt@gmail.com>
-Cc: linux-omap@vger.kernel.org
-Cc: linux-arm-kernel@lists.infradead.org
-Message-ID: <20231007001603.24972-1-rdunlap@infradead.org>
-Signed-off-by: Tony Lindgren <tony@atomide.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/arm/mach-omap1/timer32k.c | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c
-index 11958ccd894dc..747899083f238 100644
---- a/arch/arm/mach-omap1/timer32k.c
-+++ b/arch/arm/mach-omap1/timer32k.c
-@@ -176,17 +176,18 @@ static u64 notrace omap_32k_read_sched_clock(void)
- return sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
- }
-
-+static struct timespec64 persistent_ts;
-+static cycles_t cycles;
-+static unsigned int persistent_mult, persistent_shift;
-+
- /**
- * omap_read_persistent_clock64 - Return time from a persistent clock.
-+ * @ts: &struct timespec64 for the returned time
- *
- * Reads the time from a source which isn't disabled during PM, the
- * 32k sync timer. Convert the cycles elapsed since last read into
- * nsecs and adds to a monotonically increasing timespec64.
- */
--static struct timespec64 persistent_ts;
--static cycles_t cycles;
--static unsigned int persistent_mult, persistent_shift;
--
- static void omap_read_persistent_clock64(struct timespec64 *ts)
- {
- unsigned long long nsecs;
-@@ -206,10 +207,9 @@ static void omap_read_persistent_clock64(struct timespec64 *ts)
- /**
- * omap_init_clocksource_32k - setup and register counter 32k as a
- * kernel clocksource
-- * @pbase: base addr of counter_32k module
-- * @size: size of counter_32k to map
-+ * @vbase: base addr of counter_32k module
- *
-- * Returns 0 upon success or negative error code upon failure.
-+ * Returns: %0 upon success or negative error code upon failure.
- *
- */
- int __init omap_init_clocksource_32k(void __iomem *vbase)
---
-2.42.0
-
+++ /dev/null
-From 6c253f436849316a5f057130c516efc4a5af9b8e Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 20 Sep 2019 13:57:31 +0200
-Subject: ARM: omap1: move 32k counter from plat-omap to mach-omap1
-
-From: Arnd Bergmann <arnd@arndb.de>
-
-[ Upstream commit d379e8899a8da1041c347ae5b792773c48a559a9 ]
-
-omap2 stopped using this code with commit 8d39ff3d1696 ("ARM: OMAP2+:
-Remove unused legacy code for timer"), so just move it to mach-omap1 now,
-along with the other half of that driver.
-
-Acked-by: Tony Lindgren <tony@atomide.com>
-Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-Stable-dep-of: 7eeca8ccd106 ("ARM: OMAP: timer32K: fix all kernel-doc warnings")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/arm/mach-omap1/Kconfig | 16 +++
- arch/arm/mach-omap1/timer32k.c | 96 ++++++++++++++-
- arch/arm/plat-omap/Kconfig | 17 ---
- arch/arm/plat-omap/Makefile | 2 +-
- arch/arm/plat-omap/counter_32k.c | 114 ------------------
- arch/arm/plat-omap/include/plat/counter-32k.h | 1 -
- 6 files changed, 110 insertions(+), 136 deletions(-)
- delete mode 100644 arch/arm/plat-omap/counter_32k.c
- delete mode 100644 arch/arm/plat-omap/include/plat/counter-32k.h
-
-diff --git a/arch/arm/mach-omap1/Kconfig b/arch/arm/mach-omap1/Kconfig
-index 208c700c2455c..04155b5ce9786 100644
---- a/arch/arm/mach-omap1/Kconfig
-+++ b/arch/arm/mach-omap1/Kconfig
-@@ -53,6 +53,22 @@ config OMAP_MUX_WARNINGS
- to change the pin multiplexing setup. When there are no warnings
- printed, it's safe to deselect OMAP_MUX for your product.
-
-+config OMAP_32K_TIMER
-+ bool "Use 32KHz timer"
-+ depends on ARCH_OMAP16XX
-+ default ARCH_OMAP16XX
-+ help
-+ Select this option if you want to enable the OMAP 32KHz timer.
-+ This timer saves power compared to the OMAP_MPU_TIMER, and has
-+ support for no tick during idle. The 32KHz timer provides less
-+ intra-tick resolution than OMAP_MPU_TIMER. The 32KHz timer is
-+ currently only available for OMAP16XX, 24XX, 34XX, OMAP4/5 and DRA7XX.
-+
-+ On OMAP2PLUS this value is only used for CONFIG_HZ and
-+ CLOCK_TICK_RATE compile time calculation.
-+ The actual timer selection is done in the board file
-+ through the (DT_)MACHINE_START structure.
-+
- comment "OMAP Board Type"
-
- config MACH_OMAP_INNOVATOR
-diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c
-index 780fdf03c3cee..11958ccd894dc 100644
---- a/arch/arm/mach-omap1/timer32k.c
-+++ b/arch/arm/mach-omap1/timer32k.c
-@@ -45,15 +45,13 @@
- #include <linux/clocksource.h>
- #include <linux/clockchips.h>
- #include <linux/io.h>
-+#include <linux/sched_clock.h>
-
- #include <asm/irq.h>
- #include <asm/mach/irq.h>
- #include <asm/mach/time.h>
-
--#include <plat/counter-32k.h>
--
- #include <mach/hardware.h>
--
- #include "common.h"
-
- /*
-@@ -159,6 +157,98 @@ static __init void omap_init_32k_timer(void)
- OMAP_32K_TICKS_PER_SEC, 1, 0xfffffffe);
- }
-
-+/* OMAP2_32KSYNCNT_CR_OFF: offset of 32ksync counter register */
-+#define OMAP2_32KSYNCNT_REV_OFF 0x0
-+#define OMAP2_32KSYNCNT_REV_SCHEME (0x3 << 30)
-+#define OMAP2_32KSYNCNT_CR_OFF_LOW 0x10
-+#define OMAP2_32KSYNCNT_CR_OFF_HIGH 0x30
-+
-+/*
-+ * 32KHz clocksource ... always available, on pretty most chips except
-+ * OMAP 730 and 1510. Other timers could be used as clocksources, with
-+ * higher resolution in free-running counter modes (e.g. 12 MHz xtal),
-+ * but systems won't necessarily want to spend resources that way.
-+ */
-+static void __iomem *sync32k_cnt_reg;
-+
-+static u64 notrace omap_32k_read_sched_clock(void)
-+{
-+ return sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
-+}
-+
-+/**
-+ * omap_read_persistent_clock64 - Return time from a persistent clock.
-+ *
-+ * Reads the time from a source which isn't disabled during PM, the
-+ * 32k sync timer. Convert the cycles elapsed since last read into
-+ * nsecs and adds to a monotonically increasing timespec64.
-+ */
-+static struct timespec64 persistent_ts;
-+static cycles_t cycles;
-+static unsigned int persistent_mult, persistent_shift;
-+
-+static void omap_read_persistent_clock64(struct timespec64 *ts)
-+{
-+ unsigned long long nsecs;
-+ cycles_t last_cycles;
-+
-+ last_cycles = cycles;
-+ cycles = sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
-+
-+ nsecs = clocksource_cyc2ns(cycles - last_cycles,
-+ persistent_mult, persistent_shift);
-+
-+ timespec64_add_ns(&persistent_ts, nsecs);
-+
-+ *ts = persistent_ts;
-+}
-+
-+/**
-+ * omap_init_clocksource_32k - setup and register counter 32k as a
-+ * kernel clocksource
-+ * @pbase: base addr of counter_32k module
-+ * @size: size of counter_32k to map
-+ *
-+ * Returns 0 upon success or negative error code upon failure.
-+ *
-+ */
-+int __init omap_init_clocksource_32k(void __iomem *vbase)
-+{
-+ int ret;
-+
-+ /*
-+ * 32k sync Counter IP register offsets vary between the
-+ * highlander version and the legacy ones.
-+ * The 'SCHEME' bits(30-31) of the revision register is used
-+ * to identify the version.
-+ */
-+ if (readl_relaxed(vbase + OMAP2_32KSYNCNT_REV_OFF) &
-+ OMAP2_32KSYNCNT_REV_SCHEME)
-+ sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF_HIGH;
-+ else
-+ sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF_LOW;
-+
-+ /*
-+ * 120000 rough estimate from the calculations in
-+ * __clocksource_update_freq_scale.
-+ */
-+ clocks_calc_mult_shift(&persistent_mult, &persistent_shift,
-+ 32768, NSEC_PER_SEC, 120000);
-+
-+ ret = clocksource_mmio_init(sync32k_cnt_reg, "32k_counter", 32768,
-+ 250, 32, clocksource_mmio_readl_up);
-+ if (ret) {
-+ pr_err("32k_counter: can't register clocksource\n");
-+ return ret;
-+ }
-+
-+ sched_clock_register(omap_32k_read_sched_clock, 32, 32768);
-+ register_persistent_clock(omap_read_persistent_clock64);
-+ pr_info("OMAP clocksource: 32k_counter at 32768 Hz\n");
-+
-+ return 0;
-+}
-+
- /*
- * ---------------------------------------------------------------------------
- * Timer initialization
-diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
-index 272670ef1e92d..dfa19d5030e35 100644
---- a/arch/arm/plat-omap/Kconfig
-+++ b/arch/arm/plat-omap/Kconfig
-@@ -72,23 +72,6 @@ config OMAP_MPU_TIMER
- timer provides more intra-tick resolution than the 32KHz timer,
- but consumes more power.
-
--config OMAP_32K_TIMER
-- bool "Use 32KHz timer"
-- depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS
-- default y if (ARCH_OMAP16XX || ARCH_OMAP2PLUS)
-- help
-- Select this option if you want to enable the OMAP 32KHz timer.
-- This timer saves power compared to the OMAP_MPU_TIMER, and has
-- support for no tick during idle. The 32KHz timer provides less
-- intra-tick resolution than OMAP_MPU_TIMER. The 32KHz timer is
-- currently only available for OMAP16XX, 24XX, 34XX, OMAP4/5 and DRA7XX.
--
-- On OMAP2PLUS this value is only used for CONFIG_HZ and
-- CLOCK_TICK_RATE compile time calculation.
-- The actual timer selection is done in the board file
-- through the (DT_)MACHINE_START structure.
--
--
- config OMAP3_L2_AUX_SECURE_SAVE_RESTORE
- bool "OMAP3 HS/EMU save and restore for L2 AUX control register"
- depends on ARCH_OMAP3 && PM
-diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
-index 371f2ed00eda2..98a7b607873a2 100644
---- a/arch/arm/plat-omap/Makefile
-+++ b/arch/arm/plat-omap/Makefile
-@@ -6,7 +6,7 @@
- ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-omap/include
-
- # Common support
--obj-y := sram.o dma.o counter_32k.o
-+obj-y := sram.o dma.o
-
- # omap_device support (OMAP2+ only at the moment)
-
-diff --git a/arch/arm/plat-omap/counter_32k.c b/arch/arm/plat-omap/counter_32k.c
-deleted file mode 100644
-index 7a729ade21057..0000000000000
---- a/arch/arm/plat-omap/counter_32k.c
-+++ /dev/null
-@@ -1,114 +0,0 @@
--// SPDX-License-Identifier: GPL-2.0-only
--/*
-- * OMAP 32ksynctimer/counter_32k-related code
-- *
-- * Copyright (C) 2009 Texas Instruments
-- * Copyright (C) 2010 Nokia Corporation
-- * Tony Lindgren <tony@atomide.com>
-- * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com>
-- *
-- * NOTE: This timer is not the same timer as the old OMAP1 MPU timer.
-- */
--#include <linux/kernel.h>
--#include <linux/init.h>
--#include <linux/clk.h>
--#include <linux/err.h>
--#include <linux/io.h>
--#include <linux/clocksource.h>
--#include <linux/sched_clock.h>
--
--#include <asm/mach/time.h>
--
--#include <plat/counter-32k.h>
--
--/* OMAP2_32KSYNCNT_CR_OFF: offset of 32ksync counter register */
--#define OMAP2_32KSYNCNT_REV_OFF 0x0
--#define OMAP2_32KSYNCNT_REV_SCHEME (0x3 << 30)
--#define OMAP2_32KSYNCNT_CR_OFF_LOW 0x10
--#define OMAP2_32KSYNCNT_CR_OFF_HIGH 0x30
--
--/*
-- * 32KHz clocksource ... always available, on pretty most chips except
-- * OMAP 730 and 1510. Other timers could be used as clocksources, with
-- * higher resolution in free-running counter modes (e.g. 12 MHz xtal),
-- * but systems won't necessarily want to spend resources that way.
-- */
--static void __iomem *sync32k_cnt_reg;
--
--static u64 notrace omap_32k_read_sched_clock(void)
--{
-- return sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
--}
--
--/**
-- * omap_read_persistent_clock64 - Return time from a persistent clock.
-- *
-- * Reads the time from a source which isn't disabled during PM, the
-- * 32k sync timer. Convert the cycles elapsed since last read into
-- * nsecs and adds to a monotonically increasing timespec64.
-- */
--static struct timespec64 persistent_ts;
--static cycles_t cycles;
--static unsigned int persistent_mult, persistent_shift;
--
--static void omap_read_persistent_clock64(struct timespec64 *ts)
--{
-- unsigned long long nsecs;
-- cycles_t last_cycles;
--
-- last_cycles = cycles;
-- cycles = sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
--
-- nsecs = clocksource_cyc2ns(cycles - last_cycles,
-- persistent_mult, persistent_shift);
--
-- timespec64_add_ns(&persistent_ts, nsecs);
--
-- *ts = persistent_ts;
--}
--
--/**
-- * omap_init_clocksource_32k - setup and register counter 32k as a
-- * kernel clocksource
-- * @pbase: base addr of counter_32k module
-- * @size: size of counter_32k to map
-- *
-- * Returns 0 upon success or negative error code upon failure.
-- *
-- */
--int __init omap_init_clocksource_32k(void __iomem *vbase)
--{
-- int ret;
--
-- /*
-- * 32k sync Counter IP register offsets vary between the
-- * highlander version and the legacy ones.
-- * The 'SCHEME' bits(30-31) of the revision register is used
-- * to identify the version.
-- */
-- if (readl_relaxed(vbase + OMAP2_32KSYNCNT_REV_OFF) &
-- OMAP2_32KSYNCNT_REV_SCHEME)
-- sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF_HIGH;
-- else
-- sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF_LOW;
--
-- /*
-- * 120000 rough estimate from the calculations in
-- * __clocksource_update_freq_scale.
-- */
-- clocks_calc_mult_shift(&persistent_mult, &persistent_shift,
-- 32768, NSEC_PER_SEC, 120000);
--
-- ret = clocksource_mmio_init(sync32k_cnt_reg, "32k_counter", 32768,
-- 250, 32, clocksource_mmio_readl_up);
-- if (ret) {
-- pr_err("32k_counter: can't register clocksource\n");
-- return ret;
-- }
--
-- sched_clock_register(omap_32k_read_sched_clock, 32, 32768);
-- register_persistent_clock(omap_read_persistent_clock64);
-- pr_info("OMAP clocksource: 32k_counter at 32768 Hz\n");
--
-- return 0;
--}
-diff --git a/arch/arm/plat-omap/include/plat/counter-32k.h b/arch/arm/plat-omap/include/plat/counter-32k.h
-deleted file mode 100644
-index da000d482ff26..0000000000000
---- a/arch/arm/plat-omap/include/plat/counter-32k.h
-+++ /dev/null
-@@ -1 +0,0 @@
--int omap_init_clocksource_32k(void __iomem *vbase);
---
-2.42.0
-
vsock-virtio-add-support-for-device-suspend-resume.patch
vsock-virtio-initialize-the_virtio_vsock-before-usin.patch
drm-dp_mst-fix-null-deref-in-get_mst_branch_device_b.patch
-arm-omap1-move-32k-counter-from-plat-omap-to-mach-om.patch
-arm-omap-timer32k-fix-all-kernel-doc-warnings.patch
firmware-imx-dsp-fix-use_after_free-in-imx_dsp_setup.patch
r8169-fix-the-kcsan-reported-data-race-in-rtl_tx-whi.patch
r8169-fix-the-kcsan-reported-data-race-in-rtl_tx-whi.patch-409
+++ /dev/null
-From c77ba9e4eefd9aebee0a921784bac31581104cd2 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 6 Oct 2023 17:16:03 -0700
-Subject: ARM: OMAP: timer32K: fix all kernel-doc warnings
-
-From: Randy Dunlap <rdunlap@infradead.org>
-
-[ Upstream commit 7eeca8ccd1066c68d6002dbbe26433f8c17c53eb ]
-
-Fix kernel-doc warnings reported by the kernel test robot:
-
-timer32k.c:186: warning: cannot understand function prototype: 'struct timespec64 persistent_ts; '
-timer32k.c:191: warning: Function parameter or member 'ts' not described in 'omap_read_persistent_clock64'
-timer32k.c:216: warning: Function parameter or member 'vbase' not described in 'omap_init_clocksource_32k'
-timer32k.c:216: warning: Excess function parameter 'pbase' description in 'omap_init_clocksource_32k'
-timer32k.c:216: warning: Excess function parameter 'size' description in 'omap_init_clocksource_32k'
-timer32k.c:216: warning: No description found for return value of 'omap_init_clocksource_32k'
-
-Fixes: a451570c008b ("ARM: OMAP: 32k counter: Provide y2038-safe omap_read_persistent_clock() replacement")
-Fixes: 1fe97c8f6a1d ("ARM: OMAP: Make OMAP clocksource source selection using kernel param")
-Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
-Reported-by: kernel test robot <lkp@intel.com>
-Closes: https://lore.kernel.org/all/202310070106.8QSyJOm3-lkp@intel.com/
-Cc: Arnd Bergmann <arnd@arndb.de>
-Cc: Vaibhav Hiremath <hvaibhav@ti.com>
-Cc: Felipe Balbi <balbi@ti.com>
-Cc: Tony Lindgren <tony@atomide.com>
-Cc: Xunlei Pang <pang.xunlei@linaro.org>
-Cc: John Stultz <john.stultz@linaro.org>
-Cc: Ingo Molnar <mingo@kernel.org>
-Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
-Cc: Janusz Krzysztofik <jmkrzyszt@gmail.com>
-Cc: linux-omap@vger.kernel.org
-Cc: linux-arm-kernel@lists.infradead.org
-Message-ID: <20231007001603.24972-1-rdunlap@infradead.org>
-Signed-off-by: Tony Lindgren <tony@atomide.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/arm/mach-omap1/timer32k.c | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c
-index 11958ccd894dc..747899083f238 100644
---- a/arch/arm/mach-omap1/timer32k.c
-+++ b/arch/arm/mach-omap1/timer32k.c
-@@ -176,17 +176,18 @@ static u64 notrace omap_32k_read_sched_clock(void)
- return sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
- }
-
-+static struct timespec64 persistent_ts;
-+static cycles_t cycles;
-+static unsigned int persistent_mult, persistent_shift;
-+
- /**
- * omap_read_persistent_clock64 - Return time from a persistent clock.
-+ * @ts: &struct timespec64 for the returned time
- *
- * Reads the time from a source which isn't disabled during PM, the
- * 32k sync timer. Convert the cycles elapsed since last read into
- * nsecs and adds to a monotonically increasing timespec64.
- */
--static struct timespec64 persistent_ts;
--static cycles_t cycles;
--static unsigned int persistent_mult, persistent_shift;
--
- static void omap_read_persistent_clock64(struct timespec64 *ts)
- {
- unsigned long long nsecs;
-@@ -206,10 +207,9 @@ static void omap_read_persistent_clock64(struct timespec64 *ts)
- /**
- * omap_init_clocksource_32k - setup and register counter 32k as a
- * kernel clocksource
-- * @pbase: base addr of counter_32k module
-- * @size: size of counter_32k to map
-+ * @vbase: base addr of counter_32k module
- *
-- * Returns 0 upon success or negative error code upon failure.
-+ * Returns: %0 upon success or negative error code upon failure.
- *
- */
- int __init omap_init_clocksource_32k(void __iomem *vbase)
---
-2.42.0
-
+++ /dev/null
-From 1f137417252d2bf3728978d1db09c7cbabf0dd73 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 20 Sep 2019 13:57:31 +0200
-Subject: ARM: omap1: move 32k counter from plat-omap to mach-omap1
-
-From: Arnd Bergmann <arnd@arndb.de>
-
-[ Upstream commit d379e8899a8da1041c347ae5b792773c48a559a9 ]
-
-omap2 stopped using this code with commit 8d39ff3d1696 ("ARM: OMAP2+:
-Remove unused legacy code for timer"), so just move it to mach-omap1 now,
-along with the other half of that driver.
-
-Acked-by: Tony Lindgren <tony@atomide.com>
-Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-Stable-dep-of: 7eeca8ccd106 ("ARM: OMAP: timer32K: fix all kernel-doc warnings")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/arm/mach-omap1/Kconfig | 16 +++
- arch/arm/mach-omap1/timer32k.c | 96 ++++++++++++++-
- arch/arm/plat-omap/Kconfig | 17 ---
- arch/arm/plat-omap/Makefile | 2 +-
- arch/arm/plat-omap/counter_32k.c | 114 ------------------
- arch/arm/plat-omap/include/plat/counter-32k.h | 1 -
- 6 files changed, 110 insertions(+), 136 deletions(-)
- delete mode 100644 arch/arm/plat-omap/counter_32k.c
- delete mode 100644 arch/arm/plat-omap/include/plat/counter-32k.h
-
-diff --git a/arch/arm/mach-omap1/Kconfig b/arch/arm/mach-omap1/Kconfig
-index 2a17dc1d122c0..60f4362034540 100644
---- a/arch/arm/mach-omap1/Kconfig
-+++ b/arch/arm/mach-omap1/Kconfig
-@@ -59,6 +59,22 @@ config OMAP_MUX_WARNINGS
- to change the pin multiplexing setup. When there are no warnings
- printed, it's safe to deselect OMAP_MUX for your product.
-
-+config OMAP_32K_TIMER
-+ bool "Use 32KHz timer"
-+ depends on ARCH_OMAP16XX
-+ default ARCH_OMAP16XX
-+ help
-+ Select this option if you want to enable the OMAP 32KHz timer.
-+ This timer saves power compared to the OMAP_MPU_TIMER, and has
-+ support for no tick during idle. The 32KHz timer provides less
-+ intra-tick resolution than OMAP_MPU_TIMER. The 32KHz timer is
-+ currently only available for OMAP16XX, 24XX, 34XX, OMAP4/5 and DRA7XX.
-+
-+ On OMAP2PLUS this value is only used for CONFIG_HZ and
-+ CLOCK_TICK_RATE compile time calculation.
-+ The actual timer selection is done in the board file
-+ through the (DT_)MACHINE_START structure.
-+
- comment "OMAP Board Type"
- depends on ARCH_OMAP1
-
-diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c
-index 780fdf03c3cee..11958ccd894dc 100644
---- a/arch/arm/mach-omap1/timer32k.c
-+++ b/arch/arm/mach-omap1/timer32k.c
-@@ -45,15 +45,13 @@
- #include <linux/clocksource.h>
- #include <linux/clockchips.h>
- #include <linux/io.h>
-+#include <linux/sched_clock.h>
-
- #include <asm/irq.h>
- #include <asm/mach/irq.h>
- #include <asm/mach/time.h>
-
--#include <plat/counter-32k.h>
--
- #include <mach/hardware.h>
--
- #include "common.h"
-
- /*
-@@ -159,6 +157,98 @@ static __init void omap_init_32k_timer(void)
- OMAP_32K_TICKS_PER_SEC, 1, 0xfffffffe);
- }
-
-+/* OMAP2_32KSYNCNT_CR_OFF: offset of 32ksync counter register */
-+#define OMAP2_32KSYNCNT_REV_OFF 0x0
-+#define OMAP2_32KSYNCNT_REV_SCHEME (0x3 << 30)
-+#define OMAP2_32KSYNCNT_CR_OFF_LOW 0x10
-+#define OMAP2_32KSYNCNT_CR_OFF_HIGH 0x30
-+
-+/*
-+ * 32KHz clocksource ... always available, on pretty most chips except
-+ * OMAP 730 and 1510. Other timers could be used as clocksources, with
-+ * higher resolution in free-running counter modes (e.g. 12 MHz xtal),
-+ * but systems won't necessarily want to spend resources that way.
-+ */
-+static void __iomem *sync32k_cnt_reg;
-+
-+static u64 notrace omap_32k_read_sched_clock(void)
-+{
-+ return sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
-+}
-+
-+/**
-+ * omap_read_persistent_clock64 - Return time from a persistent clock.
-+ *
-+ * Reads the time from a source which isn't disabled during PM, the
-+ * 32k sync timer. Convert the cycles elapsed since last read into
-+ * nsecs and adds to a monotonically increasing timespec64.
-+ */
-+static struct timespec64 persistent_ts;
-+static cycles_t cycles;
-+static unsigned int persistent_mult, persistent_shift;
-+
-+static void omap_read_persistent_clock64(struct timespec64 *ts)
-+{
-+ unsigned long long nsecs;
-+ cycles_t last_cycles;
-+
-+ last_cycles = cycles;
-+ cycles = sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
-+
-+ nsecs = clocksource_cyc2ns(cycles - last_cycles,
-+ persistent_mult, persistent_shift);
-+
-+ timespec64_add_ns(&persistent_ts, nsecs);
-+
-+ *ts = persistent_ts;
-+}
-+
-+/**
-+ * omap_init_clocksource_32k - setup and register counter 32k as a
-+ * kernel clocksource
-+ * @pbase: base addr of counter_32k module
-+ * @size: size of counter_32k to map
-+ *
-+ * Returns 0 upon success or negative error code upon failure.
-+ *
-+ */
-+int __init omap_init_clocksource_32k(void __iomem *vbase)
-+{
-+ int ret;
-+
-+ /*
-+ * 32k sync Counter IP register offsets vary between the
-+ * highlander version and the legacy ones.
-+ * The 'SCHEME' bits(30-31) of the revision register is used
-+ * to identify the version.
-+ */
-+ if (readl_relaxed(vbase + OMAP2_32KSYNCNT_REV_OFF) &
-+ OMAP2_32KSYNCNT_REV_SCHEME)
-+ sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF_HIGH;
-+ else
-+ sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF_LOW;
-+
-+ /*
-+ * 120000 rough estimate from the calculations in
-+ * __clocksource_update_freq_scale.
-+ */
-+ clocks_calc_mult_shift(&persistent_mult, &persistent_shift,
-+ 32768, NSEC_PER_SEC, 120000);
-+
-+ ret = clocksource_mmio_init(sync32k_cnt_reg, "32k_counter", 32768,
-+ 250, 32, clocksource_mmio_readl_up);
-+ if (ret) {
-+ pr_err("32k_counter: can't register clocksource\n");
-+ return ret;
-+ }
-+
-+ sched_clock_register(omap_32k_read_sched_clock, 32, 32768);
-+ register_persistent_clock(omap_read_persistent_clock64);
-+ pr_info("OMAP clocksource: 32k_counter at 32768 Hz\n");
-+
-+ return 0;
-+}
-+
- /*
- * ---------------------------------------------------------------------------
- * Timer initialization
-diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
-index 93fd7fc537cf4..faae8557cd12b 100644
---- a/arch/arm/plat-omap/Kconfig
-+++ b/arch/arm/plat-omap/Kconfig
-@@ -72,23 +72,6 @@ config OMAP_MPU_TIMER
- timer provides more intra-tick resolution than the 32KHz timer,
- but consumes more power.
-
--config OMAP_32K_TIMER
-- bool "Use 32KHz timer"
-- depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS
-- default y if (ARCH_OMAP16XX || ARCH_OMAP2PLUS)
-- help
-- Select this option if you want to enable the OMAP 32KHz timer.
-- This timer saves power compared to the OMAP_MPU_TIMER, and has
-- support for no tick during idle. The 32KHz timer provides less
-- intra-tick resolution than OMAP_MPU_TIMER. The 32KHz timer is
-- currently only available for OMAP16XX, 24XX, 34XX, OMAP4/5 and DRA7XX.
--
-- On OMAP2PLUS this value is only used for CONFIG_HZ and
-- CLOCK_TICK_RATE compile time calculation.
-- The actual timer selection is done in the board file
-- through the (DT_)MACHINE_START structure.
--
--
- config OMAP3_L2_AUX_SECURE_SAVE_RESTORE
- bool "OMAP3 HS/EMU save and restore for L2 AUX control register"
- depends on ARCH_OMAP3 && PM
-diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
-index 371f2ed00eda2..98a7b607873a2 100644
---- a/arch/arm/plat-omap/Makefile
-+++ b/arch/arm/plat-omap/Makefile
-@@ -6,7 +6,7 @@
- ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-omap/include
-
- # Common support
--obj-y := sram.o dma.o counter_32k.o
-+obj-y := sram.o dma.o
-
- # omap_device support (OMAP2+ only at the moment)
-
-diff --git a/arch/arm/plat-omap/counter_32k.c b/arch/arm/plat-omap/counter_32k.c
-deleted file mode 100644
-index 7a729ade21057..0000000000000
---- a/arch/arm/plat-omap/counter_32k.c
-+++ /dev/null
-@@ -1,114 +0,0 @@
--// SPDX-License-Identifier: GPL-2.0-only
--/*
-- * OMAP 32ksynctimer/counter_32k-related code
-- *
-- * Copyright (C) 2009 Texas Instruments
-- * Copyright (C) 2010 Nokia Corporation
-- * Tony Lindgren <tony@atomide.com>
-- * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com>
-- *
-- * NOTE: This timer is not the same timer as the old OMAP1 MPU timer.
-- */
--#include <linux/kernel.h>
--#include <linux/init.h>
--#include <linux/clk.h>
--#include <linux/err.h>
--#include <linux/io.h>
--#include <linux/clocksource.h>
--#include <linux/sched_clock.h>
--
--#include <asm/mach/time.h>
--
--#include <plat/counter-32k.h>
--
--/* OMAP2_32KSYNCNT_CR_OFF: offset of 32ksync counter register */
--#define OMAP2_32KSYNCNT_REV_OFF 0x0
--#define OMAP2_32KSYNCNT_REV_SCHEME (0x3 << 30)
--#define OMAP2_32KSYNCNT_CR_OFF_LOW 0x10
--#define OMAP2_32KSYNCNT_CR_OFF_HIGH 0x30
--
--/*
-- * 32KHz clocksource ... always available, on pretty most chips except
-- * OMAP 730 and 1510. Other timers could be used as clocksources, with
-- * higher resolution in free-running counter modes (e.g. 12 MHz xtal),
-- * but systems won't necessarily want to spend resources that way.
-- */
--static void __iomem *sync32k_cnt_reg;
--
--static u64 notrace omap_32k_read_sched_clock(void)
--{
-- return sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
--}
--
--/**
-- * omap_read_persistent_clock64 - Return time from a persistent clock.
-- *
-- * Reads the time from a source which isn't disabled during PM, the
-- * 32k sync timer. Convert the cycles elapsed since last read into
-- * nsecs and adds to a monotonically increasing timespec64.
-- */
--static struct timespec64 persistent_ts;
--static cycles_t cycles;
--static unsigned int persistent_mult, persistent_shift;
--
--static void omap_read_persistent_clock64(struct timespec64 *ts)
--{
-- unsigned long long nsecs;
-- cycles_t last_cycles;
--
-- last_cycles = cycles;
-- cycles = sync32k_cnt_reg ? readl_relaxed(sync32k_cnt_reg) : 0;
--
-- nsecs = clocksource_cyc2ns(cycles - last_cycles,
-- persistent_mult, persistent_shift);
--
-- timespec64_add_ns(&persistent_ts, nsecs);
--
-- *ts = persistent_ts;
--}
--
--/**
-- * omap_init_clocksource_32k - setup and register counter 32k as a
-- * kernel clocksource
-- * @pbase: base addr of counter_32k module
-- * @size: size of counter_32k to map
-- *
-- * Returns 0 upon success or negative error code upon failure.
-- *
-- */
--int __init omap_init_clocksource_32k(void __iomem *vbase)
--{
-- int ret;
--
-- /*
-- * 32k sync Counter IP register offsets vary between the
-- * highlander version and the legacy ones.
-- * The 'SCHEME' bits(30-31) of the revision register is used
-- * to identify the version.
-- */
-- if (readl_relaxed(vbase + OMAP2_32KSYNCNT_REV_OFF) &
-- OMAP2_32KSYNCNT_REV_SCHEME)
-- sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF_HIGH;
-- else
-- sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF_LOW;
--
-- /*
-- * 120000 rough estimate from the calculations in
-- * __clocksource_update_freq_scale.
-- */
-- clocks_calc_mult_shift(&persistent_mult, &persistent_shift,
-- 32768, NSEC_PER_SEC, 120000);
--
-- ret = clocksource_mmio_init(sync32k_cnt_reg, "32k_counter", 32768,
-- 250, 32, clocksource_mmio_readl_up);
-- if (ret) {
-- pr_err("32k_counter: can't register clocksource\n");
-- return ret;
-- }
--
-- sched_clock_register(omap_32k_read_sched_clock, 32, 32768);
-- register_persistent_clock(omap_read_persistent_clock64);
-- pr_info("OMAP clocksource: 32k_counter at 32768 Hz\n");
--
-- return 0;
--}
-diff --git a/arch/arm/plat-omap/include/plat/counter-32k.h b/arch/arm/plat-omap/include/plat/counter-32k.h
-deleted file mode 100644
-index da000d482ff26..0000000000000
---- a/arch/arm/plat-omap/include/plat/counter-32k.h
-+++ /dev/null
-@@ -1 +0,0 @@
--int omap_init_clocksource_32k(void __iomem *vbase);
---
-2.42.0
-
mcb-lpc-reallocate-memory-region-to-avoid-memory-ove.patch
virtio_balloon-fix-endless-deflation-and-inflation-on-arm64.patch
virtio-mmio-fix-memory-leak-of-vm_dev.patch
-arm-omap1-move-32k-counter-from-plat-omap-to-mach-om.patch
-arm-omap-timer32k-fix-all-kernel-doc-warnings.patch
r8169-fix-the-kcsan-reported-data-race-in-rtl_tx-whi.patch
r8169-fix-the-kcsan-reported-data-race-in-rtl_rx-whi.patch
treewide-spelling-fix-in-comment.patch