All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Realtek Otto timer/counter support
@ 2022-01-16 21:39 Sander Vanheule
  2022-01-16 21:39 ` [PATCH 1/2] dt-bindings: timer: Add realtek,otto-tc binding Sander Vanheule
  2022-01-16 21:39 ` [PATCH 2/2] clocksource/drivers: Add Realtek Otto timer driver Sander Vanheule
  0 siblings, 2 replies; 11+ messages in thread
From: Sander Vanheule @ 2022-01-16 21:39 UTC (permalink / raw)
  To: linux-kernel, devicetree
  Cc: Daniel Lezcano, Thomas Gleixner, Rob Herring, Sander Vanheule

Realtek's family of networking SoCs (RTL838x, RTL839x, RTL930x, RTL931x)
have a set of timers. These patches seek to provide a devicetree binding
for them, and a first implementation of the driver.

Most of these SoCs can use the MIPS clocksource and clockevent timers,
but the CEVT_R4K timer on the RTL930x series was left disconnected. This
series therefore requires these timers to be able to function.

Except for the RTL838x series, these SoCs also support some form of SMP,
but this is not yet implemented as the platform's IRQ driver does not
support this yet. The driver also implements a fixed divider for the
timer's internal clock, since this is good enough at this point.

I've tested this driver on RTL8380, RTL8393, and RTL9302 SoCs, running
in single-CPU mode. When replacing the CEVT_R4K timer, these platforms
then function as expected.

There's probably still other things that I missed, but I currently have
the following questions:
- If the internal clock is added later, should this be added to the
  devicetree as a self-referenced clock? It's not possible to use this
  clock outside of the timer, so I guess it would mainly be to allow the
  DT code to build a complete overview of the clock hierarchy.
- When adding SMP support, what would be the best way to configure the
  CPU affinity? And what does FEAT_DYNIRQ imply exactly?

Best,
Sander

Sander Vanheule (2):
  dt-bindings: timer: Add realtek,otto-tc binding
  clocksource/drivers: Add Realtek Otto timer driver

 .../bindings/timer/realtek,otto-tc.yaml       |  64 ++++++
 MAINTAINERS                                   |   6 +
 drivers/clocksource/Kconfig                   |   8 +
 drivers/clocksource/Makefile                  |   1 +
 drivers/clocksource/timer-realtek-otto.c      | 216 ++++++++++++++++++
 5 files changed, 295 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/timer/realtek,otto-tc.yaml
 create mode 100644 drivers/clocksource/timer-realtek-otto.c

-- 
2.34.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/2] dt-bindings: timer: Add realtek,otto-tc binding
  2022-01-16 21:39 [PATCH 0/2] Realtek Otto timer/counter support Sander Vanheule
@ 2022-01-16 21:39 ` Sander Vanheule
  2022-02-09  2:49   ` Rob Herring
  2022-01-16 21:39 ` [PATCH 2/2] clocksource/drivers: Add Realtek Otto timer driver Sander Vanheule
  1 sibling, 1 reply; 11+ messages in thread
From: Sander Vanheule @ 2022-01-16 21:39 UTC (permalink / raw)
  To: linux-kernel, devicetree
  Cc: Daniel Lezcano, Thomas Gleixner, Rob Herring, Sander Vanheule

New binding for the timer/counter blocks found on the Realtek Otto MIPS
platform.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
---
 .../bindings/timer/realtek,otto-tc.yaml       | 64 +++++++++++++++++++
 1 file changed, 64 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/timer/realtek,otto-tc.yaml

diff --git a/Documentation/devicetree/bindings/timer/realtek,otto-tc.yaml b/Documentation/devicetree/bindings/timer/realtek,otto-tc.yaml
new file mode 100644
index 000000000000..12971b9ecdf5
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/realtek,otto-tc.yaml
@@ -0,0 +1,64 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/realtek,otto-tc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Realtek Otto platform timer/counter bindings
+
+description:
+  "Up-counting 28-bit timer that can operate in oneshot or repeating mode,
+  providing an interrupt at roll-over.
+
+  The timer is driven by a divided clock, derived from the bus clock. The clock
+  divisor is configurable from 2 to 65535. Divisor values of 0 and 1 disable
+  the timer clock. The timer can also be enabled or disabled independently from
+  the clock (divisor) selection.
+
+  The number of timers supported by the different SoC families is:
+  - RTL8380: 5 timers
+  - RTL8390: 5 timers
+  - RTL9300: 6 timers
+  - RTL9310: 7 timers"
+
+maintainers:
+  - Sander Vanheule <sander@svanheule.net>
+
+properties:
+  compatible:
+    const: realtek,otto-tc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: Parent clock from peripheral bus
+
+  clock-names:
+    items:
+      - const: bus
+
+additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+examples:
+  - |
+    timer0: timer@3100 {
+      compatible = "realtek,otto-tc";
+      reg = <0x3100 0x10>;
+
+      interrupts = <29 4>;
+
+      clocks = <&lx_clk>;
+      clock-names = "bus";
+    };
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/2] clocksource/drivers: Add Realtek Otto timer driver
  2022-01-16 21:39 [PATCH 0/2] Realtek Otto timer/counter support Sander Vanheule
  2022-01-16 21:39 ` [PATCH 1/2] dt-bindings: timer: Add realtek,otto-tc binding Sander Vanheule
@ 2022-01-16 21:39 ` Sander Vanheule
  2022-01-17  1:28     ` kernel test robot
  2022-01-17  7:38     ` kernel test robot
  1 sibling, 2 replies; 11+ messages in thread
From: Sander Vanheule @ 2022-01-16 21:39 UTC (permalink / raw)
  To: linux-kernel, devicetree
  Cc: Daniel Lezcano, Thomas Gleixner, Rob Herring, Sander Vanheule

Driver to provide initial support for the timer/counter blocks found on
Realtek Otto MIPS SoCs.

This implementation hard enables the derived clock with a divisor of 2,
to obtain the highest possible timer resolution. A real derived and
reconfigurable timer clock can be implemented later, should the need
arise for longer timeouts.

Since this platform has other clocksources (CSRC_R4K or MIPS GIC), the
timers are only added as clockevent devices.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
---
 MAINTAINERS                              |   6 +
 drivers/clocksource/Kconfig              |   8 +
 drivers/clocksource/Makefile             |   1 +
 drivers/clocksource/timer-realtek-otto.c | 216 +++++++++++++++++++++++
 4 files changed, 231 insertions(+)
 create mode 100644 drivers/clocksource/timer-realtek-otto.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 6d9dafd09de0..ad7c9b10fcd8 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -16342,6 +16342,12 @@ S:	Maintained
 F:	include/sound/rt*.h
 F:	sound/soc/codecs/rt*
 
+REALTEK OTTO TIMER
+M:	Sander Vanheule <sander@svanheule.net>
+S:	Maintained
+F:	Documentation/devicetree/bindings/timer/realtek,otto-tc.yaml
+F:	drivers/clocksource/timer-realtek-otto.c
+
 REALTEK OTTO WATCHDOG
 M:	Sander Vanheule <sander@svanheule.net>
 L:	linux-watchdog@vger.kernel.org
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index cfb8ea0df3b1..03557568182d 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -84,6 +84,14 @@ config IXP4XX_TIMER
 	help
 	  Enables support for the Intel XScale IXP4xx SoC timer.
 
+config REALTEK_OTTO_TIMER
+	bool "Realtek Otto timer driver"
+	depends on MACH_REALTEK_RTL || COMPILE_TEST
+	select TIMER_OF
+	help
+	  Enables support for the timer/counter found on Realtek's networking
+	  SoC series RTL838x, RTL839x, RTL930x, RTL931x.
+
 config ROCKCHIP_TIMER
 	bool "Rockchip timer driver" if COMPILE_TEST
 	depends on ARM || ARM64
diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile
index fa5f624eadb6..43c792e4a574 100644
--- a/drivers/clocksource/Makefile
+++ b/drivers/clocksource/Makefile
@@ -23,6 +23,7 @@ obj-$(CONFIG_DW_APB_TIMER)	+= dw_apb_timer.o
 obj-$(CONFIG_DW_APB_TIMER_OF)	+= dw_apb_timer_of.o
 obj-$(CONFIG_FTTMR010_TIMER)	+= timer-fttmr010.o
 obj-$(CONFIG_IXP4XX_TIMER)	+= timer-ixp4xx.o
+obj-$(CONFIG_REALTEK_OTTO_TIMER)      += timer-realtek-otto.o
 obj-$(CONFIG_ROCKCHIP_TIMER)      += timer-rockchip.o
 obj-$(CONFIG_CLKSRC_NOMADIK_MTU)	+= nomadik-mtu.o
 obj-$(CONFIG_CLKSRC_DBX500_PRCMU)	+= clksrc-dbx500-prcmu.o
diff --git a/drivers/clocksource/timer-realtek-otto.c b/drivers/clocksource/timer-realtek-otto.c
new file mode 100644
index 000000000000..2c07be042614
--- /dev/null
+++ b/drivers/clocksource/timer-realtek-otto.c
@@ -0,0 +1,216 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Realtek Otto platform timer/counter
+ *
+ * Copyright
+ *	Sander Vanheule - 2022
+ *
+ * Up-counting 28-bit timer that can operate in oneshot or repeat mode,
+ * providing interrupts at roll-over. The maximum value is written to the DATA
+ * register, while the current timer value can be read from the CNT register.
+ *
+ * A divided clock is used to drive the timer, derived from the bus clock. The
+ * clock divisor is configurable from 2 to 65535. Divisor values of 0 and 1
+ * disable the timer clock. The timer can also be enabled independently from
+ * the clock selection with the ENABLE flag.
+ *
+ * The SoC's interrupt controller can configure the CPU affinity of the timer
+ * interrupts to any subset of the available CPUs.
+ */
+
+#include <linux/bitfield.h>
+#include <linux/clocksource.h>
+#include <linux/interrupt.h>
+#include <linux/io.h>
+
+#include "timer-of.h"
+
+struct otto_tc_ctrl {
+	struct timer_of to;
+	spinlock_t lock;
+};
+
+#define OTTO_TC_REG_OFFSET(to, offset)	(timer_of_base(to) + offset)
+
+#define OTTO_TC_REG_DATA(to)		OTTO_TC_REG_OFFSET(to, 0x0)
+#define OTTO_TC_REG_CNT(to)		OTTO_TC_REG_OFFSET(to, 0x4)
+#define OTTO_TC_WIDTH			28
+#define OTTO_TC_MAX_PERIOD		BIT(OTTO_TC_WIDTH)
+
+#define OTTO_TC_REG_CTL(to)		OTTO_TC_REG_OFFSET(to, 0x8)
+#define OTTO_TC_CTL_ENABLE		BIT(28)
+#define OTTO_TC_CTL_MODE		BIT(24)
+#define OTTO_TC_MODE_ONESHOT		FIELD_PREP(OTTO_TC_CTL_MODE, 0)
+#define OTTO_TC_MODE_REPEAT		FIELD_PREP(OTTO_TC_CTL_MODE, 1)
+#define OTTO_TC_CTL_DIVISOR		GENMASK(15, 0)
+
+#define OTTO_TC_MIN_DIVISOR		2
+#define OTTO_TC_MAX_DIVISOR		OTTO_TC_CTL_DIVISOR
+
+#define OTTO_TC_REG_ICTL(to)		OTTO_TC_REG_OFFSET(to, 0xC)
+#define OTTO_TC_ICTL_ENABLE		BIT(20)
+#define OTTO_TC_ICTL_STATUS		BIT(16)
+
+static inline void otto_tc_irq_enable_clear(struct timer_of *to)
+{
+	writel(OTTO_TC_ICTL_ENABLE | OTTO_TC_ICTL_STATUS, OTTO_TC_REG_ICTL(to));
+}
+
+static inline struct otto_tc_ctrl *otto_tc_timer_to_ctrl(struct timer_of *to)
+{
+	return container_of(to, struct otto_tc_ctrl, to);
+}
+
+static irqreturn_t otto_tc_handler(int irq, void *dev_id)
+{
+	struct clock_event_device *ced = dev_id;
+	struct timer_of *to = to_timer_of(ced);
+
+	otto_tc_irq_enable_clear(to);
+	ced->event_handler(ced);
+
+	return IRQ_HANDLED;
+}
+
+static void otto_tc_set_divisor(struct otto_tc_ctrl *ctrl, u16 divisor)
+{
+	struct timer_of *to = &ctrl->to;
+	unsigned long flags;
+	u32 val;
+
+	spin_lock_irqsave(&ctrl->lock, flags);
+	val = readl(OTTO_TC_REG_CTL(to)) & ~OTTO_TC_CTL_DIVISOR;
+	val |= FIELD_PREP(OTTO_TC_CTL_DIVISOR, divisor);
+	writel(val, OTTO_TC_REG_CTL(to));
+	spin_unlock_irqrestore(&ctrl->lock, flags);
+}
+
+static void otto_tc_set_timeout(struct clock_event_device *ced, u32 value)
+{
+	struct timer_of *to = to_timer_of(ced);
+	struct otto_tc_ctrl *ctrl = otto_tc_timer_to_ctrl(to);
+	unsigned long flags;
+
+	spin_lock_irqsave(&ctrl->lock, flags);
+	writel(value, OTTO_TC_REG_DATA(to));
+	spin_unlock_irqrestore(&ctrl->lock, flags);
+}
+
+/*
+ * Timers can only be (re)started from the disabled state. The clkevt state
+ * machine is expected perform the necessary disables (shutdown) before moving
+ * a timer into an enabled state through .set_oneshot() or .set_periodic().
+ */
+static void otto_tc_set_mode(struct clock_event_device *ced, bool started, u32 mode)
+{
+	struct timer_of *to = to_timer_of(ced);
+	struct otto_tc_ctrl *ctrl = otto_tc_timer_to_ctrl(to);
+	unsigned long flags;
+	u32 val;
+
+	spin_lock_irqsave(&ctrl->lock, flags);
+	val = readl(OTTO_TC_REG_CTL(to));
+	val = (val & ~OTTO_TC_CTL_MODE) | mode;
+	if (started)
+		val |= OTTO_TC_CTL_ENABLE;
+	else
+		val &= ~OTTO_TC_CTL_ENABLE;
+	writel(val, OTTO_TC_REG_CTL(to));
+	spin_unlock_irqrestore(&ctrl->lock, flags);
+}
+
+static int otto_tc_set_next_event(unsigned long evt, struct clock_event_device *ced)
+{
+	otto_tc_set_timeout(ced, evt);
+
+	return 0;
+}
+
+static int otto_tc_set_periodic(struct clock_event_device *ced)
+{
+	struct timer_of *to = to_timer_of(ced);
+
+	otto_tc_set_timeout(ced, timer_of_period(to));
+	otto_tc_set_mode(ced, true, OTTO_TC_MODE_REPEAT);
+
+	return 0;
+}
+
+static int otto_tc_set_oneshot(struct clock_event_device *ced)
+{
+	otto_tc_set_mode(ced, true, OTTO_TC_MODE_ONESHOT);
+
+	return 0;
+}
+
+static int otto_tc_set_oneshot_stopped(struct clock_event_device *ced)
+{
+	otto_tc_set_mode(ced, false, OTTO_TC_MODE_ONESHOT);
+
+	return 0;
+}
+
+static int otto_tc_set_shutdown(struct clock_event_device *ced)
+{
+	otto_tc_set_mode(ced, false, 0);
+
+	return 0;
+}
+
+static void __init otto_tc_init_clkevt(struct timer_of *to)
+{
+	struct clock_event_device *ced = &to->clkevt;
+
+	ced->features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC |
+		CLOCK_EVT_FEAT_DYNIRQ;
+	ced->set_next_event = otto_tc_set_next_event;
+	ced->set_state_periodic = otto_tc_set_periodic;
+	ced->set_state_oneshot = otto_tc_set_oneshot;
+	ced->set_state_oneshot_stopped = otto_tc_set_oneshot_stopped;
+	ced->set_state_shutdown = otto_tc_set_shutdown;
+	ced->cpumask = cpumask_of(0);
+	ced->rating = 300;
+
+	clockevents_config_and_register(ced, timer_of_rate(to), 1, OTTO_TC_MAX_PERIOD);
+}
+
+static int __init otto_tc_init(struct device_node *node)
+{
+	struct otto_tc_ctrl *ctrl;
+	int err;
+
+	ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
+	if (!ctrl)
+		return -ENOMEM;
+
+	spin_lock_init(&ctrl->lock);
+
+	ctrl->to.flags = TIMER_OF_BASE | TIMER_OF_IRQ | TIMER_OF_CLOCK;
+	ctrl->to.of_clk.name = "bus";
+	ctrl->to.of_irq.flags = IRQF_TIMER;
+	ctrl->to.of_irq.handler = otto_tc_handler;
+
+	err = timer_of_init(node, &ctrl->to);
+	if (err)
+		goto err_out;
+
+	/* Reset timer state */
+	writel(0, OTTO_TC_REG_CTL(&ctrl->to));
+	writel(0, OTTO_TC_REG_DATA(&ctrl->to));
+
+	/* TODO Replace by a real derived clock */
+	otto_tc_set_divisor(ctrl, OTTO_TC_MIN_DIVISOR);
+	ctrl->to.of_clk.rate /= OTTO_TC_MIN_DIVISOR;
+	ctrl->to.of_clk.period /= OTTO_TC_MIN_DIVISOR;
+
+	otto_tc_irq_enable_clear(&ctrl->to);
+	otto_tc_init_clkevt(&ctrl->to);
+
+	return 0;
+
+err_out:
+	kfree(ctrl);
+
+	return err;
+}
+TIMER_OF_DECLARE(otto_tc, "realtek,otto-tc", otto_tc_init);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] clocksource/drivers: Add Realtek Otto timer driver
  2022-01-16 21:39 ` [PATCH 2/2] clocksource/drivers: Add Realtek Otto timer driver Sander Vanheule
@ 2022-01-17  1:28     ` kernel test robot
  2022-01-17  7:38     ` kernel test robot
  1 sibling, 0 replies; 11+ messages in thread
From: kernel test robot @ 2022-01-17  1:28 UTC (permalink / raw)
  To: Sander Vanheule, linux-kernel, devicetree
  Cc: kbuild-all, Daniel Lezcano, Thomas Gleixner, Rob Herring,
	Sander Vanheule

Hi Sander,

I love your patch! Perhaps something to improve:

[auto build test WARNING on next-20220116]
[cannot apply to tip/timers/core linux/master linus/master daniel-lezcano/clockevents/next v5.16 v5.16-rc8 v5.16-rc7 v5.16]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Sander-Vanheule/Realtek-Otto-timer-counter-support/20220117-054003
base:    70e6f1b39929bf6755a9c55b79fe720f7c8b9436
config: sparc-allyesconfig (https://download.01.org/0day-ci/archive/20220117/202201170911.q3u7GptA-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/1c346209c6655c06ab28df22f821ffa06a792a14
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Sander-Vanheule/Realtek-Otto-timer-counter-support/20220117-054003
        git checkout 1c346209c6655c06ab28df22f821ffa06a792a14
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=sparc SHELL=/bin/bash drivers/clocksource/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   drivers/clocksource/timer-realtek-otto.c: In function 'otto_tc_init':
   drivers/clocksource/timer-realtek-otto.c:182:16: error: implicit declaration of function 'kzalloc'; did you mean 'd_alloc'? [-Werror=implicit-function-declaration]
     182 |         ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
         |                ^~~~~~~
         |                d_alloc
>> drivers/clocksource/timer-realtek-otto.c:182:14: warning: assignment to 'struct otto_tc_ctrl *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     182 |         ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
         |              ^
   drivers/clocksource/timer-realtek-otto.c:212:9: error: implicit declaration of function 'kfree' [-Werror=implicit-function-declaration]
     212 |         kfree(ctrl);
         |         ^~~~~
   cc1: some warnings being treated as errors


vim +182 drivers/clocksource/timer-realtek-otto.c

   176	
   177	static int __init otto_tc_init(struct device_node *node)
   178	{
   179		struct otto_tc_ctrl *ctrl;
   180		int err;
   181	
 > 182		ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] clocksource/drivers: Add Realtek Otto timer driver
@ 2022-01-17  1:28     ` kernel test robot
  0 siblings, 0 replies; 11+ messages in thread
From: kernel test robot @ 2022-01-17  1:28 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 2895 bytes --]

Hi Sander,

I love your patch! Perhaps something to improve:

[auto build test WARNING on next-20220116]
[cannot apply to tip/timers/core linux/master linus/master daniel-lezcano/clockevents/next v5.16 v5.16-rc8 v5.16-rc7 v5.16]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Sander-Vanheule/Realtek-Otto-timer-counter-support/20220117-054003
base:    70e6f1b39929bf6755a9c55b79fe720f7c8b9436
config: sparc-allyesconfig (https://download.01.org/0day-ci/archive/20220117/202201170911.q3u7GptA-lkp(a)intel.com/config)
compiler: sparc64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/1c346209c6655c06ab28df22f821ffa06a792a14
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Sander-Vanheule/Realtek-Otto-timer-counter-support/20220117-054003
        git checkout 1c346209c6655c06ab28df22f821ffa06a792a14
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=sparc SHELL=/bin/bash drivers/clocksource/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   drivers/clocksource/timer-realtek-otto.c: In function 'otto_tc_init':
   drivers/clocksource/timer-realtek-otto.c:182:16: error: implicit declaration of function 'kzalloc'; did you mean 'd_alloc'? [-Werror=implicit-function-declaration]
     182 |         ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
         |                ^~~~~~~
         |                d_alloc
>> drivers/clocksource/timer-realtek-otto.c:182:14: warning: assignment to 'struct otto_tc_ctrl *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     182 |         ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
         |              ^
   drivers/clocksource/timer-realtek-otto.c:212:9: error: implicit declaration of function 'kfree' [-Werror=implicit-function-declaration]
     212 |         kfree(ctrl);
         |         ^~~~~
   cc1: some warnings being treated as errors


vim +182 drivers/clocksource/timer-realtek-otto.c

   176	
   177	static int __init otto_tc_init(struct device_node *node)
   178	{
   179		struct otto_tc_ctrl *ctrl;
   180		int err;
   181	
 > 182		ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] clocksource/drivers: Add Realtek Otto timer driver
  2022-01-16 21:39 ` [PATCH 2/2] clocksource/drivers: Add Realtek Otto timer driver Sander Vanheule
@ 2022-01-17  7:38     ` kernel test robot
  2022-01-17  7:38     ` kernel test robot
  1 sibling, 0 replies; 11+ messages in thread
From: kernel test robot @ 2022-01-17  7:38 UTC (permalink / raw)
  To: Sander Vanheule, linux-kernel, devicetree
  Cc: kbuild-all, Daniel Lezcano, Thomas Gleixner, Rob Herring,
	Sander Vanheule

Hi Sander,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20220116]
[cannot apply to tip/timers/core linux/master linus/master daniel-lezcano/clockevents/next v5.16 v5.16-rc8 v5.16-rc7 v5.16]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Sander-Vanheule/Realtek-Otto-timer-counter-support/20220117-054003
base:    70e6f1b39929bf6755a9c55b79fe720f7c8b9436
config: sparc-allyesconfig (https://download.01.org/0day-ci/archive/20220117/202201171557.EmiIHtdJ-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/1c346209c6655c06ab28df22f821ffa06a792a14
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Sander-Vanheule/Realtek-Otto-timer-counter-support/20220117-054003
        git checkout 1c346209c6655c06ab28df22f821ffa06a792a14
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=sparc SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/clocksource/timer-realtek-otto.c: In function 'otto_tc_init':
>> drivers/clocksource/timer-realtek-otto.c:182:16: error: implicit declaration of function 'kzalloc'; did you mean 'd_alloc'? [-Werror=implicit-function-declaration]
     182 |         ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
         |                ^~~~~~~
         |                d_alloc
   drivers/clocksource/timer-realtek-otto.c:182:14: warning: assignment to 'struct otto_tc_ctrl *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     182 |         ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
         |              ^
>> drivers/clocksource/timer-realtek-otto.c:212:9: error: implicit declaration of function 'kfree' [-Werror=implicit-function-declaration]
     212 |         kfree(ctrl);
         |         ^~~~~
   cc1: some warnings being treated as errors


vim +182 drivers/clocksource/timer-realtek-otto.c

   176	
   177	static int __init otto_tc_init(struct device_node *node)
   178	{
   179		struct otto_tc_ctrl *ctrl;
   180		int err;
   181	
 > 182		ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
   183		if (!ctrl)
   184			return -ENOMEM;
   185	
   186		spin_lock_init(&ctrl->lock);
   187	
   188		ctrl->to.flags = TIMER_OF_BASE | TIMER_OF_IRQ | TIMER_OF_CLOCK;
   189		ctrl->to.of_clk.name = "bus";
   190		ctrl->to.of_irq.flags = IRQF_TIMER;
   191		ctrl->to.of_irq.handler = otto_tc_handler;
   192	
   193		err = timer_of_init(node, &ctrl->to);
   194		if (err)
   195			goto err_out;
   196	
   197		/* Reset timer state */
   198		writel(0, OTTO_TC_REG_CTL(&ctrl->to));
   199		writel(0, OTTO_TC_REG_DATA(&ctrl->to));
   200	
   201		/* TODO Replace by a real derived clock */
   202		otto_tc_set_divisor(ctrl, OTTO_TC_MIN_DIVISOR);
   203		ctrl->to.of_clk.rate /= OTTO_TC_MIN_DIVISOR;
   204		ctrl->to.of_clk.period /= OTTO_TC_MIN_DIVISOR;
   205	
   206		otto_tc_irq_enable_clear(&ctrl->to);
   207		otto_tc_init_clkevt(&ctrl->to);
   208	
   209		return 0;
   210	
   211	err_out:
 > 212		kfree(ctrl);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] clocksource/drivers: Add Realtek Otto timer driver
@ 2022-01-17  7:38     ` kernel test robot
  0 siblings, 0 replies; 11+ messages in thread
From: kernel test robot @ 2022-01-17  7:38 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 3814 bytes --]

Hi Sander,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20220116]
[cannot apply to tip/timers/core linux/master linus/master daniel-lezcano/clockevents/next v5.16 v5.16-rc8 v5.16-rc7 v5.16]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Sander-Vanheule/Realtek-Otto-timer-counter-support/20220117-054003
base:    70e6f1b39929bf6755a9c55b79fe720f7c8b9436
config: sparc-allyesconfig (https://download.01.org/0day-ci/archive/20220117/202201171557.EmiIHtdJ-lkp(a)intel.com/config)
compiler: sparc64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/1c346209c6655c06ab28df22f821ffa06a792a14
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Sander-Vanheule/Realtek-Otto-timer-counter-support/20220117-054003
        git checkout 1c346209c6655c06ab28df22f821ffa06a792a14
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=sparc SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/clocksource/timer-realtek-otto.c: In function 'otto_tc_init':
>> drivers/clocksource/timer-realtek-otto.c:182:16: error: implicit declaration of function 'kzalloc'; did you mean 'd_alloc'? [-Werror=implicit-function-declaration]
     182 |         ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
         |                ^~~~~~~
         |                d_alloc
   drivers/clocksource/timer-realtek-otto.c:182:14: warning: assignment to 'struct otto_tc_ctrl *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     182 |         ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
         |              ^
>> drivers/clocksource/timer-realtek-otto.c:212:9: error: implicit declaration of function 'kfree' [-Werror=implicit-function-declaration]
     212 |         kfree(ctrl);
         |         ^~~~~
   cc1: some warnings being treated as errors


vim +182 drivers/clocksource/timer-realtek-otto.c

   176	
   177	static int __init otto_tc_init(struct device_node *node)
   178	{
   179		struct otto_tc_ctrl *ctrl;
   180		int err;
   181	
 > 182		ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
   183		if (!ctrl)
   184			return -ENOMEM;
   185	
   186		spin_lock_init(&ctrl->lock);
   187	
   188		ctrl->to.flags = TIMER_OF_BASE | TIMER_OF_IRQ | TIMER_OF_CLOCK;
   189		ctrl->to.of_clk.name = "bus";
   190		ctrl->to.of_irq.flags = IRQF_TIMER;
   191		ctrl->to.of_irq.handler = otto_tc_handler;
   192	
   193		err = timer_of_init(node, &ctrl->to);
   194		if (err)
   195			goto err_out;
   196	
   197		/* Reset timer state */
   198		writel(0, OTTO_TC_REG_CTL(&ctrl->to));
   199		writel(0, OTTO_TC_REG_DATA(&ctrl->to));
   200	
   201		/* TODO Replace by a real derived clock */
   202		otto_tc_set_divisor(ctrl, OTTO_TC_MIN_DIVISOR);
   203		ctrl->to.of_clk.rate /= OTTO_TC_MIN_DIVISOR;
   204		ctrl->to.of_clk.period /= OTTO_TC_MIN_DIVISOR;
   205	
   206		otto_tc_irq_enable_clear(&ctrl->to);
   207		otto_tc_init_clkevt(&ctrl->to);
   208	
   209		return 0;
   210	
   211	err_out:
 > 212		kfree(ctrl);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] clocksource/drivers: Add Realtek Otto timer driver
  2022-01-17  1:28     ` kernel test robot
@ 2022-01-17  8:03       ` Sander Vanheule
  -1 siblings, 0 replies; 11+ messages in thread
From: Sander Vanheule @ 2022-01-17  8:03 UTC (permalink / raw)
  To: linux-kernel, devicetree
  Cc: kbuild-all, Daniel Lezcano, Thomas Gleixner, Rob Herring,
	kernel test robot

On Mon, 2022-01-17 at 09:28 +0800, kernel test robot wrote:
>    drivers/clocksource/timer-realtek-otto.c: In function 'otto_tc_init':
>    drivers/clocksource/timer-realtek-otto.c:182:16: error: implicit
> declaration of function 'kzalloc'; did you mean 'd_alloc'? [-Werror=implicit-
> function-declaration]
>      182 |         ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
>          |                ^~~~~~~
>          |                d_alloc
> > > drivers/clocksource/timer-realtek-otto.c:182:14: warning: assignment to
> > > 'struct otto_tc_ctrl *' from 'int' makes pointer from integer without a
> > > cast [-Wint-conversion]
>      182 |         ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
>          |              ^
>    drivers/clocksource/timer-realtek-otto.c:212:9: error: implicit declaration
> of function 'kfree' [-Werror=implicit-function-declaration]
>      212 |         kfree(ctrl);
>          |         ^~~~~
>    cc1: some warnings being treated as errors
> 
> 
> vim +182 drivers/clocksource/timer-realtek-otto.c
> 
>    176  
>    177  static int __init otto_tc_init(struct device_node *node)
>    178  {
>    179          struct otto_tc_ctrl *ctrl;
>    180          int err;
>    181  
>  > 182          ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);

I'll include linux/slab.h in v2.

Best,
Sander

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] clocksource/drivers: Add Realtek Otto timer driver
@ 2022-01-17  8:03       ` Sander Vanheule
  0 siblings, 0 replies; 11+ messages in thread
From: Sander Vanheule @ 2022-01-17  8:03 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 1528 bytes --]

On Mon, 2022-01-17 at 09:28 +0800, kernel test robot wrote:
>    drivers/clocksource/timer-realtek-otto.c: In function 'otto_tc_init':
>    drivers/clocksource/timer-realtek-otto.c:182:16: error: implicit
> declaration of function 'kzalloc'; did you mean 'd_alloc'? [-Werror=implicit-
> function-declaration]
>      182 |         ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
>          |                ^~~~~~~
>          |                d_alloc
> > > drivers/clocksource/timer-realtek-otto.c:182:14: warning: assignment to
> > > 'struct otto_tc_ctrl *' from 'int' makes pointer from integer without a
> > > cast [-Wint-conversion]
>      182 |         ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
>          |              ^
>    drivers/clocksource/timer-realtek-otto.c:212:9: error: implicit declaration
> of function 'kfree' [-Werror=implicit-function-declaration]
>      212 |         kfree(ctrl);
>          |         ^~~~~
>    cc1: some warnings being treated as errors
> 
> 
> vim +182 drivers/clocksource/timer-realtek-otto.c
> 
>    176  
>    177  static int __init otto_tc_init(struct device_node *node)
>    178  {
>    179          struct otto_tc_ctrl *ctrl;
>    180          int err;
>    181  
>  > 182          ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);

I'll include linux/slab.h in v2.

Best,
Sander

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] dt-bindings: timer: Add realtek,otto-tc binding
  2022-01-16 21:39 ` [PATCH 1/2] dt-bindings: timer: Add realtek,otto-tc binding Sander Vanheule
@ 2022-02-09  2:49   ` Rob Herring
  2022-02-09 10:58     ` Sander Vanheule
  0 siblings, 1 reply; 11+ messages in thread
From: Rob Herring @ 2022-02-09  2:49 UTC (permalink / raw)
  To: Sander Vanheule; +Cc: linux-kernel, devicetree, Daniel Lezcano, Thomas Gleixner

On Sun, Jan 16, 2022 at 10:39:24PM +0100, Sander Vanheule wrote:
> New binding for the timer/counter blocks found on the Realtek Otto MIPS
> platform.
> 
> Signed-off-by: Sander Vanheule <sander@svanheule.net>
> ---
>  .../bindings/timer/realtek,otto-tc.yaml       | 64 +++++++++++++++++++
>  1 file changed, 64 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/timer/realtek,otto-tc.yaml
> 
> diff --git a/Documentation/devicetree/bindings/timer/realtek,otto-tc.yaml b/Documentation/devicetree/bindings/timer/realtek,otto-tc.yaml
> new file mode 100644
> index 000000000000..12971b9ecdf5
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/timer/realtek,otto-tc.yaml
> @@ -0,0 +1,64 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/timer/realtek,otto-tc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Realtek Otto platform timer/counter bindings
> +
> +description:

'|' at the end if you want to keep formatting.

> +  "Up-counting 28-bit timer that can operate in oneshot or repeating mode,

And drop the quotes.

> +  providing an interrupt at roll-over.
> +
> +  The timer is driven by a divided clock, derived from the bus clock. The clock
> +  divisor is configurable from 2 to 65535. Divisor values of 0 and 1 disable
> +  the timer clock. The timer can also be enabled or disabled independently from
> +  the clock (divisor) selection.
> +
> +  The number of timers supported by the different SoC families is:
> +  - RTL8380: 5 timers
> +  - RTL8390: 5 timers
> +  - RTL9300: 6 timers
> +  - RTL9310: 7 timers"
> +
> +maintainers:
> +  - Sander Vanheule <sander@svanheule.net>
> +
> +properties:
> +  compatible:
> +    const: realtek,otto-tc

4 SoCs with differences in the block, you need 4 SoC specific 
compatibles. With a fallback if appropriate.

> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  clocks:
> +    items:
> +      - description: Parent clock from peripheral bus
> +
> +  clock-names:
> +    items:
> +      - const: bus
> +
> +additionalProperties: false
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - clocks
> +  - clock-names
> +
> +examples:
> +  - |
> +    timer0: timer@3100 {

Drop unused labels.

> +      compatible = "realtek,otto-tc";
> +      reg = <0x3100 0x10>;
> +
> +      interrupts = <29 4>;
> +
> +      clocks = <&lx_clk>;
> +      clock-names = "bus";
> +    };
> -- 
> 2.34.1
> 
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] dt-bindings: timer: Add realtek,otto-tc binding
  2022-02-09  2:49   ` Rob Herring
@ 2022-02-09 10:58     ` Sander Vanheule
  0 siblings, 0 replies; 11+ messages in thread
From: Sander Vanheule @ 2022-02-09 10:58 UTC (permalink / raw)
  To: Rob Herring; +Cc: linux-kernel, devicetree, Daniel Lezcano, Thomas Gleixner

Hi Rob,

On Tue, 2022-02-08 at 20:49 -0600, Rob Herring wrote:
> On Sun, Jan 16, 2022 at 10:39:24PM +0100, Sander Vanheule wrote:
> > New binding for the timer/counter blocks found on the Realtek Otto MIPS
> > platform.
> > 
> > Signed-off-by: Sander Vanheule <sander@svanheule.net>
> > ---
> >  .../bindings/timer/realtek,otto-tc.yaml       | 64 +++++++++++++++++++
> >  1 file changed, 64 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/timer/realtek,otto-
> > tc.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/timer/realtek,otto-tc.yaml
> > b/Documentation/devicetree/bindings/timer/realtek,otto-tc.yaml
> > new file mode 100644
> > index 000000000000..12971b9ecdf5
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/timer/realtek,otto-tc.yaml
> > @@ -0,0 +1,64 @@
> > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/timer/realtek,otto-tc.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Realtek Otto platform timer/counter bindings
> > +
> > +description:
> 
> '|' at the end if you want to keep formatting.
> 
> > +  "Up-counting 28-bit timer that can operate in oneshot or repeating mode,
> 
> And drop the quotes.
> 
> > +  providing an interrupt at roll-over.
> > +
> > +  The timer is driven by a divided clock, derived from the bus clock. The
> > clock
> > +  divisor is configurable from 2 to 65535. Divisor values of 0 and 1
> > disable
> > +  the timer clock. The timer can also be enabled or disabled independently
> > from
> > +  the clock (divisor) selection.
> > +
> > +  The number of timers supported by the different SoC families is:
> > +  - RTL8380: 5 timers
> > +  - RTL8390: 5 timers
> > +  - RTL9300: 6 timers
> > +  - RTL9310: 7 timers"
> > +
> > +maintainers:
> > +  - Sander Vanheule <sander@svanheule.net>
> > +
> > +properties:
> > +  compatible:
> > +    const: realtek,otto-tc
> 
> 4 SoCs with differences in the block, you need 4 SoC specific 
> compatibles. With a fallback if appropriate.
> 
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +  interrupts:
> > +    maxItems: 1
> > +
> > +  clocks:
> > +    items:
> > +      - description: Parent clock from peripheral bus
> > +
> > +  clock-names:
> > +    items:
> > +      - const: bus
> > +
> > +additionalProperties: false
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +  - interrupts
> > +  - clocks
> > +  - clock-names
> > +
> > +examples:
> > +  - |
> > +    timer0: timer@3100 {
> 
> Drop unused labels.

I forgot to remove this, as originally I had...

> 
> > +      compatible = "realtek,otto-tc";
> > +      reg = <0x3100 0x10>;
> > +
> > +      interrupts = <29 4>;
> > +
> > +      clocks = <&lx_clk>;
> > +      clock-names = "bus";

clocks = <&lx_clk>, <&timer0>;
clock-names = "bus", "timer";

to have a self-reference for the (private) derived clock. Not sure if it makes
sense to do it like this though, or if only the bus clock would be sufficient.

I'll also fix your other remarks in v2.

Best,
Sander


> > +    };
> > -- 
> > 2.34.1
> > 
> > 

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2022-02-09 12:00 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-16 21:39 [PATCH 0/2] Realtek Otto timer/counter support Sander Vanheule
2022-01-16 21:39 ` [PATCH 1/2] dt-bindings: timer: Add realtek,otto-tc binding Sander Vanheule
2022-02-09  2:49   ` Rob Herring
2022-02-09 10:58     ` Sander Vanheule
2022-01-16 21:39 ` [PATCH 2/2] clocksource/drivers: Add Realtek Otto timer driver Sander Vanheule
2022-01-17  1:28   ` kernel test robot
2022-01-17  1:28     ` kernel test robot
2022-01-17  8:03     ` Sander Vanheule
2022-01-17  8:03       ` Sander Vanheule
2022-01-17  7:38   ` kernel test robot
2022-01-17  7:38     ` kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.