* [PATCH v3 0/9] mips: Support for RTL9302C
@ 2024-06-27 4:33 Chris Packham
2024-06-27 4:33 ` [PATCH v3 1/9] mips: dts: realtek: use "serial" instead of "uart" in node name Chris Packham
` (9 more replies)
0 siblings, 10 replies; 32+ messages in thread
From: Chris Packham @ 2024-06-27 4:33 UTC (permalink / raw)
To: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds,
Chris Packham
This series adds basic support for the RTL9302C reference board. Currently the
focus is on the CPU block stuff. I hope to get around to the DSA switch driver
eventually but this is a small start that lets me boot a mainline kernel on the
board I have. I initialiy started with code from openwrt but have paired it
down to just the clocksource driver and devicetree.
The first two patches in this series are fixing some complaints from make
dtbs_check for some existing realtek dts files. They can be applied on their
own if desired.
Chris Packham (9):
mips: dts: realtek: use "serial" instead of "uart" in node name
mips: dts: realtek: add device_type property to cpu node
dt-bindings: vendor-prefixes: Add Cameo Communications
dt-bindings: mips: realtek: Add rtl930x-soc compatible
dt-bindings: timer: Add schema for realtek,otto-timer
dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc
clocksource: realtek: Add timer driver for rtl-otto platforms
mips: generic: add fdt fixup for Realtek reference board
mips: dts: realtek: Add RTL9302C board
.../realtek,rtl-intc.yaml | 18 +-
.../devicetree/bindings/mips/realtek-rtl.yaml | 4 +
.../bindings/timer/realtek,otto-timer.yaml | 63 ++++
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
arch/mips/boot/dts/realtek/Makefile | 1 +
.../cameo-rtl9302c-2x-rtl8224-2xge.dts | 73 +++++
arch/mips/boot/dts/realtek/rtl838x.dtsi | 1 +
arch/mips/boot/dts/realtek/rtl83xx.dtsi | 4 +-
arch/mips/boot/dts/realtek/rtl930x.dtsi | 79 +++++
arch/mips/generic/Makefile | 1 +
arch/mips/generic/board-realtek.c | 81 +++++
drivers/clocksource/Kconfig | 10 +
drivers/clocksource/Makefile | 1 +
drivers/clocksource/timer-rtl-otto.c | 287 ++++++++++++++++++
include/linux/cpuhotplug.h | 1 +
15 files changed, 623 insertions(+), 3 deletions(-)
create mode 100644 Documentation/devicetree/bindings/timer/realtek,otto-timer.yaml
create mode 100644 arch/mips/boot/dts/realtek/cameo-rtl9302c-2x-rtl8224-2xge.dts
create mode 100644 arch/mips/boot/dts/realtek/rtl930x.dtsi
create mode 100644 arch/mips/generic/board-realtek.c
create mode 100644 drivers/clocksource/timer-rtl-otto.c
--
2.45.2
^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH v3 1/9] mips: dts: realtek: use "serial" instead of "uart" in node name
2024-06-27 4:33 [PATCH v3 0/9] mips: Support for RTL9302C Chris Packham
@ 2024-06-27 4:33 ` Chris Packham
2024-06-27 10:59 ` Marek Behún
2024-06-27 4:33 ` [PATCH v3 2/9] mips: dts: realtek: add device_type property to cpu node Chris Packham
` (8 subsequent siblings)
9 siblings, 1 reply; 32+ messages in thread
From: Chris Packham @ 2024-06-27 4:33 UTC (permalink / raw)
To: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds,
Chris Packham
Update the node name for the UARTs to resolve the following dtbs_check
complaints:
uart@2000: $nodename:0: 'uart@2000' does not match '^serial(@.*)?$'
uart@2100: $nodename:0: 'uart@2100' does not match '^serial(@.*)?$'
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
Notes:
Changes in v2:
- New
arch/mips/boot/dts/realtek/rtl83xx.dtsi | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/mips/boot/dts/realtek/rtl83xx.dtsi b/arch/mips/boot/dts/realtek/rtl83xx.dtsi
index de65a111b626..03ddc61f7c9e 100644
--- a/arch/mips/boot/dts/realtek/rtl83xx.dtsi
+++ b/arch/mips/boot/dts/realtek/rtl83xx.dtsi
@@ -22,7 +22,7 @@ soc: soc {
#size-cells = <1>;
ranges = <0x0 0x18000000 0x10000>;
- uart0: uart@2000 {
+ uart0: serial@2000 {
compatible = "ns16550a";
reg = <0x2000 0x100>;
@@ -39,7 +39,7 @@ uart0: uart@2000 {
status = "disabled";
};
- uart1: uart@2100 {
+ uart1: serial@2100 {
compatible = "ns16550a";
reg = <0x2100 0x100>;
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v3 2/9] mips: dts: realtek: add device_type property to cpu node
2024-06-27 4:33 [PATCH v3 0/9] mips: Support for RTL9302C Chris Packham
2024-06-27 4:33 ` [PATCH v3 1/9] mips: dts: realtek: use "serial" instead of "uart" in node name Chris Packham
@ 2024-06-27 4:33 ` Chris Packham
2024-06-27 11:01 ` Marek Behún
2024-06-27 4:33 ` [PATCH v3 3/9] dt-bindings: vendor-prefixes: Add Cameo Communications Chris Packham
` (7 subsequent siblings)
9 siblings, 1 reply; 32+ messages in thread
From: Chris Packham @ 2024-06-27 4:33 UTC (permalink / raw)
To: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds,
Chris Packham
Add device_type = "cpu" to the cpu node for the rtl838x SoC. This
resolves the following dtbs_check complaint:
cpus: cpu@0: 'cache-level' is a required property
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
Notes:
Changes in v2:
- New
arch/mips/boot/dts/realtek/rtl838x.dtsi | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/mips/boot/dts/realtek/rtl838x.dtsi b/arch/mips/boot/dts/realtek/rtl838x.dtsi
index 6cc4ff5c0d19..722106e39194 100644
--- a/arch/mips/boot/dts/realtek/rtl838x.dtsi
+++ b/arch/mips/boot/dts/realtek/rtl838x.dtsi
@@ -6,6 +6,7 @@ cpus {
#size-cells = <0>;
cpu@0 {
+ device_type = "cpu";
compatible = "mips,mips4KEc";
reg = <0>;
clocks = <&baseclk 0>;
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v3 3/9] dt-bindings: vendor-prefixes: Add Cameo Communications
2024-06-27 4:33 [PATCH v3 0/9] mips: Support for RTL9302C Chris Packham
2024-06-27 4:33 ` [PATCH v3 1/9] mips: dts: realtek: use "serial" instead of "uart" in node name Chris Packham
2024-06-27 4:33 ` [PATCH v3 2/9] mips: dts: realtek: add device_type property to cpu node Chris Packham
@ 2024-06-27 4:33 ` Chris Packham
2024-06-27 7:39 ` Krzysztof Kozlowski
2024-06-27 4:33 ` [PATCH v3 4/9] dt-bindings: mips: realtek: Add rtl930x-soc compatible Chris Packham
` (6 subsequent siblings)
9 siblings, 1 reply; 32+ messages in thread
From: Chris Packham @ 2024-06-27 4:33 UTC (permalink / raw)
To: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds,
Chris Packham
Add entry for Cameo Communications (https://www.cameo.com.tw/)
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
Notes:
Changes in v3:
- new
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index fbf47f0bacf1..67550f0dd189 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -246,6 +246,8 @@ patternProperties:
description: CALAO Systems SAS
"^calxeda,.*":
description: Calxeda
+ "^cameo,.*":
+ description: Cameo Communications, Inc
"^canaan,.*":
description: Canaan, Inc.
"^caninos,.*":
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v3 4/9] dt-bindings: mips: realtek: Add rtl930x-soc compatible
2024-06-27 4:33 [PATCH v3 0/9] mips: Support for RTL9302C Chris Packham
` (2 preceding siblings ...)
2024-06-27 4:33 ` [PATCH v3 3/9] dt-bindings: vendor-prefixes: Add Cameo Communications Chris Packham
@ 2024-06-27 4:33 ` Chris Packham
2024-06-27 7:39 ` Krzysztof Kozlowski
2024-06-27 4:33 ` [PATCH v3 5/9] dt-bindings: timer: Add schema for realtek,otto-timer Chris Packham
` (5 subsequent siblings)
9 siblings, 1 reply; 32+ messages in thread
From: Chris Packham @ 2024-06-27 4:33 UTC (permalink / raw)
To: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds,
Chris Packham
Add the rtl9302 SoC and the Cameo RTL9302C_2xRTL8224_2XGE reference
board to the list of Realtek compatible strings.
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
Notes:
Changes in v3:
- Use full board name
- I've decided to stick with rtl9302-soc to disambiguate it from what I
eventually plan to add as rtl9302-switch which is in the same package
but are separate dies.
Changes in v2:
- Use specific compatible for rtl9302-soc
- Fix to allow correct board, soc compatible
Documentation/devicetree/bindings/mips/realtek-rtl.yaml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/mips/realtek-rtl.yaml b/Documentation/devicetree/bindings/mips/realtek-rtl.yaml
index f8ac309d2994..d337655bfbf8 100644
--- a/Documentation/devicetree/bindings/mips/realtek-rtl.yaml
+++ b/Documentation/devicetree/bindings/mips/realtek-rtl.yaml
@@ -20,5 +20,9 @@ properties:
- enum:
- cisco,sg220-26
- const: realtek,rtl8382-soc
+ - items:
+ - enum:
+ - cameo,rtl9302c-2x-rtl8224-2xge
+ - const: realtek,rtl9302-soc
additionalProperties: true
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v3 5/9] dt-bindings: timer: Add schema for realtek,otto-timer
2024-06-27 4:33 [PATCH v3 0/9] mips: Support for RTL9302C Chris Packham
` (3 preceding siblings ...)
2024-06-27 4:33 ` [PATCH v3 4/9] dt-bindings: mips: realtek: Add rtl930x-soc compatible Chris Packham
@ 2024-06-27 4:33 ` Chris Packham
2024-06-27 7:40 ` Krzysztof Kozlowski
2024-06-29 20:40 ` Sander Vanheule
2024-06-27 4:33 ` [PATCH v3 6/9] dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc Chris Packham
` (4 subsequent siblings)
9 siblings, 2 replies; 32+ messages in thread
From: Chris Packham @ 2024-06-27 4:33 UTC (permalink / raw)
To: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds,
Chris Packham
Add the devicetree schema for the realtek,otto-timer present on a number
of Realtek SoCs.
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
Notes:
Changes in v3:
- Use items to describe regs and interrupt properties
- Remove minItems condition
Changes in v2:
- Use specific compatible (rtl9302-timer instead of rtl930x-timer)
- Remove unnecessary label
- Remove unused irq flags (interrupt controller is one-cell)
- Set minItems for reg and interrupts based on compatible
.../bindings/timer/realtek,otto-timer.yaml | 63 +++++++++++++++++++
1 file changed, 63 insertions(+)
create mode 100644 Documentation/devicetree/bindings/timer/realtek,otto-timer.yaml
diff --git a/Documentation/devicetree/bindings/timer/realtek,otto-timer.yaml b/Documentation/devicetree/bindings/timer/realtek,otto-timer.yaml
new file mode 100644
index 000000000000..7b6ec2c69484
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/realtek,otto-timer.yaml
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/realtek,otto-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Realtek Otto SoCs Timer/Counter
+
+description:
+ Realtek SoCs support a number of timers/counters. These are used
+ as a per CPU clock event generator and an overall CPU clocksource.
+
+maintainers:
+ - Chris Packham <chris.packham@alliedtelesis.co.nz>
+
+properties:
+ $nodename:
+ pattern: "^timer@[0-9a-f]+$"
+
+ compatible:
+ items:
+ - enum:
+ - realtek,rtl9302-timer
+ - const: realtek,otto-timer
+
+ reg:
+ items:
+ - description: timer0 registers
+ - description: timer1 registers
+ - description: timer2 registers
+ - description: timer3 registers
+ - description: timer4 registers
+
+ clocks:
+ maxItems: 1
+
+ interrupts:
+ items:
+ - description: timer0 interrupt
+ - description: timer1 interrupt
+ - description: timer2 interrupt
+ - description: timer3 interrupt
+ - description: timer4 interrupt
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - interrupts
+
+additionalProperties: false
+
+examples:
+ - |
+ timer@3200 {
+ compatible = "realtek,rtl9302-timer", "realtek,otto-timer";
+ reg = <0x3200 0x10>, <0x3210 0x10>, <0x3220 0x10>,
+ <0x3230 0x10>, <0x3240 0x10>;
+
+ interrupt-parent = <&intc>;
+ interrupts = <7>, <8>, <9>, <10>, <11>;
+ clocks = <&lx_clk>;
+ };
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v3 6/9] dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc
2024-06-27 4:33 [PATCH v3 0/9] mips: Support for RTL9302C Chris Packham
` (4 preceding siblings ...)
2024-06-27 4:33 ` [PATCH v3 5/9] dt-bindings: timer: Add schema for realtek,otto-timer Chris Packham
@ 2024-06-27 4:33 ` Chris Packham
2024-06-27 5:37 ` Rob Herring (Arm)
2024-06-27 7:41 ` Krzysztof Kozlowski
2024-06-27 4:33 ` [PATCH v3 7/9] clocksource: realtek: Add timer driver for rtl-otto platforms Chris Packham
` (3 subsequent siblings)
9 siblings, 2 replies; 32+ messages in thread
From: Chris Packham @ 2024-06-27 4:33 UTC (permalink / raw)
To: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds,
Chris Packham
Add a compatible string for the interrupt controller found on the
rtl930x SoCs. The interrupt controller has registers for VPE1 so these
are added as a second reg cell.
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
Notes:
Changes in v3:
- Use items to describe the regs property
Changes in v2:
- Set reg:maxItems to 2 to allow for VPE1 registers on the rtl9300. Add
a condition to enforce the old limit on other SoCs.
- Connor and Krzysztof offered acks on v1 but I think the changes here
are big enough to void those.
.../interrupt-controller/realtek,rtl-intc.yaml | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml b/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml
index fb5593724059..d0e5bdf45d05 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml
+++ b/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml
@@ -25,6 +25,7 @@ properties:
- items:
- enum:
- realtek,rtl8380-intc
+ - realtek,rtl9300-intc
- const: realtek,rtl-intc
- const: realtek,rtl-intc
deprecated: true
@@ -35,7 +36,9 @@ properties:
const: 1
reg:
- maxItems: 1
+ items:
+ - description: vpe0 registers
+ - description: vpe1 registers
interrupts:
minItems: 1
@@ -71,6 +74,19 @@ allOf:
else:
required:
- interrupts
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: realtek,rtl9300-intc
+ then:
+ properties:
+ reg:
+ maxItems: 2
+ else:
+ properties:
+ reg:
+ maxItems: 1
additionalProperties: false
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v3 7/9] clocksource: realtek: Add timer driver for rtl-otto platforms
2024-06-27 4:33 [PATCH v3 0/9] mips: Support for RTL9302C Chris Packham
` (5 preceding siblings ...)
2024-06-27 4:33 ` [PATCH v3 6/9] dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc Chris Packham
@ 2024-06-27 4:33 ` Chris Packham
2024-06-27 11:17 ` Marek Behún
` (2 more replies)
2024-06-27 4:33 ` [PATCH v3 8/9] mips: generic: add fdt fixup for Realtek reference board Chris Packham
` (2 subsequent siblings)
9 siblings, 3 replies; 32+ messages in thread
From: Chris Packham @ 2024-06-27 4:33 UTC (permalink / raw)
To: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds,
Chris Packham, Markus Stockhausen
The timer/counter block on the Realtek SoCs provides up to 5 timers. It
also includes a watchdog timer but this isn't being used currently (it
will be added as a separate wdt driver).
One timer will be used per CPU as a local clock event generator. An
additional timer will be used as an overal stable clocksource.
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Signed-off-by: Sander Vanheule <sander@svanheule.net>
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
Notes:
This is derrived from openwrt[1],[2]. I've retained the original signoff
and added my own.
[1] https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob_plain;f=target/linux/realtek/files-5.15/drivers/clocksource/timer-rtl-otto.c;hb=HEAD
[2] https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob_plain;f=target/linux/realtek/patches-5.15/302-clocksource-add-otto-driver.patch;hb=HEAD
Changes in v3:
- Remove unnecessary select COMMON_CLK
- Use %p when printing pointer
Changes in v2
- None
drivers/clocksource/Kconfig | 10 +
drivers/clocksource/Makefile | 1 +
drivers/clocksource/timer-rtl-otto.c | 287 +++++++++++++++++++++++++++
include/linux/cpuhotplug.h | 1 +
4 files changed, 299 insertions(+)
create mode 100644 drivers/clocksource/timer-rtl-otto.c
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index 34faa0320ece..70ba57210862 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -134,6 +134,16 @@ config RDA_TIMER
help
Enables the support for the RDA Micro timer driver.
+config REALTEK_OTTO_TIMER
+ bool "Clocksource/timer for the Realtek Otto platform"
+ select TIMER_OF
+ help
+ This driver adds support for the timers found in the Realtek RTL83xx
+ and RTL93xx SoCs series. This includes chips such as RTL8380, RTL8381
+ and RTL832, as well as chips from the RTL839x series, such as RTL8390
+ RT8391, RTL8392, RTL8393 and RTL8396 and chips of the RTL930x series
+ such as RTL9301, RTL9302 or RTL9303.
+
config SUN4I_TIMER
bool "Sun4i timer driver" if COMPILE_TEST
depends on HAS_IOMEM
diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile
index 4bb856e4df55..22743785299e 100644
--- a/drivers/clocksource/Makefile
+++ b/drivers/clocksource/Makefile
@@ -59,6 +59,7 @@ obj-$(CONFIG_MILBEAUT_TIMER) += timer-milbeaut.o
obj-$(CONFIG_SPRD_TIMER) += timer-sprd.o
obj-$(CONFIG_NPCM7XX_TIMER) += timer-npcm7xx.o
obj-$(CONFIG_RDA_TIMER) += timer-rda.o
+obj-$(CONFIG_REALTEK_OTTO_TIMER) += timer-rtl-otto.o
obj-$(CONFIG_ARC_TIMERS) += arc_timer.o
obj-$(CONFIG_ARM_ARCH_TIMER) += arm_arch_timer.o
diff --git a/drivers/clocksource/timer-rtl-otto.c b/drivers/clocksource/timer-rtl-otto.c
new file mode 100644
index 000000000000..f1b9d35eacd1
--- /dev/null
+++ b/drivers/clocksource/timer-rtl-otto.c
@@ -0,0 +1,287 @@
+// SPDX-License-Identifier: GPL-2.0-only
+
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/clk.h>
+#include <linux/clockchips.h>
+#include <linux/cpu.h>
+#include <linux/cpuhotplug.h>
+#include <linux/interrupt.h>
+#include <linux/sched_clock.h>
+#include "timer-of.h"
+
+#define RTTM_DATA 0x0
+#define RTTM_CNT 0x4
+#define RTTM_CTRL 0x8
+#define RTTM_INT 0xc
+
+#define RTTM_CTRL_ENABLE BIT(28)
+#define RTTM_INT_PENDING BIT(16)
+#define RTTM_INT_ENABLE BIT(20)
+
+/*
+ * The Otto platform provides multiple 28 bit timers/counters with the following
+ * operating logic. If enabled the timer counts up. Per timer one can set a
+ * maximum counter value as an end marker. If end marker is reached the timer
+ * fires an interrupt. If the timer "overflows" by reaching the end marker or
+ * by adding 1 to 0x0fffffff the counter is reset to 0. When this happens and
+ * the timer is in operating mode COUNTER it stops. In mode TIMER it will
+ * continue to count up.
+ */
+#define RTTM_CTRL_COUNTER 0
+#define RTTM_CTRL_TIMER BIT(24)
+
+#define RTTM_BIT_COUNT 28
+#define RTTM_MIN_DELTA 8
+#define RTTM_MAX_DELTA CLOCKSOURCE_MASK(28)
+
+/*
+ * Timers are derived from the LXB clock frequency. Usually this is a fixed
+ * multiple of the 25 MHz oscillator. The 930X SOC is an exception from that.
+ * Its LXB clock has only dividers and uses the switch PLL of 2.45 GHz as its
+ * base. The only meaningful frequencies we can achieve from that are 175.000
+ * MHz and 153.125 MHz. The greatest common divisor of all explained possible
+ * speeds is 3125000. Pin the timers to this 3.125 MHz reference frequency.
+ */
+#define RTTM_TICKS_PER_SEC 3125000
+
+struct rttm_cs {
+ struct timer_of to;
+ struct clocksource cs;
+};
+
+/* Simple internal register functions */
+static inline void rttm_set_counter(void __iomem *base, unsigned int counter)
+{
+ iowrite32(counter, base + RTTM_CNT);
+}
+
+static inline unsigned int rttm_get_counter(void __iomem *base)
+{
+ return ioread32(base + RTTM_CNT);
+}
+
+static inline void rttm_set_period(void __iomem *base, unsigned int period)
+{
+ iowrite32(period, base + RTTM_DATA);
+}
+
+static inline void rttm_disable_timer(void __iomem *base)
+{
+ iowrite32(0, base + RTTM_CTRL);
+}
+
+static inline void rttm_enable_timer(void __iomem *base, u32 mode, u32 divisor)
+{
+ iowrite32(RTTM_CTRL_ENABLE | mode | divisor, base + RTTM_CTRL);
+}
+
+static inline void rttm_ack_irq(void __iomem *base)
+{
+ iowrite32(ioread32(base + RTTM_INT) | RTTM_INT_PENDING, base + RTTM_INT);
+}
+
+static inline void rttm_enable_irq(void __iomem *base)
+{
+ iowrite32(RTTM_INT_ENABLE, base + RTTM_INT);
+}
+
+static inline void rttm_disable_irq(void __iomem *base)
+{
+ iowrite32(0, base + RTTM_INT);
+}
+
+/* Aggregated control functions for kernel clock framework */
+#define RTTM_DEBUG(base) \
+ pr_debug("------------- %d %p\n", \
+ smp_processor_id(), base)
+
+static irqreturn_t rttm_timer_interrupt(int irq, void *dev_id)
+{
+ struct clock_event_device *clkevt = dev_id;
+ struct timer_of *to = to_timer_of(clkevt);
+
+ rttm_ack_irq(to->of_base.base);
+ RTTM_DEBUG(to->of_base.base);
+ clkevt->event_handler(clkevt);
+
+ return IRQ_HANDLED;
+}
+
+static void rttm_stop_timer(void __iomem *base)
+{
+ rttm_disable_timer(base);
+ rttm_ack_irq(base);
+}
+
+static void rttm_start_timer(struct timer_of *to, u32 mode)
+{
+ rttm_set_counter(to->of_base.base, 0);
+ rttm_enable_timer(to->of_base.base, mode, to->of_clk.rate / RTTM_TICKS_PER_SEC);
+}
+
+static int rttm_next_event(unsigned long delta, struct clock_event_device *clkevt)
+{
+ struct timer_of *to = to_timer_of(clkevt);
+
+ RTTM_DEBUG(to->of_base.base);
+ rttm_stop_timer(to->of_base.base);
+ rttm_set_period(to->of_base.base, delta);
+ rttm_start_timer(to, RTTM_CTRL_COUNTER);
+
+ return 0;
+}
+
+static int rttm_state_oneshot(struct clock_event_device *clkevt)
+{
+ struct timer_of *to = to_timer_of(clkevt);
+
+ RTTM_DEBUG(to->of_base.base);
+ rttm_stop_timer(to->of_base.base);
+ rttm_set_period(to->of_base.base, RTTM_TICKS_PER_SEC / HZ);
+ rttm_start_timer(to, RTTM_CTRL_COUNTER);
+
+ return 0;
+}
+
+static int rttm_state_periodic(struct clock_event_device *clkevt)
+{
+ struct timer_of *to = to_timer_of(clkevt);
+
+ RTTM_DEBUG(to->of_base.base);
+ rttm_stop_timer(to->of_base.base);
+ rttm_set_period(to->of_base.base, RTTM_TICKS_PER_SEC / HZ);
+ rttm_start_timer(to, RTTM_CTRL_TIMER);
+
+ return 0;
+}
+
+static int rttm_state_shutdown(struct clock_event_device *clkevt)
+{
+ struct timer_of *to = to_timer_of(clkevt);
+
+ RTTM_DEBUG(to->of_base.base);
+ rttm_stop_timer(to->of_base.base);
+
+ return 0;
+}
+
+static void rttm_setup_timer(void __iomem *base)
+{
+ RTTM_DEBUG(base);
+ rttm_stop_timer(base);
+ rttm_set_period(base, 0);
+}
+
+static u64 rttm_read_clocksource(struct clocksource *cs)
+{
+ struct rttm_cs *rcs = container_of(cs, struct rttm_cs, cs);
+
+ return (u64)rttm_get_counter(rcs->to.of_base.base);
+}
+
+/* Module initialization part. */
+static DEFINE_PER_CPU(struct timer_of, rttm_to) = {
+ .flags = TIMER_OF_BASE | TIMER_OF_CLOCK | TIMER_OF_IRQ,
+ .of_irq = {
+ .flags = IRQF_PERCPU | IRQF_TIMER,
+ .handler = rttm_timer_interrupt,
+ },
+ .clkevt = {
+ .rating = 400,
+ .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
+ .set_state_periodic = rttm_state_periodic,
+ .set_state_shutdown = rttm_state_shutdown,
+ .set_state_oneshot = rttm_state_oneshot,
+ .set_next_event = rttm_next_event
+ },
+};
+
+static int rttm_enable_clocksource(struct clocksource *cs)
+{
+ struct rttm_cs *rcs = container_of(cs, struct rttm_cs, cs);
+
+ rttm_disable_irq(rcs->to.of_base.base);
+ rttm_setup_timer(rcs->to.of_base.base);
+ rttm_enable_timer(rcs->to.of_base.base, RTTM_CTRL_TIMER,
+ rcs->to.of_clk.rate / RTTM_TICKS_PER_SEC);
+
+ return 0;
+}
+
+struct rttm_cs rttm_cs = {
+ .to = {
+ .flags = TIMER_OF_BASE | TIMER_OF_CLOCK,
+ },
+ .cs = {
+ .name = "realtek_otto_timer",
+ .rating = 400,
+ .mask = CLOCKSOURCE_MASK(RTTM_BIT_COUNT),
+ .flags = CLOCK_SOURCE_IS_CONTINUOUS,
+ .read = rttm_read_clocksource,
+ }
+};
+
+static u64 notrace rttm_read_clock(void)
+{
+ return (u64)rttm_get_counter(rttm_cs.to.of_base.base);
+}
+
+static int rttm_cpu_starting(unsigned int cpu)
+{
+ struct timer_of *to = per_cpu_ptr(&rttm_to, cpu);
+
+ RTTM_DEBUG(to->of_base.base);
+ to->clkevt.cpumask = cpumask_of(cpu);
+ irq_force_affinity(to->of_irq.irq, to->clkevt.cpumask);
+ clockevents_config_and_register(&to->clkevt, RTTM_TICKS_PER_SEC,
+ RTTM_MIN_DELTA, RTTM_MAX_DELTA);
+ rttm_enable_irq(to->of_base.base);
+
+ return 0;
+}
+
+static int __init rttm_probe(struct device_node *np)
+{
+ int cpu, cpu_rollback;
+ struct timer_of *to;
+ int clkidx = num_possible_cpus();
+
+ /* Use the first n timers as per CPU clock event generators */
+ for_each_possible_cpu(cpu) {
+ to = per_cpu_ptr(&rttm_to, cpu);
+ to->of_irq.index = to->of_base.index = cpu;
+ if (timer_of_init(np, to)) {
+ pr_err("setup of timer %d failed\n", cpu);
+ goto rollback;
+ }
+ rttm_setup_timer(to->of_base.base);
+ }
+
+ /* Activate the n'th + 1 timer as a stable CPU clocksource. */
+ to = &rttm_cs.to;
+ to->of_base.index = clkidx;
+ timer_of_init(np, to);
+ if (rttm_cs.to.of_base.base && rttm_cs.to.of_clk.rate) {
+ rttm_enable_clocksource(&rttm_cs.cs);
+ clocksource_register_hz(&rttm_cs.cs, RTTM_TICKS_PER_SEC);
+ sched_clock_register(rttm_read_clock, RTTM_BIT_COUNT, RTTM_TICKS_PER_SEC);
+ } else
+ pr_err(" setup of timer %d as clocksource failed", clkidx);
+
+ return cpuhp_setup_state(CPUHP_AP_REALTEK_TIMER_STARTING,
+ "timer/realtek:online",
+ rttm_cpu_starting, NULL);
+rollback:
+ pr_err("timer registration failed\n");
+ for_each_possible_cpu(cpu_rollback) {
+ if (cpu_rollback == cpu)
+ break;
+ to = per_cpu_ptr(&rttm_to, cpu_rollback);
+ timer_of_cleanup(to);
+ }
+
+ return -EINVAL;
+}
+
+TIMER_OF_DECLARE(otto_timer, "realtek,otto-timer", rttm_probe);
diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h
index 7a5785f405b6..56b744dc1317 100644
--- a/include/linux/cpuhotplug.h
+++ b/include/linux/cpuhotplug.h
@@ -171,6 +171,7 @@ enum cpuhp_state {
CPUHP_AP_ARMADA_TIMER_STARTING,
CPUHP_AP_MIPS_GIC_TIMER_STARTING,
CPUHP_AP_ARC_TIMER_STARTING,
+ CPUHP_AP_REALTEK_TIMER_STARTING,
CPUHP_AP_RISCV_TIMER_STARTING,
CPUHP_AP_CLINT_TIMER_STARTING,
CPUHP_AP_CSKY_TIMER_STARTING,
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v3 8/9] mips: generic: add fdt fixup for Realtek reference board
2024-06-27 4:33 [PATCH v3 0/9] mips: Support for RTL9302C Chris Packham
` (6 preceding siblings ...)
2024-06-27 4:33 ` [PATCH v3 7/9] clocksource: realtek: Add timer driver for rtl-otto platforms Chris Packham
@ 2024-06-27 4:33 ` Chris Packham
2024-06-27 11:19 ` Marek Behún
2024-06-27 17:48 ` Rob Herring
2024-06-27 4:33 ` [PATCH v3 9/9] mips: dts: realtek: Add RTL9302C board Chris Packham
2024-06-27 14:42 ` [PATCH v3 0/9] mips: Support for RTL9302C Rob Herring
9 siblings, 2 replies; 32+ messages in thread
From: Chris Packham @ 2024-06-27 4:33 UTC (permalink / raw)
To: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds,
Chris Packham
The bootloader used on the Realtek RTL9302C boards is an ancient vendor
fork of U-Boot that doesn't understand device trees. So to run a modern
kernel it is necessary use one of the APPENDED_DTB options.
When appending the DTB the inintrd information, if present, needs to be
inserted into the /chosen device tree node. The bootloader provides the
initrd start/size via the firmware environment. Add a fdt fixup that
will update the device tree with the initrd information.
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
Notes:
Changes in v3:
- None
Changes in v2:
- update compatible string
arch/mips/generic/Makefile | 1 +
arch/mips/generic/board-realtek.c | 81 +++++++++++++++++++++++++++++++
2 files changed, 82 insertions(+)
create mode 100644 arch/mips/generic/board-realtek.c
diff --git a/arch/mips/generic/Makefile b/arch/mips/generic/Makefile
index 56011d738441..ea0e4ad5e600 100644
--- a/arch/mips/generic/Makefile
+++ b/arch/mips/generic/Makefile
@@ -13,3 +13,4 @@ obj-$(CONFIG_LEGACY_BOARD_SEAD3) += board-sead3.o
obj-$(CONFIG_LEGACY_BOARD_OCELOT) += board-ocelot.o
obj-$(CONFIG_MACH_INGENIC) += board-ingenic.o
obj-$(CONFIG_VIRT_BOARD_RANCHU) += board-ranchu.o
+obj-$(CONFIG_MACH_REALTEK_RTL) += board-realtek.o
diff --git a/arch/mips/generic/board-realtek.c b/arch/mips/generic/board-realtek.c
new file mode 100644
index 000000000000..cd83fbf1968c
--- /dev/null
+++ b/arch/mips/generic/board-realtek.c
@@ -0,0 +1,81 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2024 Allied Telesis
+ */
+
+#include <linux/errno.h>
+#include <linux/libfdt.h>
+#include <linux/of_address.h>
+#include <linux/types.h>
+
+#include <asm/fw/fw.h>
+#include <asm/machine.h>
+
+static __init int realtek_add_initrd(void *fdt)
+{
+ int node, err;
+ u32 start, size;
+
+ node = fdt_path_offset(fdt, "/chosen");
+ if (node < 0) {
+ pr_err("/chosen node not found\n");
+ return -ENOENT;
+ }
+
+ start = fw_getenvl("initrd_start");
+ size = fw_getenvl("initrd_size");
+
+ if (start == 0 && size == 0)
+ return 0;
+
+ pr_info("Adding initrd info from environment\n");
+
+ err = fdt_setprop_u32(fdt, node, "linux,initrd-start", start);
+ if (err) {
+ pr_err("unable to set initrd-start: %d\n", err);
+ return err;
+ }
+
+ err = fdt_setprop_u32(fdt, node, "linux,initrd-end", start + size);
+ if (err) {
+ pr_err("unable to set initrd-end: %d\n", err);
+ return err;
+ }
+
+ return 0;
+}
+
+static const struct mips_fdt_fixup realtek_fdt_fixups[] __initconst = {
+ { realtek_add_initrd, "add initrd" },
+ {},
+};
+
+static __init const void *realtek_fixup_fdt(const void *fdt, const void *match_data)
+{
+ static unsigned char fdt_buf[16 << 10] __initdata;
+ int err;
+
+ if (fdt_check_header(fdt))
+ panic("Corrupt DT");
+
+ fw_init_cmdline();
+
+ err = apply_mips_fdt_fixups(fdt_buf, sizeof(fdt_buf), fdt, realtek_fdt_fixups);
+ if (err)
+ panic("Unable to fixup FDT: %d", err);
+
+ return fdt_buf;
+
+}
+
+static const struct of_device_id realtek_of_match[] __initconst = {
+ {
+ .compatible = "realtek,rtl9302",
+ },
+ {}
+};
+
+MIPS_MACHINE(realtek) = {
+ .matches = realtek_of_match,
+ .fixup_fdt = realtek_fixup_fdt,
+};
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v3 9/9] mips: dts: realtek: Add RTL9302C board
2024-06-27 4:33 [PATCH v3 0/9] mips: Support for RTL9302C Chris Packham
` (7 preceding siblings ...)
2024-06-27 4:33 ` [PATCH v3 8/9] mips: generic: add fdt fixup for Realtek reference board Chris Packham
@ 2024-06-27 4:33 ` Chris Packham
2024-06-27 14:42 ` [PATCH v3 0/9] mips: Support for RTL9302C Rob Herring
9 siblings, 0 replies; 32+ messages in thread
From: Chris Packham @ 2024-06-27 4:33 UTC (permalink / raw)
To: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds,
Chris Packham
Add support for the RTL9302 SoC and the RTL9302C_2xRTL8224_2XGE
reference board.
The RTL930x family of SoCs are Realtek switches with an embedded MIPS
core (800MHz 34Kc). Most of the peripherals are similar to the RTL838x
SoC and can make use of many existing drivers.
Add in full DSA switch support is still a work in progress.
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
Notes:
Changes in v3:
- Use full board name
Changes in v2:
- Use specific compatibles instead of rtl930x
- Remove unnecessary irq flags (interrupt controller is one-cell)
- Remove earlycon
- Name clocks as recommended in dt schema
arch/mips/boot/dts/realtek/Makefile | 1 +
.../cameo-rtl9302c-2x-rtl8224-2xge.dts | 73 +++++++++++++++++
arch/mips/boot/dts/realtek/rtl930x.dtsi | 79 +++++++++++++++++++
3 files changed, 153 insertions(+)
create mode 100644 arch/mips/boot/dts/realtek/cameo-rtl9302c-2x-rtl8224-2xge.dts
create mode 100644 arch/mips/boot/dts/realtek/rtl930x.dtsi
diff --git a/arch/mips/boot/dts/realtek/Makefile b/arch/mips/boot/dts/realtek/Makefile
index fba4e93187a6..d2709798763f 100644
--- a/arch/mips/boot/dts/realtek/Makefile
+++ b/arch/mips/boot/dts/realtek/Makefile
@@ -1,2 +1,3 @@
# SPDX-License-Identifier: GPL-2.0
dtb-y += cisco_sg220-26.dtb
+dtb-y += cameo-rtl9302c-2x-rtl8224-2xge.dtb
diff --git a/arch/mips/boot/dts/realtek/cameo-rtl9302c-2x-rtl8224-2xge.dts b/arch/mips/boot/dts/realtek/cameo-rtl9302c-2x-rtl8224-2xge.dts
new file mode 100644
index 000000000000..b51e10ae4950
--- /dev/null
+++ b/arch/mips/boot/dts/realtek/cameo-rtl9302c-2x-rtl8224-2xge.dts
@@ -0,0 +1,73 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/dts-v1/;
+
+#include "rtl930x.dtsi"
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/thermal/thermal.h>
+
+/ {
+ compatible = "cameo,rtl9302c-2x-rtl8224-2xge", "realtek,rtl9302-soc";
+ model = "RTL9302C Development Board";
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x8000000>;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+};
+
+&uart0 {
+ status = "okay";
+};
+
+&spi0 {
+ status = "okay";
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <10000000>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "u-boot";
+ reg = <0x0 0xe0000>;
+ read-only;
+ };
+ partition@e0000 {
+ label = "u-boot-env";
+ reg = <0xe0000 0x10000>;
+ };
+ partition@f0000 {
+ label = "u-boot-env2";
+ reg = <0xf0000 0x10000>;
+ read-only;
+ };
+ partition@100000 {
+ label = "jffs";
+ reg = <0x100000 0x100000>;
+ };
+ partition@200000 {
+ label = "jffs2";
+ reg = <0x200000 0x100000>;
+ };
+ partition@300000 {
+ label = "runtime";
+ reg = <0x300000 0xe80000>;
+ };
+ partition@1180000 {
+ label = "runtime2";
+ reg = <0x1180000 0xe80000>;
+ };
+ };
+ };
+};
diff --git a/arch/mips/boot/dts/realtek/rtl930x.dtsi b/arch/mips/boot/dts/realtek/rtl930x.dtsi
new file mode 100644
index 000000000000..f271940f82be
--- /dev/null
+++ b/arch/mips/boot/dts/realtek/rtl930x.dtsi
@@ -0,0 +1,79 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
+
+#include "rtl83xx.dtsi"
+
+/ {
+ compatible = "realtek,rtl9302-soc";
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ device_type = "cpu";
+ compatible = "mips,mips34Kc";
+ reg = <0>;
+ clocks = <&baseclk 0>;
+ clock-names = "cpu";
+ };
+ };
+
+ baseclk: clock-800mhz {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <800000000>;
+ };
+
+ lx_clk: clock-175mhz {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <175000000>;
+ };
+};
+
+&soc {
+ intc: interrupt-controller@3000 {
+ compatible = "realtek,rtl9300-intc", "realtek,rtl-intc";
+ reg = <0x3000 0x18>, <0x3018 0x18>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+
+ interrupt-parent = <&cpuintc>;
+ interrupts = <2>, <3>, <4>, <5>, <6>, <7>;
+ };
+
+ spi0: spi@1200 {
+ compatible = "realtek,rtl8380-spi";
+ reg = <0x1200 0x100>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ timer0: timer@3200 {
+ compatible = "realtek,rtl9302-timer", "realtek,otto-timer";
+ reg = <0x3200 0x10>, <0x3210 0x10>, <0x3220 0x10>,
+ <0x3230 0x10>, <0x3240 0x10>;
+
+ interrupt-parent = <&intc>;
+ interrupts = <7>, <8>, <9>, <10>, <11>;
+ clocks = <&lx_clk>;
+ };
+};
+
+&uart0 {
+ /delete-property/ clock-frequency;
+ clocks = <&lx_clk>;
+
+ interrupt-parent = <&intc>;
+ interrupts = <30>;
+};
+
+&uart1 {
+ /delete-property/ clock-frequency;
+ clocks = <&lx_clk>;
+
+ interrupt-parent = <&intc>;
+ interrupts = <31>;
+};
+
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* Re: [PATCH v3 6/9] dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc
2024-06-27 4:33 ` [PATCH v3 6/9] dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc Chris Packham
@ 2024-06-27 5:37 ` Rob Herring (Arm)
2024-06-27 7:41 ` Krzysztof Kozlowski
1 sibling, 0 replies; 32+ messages in thread
From: Rob Herring (Arm) @ 2024-06-27 5:37 UTC (permalink / raw)
To: Chris Packham
Cc: krzk+dt, ericwouds, bert, conor+dt, tsbogend, linux-mips,
devicetree, sander, tglx, paulburton, john, kabel, daniel.lezcano,
peterz, mail, linux-kernel
On Thu, 27 Jun 2024 16:33:14 +1200, Chris Packham wrote:
> Add a compatible string for the interrupt controller found on the
> rtl930x SoCs. The interrupt controller has registers for VPE1 so these
> are added as a second reg cell.
>
> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
> ---
>
> Notes:
> Changes in v3:
> - Use items to describe the regs property
> Changes in v2:
> - Set reg:maxItems to 2 to allow for VPE1 registers on the rtl9300. Add
> a condition to enforce the old limit on other SoCs.
> - Connor and Krzysztof offered acks on v1 but I think the changes here
> are big enough to void those.
>
> .../interrupt-controller/realtek,rtl-intc.yaml | 18 +++++++++++++++++-
> 1 file changed, 17 insertions(+), 1 deletion(-)
>
My bot found errors running 'make dt_binding_check' on your patch:
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.example.dtb: interrupt-controller@3000: reg: [[12288, 24]] is too short
from schema $id: http://devicetree.org/schemas/interrupt-controller/realtek,rtl-intc.yaml#
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20240627043317.3751996-7-chris.packham@alliedtelesis.co.nz
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 3/9] dt-bindings: vendor-prefixes: Add Cameo Communications
2024-06-27 4:33 ` [PATCH v3 3/9] dt-bindings: vendor-prefixes: Add Cameo Communications Chris Packham
@ 2024-06-27 7:39 ` Krzysztof Kozlowski
0 siblings, 0 replies; 32+ messages in thread
From: Krzysztof Kozlowski @ 2024-06-27 7:39 UTC (permalink / raw)
To: Chris Packham, tglx, robh, krzk+dt, conor+dt, tsbogend,
daniel.lezcano, paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds
On 27/06/2024 06:33, Chris Packham wrote:
> Add entry for Cameo Communications (https://www.cameo.com.tw/)
>
> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
> ---
>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 4/9] dt-bindings: mips: realtek: Add rtl930x-soc compatible
2024-06-27 4:33 ` [PATCH v3 4/9] dt-bindings: mips: realtek: Add rtl930x-soc compatible Chris Packham
@ 2024-06-27 7:39 ` Krzysztof Kozlowski
0 siblings, 0 replies; 32+ messages in thread
From: Krzysztof Kozlowski @ 2024-06-27 7:39 UTC (permalink / raw)
To: Chris Packham, tglx, robh, krzk+dt, conor+dt, tsbogend,
daniel.lezcano, paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds
On 27/06/2024 06:33, Chris Packham wrote:
> Add the rtl9302 SoC and the Cameo RTL9302C_2xRTL8224_2XGE reference
> board to the list of Realtek compatible strings.
>
> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
> ---
>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 5/9] dt-bindings: timer: Add schema for realtek,otto-timer
2024-06-27 4:33 ` [PATCH v3 5/9] dt-bindings: timer: Add schema for realtek,otto-timer Chris Packham
@ 2024-06-27 7:40 ` Krzysztof Kozlowski
2024-06-29 20:40 ` Sander Vanheule
1 sibling, 0 replies; 32+ messages in thread
From: Krzysztof Kozlowski @ 2024-06-27 7:40 UTC (permalink / raw)
To: Chris Packham, tglx, robh, krzk+dt, conor+dt, tsbogend,
daniel.lezcano, paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds
On 27/06/2024 06:33, Chris Packham wrote:
> Add the devicetree schema for the realtek,otto-timer present on a number
> of Realtek SoCs.
>
> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 6/9] dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc
2024-06-27 4:33 ` [PATCH v3 6/9] dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc Chris Packham
2024-06-27 5:37 ` Rob Herring (Arm)
@ 2024-06-27 7:41 ` Krzysztof Kozlowski
2024-06-30 22:12 ` Chris Packham
1 sibling, 1 reply; 32+ messages in thread
From: Krzysztof Kozlowski @ 2024-06-27 7:41 UTC (permalink / raw)
To: Chris Packham, tglx, robh, krzk+dt, conor+dt, tsbogend,
daniel.lezcano, paulburton, peterz, mail, bert, john, sander
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds
On 27/06/2024 06:33, Chris Packham wrote:
> Add a compatible string for the interrupt controller found on the
> rtl930x SoCs. The interrupt controller has registers for VPE1 so these
> are added as a second reg cell.
>
> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
> ---
>
> Notes:
> Changes in v3:
> - Use items to describe the regs property
> Changes in v2:
> - Set reg:maxItems to 2 to allow for VPE1 registers on the rtl9300. Add
> a condition to enforce the old limit on other SoCs.
> - Connor and Krzysztof offered acks on v1 but I think the changes here
> are big enough to void those.
>
> .../interrupt-controller/realtek,rtl-intc.yaml | 18 +++++++++++++++++-
> 1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml b/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml
> index fb5593724059..d0e5bdf45d05 100644
> --- a/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml
> +++ b/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml
> @@ -25,6 +25,7 @@ properties:
> - items:
> - enum:
> - realtek,rtl8380-intc
> + - realtek,rtl9300-intc
> - const: realtek,rtl-intc
> - const: realtek,rtl-intc
> deprecated: true
> @@ -35,7 +36,9 @@ properties:
> const: 1
>
> reg:
> - maxItems: 1
Missing minItems (as testing would tell you)
> + items:
> + - description: vpe0 registers
> + - description: vpe1 registers
>
> interrupts:
> minItems: 1
> @@ -71,6 +74,19 @@ allOf:
> else:
> required:
> - interrupts
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: realtek,rtl9300-intc
> + then:
> + properties:
> + reg:
Needed is: minItems: 2
> + maxItems: 2
> + else:
> + properties:
> + reg:
> + maxItems: 1
>
> additionalProperties: false
>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 1/9] mips: dts: realtek: use "serial" instead of "uart" in node name
2024-06-27 4:33 ` [PATCH v3 1/9] mips: dts: realtek: use "serial" instead of "uart" in node name Chris Packham
@ 2024-06-27 10:59 ` Marek Behún
0 siblings, 0 replies; 32+ messages in thread
From: Marek Behún @ 2024-06-27 10:59 UTC (permalink / raw)
To: Chris Packham
Cc: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander, linux-kernel,
devicetree, linux-mips, ericwouds
On Thu, 27 Jun 2024 16:33:09 +1200
Chris Packham <chris.packham@alliedtelesis.co.nz> wrote:
> Update the node name for the UARTs to resolve the following dtbs_check
> complaints:
>
> uart@2000: $nodename:0: 'uart@2000' does not match '^serial(@.*)?$'
> uart@2100: $nodename:0: 'uart@2100' does not match '^serial(@.*)?$'
>
> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Reviewed-by: Marek Behún <kabel@kernel.org>
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 2/9] mips: dts: realtek: add device_type property to cpu node
2024-06-27 4:33 ` [PATCH v3 2/9] mips: dts: realtek: add device_type property to cpu node Chris Packham
@ 2024-06-27 11:01 ` Marek Behún
0 siblings, 0 replies; 32+ messages in thread
From: Marek Behún @ 2024-06-27 11:01 UTC (permalink / raw)
To: Chris Packham
Cc: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander, linux-kernel,
devicetree, linux-mips, ericwouds
On Thu, 27 Jun 2024 16:33:10 +1200
Chris Packham <chris.packham@alliedtelesis.co.nz> wrote:
> Add device_type = "cpu" to the cpu node for the rtl838x SoC. This
> resolves the following dtbs_check complaint:
>
> cpus: cpu@0: 'cache-level' is a required property
>
> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Reviewed-by: Marek Behún <kabel@kernel.org>
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 7/9] clocksource: realtek: Add timer driver for rtl-otto platforms
2024-06-27 4:33 ` [PATCH v3 7/9] clocksource: realtek: Add timer driver for rtl-otto platforms Chris Packham
@ 2024-06-27 11:17 ` Marek Behún
2024-07-01 4:41 ` Chris Packham
2024-06-29 21:03 ` Sander Vanheule
2024-06-30 1:10 ` kernel test robot
2 siblings, 1 reply; 32+ messages in thread
From: Marek Behún @ 2024-06-27 11:17 UTC (permalink / raw)
To: Chris Packham
Cc: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander, linux-kernel,
devicetree, linux-mips, ericwouds, Markus Stockhausen
On Thu, 27 Jun 2024 16:33:15 +1200
Chris Packham <chris.packham@alliedtelesis.co.nz> wrote:
> +/* Simple internal register functions */
> +static inline void rttm_set_counter(void __iomem *base, unsigned int counter)
> +{
> + iowrite32(counter, base + RTTM_CNT);
These require #include <asm/io.h>
> +/* Aggregated control functions for kernel clock framework */
> +#define RTTM_DEBUG(base) \
> + pr_debug("------------- %d %p\n", \
> + smp_processor_id(), base)
#include <linux/printk.h>
> +static irqreturn_t rttm_timer_interrupt(int irq, void *dev_id)
> +{
> + struct clock_event_device *clkevt = dev_id;
> + struct timer_of *to = to_timer_of(clkevt);
> +
> + rttm_ack_irq(to->of_base.base);
> + RTTM_DEBUG(to->of_base.base);
> + clkevt->event_handler(clkevt);
Although you include "timer-of.h", which includes clockchips.h, please
do also explicit #include <linux/clockchips.h>
> + rttm_set_period(to->of_base.base, RTTM_TICKS_PER_SEC / HZ);
HZ -> linux/jiffies.h, or maybe asm/param.h
> +static u64 rttm_read_clocksource(struct clocksource *cs)
> +{
> + struct rttm_cs *rcs = container_of(cs, struct rttm_cs, cs);
> +
> + return (u64)rttm_get_counter(rcs->to.of_base.base);
Redundant cast to u64.
> + rttm_enable_timer(rcs->to.of_base.base, RTTM_CTRL_TIMER,
> + rcs->to.of_clk.rate / RTTM_TICKS_PER_SEC);
Is this correct? Sometimes it makes sense to use DIV_ROUND_CLOSEST, but
maybe not here.
> +static u64 notrace rttm_read_clock(void)
> +{
> + return (u64)rttm_get_counter(rttm_cs.to.of_base.base);
Redundant cast to u64.
> +static int __init rttm_probe(struct device_node *np)
> +{
> + int cpu, cpu_rollback;
unsigned int?
> + struct timer_of *to;
> + int clkidx = num_possible_cpus();
linux/cpumask.h, unsigned int
Marek
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 8/9] mips: generic: add fdt fixup for Realtek reference board
2024-06-27 4:33 ` [PATCH v3 8/9] mips: generic: add fdt fixup for Realtek reference board Chris Packham
@ 2024-06-27 11:19 ` Marek Behún
2024-06-27 17:48 ` Rob Herring
1 sibling, 0 replies; 32+ messages in thread
From: Marek Behún @ 2024-06-27 11:19 UTC (permalink / raw)
To: Chris Packham
Cc: tglx, robh, krzk+dt, conor+dt, tsbogend, daniel.lezcano,
paulburton, peterz, mail, bert, john, sander, linux-kernel,
devicetree, linux-mips, ericwouds
On Thu, 27 Jun 2024 16:33:16 +1200
Chris Packham <chris.packham@alliedtelesis.co.nz> wrote:
> +static __init int realtek_add_initrd(void *fdt)
> +{
> + int node, err;
> + u32 start, size;
> +
> + node = fdt_path_offset(fdt, "/chosen");
> + if (node < 0) {
> + pr_err("/chosen node not found\n");
linux/printk.h
> +static const struct of_device_id realtek_of_match[] __initconst = {
> + {
> + .compatible = "realtek,rtl9302",
> + },
One line instead of three?
Marek
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 0/9] mips: Support for RTL9302C
2024-06-27 4:33 [PATCH v3 0/9] mips: Support for RTL9302C Chris Packham
` (8 preceding siblings ...)
2024-06-27 4:33 ` [PATCH v3 9/9] mips: dts: realtek: Add RTL9302C board Chris Packham
@ 2024-06-27 14:42 ` Rob Herring
2024-06-30 23:43 ` Chris Packham
9 siblings, 1 reply; 32+ messages in thread
From: Rob Herring @ 2024-06-27 14:42 UTC (permalink / raw)
To: Chris Packham
Cc: tglx, krzk+dt, conor+dt, tsbogend, daniel.lezcano, paulburton,
peterz, mail, bert, john, sander, linux-kernel, devicetree,
linux-mips, kabel, ericwouds
On Wed, Jun 26, 2024 at 10:33 PM Chris Packham
<chris.packham@alliedtelesis.co.nz> wrote:
>
> This series adds basic support for the RTL9302C reference board. Currently the
> focus is on the CPU block stuff. I hope to get around to the DSA switch driver
> eventually but this is a small start that lets me boot a mainline kernel on the
> board I have. I initialiy started with code from openwrt but have paired it
> down to just the clocksource driver and devicetree.
Your emails are being sent as quoted-printable encoding which is
generally preferred to be avoided on maillists (as is base64).
git-send-email should normally use 8-bit encoding, but the man page
indicates QP may be used if there are carriage returns (there
shouldn't be).
Rob
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 8/9] mips: generic: add fdt fixup for Realtek reference board
2024-06-27 4:33 ` [PATCH v3 8/9] mips: generic: add fdt fixup for Realtek reference board Chris Packham
2024-06-27 11:19 ` Marek Behún
@ 2024-06-27 17:48 ` Rob Herring
2024-06-30 22:39 ` Chris Packham
1 sibling, 1 reply; 32+ messages in thread
From: Rob Herring @ 2024-06-27 17:48 UTC (permalink / raw)
To: Chris Packham
Cc: tglx, krzk+dt, conor+dt, tsbogend, daniel.lezcano, paulburton,
peterz, mail, bert, john, sander, linux-kernel, devicetree,
linux-mips, kabel, ericwouds
On Wed, Jun 26, 2024 at 10:33 PM Chris Packham
<chris.packham@alliedtelesis.co.nz> wrote:
>
> The bootloader used on the Realtek RTL9302C boards is an ancient vendor
> fork of U-Boot that doesn't understand device trees. So to run a modern
> kernel it is necessary use one of the APPENDED_DTB options.
>
> When appending the DTB the inintrd information, if present, needs to be
> inserted into the /chosen device tree node. The bootloader provides the
> initrd start/size via the firmware environment. Add a fdt fixup that
> will update the device tree with the initrd information.
Is this really specific to this board/soc? I think there are lots of
MIPS boards in this state. The code to handle all the possible
combinations of bootloader handoff information and sources of DTB is
quite the mess. Just for DTB source you have bootloader DTB, appended
DTB, or built-in DTB (and there's even logic if you have multiple of
those). Contrast that to arm32 ('the zoo"), where you have 2 choices:
bootloader DTB or appended DTB with legacy bootloader parameters
transferred to DTB. All the uglyness is contained and the kernel boot
deals with 1 possibility. </rant>
>
> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
> ---
>
> Notes:
> Changes in v3:
> - None
> Changes in v2:
> - update compatible string
>
> arch/mips/generic/Makefile | 1 +
> arch/mips/generic/board-realtek.c | 81 +++++++++++++++++++++++++++++++
> 2 files changed, 82 insertions(+)
> create mode 100644 arch/mips/generic/board-realtek.c
>
> diff --git a/arch/mips/generic/Makefile b/arch/mips/generic/Makefile
> index 56011d738441..ea0e4ad5e600 100644
> --- a/arch/mips/generic/Makefile
> +++ b/arch/mips/generic/Makefile
> @@ -13,3 +13,4 @@ obj-$(CONFIG_LEGACY_BOARD_SEAD3) += board-sead3.o
> obj-$(CONFIG_LEGACY_BOARD_OCELOT) += board-ocelot.o
> obj-$(CONFIG_MACH_INGENIC) += board-ingenic.o
> obj-$(CONFIG_VIRT_BOARD_RANCHU) += board-ranchu.o
> +obj-$(CONFIG_MACH_REALTEK_RTL) += board-realtek.o
> diff --git a/arch/mips/generic/board-realtek.c b/arch/mips/generic/board-realtek.c
> new file mode 100644
> index 000000000000..cd83fbf1968c
> --- /dev/null
> +++ b/arch/mips/generic/board-realtek.c
> @@ -0,0 +1,81 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
Kernel license by default is GPL-2.0-only. Why do something different?
> +/*
> + * Copyright (C) 2024 Allied Telesis
> + */
> +
> +#include <linux/errno.h>
> +#include <linux/libfdt.h>
> +#include <linux/of_address.h>
You aren't using this header.
> +#include <linux/types.h>
> +
> +#include <asm/fw/fw.h>
> +#include <asm/machine.h>
> +
> +static __init int realtek_add_initrd(void *fdt)
> +{
> + int node, err;
> + u32 start, size;
> +
> + node = fdt_path_offset(fdt, "/chosen");
> + if (node < 0) {
> + pr_err("/chosen node not found\n");
> + return -ENOENT;
> + }
> +
> + start = fw_getenvl("initrd_start");
> + size = fw_getenvl("initrd_size");
> +
> + if (start == 0 && size == 0)
> + return 0;
> +
> + pr_info("Adding initrd info from environment\n");
> +
> + err = fdt_setprop_u32(fdt, node, "linux,initrd-start", start);
> + if (err) {
> + pr_err("unable to set initrd-start: %d\n", err);
> + return err;
> + }
> +
> + err = fdt_setprop_u32(fdt, node, "linux,initrd-end", start + size);
> + if (err) {
> + pr_err("unable to set initrd-end: %d\n", err);
> + return err;
> + }
> +
> + return 0;
> +}
> +
> +static const struct mips_fdt_fixup realtek_fdt_fixups[] __initconst = {
> + { realtek_add_initrd, "add initrd" },
> + {},
> +};
> +
> +static __init const void *realtek_fixup_fdt(const void *fdt, const void *match_data)
> +{
> + static unsigned char fdt_buf[16 << 10] __initdata;
> + int err;
> +
> + if (fdt_check_header(fdt))
> + panic("Corrupt DT");
> +
> + fw_init_cmdline();
> +
> + err = apply_mips_fdt_fixups(fdt_buf, sizeof(fdt_buf), fdt, realtek_fdt_fixups);
> + if (err)
> + panic("Unable to fixup FDT: %d", err);
> +
> + return fdt_buf;
> +
> +}
> +
> +static const struct of_device_id realtek_of_match[] __initconst = {
> + {
> + .compatible = "realtek,rtl9302",
> + },
> + {}
> +};
> +
> +MIPS_MACHINE(realtek) = {
> + .matches = realtek_of_match,
> + .fixup_fdt = realtek_fixup_fdt,
> +};
> --
> 2.45.2
>
>
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 5/9] dt-bindings: timer: Add schema for realtek,otto-timer
2024-06-27 4:33 ` [PATCH v3 5/9] dt-bindings: timer: Add schema for realtek,otto-timer Chris Packham
2024-06-27 7:40 ` Krzysztof Kozlowski
@ 2024-06-29 20:40 ` Sander Vanheule
2024-07-01 2:15 ` Chris Packham
1 sibling, 1 reply; 32+ messages in thread
From: Sander Vanheule @ 2024-06-29 20:40 UTC (permalink / raw)
To: Chris Packham, tglx, robh, krzk+dt, conor+dt, tsbogend,
daniel.lezcano, paulburton, peterz, mail, bert, john
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds
Hi Chris,
Thanks for submitting these patches!
On Thu, 2024-06-27 at 16:33 +1200, Chris Packham wrote:
> Add the devicetree schema for the realtek,otto-timer present on a number
> of Realtek SoCs.
>
> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
> ---
[...]
> +
> + reg:
> + items:
> + - description: timer0 registers
> + - description: timer1 registers
> + - description: timer2 registers
> + - description: timer3 registers
> + - description: timer4 registers
> +
> + clocks:
> + maxItems: 1
> +
> + interrupts:
> + items:
> + - description: timer0 interrupt
> + - description: timer1 interrupt
> + - description: timer2 interrupt
> + - description: timer3 interrupt
> + - description: timer4 interrupt
Instead of providing a (SoC dependent) number of reg and interrupt items, can't we just
provide one reg+interrupt per timer and instantiate one block for however many timers the
SoC has?
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + timer@3200 {
> + compatible = "realtek,rtl9302-timer", "realtek,otto-timer";
> + reg = <0x3200 0x10>, <0x3210 0x10>, <0x3220 0x10>,
> + <0x3230 0x10>, <0x3240 0x10>;
> +
> + interrupt-parent = <&intc>;
> + interrupts = <7>, <8>, <9>, <10>, <11>;
> + clocks = <&lx_clk>;
> + };
So this would become:
timer@3200 {
compatible = ...
reg = <0x3200 0x10>;
interrupt-parent = <&intc>;
interrupts = <7>;
...
};
timer@3210 {
compatible = ...
reg = <0x3210 0x10>;
interrupt-parent = <&intc>;
interrupts = <8>;
...
};
...
More verbose, but it also makes the binding a bit simpler. The driver can then still do
whatever it wants with all the timers that are registered, although some more resource
locking might be required.
Best,
Sander
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 7/9] clocksource: realtek: Add timer driver for rtl-otto platforms
2024-06-27 4:33 ` [PATCH v3 7/9] clocksource: realtek: Add timer driver for rtl-otto platforms Chris Packham
2024-06-27 11:17 ` Marek Behún
@ 2024-06-29 21:03 ` Sander Vanheule
2024-07-01 2:07 ` Chris Packham
2024-06-30 1:10 ` kernel test robot
2 siblings, 1 reply; 32+ messages in thread
From: Sander Vanheule @ 2024-06-29 21:03 UTC (permalink / raw)
To: Chris Packham, tglx, robh, krzk+dt, conor+dt, tsbogend,
daniel.lezcano, paulburton, peterz, mail, bert, john
Cc: linux-kernel, devicetree, linux-mips, kabel, ericwouds,
Markus Stockhausen
Hi Chris,
On Thu, 2024-06-27 at 16:33 +1200, Chris Packham wrote:
> The timer/counter block on the Realtek SoCs provides up to 5 timers. It
> also includes a watchdog timer but this isn't being used currently (it
> will be added as a separate wdt driver).
Do you mean the watchdog timer supported by drivers/watchdog/realtek_otto_wdt.c? Or are
you referring to another watchdog timer?
> One timer will be used per CPU as a local clock event generator. An
> additional timer will be used as an overal stable clocksource.
>
> Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
> Signed-off-by: Sander Vanheule <sander@svanheule.net>
> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
> ---
For reference, I submitted a driver for the same hardware back in 2022, but didn't manage
to follow up to finalize the submission:
https://lore.kernel.org/all/cover.1642369117.git.sander@svanheule.net/
> +
> +/* Module initialization part. */
> +static DEFINE_PER_CPU(struct timer_of, rttm_to) = {
> + .flags = TIMER_OF_BASE | TIMER_OF_CLOCK |
> TIMER_OF_IRQ,
> + .of_irq = {
> + .flags = IRQF_PERCPU | IRQF_TIMER,
In the original review of this code, I had some doubts about the use of IRQF_PERCPU. Maybe
the people in Cc can shed some light on this.
If I understand correctly, the SoC interrupts these timers use are not per-cpu interrupts.
(For comparison, AFAICT the MIPS CPU interrupts are)
> + .handler = rttm_timer_interrupt,
> + },
> + .clkevt = {
> + .rating = 400,
> + .features = CLOCK_EVT_FEAT_PERIODIC |
> CLOCK_EVT_FEAT_ONESHOT,
If the use of IRQF_PERCPU is appropriate, I wonder if the driver should also use
CLOCK_EVT_FEAT_PERCPU.
Best,
Sander
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 7/9] clocksource: realtek: Add timer driver for rtl-otto platforms
2024-06-27 4:33 ` [PATCH v3 7/9] clocksource: realtek: Add timer driver for rtl-otto platforms Chris Packham
2024-06-27 11:17 ` Marek Behún
2024-06-29 21:03 ` Sander Vanheule
@ 2024-06-30 1:10 ` kernel test robot
2 siblings, 0 replies; 32+ messages in thread
From: kernel test robot @ 2024-06-30 1:10 UTC (permalink / raw)
To: Chris Packham, tglx, robh, krzk+dt, conor+dt, tsbogend,
daniel.lezcano, paulburton, peterz, mail, bert, john, sander
Cc: oe-kbuild-all, linux-kernel, devicetree, linux-mips, kabel,
ericwouds, Chris Packham, Markus Stockhausen
[-- Attachment #1: Type: text/plain, Size: 2395 bytes --]
Hi Chris,
kernel test robot noticed the following build errors:
[auto build test ERROR on robh/for-next]
[also build test ERROR on tip/timers/core tip/irq/core tip/smp/core linus/master v6.10-rc5 next-20240628]
[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#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Chris-Packham/mips-dts-realtek-use-serial-instead-of-uart-in-node-name/20240627-202806
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link: https://lore.kernel.org/r/20240627043317.3751996-8-chris.packham%40alliedtelesis.co.nz
patch subject: [PATCH v3 7/9] clocksource: realtek: Add timer driver for rtl-otto platforms
config: s390-randconfig-r133-20240629
compiler: s390-linux-gcc (GCC) 13.2.0
reproduce:
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406300803.mMM0Hpxv-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from include/linux/io.h:14,
from include/linux/of_address.h:7,
from drivers/clocksource/timer-of.c:10:
drivers/clocksource/timer-of.c: In function 'timer_of_base_exit':
>> arch/s390/include/asm/io.h:29:17: error: implicit declaration of function 'iounmap'; did you mean 'iommu_map'? [-Werror=implicit-function-declaration]
29 | #define iounmap iounmap
| ^~~~~~~
drivers/clocksource/timer-of.c:151:9: note: in expansion of macro 'iounmap'
151 | iounmap(of_base->base);
| ^~~~~~~
cc1: some warnings being treated as errors
vim +29 arch/s390/include/asm/io.h
cd24834130ac65 Jan Glauber 2012-11-29 24
b43b3fff042d08 Baoquan He 2023-07-06 25 /*
b43b3fff042d08 Baoquan He 2023-07-06 26 * I/O memory mapping functions.
b43b3fff042d08 Baoquan He 2023-07-06 27 */
b43b3fff042d08 Baoquan He 2023-07-06 28 #define ioremap_prot ioremap_prot
b43b3fff042d08 Baoquan He 2023-07-06 @29 #define iounmap iounmap
b43b3fff042d08 Baoquan He 2023-07-06 30
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
[-- Attachment #2: reproduce --]
[-- Type: text/plain, Size: 1075 bytes --]
reproduce:
git clone https://github.com/intel/lkp-tests.git ~/lkp-tests
# apt-get install sparse
# sparse version: v0.6.4-66-g0196afe1
# https://github.com/intel-lab-lkp/linux/commit/8076af696695f8203d55d76b025a555190b48946
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Chris-Packham/mips-dts-realtek-use-serial-instead-of-uart-in-node-name/20240627-202806
git checkout 8076af696695f8203d55d76b025a555190b48946
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-13.2.0 ~/lkp-tests/kbuild/make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__ -fmax-errors=unlimited -fmax-warnings=unlimited' O=build_dir ARCH=s390 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-13.2.0 ~/lkp-tests/kbuild/make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__ -fmax-errors=unlimited -fmax-warnings=unlimited' O=build_dir ARCH=s390 SHELL=/bin/bash drivers/clocksource/
[-- Attachment #3: config --]
[-- Type: text/plain, Size: 67082 bytes --]
#
# Automatically generated file; DO NOT EDIT.
# Linux/s390 6.10.0-rc1 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="s390-linux-gcc (GCC) 13.2.0"
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=130200
CONFIG_CLANG_VERSION=0
CONFIG_AS_IS_GNU=y
CONFIG_AS_VERSION=24100
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=24100
CONFIG_LLD_VERSION=0
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
CONFIG_CC_HAS_ASM_INLINE=y
CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
CONFIG_PAHOLE_VERSION=127
CONFIG_CONSTRUCTORS=y
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_TABLE_SORT=y
CONFIG_THREAD_INFO_IN_TASK=y
#
# General setup
#
CONFIG_INIT_ENV_ARG_LIMIT=32
# CONFIG_WERROR is not set
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_BUILD_SALT=""
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_XZ=y
CONFIG_HAVE_KERNEL_LZO=y
CONFIG_HAVE_KERNEL_LZ4=y
CONFIG_HAVE_KERNEL_ZSTD=y
CONFIG_HAVE_KERNEL_UNCOMPRESSED=y
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_XZ is not set
# CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_LZ4 is not set
# CONFIG_KERNEL_ZSTD is not set
# CONFIG_KERNEL_UNCOMPRESSED is not set
CONFIG_DEFAULT_INIT=""
CONFIG_DEFAULT_HOSTNAME="(none)"
CONFIG_SYSVIPC=y
# CONFIG_WATCH_QUEUE is not set
CONFIG_CROSS_MEMORY_ATTACH=y
# CONFIG_USELIB is not set
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
#
# IRQ subsystem
#
CONFIG_IRQ_DOMAIN=y
CONFIG_SPARSE_IRQ=y
# CONFIG_GENERIC_IRQ_DEBUGFS is not set
# end of IRQ subsystem
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_TIME_KUNIT_TEST=y
CONFIG_CONTEXT_TRACKING=y
CONFIG_CONTEXT_TRACKING_IDLE=y
#
# Timers subsystem
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
CONFIG_NO_HZ_IDLE=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
# end of Timers subsystem
CONFIG_BPF=y
CONFIG_HAVE_EBPF_JIT=y
CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y
#
# BPF subsystem
#
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_JIT=y
# CONFIG_BPF_JIT_ALWAYS_ON is not set
CONFIG_BPF_JIT_DEFAULT_ON=y
CONFIG_BPF_UNPRIV_DEFAULT_OFF=y
# CONFIG_BPF_PRELOAD is not set
# end of BPF subsystem
CONFIG_PREEMPT_NONE_BUILD=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
CONFIG_PREEMPT_COUNT=y
CONFIG_SCHED_CORE=y
#
# CPU/Task time and stats accounting
#
CONFIG_VIRT_CPU_ACCOUNTING=y
CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y
# CONFIG_PSI is not set
# end of CPU/Task time and stats accounting
# CONFIG_CPU_ISOLATION is not set
#
# RCU Subsystem
#
CONFIG_TREE_RCU=y
# CONFIG_RCU_EXPERT is not set
CONFIG_TREE_SRCU=y
CONFIG_TASKS_RCU_GENERIC=y
CONFIG_NEED_TASKS_RCU=y
CONFIG_TASKS_TRACE_RCU=y
CONFIG_RCU_STALL_COMMON=y
CONFIG_RCU_NEED_SEGCBLIST=y
# end of RCU Subsystem
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_IKHEADERS=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_LOG_CPU_MAX_BUF_SHIFT=0
# CONFIG_PRINTK_INDEX is not set
#
# Scheduler features
#
# end of Scheduler features
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
CONFIG_CC_HAS_INT128=y
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
CONFIG_GCC10_NO_ARRAY_BOUNDS=y
CONFIG_CC_NO_ARRAY_BOUNDS=y
CONFIG_GCC_NO_STRINGOP_OVERFLOW=y
CONFIG_CC_NO_STRINGOP_OVERFLOW=y
CONFIG_SLAB_OBJ_EXT=y
# CONFIG_CGROUPS is not set
CONFIG_CHECKPOINT_RESTORE=y
# CONFIG_SCHED_AUTOGROUP is not set
# CONFIG_RELAY is not set
# CONFIG_BLK_DEV_INITRD is not set
CONFIG_BOOT_CONFIG=y
CONFIG_BOOT_CONFIG_FORCE=y
CONFIG_BOOT_CONFIG_EMBED=y
CONFIG_BOOT_CONFIG_EMBED_FILE=""
CONFIG_INITRAMFS_PRESERVE_MTIME=y
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_LD_ORPHAN_WARN=y
CONFIG_LD_ORPHAN_WARN_LEVEL="warn"
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_EXPERT=y
# CONFIG_MULTIUSER is not set
# CONFIG_SGETMASK_SYSCALL is not set
CONFIG_SYSFS_SYSCALL=y
CONFIG_FHANDLE=y
# CONFIG_POSIX_TIMERS is not set
CONFIG_PRINTK=y
# CONFIG_BUG is not set
# CONFIG_ELF_CORE is not set
CONFIG_BASE_SMALL=y
# CONFIG_FUTEX is not set
CONFIG_EPOLL=y
# CONFIG_SIGNALFD is not set
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
# CONFIG_SHMEM is not set
CONFIG_AIO=y
CONFIG_IO_URING=y
# CONFIG_ADVISE_SYSCALLS is not set
CONFIG_MEMBARRIER=y
CONFIG_KCMP=y
# CONFIG_RSEQ is not set
CONFIG_CACHESTAT_SYSCALL=y
CONFIG_PC104=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_SELFTEST=y
CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_BASE_RELATIVE=y
CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
CONFIG_HAVE_PERF_EVENTS=y
#
# Kernel Performance Events And Counters
#
# CONFIG_PERF_EVENTS is not set
# end of Kernel Performance Events And Counters
# CONFIG_PROFILING is not set
#
# Kexec and crash features
#
CONFIG_CRASH_RESERVE=y
CONFIG_VMCORE_INFO=y
CONFIG_KEXEC_CORE=y
# CONFIG_KEXEC is not set
CONFIG_KEXEC_FILE=y
CONFIG_CRASH_DUMP=y
# end of Kexec and crash features
# end of General setup
CONFIG_MMU=y
CONFIG_CPU_BIG_ENDIAN=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_ARCH_PROC_KCORE_TEXT=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
CONFIG_AUDIT_ARCH=y
CONFIG_NO_IOPORT_MAP=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_S390=y
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_PGTABLE_LEVELS=5
CONFIG_HAVE_LIVEPATCH=y
CONFIG_ARCH_SUPPORTS_KEXEC=y
CONFIG_ARCH_SUPPORTS_KEXEC_FILE=y
CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY=y
CONFIG_ARCH_SUPPORTS_CRASH_DUMP=y
#
# Processor type and features
#
CONFIG_HAVE_MARCH_Z10_FEATURES=y
CONFIG_HAVE_MARCH_Z196_FEATURES=y
# CONFIG_MARCH_Z10 is not set
CONFIG_MARCH_Z196=y
# CONFIG_MARCH_ZEC12 is not set
# CONFIG_MARCH_Z13 is not set
# CONFIG_MARCH_Z14 is not set
# CONFIG_MARCH_Z15 is not set
# CONFIG_MARCH_Z16 is not set
CONFIG_MARCH_Z196_TUNE=y
CONFIG_TUNE_DEFAULT=y
# CONFIG_TUNE_Z10 is not set
# CONFIG_TUNE_Z196 is not set
# CONFIG_TUNE_ZEC12 is not set
# CONFIG_TUNE_Z13 is not set
# CONFIG_TUNE_Z14 is not set
# CONFIG_TUNE_Z15 is not set
# CONFIG_TUNE_Z16 is not set
CONFIG_64BIT=y
CONFIG_COMMAND_LINE_SIZE=4096
CONFIG_SMP=y
CONFIG_NR_CPUS=64
CONFIG_HOTPLUG_CPU=y
# CONFIG_NUMA is not set
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
CONFIG_SCHED_TOPOLOGY=y
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
CONFIG_SCHED_HRTICK=y
# CONFIG_CERT_STORE is not set
# CONFIG_KERNEL_NOBP is not set
CONFIG_EXPOLINE=y
CONFIG_EXPOLINE_EXTERN=y
# CONFIG_EXPOLINE_OFF is not set
# CONFIG_EXPOLINE_AUTO is not set
CONFIG_EXPOLINE_FULL=y
CONFIG_RELOCATABLE=y
CONFIG_RANDOMIZE_BASE=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
# end of Processor type and features
#
# Memory setup
#
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_MAX_PHYSMEM_BITS=46
# end of Memory setup
#
# I/O subsystem
#
CONFIG_QDIO=y
# CONFIG_CHSC_SCH is not set
CONFIG_SCM_BUS=y
CONFIG_EADM_SCH=y
CONFIG_AP=y
CONFIG_AP_DEBUG=y
CONFIG_VFIO_CCW=y
# end of I/O subsystem
CONFIG_CCW=y
#
# Virtualization
#
# CONFIG_PROTECTED_VIRTUALIZATION_GUEST is not set
# CONFIG_PFAULT is not set
CONFIG_CMM=y
# CONFIG_S390_HYPFS is not set
CONFIG_VIRTUALIZATION=y
# CONFIG_KVM is not set
# CONFIG_S390_GUEST is not set
# end of Virtualization
#
# Selftests
#
CONFIG_S390_UNWIND_SELFTEST=y
# CONFIG_S390_MODULES_SANITY_TEST is not set
# end of Selftests
CONFIG_CPU_MITIGATIONS=y
#
# General architecture-dependent options
#
CONFIG_GENERIC_ENTRY=y
# CONFIG_KPROBES is not set
CONFIG_JUMP_LABEL=y
# CONFIG_STATIC_KEYS_SELFTEST is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_KPROBES_ON_FTRACE=y
CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y
CONFIG_HAVE_NMI=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
CONFIG_ARCH_HAS_SET_MEMORY=y
CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
CONFIG_ARCH_WANTS_NO_INSTR=y
CONFIG_ARCH_32BIT_USTAT_F_TINODE=y
CONFIG_HAVE_ASM_MODVERSIONS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_RSEQ=y
CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y
CONFIG_HAVE_PERF_REGS=y
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y
CONFIG_MMU_GATHER_TABLE_FREE=y
CONFIG_MMU_GATHER_RCU_TABLE_FREE=y
CONFIG_MMU_GATHER_MERGE_VMAS=y
CONFIG_MMU_GATHER_NO_GATHER=y
CONFIG_MMU_LAZY_TLB_REFCOUNT=y
CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS=y
CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
CONFIG_HAVE_CMPXCHG_LOCAL=y
CONFIG_HAVE_CMPXCHG_DOUBLE=y
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
CONFIG_HAVE_ARCH_SECCOMP=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
# CONFIG_SECCOMP is not set
CONFIG_HAVE_ARCH_STACKLEAK=y
CONFIG_LTO_NONE=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_IDLE=y
CONFIG_ARCH_HAS_SCALED_CPUTIME=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
CONFIG_ARCH_WANT_KERNEL_PMD_MKWRITE=y
CONFIG_ARCH_WANT_PMD_MKWRITE=y
CONFIG_HAVE_ARCH_SOFT_DIRTY=y
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
CONFIG_MODULES_USE_ELF_RELA=y
CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y
CONFIG_SOFTIRQ_ON_OWN_STACK=y
CONFIG_ALTERNATE_USER_ADDRESS_SPACE=y
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
CONFIG_HAVE_PAGE_SIZE_4KB=y
CONFIG_PAGE_SIZE_4KB=y
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
CONFIG_PAGE_SHIFT=12
CONFIG_HAVE_RELIABLE_STACKTRACE=y
CONFIG_CLONE_BACKWARDS2=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_OLD_SIGACTION=y
CONFIG_COMPAT_32BIT_TIME=y
CONFIG_HAVE_ARCH_VMAP_STACK=y
CONFIG_VMAP_STACK=y
CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_LOCK_EVENT_COUNTS=y
CONFIG_ARCH_HAS_MEM_ENCRYPT=y
CONFIG_ARCH_HAS_VDSO_DATA=y
CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
# end of GCOV-based kernel profiling
CONFIG_HAVE_GCC_PLUGINS=y
# CONFIG_GCC_PLUGINS is not set
CONFIG_FUNCTION_ALIGNMENT_8B=y
CONFIG_FUNCTION_ALIGNMENT_64B=y
CONFIG_FUNCTION_ALIGNMENT=64
# end of General architecture-dependent options
CONFIG_RT_MUTEXES=y
# CONFIG_MODULES is not set
CONFIG_BLOCK=y
CONFIG_BLOCK_LEGACY_AUTOLOAD=y
CONFIG_BLK_CGROUP_PUNT_BIO=y
CONFIG_BLK_DEV_BSG_COMMON=y
CONFIG_BLK_ICQ=y
CONFIG_BLK_DEV_BSGLIB=y
CONFIG_BLK_DEV_INTEGRITY=y
CONFIG_BLK_DEV_INTEGRITY_T10=y
# CONFIG_BLK_DEV_WRITE_MOUNTED is not set
# CONFIG_BLK_DEV_ZONED is not set
CONFIG_BLK_WBT=y
# CONFIG_BLK_WBT_MQ is not set
CONFIG_BLK_DEBUG_FS=y
CONFIG_BLK_SED_OPAL=y
CONFIG_BLK_INLINE_ENCRYPTION=y
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_EFI_PARTITION=y
# end of Partition Types
CONFIG_BLK_MQ_VIRTIO=y
CONFIG_BLOCK_HOLDER_DEPRECATED=y
#
# IO Schedulers
#
# CONFIG_MQ_IOSCHED_DEADLINE is not set
# CONFIG_MQ_IOSCHED_KYBER is not set
CONFIG_IOSCHED_BFQ=y
# end of IO Schedulers
CONFIG_PADATA=y
CONFIG_ASN1=y
CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y
CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y
CONFIG_ARCH_INLINE_SPIN_LOCK=y
CONFIG_ARCH_INLINE_SPIN_LOCK_BH=y
CONFIG_ARCH_INLINE_SPIN_LOCK_IRQ=y
CONFIG_ARCH_INLINE_SPIN_LOCK_IRQSAVE=y
CONFIG_ARCH_INLINE_SPIN_UNLOCK=y
CONFIG_ARCH_INLINE_SPIN_UNLOCK_BH=y
CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQ=y
CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE=y
CONFIG_ARCH_INLINE_READ_TRYLOCK=y
CONFIG_ARCH_INLINE_READ_LOCK=y
CONFIG_ARCH_INLINE_READ_LOCK_BH=y
CONFIG_ARCH_INLINE_READ_LOCK_IRQ=y
CONFIG_ARCH_INLINE_READ_LOCK_IRQSAVE=y
CONFIG_ARCH_INLINE_READ_UNLOCK=y
CONFIG_ARCH_INLINE_READ_UNLOCK_BH=y
CONFIG_ARCH_INLINE_READ_UNLOCK_IRQ=y
CONFIG_ARCH_INLINE_READ_UNLOCK_IRQRESTORE=y
CONFIG_ARCH_INLINE_WRITE_TRYLOCK=y
CONFIG_ARCH_INLINE_WRITE_LOCK=y
CONFIG_ARCH_INLINE_WRITE_LOCK_BH=y
CONFIG_ARCH_INLINE_WRITE_LOCK_IRQ=y
CONFIG_ARCH_INLINE_WRITE_LOCK_IRQSAVE=y
CONFIG_ARCH_INLINE_WRITE_UNLOCK=y
CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y
CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y
CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y
CONFIG_UNINLINE_SPIN_UNLOCK=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
CONFIG_RWSEM_SPIN_ON_OWNER=y
CONFIG_LOCK_SPIN_ON_OWNER=y
CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y
#
# Executable file formats
#
# CONFIG_BINFMT_ELF is not set
CONFIG_ARCH_BINFMT_ELF_STATE=y
CONFIG_BINFMT_SCRIPT=y
CONFIG_BINFMT_MISC=y
CONFIG_COREDUMP=y
# end of Executable file formats
#
# Memory Management options
#
# CONFIG_SWAP is not set
#
# Slab allocator options
#
CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
CONFIG_SLAB_MERGE_DEFAULT=y
# end of Slab allocator options
CONFIG_SHUFFLE_PAGE_ALLOCATOR=y
CONFIG_COMPAT_BRK=y
CONFIG_SPARSEMEM=y
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP=y
CONFIG_HAVE_MEMBLOCK_PHYS_MAP=y
CONFIG_HAVE_GUP_FAST=y
CONFIG_MEMORY_ISOLATION=y
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
CONFIG_MEMORY_HOTPLUG=y
CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y
CONFIG_MEMORY_HOTREMOVE=y
CONFIG_MHP_MEMMAP_ON_MEMORY=y
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
CONFIG_MEMORY_BALLOON=y
# CONFIG_BALLOON_COMPACTION is not set
CONFIG_COMPACTION=y
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
CONFIG_PAGE_REPORTING=y
CONFIG_MIGRATION=y
CONFIG_CONTIG_ALLOC=y
CONFIG_PCP_BATCH_SCALE_MAX=5
CONFIG_PHYS_ADDR_T_64BIT=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
# CONFIG_TRANSPARENT_HUGEPAGE_NEVER is not set
CONFIG_PGTABLE_HAS_HUGE_LEAVES=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
# CONFIG_CMA is not set
CONFIG_MEM_SOFT_DIRTY=y
CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
CONFIG_PAGE_IDLE_FLAG=y
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y
CONFIG_ZONE_DMA=y
# CONFIG_VM_EVENT_COUNTERS is not set
# CONFIG_PERCPU_STATS is not set
# CONFIG_GUP_TEST is not set
CONFIG_DMAPOOL_TEST=y
CONFIG_ARCH_HAS_PTE_SPECIAL=y
CONFIG_MEMFD_CREATE=y
# CONFIG_SECRETMEM is not set
CONFIG_USERFAULTFD=y
# CONFIG_LRU_GEN is not set
CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y
CONFIG_PER_VMA_LOCK=y
CONFIG_EXECMEM=y
#
# Data Access Monitoring
#
CONFIG_DAMON=y
CONFIG_DAMON_KUNIT_TEST=y
# CONFIG_DAMON_VADDR is not set
CONFIG_DAMON_PADDR=y
CONFIG_DAMON_SYSFS=y
# CONFIG_DAMON_SYSFS_KUNIT_TEST is not set
# CONFIG_DAMON_RECLAIM is not set
# CONFIG_DAMON_LRU_SORT is not set
# end of Data Access Monitoring
# end of Memory Management options
# CONFIG_NET is not set
#
# Device Drivers
#
CONFIG_HAVE_PCI=y
# CONFIG_PCI is not set
# CONFIG_PCCARD is not set
#
# Generic Driver Options
#
CONFIG_AUXILIARY_BUS=y
CONFIG_UEVENT_HELPER=y
CONFIG_UEVENT_HELPER_PATH=""
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEVTMPFS_SAFE=y
CONFIG_STANDALONE=y
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
#
# Firmware loader
#
CONFIG_FW_LOADER=y
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_FW_LOADER_USER_HELPER is not set
# CONFIG_FW_LOADER_COMPRESS is not set
# CONFIG_FW_UPLOAD is not set
# end of Firmware loader
CONFIG_WANT_DEV_COREDUMP=y
# CONFIG_ALLOW_DEV_COREDUMP is not set
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
CONFIG_DEBUG_TEST_DRIVER_REMOVE=y
# CONFIG_PM_QOS_KUNIT_TEST is not set
# CONFIG_DM_KUNIT_TEST is not set
# CONFIG_DRIVER_PE_KUNIT_TEST is not set
CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_GENERIC_CPU_VULNERABILITIES=y
CONFIG_REGMAP=y
CONFIG_REGMAP_KUNIT=y
# CONFIG_REGMAP_BUILD is not set
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP_SPMI=y
CONFIG_REGMAP_IRQ=y
CONFIG_REGMAP_RAM=y
CONFIG_REGMAP_I3C=y
CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT=y
# end of Generic Driver Options
#
# Bus devices
#
# CONFIG_MHI_BUS is not set
CONFIG_MHI_BUS_EP=y
# end of Bus devices
#
# Cache Drivers
#
# end of Cache Drivers
#
# Firmware Drivers
#
#
# ARM System Control and Management Interface Protocol
#
# end of ARM System Control and Management Interface Protocol
CONFIG_FIRMWARE_MEMMAP=y
# CONFIG_GOOGLE_FIRMWARE is not set
#
# Qualcomm firmware drivers
#
# end of Qualcomm firmware drivers
#
# Tegra firmware driver
#
# end of Tegra firmware driver
# end of Firmware Drivers
CONFIG_GNSS=y
CONFIG_GNSS_SERIAL=y
# CONFIG_GNSS_MTK_SERIAL is not set
CONFIG_GNSS_SIRF_SERIAL=y
CONFIG_GNSS_UBX_SERIAL=y
CONFIG_MTD=y
#
# Partition parsers
#
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_REDBOOT_PARTS=y
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
# end of Partition parsers
#
# User Modules And Translation Layers
#
CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
#
# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK.
#
# CONFIG_FTL is not set
CONFIG_NFTL=y
# CONFIG_NFTL_RW is not set
# CONFIG_INFTL is not set
CONFIG_RFD_FTL=y
CONFIG_SSFDC=y
CONFIG_SM_FTL=y
CONFIG_MTD_OOPS=y
CONFIG_MTD_PARTITIONED_MASTER=y
#
# RAM/ROM/Flash chip drivers
#
# CONFIG_MTD_CFI is not set
# CONFIG_MTD_JEDECPROBE is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
CONFIG_MTD_RAM=y
CONFIG_MTD_ROM=y
# CONFIG_MTD_ABSENT is not set
# end of RAM/ROM/Flash chip drivers
#
# NAND
#
CONFIG_MTD_NAND_CORE=y
CONFIG_MTD_RAW_NAND=y
#
# Raw/parallel NAND flash controllers
#
#
# Misc
#
# CONFIG_MTD_NAND_NANDSIM is not set
#
# ECC engine support
#
CONFIG_MTD_NAND_ECC=y
CONFIG_MTD_NAND_ECC_SW_HAMMING=y
# CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC is not set
CONFIG_MTD_NAND_ECC_SW_BCH=y
# end of ECC engine support
# end of NAND
#
# LPDDR & LPDDR2 PCM memory drivers
#
# CONFIG_MTD_LPDDR is not set
# end of LPDDR & LPDDR2 PCM memory drivers
CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MTD_UBI_BEB_LIMIT=20
# CONFIG_MTD_UBI_FASTMAP is not set
# CONFIG_MTD_UBI_GLUEBI is not set
# CONFIG_MTD_UBI_BLOCK is not set
# CONFIG_MTD_UBI_FAULT_INJECTION is not set
# CONFIG_OF is not set
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_NULL_BLK is not set
CONFIG_CDROM=y
# CONFIG_ZRAM is not set
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
#
# DRBD disabled because PROC_FS or INET not selected
#
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
#
# S/390 block device drivers
#
CONFIG_DCSSBLK=y
CONFIG_DASD=y
CONFIG_DASD_PROFILE=y
CONFIG_DASD_ECKD=y
CONFIG_DASD_FBA=y
CONFIG_DASD_DIAG=y
CONFIG_DASD_EER=y
# CONFIG_SCM_BLOCK is not set
# CONFIG_VIRTIO_BLK is not set
CONFIG_BLK_DEV_UBLK=y
CONFIG_BLKDEV_UBLK_LEGACY_OPCODES=y
#
# NVME Support
#
CONFIG_NVME_AUTH=y
CONFIG_NVME_CORE=y
CONFIG_NVME_MULTIPATH=y
CONFIG_NVME_VERBOSE_ERRORS=y
CONFIG_NVME_FABRICS=y
CONFIG_NVME_FC=y
CONFIG_NVME_HOST_AUTH=y
CONFIG_NVME_TARGET=y
CONFIG_NVME_TARGET_PASSTHRU=y
# CONFIG_NVME_TARGET_LOOP is not set
CONFIG_NVME_TARGET_FC=y
CONFIG_NVME_TARGET_FCLOOP=y
# CONFIG_NVME_TARGET_AUTH is not set
# end of NVME Support
#
# Misc devices
#
CONFIG_SENSORS_LIS3LV02D=y
CONFIG_AD525X_DPOT=y
CONFIG_AD525X_DPOT_I2C=y
CONFIG_DUMMY_IRQ=y
# CONFIG_ICS932S401 is not set
CONFIG_ENCLOSURE_SERVICES=y
CONFIG_APDS9802ALS=y
CONFIG_ISL29003=y
CONFIG_ISL29020=y
CONFIG_SENSORS_TSL2550=y
CONFIG_SENSORS_BH1770=y
# CONFIG_SENSORS_APDS990X is not set
# CONFIG_HMC6352 is not set
CONFIG_DS1682=y
CONFIG_NSM=y
CONFIG_C2PORT=y
#
# EEPROM support
#
# CONFIG_EEPROM_AT24 is not set
CONFIG_EEPROM_MAX6875=y
CONFIG_EEPROM_93CX6=y
CONFIG_EEPROM_IDT_89HPESX=y
CONFIG_EEPROM_EE1004=y
# end of EEPROM support
#
# Texas Instruments shared transport line discipline
#
# end of Texas Instruments shared transport line discipline
CONFIG_SENSORS_LIS3_I2C=y
CONFIG_ALTERA_STAPL=y
CONFIG_ECHO=y
CONFIG_UACCE=y
# CONFIG_PVPANIC is not set
# end of Misc devices
#
# SCSI device support
#
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI_COMMON=y
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
# CONFIG_SCSI_PROC_FS is not set
CONFIG_SCSI_LIB_KUNIT_TEST=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
CONFIG_BLK_DEV_SR=y
CONFIG_CHR_DEV_SG=y
# CONFIG_BLK_DEV_BSG is not set
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_ENCLOSURE=y
CONFIG_SCSI_CONSTANTS=y
# CONFIG_SCSI_LOGGING is not set
CONFIG_SCSI_SCAN_ASYNC=y
CONFIG_SCSI_PROTO_TEST=y
#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=y
CONFIG_SCSI_SAS_ATTRS=y
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
# end of SCSI Transports
# CONFIG_SCSI_LOWLEVEL is not set
CONFIG_SCSI_DH=y
CONFIG_SCSI_DH_RDAC=y
CONFIG_SCSI_DH_HP_SW=y
CONFIG_SCSI_DH_EMC=y
# CONFIG_SCSI_DH_ALUA is not set
# end of SCSI device support
CONFIG_MD=y
CONFIG_BLK_DEV_MD=y
# CONFIG_MD_AUTODETECT is not set
# CONFIG_MD_BITMAP_FILE is not set
# CONFIG_MD_RAID0 is not set
CONFIG_MD_RAID1=y
# CONFIG_MD_RAID10 is not set
# CONFIG_MD_RAID456 is not set
CONFIG_BCACHE=y
# CONFIG_BCACHE_DEBUG is not set
CONFIG_BCACHE_ASYNC_REGISTRATION=y
# CONFIG_BLK_DEV_DM is not set
CONFIG_TARGET_CORE=y
CONFIG_TCM_IBLOCK=y
CONFIG_TCM_FILEIO=y
CONFIG_TCM_PSCSI=y
# CONFIG_LOOPBACK_TARGET is not set
CONFIG_REMOTE_TARGET=y
#
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=y
CONFIG_INPUT_SPARSEKMAP=y
CONFIG_INPUT_MATRIXKMAP=y
#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not set
CONFIG_INPUT_JOYDEV=y
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_EVBUG=y
# CONFIG_INPUT_KUNIT_TEST is not set
#
# Input Device Drivers
#
# CONFIG_INPUT_KEYBOARD is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
# CONFIG_MOUSE_PS2_BYD is not set
CONFIG_MOUSE_PS2_LOGIPS2PP=y
# CONFIG_MOUSE_PS2_SYNAPTICS is not set
# CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS is not set
# CONFIG_MOUSE_PS2_CYPRESS is not set
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_SENTELIC is not set
CONFIG_MOUSE_PS2_TOUCHKIT=y
CONFIG_MOUSE_PS2_FOCALTECH=y
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_CYAPA is not set
# CONFIG_MOUSE_ELAN_I2C is not set
CONFIG_MOUSE_VSXXXAA=y
# CONFIG_MOUSE_GPIO is not set
CONFIG_MOUSE_SYNAPTICS_I2C=y
CONFIG_INPUT_JOYSTICK=y
CONFIG_JOYSTICK_ANALOG=y
CONFIG_JOYSTICK_A3D=y
CONFIG_JOYSTICK_ADC=y
CONFIG_JOYSTICK_ADI=y
# CONFIG_JOYSTICK_COBRA is not set
# CONFIG_JOYSTICK_GF2K is not set
CONFIG_JOYSTICK_GRIP=y
# CONFIG_JOYSTICK_GRIP_MP is not set
CONFIG_JOYSTICK_GUILLEMOT=y
# CONFIG_JOYSTICK_INTERACT is not set
CONFIG_JOYSTICK_SIDEWINDER=y
# CONFIG_JOYSTICK_TMDC is not set
# CONFIG_JOYSTICK_IFORCE is not set
CONFIG_JOYSTICK_WARRIOR=y
# CONFIG_JOYSTICK_MAGELLAN is not set
CONFIG_JOYSTICK_SPACEORB=y
CONFIG_JOYSTICK_SPACEBALL=y
# CONFIG_JOYSTICK_STINGER is not set
CONFIG_JOYSTICK_TWIDJOY=y
CONFIG_JOYSTICK_ZHENHUA=y
# CONFIG_JOYSTICK_AS5011 is not set
# CONFIG_JOYSTICK_JOYDUMP is not set
# CONFIG_JOYSTICK_QWIIC is not set
CONFIG_JOYSTICK_FSIA6B=y
CONFIG_JOYSTICK_SEESAW=y
CONFIG_INPUT_TABLET=y
CONFIG_TABLET_SERIAL_WACOM4=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_AD7879=y
# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
CONFIG_TOUCHSCREEN_ADC=y
CONFIG_TOUCHSCREEN_ATMEL_MXT=y
CONFIG_TOUCHSCREEN_AUO_PIXCIR=y
CONFIG_TOUCHSCREEN_BU21013=y
CONFIG_TOUCHSCREEN_BU21029=y
CONFIG_TOUCHSCREEN_CY8CTMA140=y
CONFIG_TOUCHSCREEN_CY8CTMG110=y
CONFIG_TOUCHSCREEN_CYTTSP_CORE=y
CONFIG_TOUCHSCREEN_CYTTSP_I2C=y
CONFIG_TOUCHSCREEN_CYTTSP4_CORE=y
# CONFIG_TOUCHSCREEN_CYTTSP4_I2C is not set
CONFIG_TOUCHSCREEN_CYTTSP5=y
# CONFIG_TOUCHSCREEN_DYNAPRO is not set
CONFIG_TOUCHSCREEN_HAMPSHIRE=y
# CONFIG_TOUCHSCREEN_EETI is not set
# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set
CONFIG_TOUCHSCREEN_EXC3000=y
CONFIG_TOUCHSCREEN_FUJITSU=y
CONFIG_TOUCHSCREEN_GOODIX=y
CONFIG_TOUCHSCREEN_GOODIX_BERLIN_CORE=y
CONFIG_TOUCHSCREEN_GOODIX_BERLIN_I2C=y
# CONFIG_TOUCHSCREEN_HIDEEP is not set
CONFIG_TOUCHSCREEN_HYCON_HY46XX=y
CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y
CONFIG_TOUCHSCREEN_ILI210X=y
CONFIG_TOUCHSCREEN_ILITEK=y
CONFIG_TOUCHSCREEN_S6SY761=y
# CONFIG_TOUCHSCREEN_GUNZE is not set
CONFIG_TOUCHSCREEN_EKTF2127=y
CONFIG_TOUCHSCREEN_ELAN=y
CONFIG_TOUCHSCREEN_ELO=y
# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
CONFIG_TOUCHSCREEN_WACOM_I2C=y
CONFIG_TOUCHSCREEN_MAX11801=y
# CONFIG_TOUCHSCREEN_MCS5000 is not set
CONFIG_TOUCHSCREEN_MMS114=y
CONFIG_TOUCHSCREEN_MELFAS_MIP4=y
# CONFIG_TOUCHSCREEN_MSG2638 is not set
CONFIG_TOUCHSCREEN_MTOUCH=y
# CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS is not set
CONFIG_TOUCHSCREEN_IMAGIS=y
# CONFIG_TOUCHSCREEN_INEXIO is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
CONFIG_TOUCHSCREEN_TOUCHRIGHT=y
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
CONFIG_TOUCHSCREEN_PIXCIR=y
CONFIG_TOUCHSCREEN_WDT87XX_I2C=y
CONFIG_TOUCHSCREEN_TOUCHIT213=y
# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
CONFIG_TOUCHSCREEN_TSC200X_CORE=y
CONFIG_TOUCHSCREEN_TSC2004=y
# CONFIG_TOUCHSCREEN_TSC2007 is not set
CONFIG_TOUCHSCREEN_RM_TS=y
CONFIG_TOUCHSCREEN_SILEAD=y
CONFIG_TOUCHSCREEN_SIS_I2C=y
# CONFIG_TOUCHSCREEN_ST1232 is not set
# CONFIG_TOUCHSCREEN_SX8654 is not set
# CONFIG_TOUCHSCREEN_TPS6507X is not set
CONFIG_TOUCHSCREEN_ZET6223=y
# CONFIG_TOUCHSCREEN_ZFORCE is not set
CONFIG_TOUCHSCREEN_COLIBRI_VF50=y
# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set
CONFIG_TOUCHSCREEN_IQS5XX=y
# CONFIG_TOUCHSCREEN_IQS7211 is not set
# CONFIG_TOUCHSCREEN_ZINITIX is not set
# CONFIG_TOUCHSCREEN_HIMAX_HX83112B is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_AD714X=y
CONFIG_INPUT_AD714X_I2C=y
CONFIG_INPUT_BMA150=y
CONFIG_INPUT_E3X0_BUTTON=y
CONFIG_INPUT_MMA8450=y
CONFIG_INPUT_GPIO_BEEPER=y
CONFIG_INPUT_GPIO_DECODER=y
CONFIG_INPUT_GPIO_VIBRA=y
CONFIG_INPUT_KXTJ9=y
CONFIG_INPUT_UINPUT=y
CONFIG_INPUT_PCF8574=y
CONFIG_INPUT_GPIO_ROTARY_ENCODER=y
CONFIG_INPUT_DA7280_HAPTICS=y
# CONFIG_INPUT_ADXL34X is not set
CONFIG_INPUT_IQS269A=y
CONFIG_INPUT_IQS626A=y
# CONFIG_INPUT_IQS7222 is not set
CONFIG_INPUT_CMA3000=y
CONFIG_INPUT_CMA3000_I2C=y
# CONFIG_INPUT_DRV260X_HAPTICS is not set
CONFIG_INPUT_DRV2665_HAPTICS=y
CONFIG_INPUT_DRV2667_HAPTICS=y
CONFIG_RMI4_CORE=y
CONFIG_RMI4_I2C=y
# CONFIG_RMI4_SMB is not set
CONFIG_RMI4_F03=y
CONFIG_RMI4_F03_SERIO=y
CONFIG_RMI4_2D_SENSOR=y
CONFIG_RMI4_F11=y
CONFIG_RMI4_F12=y
CONFIG_RMI4_F30=y
CONFIG_RMI4_F34=y
CONFIG_RMI4_F3A=y
# CONFIG_RMI4_F55 is not set
#
# Hardware I/O ports
#
CONFIG_SERIO=y
# CONFIG_SERIO_SERPORT is not set
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_RAW=y
# CONFIG_SERIO_PS2MULT is not set
CONFIG_SERIO_GPIO_PS2=y
# CONFIG_USERIO is not set
CONFIG_GAMEPORT=y
# end of Hardware I/O ports
# end of Input device support
#
# Character devices
#
CONFIG_TTY=y
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_LEGACY_TIOCSTI is not set
CONFIG_LDISC_AUTOLOAD=y
CONFIG_NULL_TTY=y
CONFIG_HVC_DRIVER=y
CONFIG_SERIAL_DEV_BUS=y
CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
# CONFIG_TTY_PRINTK is not set
CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_VIRTIO is not set
# CONFIG_HW_RANDOM_S390 is not set
CONFIG_DEVMEM=y
CONFIG_HANGCHECK_TIMER=y
#
# S/390 character device drivers
#
CONFIG_TN3270=y
CONFIG_TN3270_FS=y
CONFIG_TN3270_CONSOLE=y
CONFIG_TN3215=y
# CONFIG_TN3215_CONSOLE is not set
CONFIG_CCW_CONSOLE=y
CONFIG_SCLP_TTY=y
# CONFIG_SCLP_CONSOLE is not set
# CONFIG_SCLP_VT220_TTY is not set
CONFIG_HMC_DRV=y
# CONFIG_SCLP_OFB is not set
CONFIG_S390_TAPE=y
#
# S/390 tape hardware support
#
CONFIG_S390_TAPE_34XX=y
CONFIG_S390_TAPE_3590=y
# CONFIG_VMCP is not set
CONFIG_MONWRITER=y
# CONFIG_S390_VMUR is not set
# end of Character devices
#
# I2C support
#
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_COMPAT is not set
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_MUX=y
#
# Multiplexer I2C Chip support
#
CONFIG_I2C_MUX_GPIO=y
CONFIG_I2C_MUX_LTC4306=y
CONFIG_I2C_MUX_PCA9541=y
# CONFIG_I2C_MUX_PCA954x is not set
# CONFIG_I2C_MUX_MLXCPLD is not set
# end of Multiplexer I2C Chip support
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_SMBUS=y
# CONFIG_I2C_SLAVE is not set
CONFIG_I2C_DEBUG_CORE=y
CONFIG_I2C_DEBUG_ALGO=y
# end of I2C support
CONFIG_I3C=y
CONFIG_SPMI=y
# CONFIG_HSI is not set
# CONFIG_PPS is not set
#
# PTP clock support
#
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
#
# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
#
# end of PTP clock support
CONFIG_PINCTRL=y
CONFIG_PINCONF=y
CONFIG_GENERIC_PINCONF=y
CONFIG_DEBUG_PINCTRL=y
# CONFIG_PINCTRL_CY8C95X0 is not set
CONFIG_PINCTRL_MCP23S08_I2C=y
CONFIG_PINCTRL_MCP23S08=y
# CONFIG_PINCTRL_SX150X is not set
#
# Renesas pinctrl drivers
#
# end of Renesas pinctrl drivers
CONFIG_GPIOLIB=y
CONFIG_GPIOLIB_FASTPATH_LIMIT=512
CONFIG_GPIOLIB_IRQCHIP=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_CDEV=y
# CONFIG_GPIO_CDEV_V1 is not set
CONFIG_GPIO_MAX730X=y
#
# I2C GPIO expanders
#
# CONFIG_GPIO_FXL6408 is not set
# CONFIG_GPIO_DS4520 is not set
CONFIG_GPIO_MAX7300=y
# CONFIG_GPIO_MAX732X is not set
CONFIG_GPIO_PCA953X=y
# CONFIG_GPIO_PCA953X_IRQ is not set
CONFIG_GPIO_PCA9570=y
CONFIG_GPIO_PCF857X=y
# CONFIG_GPIO_TPIC2810 is not set
# end of I2C GPIO expanders
#
# MFD GPIO expanders
#
# end of MFD GPIO expanders
#
# Virtual GPIO drivers
#
# CONFIG_GPIO_AGGREGATOR is not set
# CONFIG_GPIO_LATCH is not set
# CONFIG_GPIO_MOCKUP is not set
CONFIG_GPIO_VIRTIO=y
# CONFIG_GPIO_SIM is not set
# end of Virtual GPIO drivers
# CONFIG_POWER_RESET is not set
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_GENERIC_ADC_BATTERY=y
# CONFIG_IP5XXX_POWER is not set
CONFIG_TEST_POWER=y
CONFIG_CHARGER_ADP5061=y
# CONFIG_BATTERY_CW2015 is not set
CONFIG_BATTERY_DS2782=y
CONFIG_BATTERY_SAMSUNG_SDI=y
# CONFIG_BATTERY_SBS is not set
# CONFIG_CHARGER_SBS is not set
CONFIG_MANAGER_SBS=y
# CONFIG_BATTERY_BQ27XXX is not set
# CONFIG_BATTERY_MAX17040 is not set
CONFIG_BATTERY_MAX17042=y
CONFIG_CHARGER_MAX8903=y
CONFIG_CHARGER_LP8727=y
# CONFIG_CHARGER_GPIO is not set
CONFIG_CHARGER_LT3651=y
# CONFIG_CHARGER_LTC4162L is not set
# CONFIG_CHARGER_MAX77976 is not set
# CONFIG_CHARGER_BQ2415X is not set
# CONFIG_CHARGER_BQ24190 is not set
CONFIG_CHARGER_BQ24257=y
CONFIG_CHARGER_BQ24735=y
# CONFIG_CHARGER_BQ2515X is not set
CONFIG_CHARGER_BQ25890=y
CONFIG_CHARGER_BQ25980=y
CONFIG_CHARGER_BQ256XX=y
# CONFIG_BATTERY_GAUGE_LTC2941 is not set
CONFIG_BATTERY_RT5033=y
CONFIG_CHARGER_RT9455=y
CONFIG_CHARGER_BD99954=y
# CONFIG_BATTERY_UG3105 is not set
CONFIG_FUEL_GAUGE_MM8013=y
# CONFIG_THERMAL is not set
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
CONFIG_WATCHDOG_OPEN_TIMEOUT=0
# CONFIG_WATCHDOG_SYSFS is not set
# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set
#
# Watchdog Pretimeout Governors
#
CONFIG_WATCHDOG_PRETIMEOUT_GOV=y
CONFIG_WATCHDOG_PRETIMEOUT_GOV_SEL=y
CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP=y
CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC=y
# CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP is not set
CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC=y
#
# Watchdog Device Drivers
#
CONFIG_SOFT_WATCHDOG=y
CONFIG_SOFT_WATCHDOG_PRETIMEOUT=y
CONFIG_ZIIRAVE_WATCHDOG=y
CONFIG_MEN_A21_WDT=y
# CONFIG_DIAG288_WATCHDOG is not set
# CONFIG_REGULATOR is not set
CONFIG_RC_CORE=y
# CONFIG_LIRC is not set
CONFIG_RC_MAP=y
# CONFIG_RC_DECODERS is not set
# CONFIG_RC_DEVICES is not set
#
# CEC support
#
# CONFIG_MEDIA_CEC_SUPPORT is not set
# end of CEC support
#
# Graphics support
#
CONFIG_AUXDISPLAY=y
CONFIG_CHARLCD=y
CONFIG_HD44780_COMMON=y
CONFIG_HD44780=y
CONFIG_LCD2S=y
# CONFIG_PANEL_CHANGE_MESSAGE is not set
# CONFIG_CHARLCD_BL_OFF is not set
# CONFIG_CHARLCD_BL_ON is not set
CONFIG_CHARLCD_BL_FLASH=y
CONFIG_LINEDISP=y
CONFIG_MAX6959=y
# CONFIG_SEG_LED_GPIO is not set
#
# Console display driver support
#
CONFIG_DUMMY_CONSOLE=y
CONFIG_DUMMY_CONSOLE_COLUMNS=80
CONFIG_DUMMY_CONSOLE_ROWS=25
# end of Console display driver support
# end of Graphics support
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
CONFIG_HID_BATTERY_STRENGTH=y
# CONFIG_HIDRAW is not set
CONFIG_UHID=y
# CONFIG_HID_GENERIC is not set
#
# Special HID drivers
#
# CONFIG_HID_A4TECH is not set
CONFIG_HID_ACRUX=y
# CONFIG_HID_ACRUX_FF is not set
CONFIG_HID_AUREAL=y
# CONFIG_HID_BELKIN is not set
# CONFIG_HID_CHERRY is not set
# CONFIG_HID_COUGAR is not set
CONFIG_HID_MACALLY=y
CONFIG_HID_CMEDIA=y
CONFIG_HID_CYPRESS=y
# CONFIG_HID_DRAGONRISE is not set
CONFIG_HID_EMS_FF=y
CONFIG_HID_ELECOM=y
# CONFIG_HID_EVISION is not set
CONFIG_HID_EZKEY=y
CONFIG_HID_GEMBIRD=y
# CONFIG_HID_GFRM is not set
# CONFIG_HID_GLORIOUS is not set
# CONFIG_HID_GOOGLE_STADIA_FF is not set
# CONFIG_HID_VIVALDI is not set
# CONFIG_HID_KEYTOUCH is not set
CONFIG_HID_KYE=y
# CONFIG_HID_WALTOP is not set
CONFIG_HID_VIEWSONIC=y
CONFIG_HID_VRC2=y
CONFIG_HID_XIAOMI=y
# CONFIG_HID_GYRATION is not set
CONFIG_HID_ICADE=y
CONFIG_HID_ITE=y
CONFIG_HID_JABRA=y
CONFIG_HID_TWINHAN=y
# CONFIG_HID_KENSINGTON is not set
CONFIG_HID_LCPOWER=y
# CONFIG_HID_LENOVO is not set
CONFIG_HID_MAGICMOUSE=y
CONFIG_HID_MALTRON=y
# CONFIG_HID_MAYFLASH is not set
# CONFIG_HID_REDRAGON is not set
CONFIG_HID_MICROSOFT=y
# CONFIG_HID_MONTEREY is not set
# CONFIG_HID_MULTITOUCH is not set
CONFIG_HID_NTI=y
CONFIG_HID_ORTEK=y
CONFIG_HID_PANTHERLORD=y
# CONFIG_PANTHERLORD_FF is not set
CONFIG_HID_PETALYNX=y
# CONFIG_HID_PICOLCD is not set
CONFIG_HID_PLANTRONICS=y
# CONFIG_HID_PXRC is not set
# CONFIG_HID_RAZER is not set
CONFIG_HID_PRIMAX=y
CONFIG_HID_SAITEK=y
CONFIG_HID_SEMITEK=y
CONFIG_HID_SPEEDLINK=y
CONFIG_HID_STEAM=y
# CONFIG_STEAM_FF is not set
CONFIG_HID_SUNPLUS=y
CONFIG_HID_RMI=y
# CONFIG_HID_GREENASIA is not set
CONFIG_HID_SMARTJOYPLUS=y
CONFIG_SMARTJOYPLUS_FF=y
CONFIG_HID_TIVO=y
CONFIG_HID_TOPSEED=y
# CONFIG_HID_TOPRE is not set
# CONFIG_HID_UDRAW_PS3 is not set
CONFIG_HID_XINMO=y
CONFIG_HID_ZEROPLUS=y
# CONFIG_ZEROPLUS_FF is not set
# CONFIG_HID_ZYDACRON is not set
CONFIG_HID_ALPS=y
# end of Special HID drivers
#
# HID-BPF support
#
# end of HID-BPF support
CONFIG_I2C_HID=y
CONFIG_I2C_HID_OF=y
CONFIG_I2C_HID_CORE=y
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_SCSI_UFSHCD=y
CONFIG_SCSI_UFS_BSG=y
# CONFIG_SCSI_UFS_CRYPTO is not set
CONFIG_SCSI_UFS_FAULT_INJECTION=y
# CONFIG_MEMSTICK is not set
# CONFIG_NEW_LEDS is not set
# CONFIG_ACCESSIBILITY is not set
CONFIG_DMADEVICES=y
# CONFIG_DMADEVICES_DEBUG is not set
#
# DMA Devices
#
#
# DMABUF options
#
# CONFIG_SYNC_FILE is not set
# CONFIG_DMABUF_HEAPS is not set
# end of DMABUF options
CONFIG_UIO=y
CONFIG_UIO_PDRV_GENIRQ=y
CONFIG_UIO_DMEM_GENIRQ=y
CONFIG_VFIO=y
CONFIG_VFIO_GROUP=y
CONFIG_VFIO_CONTAINER=y
CONFIG_VFIO_IOMMU_TYPE1=y
# CONFIG_VFIO_NOIOMMU is not set
CONFIG_VFIO_DEBUGFS=y
CONFIG_VFIO_MDEV=y
# CONFIG_VIRT_DRIVERS is not set
CONFIG_VIRTIO_ANCHOR=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_MENU=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_VIRTIO_INPUT=y
CONFIG_VIRTIO_DEBUG=y
CONFIG_VHOST_IOTLB=y
CONFIG_VHOST_TASK=y
CONFIG_VHOST=y
CONFIG_VHOST_MENU=y
CONFIG_VHOST_SCSI=y
CONFIG_VHOST_CROSS_ENDIAN_LEGACY=y
#
# Microsoft Hyper-V guest support
#
# end of Microsoft Hyper-V guest support
# CONFIG_GREYBUS is not set
# CONFIG_COMEDI is not set
# CONFIG_STAGING is not set
# CONFIG_COMMON_CLK is not set
CONFIG_HWSPINLOCK=y
#
# Clock Source drivers
#
CONFIG_TIMER_OF=y
CONFIG_TIMER_PROBE=y
CONFIG_REALTEK_OTTO_TIMER=y
# end of Clock Source drivers
CONFIG_MAILBOX=y
CONFIG_IOMMU_API=y
# CONFIG_IOMMU_SUPPORT is not set
#
# Remoteproc drivers
#
CONFIG_REMOTEPROC=y
CONFIG_REMOTEPROC_CDEV=y
# end of Remoteproc drivers
#
# Rpmsg drivers
#
# CONFIG_RPMSG_VIRTIO is not set
# end of Rpmsg drivers
#
# SOC (System On Chip) specific Drivers
#
#
# Amlogic SoC drivers
#
# end of Amlogic SoC drivers
#
# Broadcom SoC drivers
#
# end of Broadcom SoC drivers
#
# NXP/Freescale QorIQ SoC drivers
#
# end of NXP/Freescale QorIQ SoC drivers
#
# fujitsu SoC drivers
#
# end of fujitsu SoC drivers
#
# i.MX SoC drivers
#
# end of i.MX SoC drivers
#
# Enable LiteX SoC Builder specific drivers
#
# end of Enable LiteX SoC Builder specific drivers
# CONFIG_WPCM450_SOC is not set
#
# Qualcomm SoC drivers
#
CONFIG_QCOM_PBS=y
# end of Qualcomm SoC drivers
CONFIG_SOC_TI=y
#
# Xilinx SoC drivers
#
# end of Xilinx SoC drivers
# end of SOC (System On Chip) specific Drivers
#
# PM Domains
#
#
# Amlogic PM Domains
#
# end of Amlogic PM Domains
#
# Broadcom PM Domains
#
# end of Broadcom PM Domains
#
# i.MX PM Domains
#
# end of i.MX PM Domains
#
# Qualcomm PM Domains
#
# end of Qualcomm PM Domains
# end of PM Domains
CONFIG_PM_DEVFREQ=y
#
# DEVFREQ Governors
#
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
CONFIG_DEVFREQ_GOV_POWERSAVE=y
CONFIG_DEVFREQ_GOV_USERSPACE=y
CONFIG_DEVFREQ_GOV_PASSIVE=y
#
# DEVFREQ Drivers
#
# CONFIG_PM_DEVFREQ_EVENT is not set
CONFIG_EXTCON=y
#
# Extcon Device Drivers
#
CONFIG_EXTCON_ADC_JACK=y
# CONFIG_EXTCON_FSA9480 is not set
CONFIG_EXTCON_GPIO=y
CONFIG_EXTCON_MAX3355=y
CONFIG_EXTCON_PTN5150=y
CONFIG_EXTCON_RT8973A=y
CONFIG_EXTCON_SM5502=y
CONFIG_EXTCON_USB_GPIO=y
CONFIG_MEMORY=y
CONFIG_IIO=y
CONFIG_IIO_BUFFER=y
CONFIG_IIO_BUFFER_CB=y
CONFIG_IIO_BUFFER_DMA=y
CONFIG_IIO_BUFFER_DMAENGINE=y
# CONFIG_IIO_BUFFER_HW_CONSUMER is not set
CONFIG_IIO_KFIFO_BUF=y
CONFIG_IIO_TRIGGERED_BUFFER=y
CONFIG_IIO_CONFIGFS=y
CONFIG_IIO_GTS_HELPER=y
CONFIG_IIO_TRIGGER=y
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
# CONFIG_IIO_SW_DEVICE is not set
CONFIG_IIO_SW_TRIGGER=y
CONFIG_IIO_TRIGGERED_EVENT=y
#
# Accelerometers
#
CONFIG_ADXL313=y
CONFIG_ADXL313_I2C=y
CONFIG_ADXL345=y
CONFIG_ADXL345_I2C=y
# CONFIG_ADXL355_I2C is not set
CONFIG_ADXL367=y
CONFIG_ADXL367_I2C=y
CONFIG_ADXL372=y
CONFIG_ADXL372_I2C=y
# CONFIG_BMA400 is not set
CONFIG_BMC150_ACCEL=y
CONFIG_BMC150_ACCEL_I2C=y
# CONFIG_BMI088_ACCEL is not set
CONFIG_DA280=y
CONFIG_DA311=y
# CONFIG_DMARD06 is not set
CONFIG_DMARD09=y
CONFIG_DMARD10=y
# CONFIG_FXLS8962AF_I2C is not set
CONFIG_IIO_KX022A=y
CONFIG_IIO_KX022A_I2C=y
CONFIG_KXSD9=y
CONFIG_KXSD9_I2C=y
# CONFIG_KXCJK1013 is not set
CONFIG_MC3230=y
CONFIG_MMA7455=y
CONFIG_MMA7455_I2C=y
CONFIG_MMA7660=y
CONFIG_MMA8452=y
CONFIG_MMA9551_CORE=y
CONFIG_MMA9551=y
# CONFIG_MMA9553 is not set
CONFIG_MSA311=y
CONFIG_MXC4005=y
CONFIG_MXC6255=y
# CONFIG_STK8312 is not set
CONFIG_STK8BA50=y
# end of Accelerometers
#
# Analog to digital converters
#
CONFIG_AD7091R=y
CONFIG_AD7091R5=y
CONFIG_AD7291=y
# CONFIG_AD799X is not set
# CONFIG_ADI_AXI_ADC is not set
# CONFIG_ENVELOPE_DETECTOR is not set
CONFIG_HX711=y
CONFIG_INA2XX_ADC=y
# CONFIG_LTC2309 is not set
CONFIG_LTC2471=y
CONFIG_LTC2485=y
CONFIG_LTC2497=y
CONFIG_MAX1363=y
CONFIG_MAX34408=y
CONFIG_MAX9611=y
CONFIG_MCP3422=y
# CONFIG_NAU7802 is not set
CONFIG_PAC1934=y
CONFIG_QCOM_VADC_COMMON=y
CONFIG_QCOM_SPMI_IADC=y
CONFIG_QCOM_SPMI_VADC=y
CONFIG_QCOM_SPMI_ADC5=y
CONFIG_RICHTEK_RTQ6056=y
CONFIG_SD_ADC_MODULATOR=y
# CONFIG_TI_ADC081C is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS7924 is not set
CONFIG_TI_ADS1100=y
# end of Analog to digital converters
#
# Analog to digital and digital to analog converters
#
# end of Analog to digital and digital to analog converters
#
# Analog Front Ends
#
# CONFIG_IIO_RESCALE is not set
# end of Analog Front Ends
#
# Amplifiers
#
# CONFIG_HMC425 is not set
# end of Amplifiers
#
# Capacitance to digital converters
#
CONFIG_AD7150=y
CONFIG_AD7746=y
# end of Capacitance to digital converters
#
# Chemical Sensors
#
CONFIG_AOSONG_AGS02MA=y
# CONFIG_ATLAS_PH_SENSOR is not set
# CONFIG_ATLAS_EZO_SENSOR is not set
# CONFIG_BME680 is not set
CONFIG_CCS811=y
CONFIG_IAQCORE=y
CONFIG_PMS7003=y
CONFIG_SCD30_CORE=y
CONFIG_SCD30_I2C=y
CONFIG_SCD30_SERIAL=y
# CONFIG_SCD4X is not set
CONFIG_SENSIRION_SGP30=y
CONFIG_SENSIRION_SGP40=y
CONFIG_SPS30=y
CONFIG_SPS30_I2C=y
# CONFIG_SPS30_SERIAL is not set
CONFIG_SENSEAIR_SUNRISE_CO2=y
CONFIG_VZ89X=y
# end of Chemical Sensors
#
# Hid Sensor IIO Common
#
# end of Hid Sensor IIO Common
CONFIG_IIO_INV_SENSORS_TIMESTAMP=y
CONFIG_IIO_MS_SENSORS_I2C=y
#
# IIO SCMI Sensors
#
# end of IIO SCMI Sensors
#
# SSP Sensor Common
#
# end of SSP Sensor Common
CONFIG_IIO_ST_SENSORS_I2C=y
CONFIG_IIO_ST_SENSORS_CORE=y
#
# Digital to analog converters
#
CONFIG_AD5064=y
CONFIG_AD5380=y
# CONFIG_AD5446 is not set
CONFIG_AD5592R_BASE=y
CONFIG_AD5593R=y
# CONFIG_ADI_AXI_DAC is not set
CONFIG_AD5686=y
CONFIG_AD5696_I2C=y
# CONFIG_DPOT_DAC is not set
# CONFIG_DS4424 is not set
CONFIG_M62332=y
CONFIG_MAX517=y
CONFIG_MAX5821=y
CONFIG_MCP4725=y
# CONFIG_MCP4728 is not set
# CONFIG_TI_DAC5571 is not set
# end of Digital to analog converters
#
# IIO dummy driver
#
# end of IIO dummy driver
#
# Filters
#
# end of Filters
#
# Frequency Synthesizers DDS/PLL
#
#
# Clock Generator/Distribution
#
# end of Clock Generator/Distribution
#
# Phase-Locked Loop (PLL) frequency synthesizers
#
CONFIG_ADMFM2000=y
# end of Phase-Locked Loop (PLL) frequency synthesizers
# end of Frequency Synthesizers DDS/PLL
#
# Digital gyroscope sensors
#
# CONFIG_BMG160 is not set
CONFIG_FXAS21002C=y
CONFIG_FXAS21002C_I2C=y
# CONFIG_MPU3050_I2C is not set
CONFIG_IIO_ST_GYRO_3AXIS=y
CONFIG_IIO_ST_GYRO_I2C_3AXIS=y
CONFIG_ITG3200=y
# end of Digital gyroscope sensors
#
# Health Sensors
#
#
# Heart Rate Monitors
#
CONFIG_AFE4404=y
CONFIG_MAX30100=y
# CONFIG_MAX30102 is not set
# end of Heart Rate Monitors
# end of Health Sensors
#
# Humidity sensors
#
CONFIG_AM2315=y
CONFIG_DHT11=y
# CONFIG_HDC100X is not set
# CONFIG_HDC2010 is not set
CONFIG_HDC3020=y
CONFIG_HTS221=y
CONFIG_HTS221_I2C=y
CONFIG_HTU21=y
CONFIG_SI7005=y
CONFIG_SI7020=y
# end of Humidity sensors
#
# Inertial measurement units
#
CONFIG_BMI160=y
CONFIG_BMI160_I2C=y
CONFIG_BMI323=y
CONFIG_BMI323_I2C=y
CONFIG_BOSCH_BNO055=y
CONFIG_BOSCH_BNO055_SERIAL=y
CONFIG_BOSCH_BNO055_I2C=y
# CONFIG_FXOS8700_I2C is not set
# CONFIG_KMX61 is not set
CONFIG_INV_ICM42600=y
CONFIG_INV_ICM42600_I2C=y
CONFIG_INV_MPU6050_IIO=y
CONFIG_INV_MPU6050_I2C=y
CONFIG_IIO_ST_LSM6DSX=y
CONFIG_IIO_ST_LSM6DSX_I2C=y
CONFIG_IIO_ST_LSM6DSX_I3C=y
# end of Inertial measurement units
#
# Light sensors
#
CONFIG_ADJD_S311=y
CONFIG_ADUX1020=y
CONFIG_AL3010=y
# CONFIG_AL3320A is not set
CONFIG_APDS9300=y
# CONFIG_APDS9306 is not set
CONFIG_APDS9960=y
CONFIG_AS73211=y
CONFIG_BH1750=y
CONFIG_BH1780=y
# CONFIG_CM32181 is not set
# CONFIG_CM3232 is not set
CONFIG_CM3323=y
CONFIG_CM3605=y
# CONFIG_CM36651 is not set
# CONFIG_GP2AP002 is not set
# CONFIG_GP2AP020A00F is not set
CONFIG_SENSORS_ISL29018=y
# CONFIG_SENSORS_ISL29028 is not set
CONFIG_ISL29125=y
# CONFIG_ISL76682 is not set
# CONFIG_JSA1212 is not set
# CONFIG_ROHM_BU27008 is not set
# CONFIG_ROHM_BU27034 is not set
# CONFIG_RPR0521 is not set
# CONFIG_LTR390 is not set
# CONFIG_LTR501 is not set
CONFIG_LTRF216A=y
CONFIG_LV0104CS=y
CONFIG_MAX44000=y
CONFIG_MAX44009=y
# CONFIG_NOA1305 is not set
CONFIG_OPT3001=y
CONFIG_OPT4001=y
# CONFIG_PA12203001 is not set
CONFIG_SI1133=y
CONFIG_SI1145=y
CONFIG_STK3310=y
CONFIG_ST_UVIS25=y
CONFIG_ST_UVIS25_I2C=y
CONFIG_TCS3414=y
# CONFIG_TCS3472 is not set
CONFIG_SENSORS_TSL2563=y
CONFIG_TSL2583=y
CONFIG_TSL2591=y
# CONFIG_TSL2772 is not set
# CONFIG_TSL4531 is not set
CONFIG_US5182D=y
# CONFIG_VCNL4000 is not set
CONFIG_VCNL4035=y
CONFIG_VEML6030=y
CONFIG_VEML6070=y
CONFIG_VEML6075=y
CONFIG_VL6180=y
# CONFIG_ZOPT2201 is not set
# end of Light sensors
#
# Magnetometer sensors
#
CONFIG_AK8974=y
# CONFIG_AK8975 is not set
# CONFIG_AK09911 is not set
CONFIG_BMC150_MAGN=y
CONFIG_BMC150_MAGN_I2C=y
CONFIG_MAG3110=y
# CONFIG_MMC35240 is not set
CONFIG_IIO_ST_MAGN_3AXIS=y
CONFIG_IIO_ST_MAGN_I2C_3AXIS=y
CONFIG_SENSORS_HMC5843=y
CONFIG_SENSORS_HMC5843_I2C=y
CONFIG_SENSORS_RM3100=y
CONFIG_SENSORS_RM3100_I2C=y
CONFIG_TI_TMAG5273=y
CONFIG_YAMAHA_YAS530=y
# end of Magnetometer sensors
#
# Multiplexers
#
CONFIG_IIO_MUX=y
# end of Multiplexers
#
# Inclinometer sensors
#
# end of Inclinometer sensors
CONFIG_IIO_GTS_KUNIT_TEST=y
# CONFIG_IIO_FORMAT_KUNIT_TEST is not set
#
# Triggers - standalone
#
# CONFIG_IIO_HRTIMER_TRIGGER is not set
# CONFIG_IIO_INTERRUPT_TRIGGER is not set
CONFIG_IIO_TIGHTLOOP_TRIGGER=y
# CONFIG_IIO_SYSFS_TRIGGER is not set
# end of Triggers - standalone
#
# Linear and angular position sensors
#
# end of Linear and angular position sensors
#
# Digital potentiometers
#
CONFIG_AD5110=y
# CONFIG_AD5272 is not set
CONFIG_DS1803=y
CONFIG_MAX5432=y
# CONFIG_MCP4018 is not set
CONFIG_MCP4531=y
CONFIG_TPL0102=y
# end of Digital potentiometers
#
# Digital potentiostats
#
CONFIG_LMP91000=y
# end of Digital potentiostats
#
# Pressure sensors
#
# CONFIG_ABP060MG is not set
# CONFIG_ROHM_BM1390 is not set
CONFIG_BMP280=y
CONFIG_BMP280_I2C=y
CONFIG_DLHL60D=y
# CONFIG_DPS310 is not set
CONFIG_HP03=y
CONFIG_HSC030PA=y
CONFIG_HSC030PA_I2C=y
# CONFIG_ICP10100 is not set
CONFIG_MPL115=y
CONFIG_MPL115_I2C=y
CONFIG_MPL3115=y
CONFIG_MPRLS0025PA=y
CONFIG_MPRLS0025PA_I2C=y
CONFIG_MS5611=y
CONFIG_MS5611_I2C=y
# CONFIG_MS5637 is not set
CONFIG_IIO_ST_PRESS=y
CONFIG_IIO_ST_PRESS_I2C=y
CONFIG_T5403=y
# CONFIG_HP206C is not set
CONFIG_ZPA2326=y
CONFIG_ZPA2326_I2C=y
# end of Pressure sensors
#
# Lightning sensors
#
# end of Lightning sensors
#
# Proximity and distance sensors
#
CONFIG_IRSD200=y
# CONFIG_ISL29501 is not set
CONFIG_LIDAR_LITE_V2=y
CONFIG_MB1232=y
# CONFIG_PING is not set
CONFIG_RFD77402=y
CONFIG_SRF04=y
CONFIG_SX_COMMON=y
# CONFIG_SX9310 is not set
CONFIG_SX9324=y
CONFIG_SX9360=y
CONFIG_SX9500=y
CONFIG_SRF08=y
# CONFIG_VCNL3020 is not set
# CONFIG_VL53L0X_I2C is not set
# end of Proximity and distance sensors
#
# Resolver to digital converters
#
# end of Resolver to digital converters
#
# Temperature sensors
#
CONFIG_MLX90614=y
CONFIG_MLX90632=y
# CONFIG_MLX90635 is not set
CONFIG_TMP006=y
CONFIG_TMP007=y
# CONFIG_TMP117 is not set
CONFIG_TSYS01=y
CONFIG_TSYS02D=y
CONFIG_MAX30208=y
# CONFIG_MCP9600 is not set
# end of Temperature sensors
# CONFIG_PWM is not set
#
# IRQ chip support
#
# end of IRQ chip support
# CONFIG_RESET_CONTROLLER is not set
#
# PHY Subsystem
#
CONFIG_GENERIC_PHY=y
CONFIG_PHY_CAN_TRANSCEIVER=y
#
# PHY drivers for Broadcom platforms
#
# end of PHY drivers for Broadcom platforms
# end of PHY Subsystem
# CONFIG_POWERCAP is not set
CONFIG_RAS=y
#
# Android
#
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_BINDERFS=y
CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
# CONFIG_ANDROID_BINDER_IPC_SELFTEST is not set
# end of Android
CONFIG_DAX=y
CONFIG_DEV_DAX=y
# CONFIG_DEV_DAX_KMEM is not set
# CONFIG_NVMEM is not set
#
# HW tracing support
#
# CONFIG_STM is not set
# end of HW tracing support
# CONFIG_FPGA is not set
CONFIG_MULTIPLEXER=y
#
# Multiplexer drivers
#
CONFIG_MUX_ADG792A=y
# CONFIG_MUX_GPIO is not set
# end of Multiplexer drivers
CONFIG_PM_OPP=y
CONFIG_SIOX=y
# CONFIG_SIOX_BUS_GPIO is not set
CONFIG_SLIMBUS=y
CONFIG_INTERCONNECT=y
# CONFIG_COUNTER is not set
# CONFIG_MOST is not set
CONFIG_PECI=y
CONFIG_PECI_CPU=y
# CONFIG_HTE is not set
# end of Device Drivers
#
# File systems
#
CONFIG_DCACHE_WORD_ACCESS=y
CONFIG_VALIDATE_FS_PARSER=y
CONFIG_FS_IOMAP=y
CONFIG_FS_STACK=y
CONFIG_BUFFER_HEAD=y
CONFIG_LEGACY_DIRECT_IO=y
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
# CONFIG_EXT2_FS_SECURITY is not set
CONFIG_EXT3_FS=y
# CONFIG_EXT3_FS_POSIX_ACL is not set
CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT4_FS=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
CONFIG_EXT4_FS_SECURITY=y
CONFIG_EXT4_DEBUG=y
# CONFIG_EXT4_KUNIT_TESTS is not set
CONFIG_JBD2=y
CONFIG_JBD2_DEBUG=y
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=y
# CONFIG_REISERFS_CHECK is not set
CONFIG_REISERFS_PROC_INFO=y
CONFIG_REISERFS_FS_XATTR=y
# CONFIG_REISERFS_FS_POSIX_ACL is not set
# CONFIG_REISERFS_FS_SECURITY is not set
# CONFIG_JFS_FS is not set
CONFIG_XFS_FS=y
# CONFIG_XFS_SUPPORT_V4 is not set
# CONFIG_XFS_SUPPORT_ASCII_CI is not set
CONFIG_XFS_QUOTA=y
# CONFIG_XFS_POSIX_ACL is not set
CONFIG_XFS_RT=y
CONFIG_XFS_WARN=y
# CONFIG_XFS_DEBUG is not set
# CONFIG_GFS2_FS is not set
CONFIG_BTRFS_FS=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_BTRFS_FS_RUN_SANITY_TESTS=y
# CONFIG_BTRFS_DEBUG is not set
# CONFIG_BTRFS_ASSERT is not set
CONFIG_BTRFS_FS_REF_VERIFY=y
CONFIG_NILFS2_FS=y
CONFIG_F2FS_FS=y
CONFIG_F2FS_STAT_FS=y
CONFIG_F2FS_FS_XATTR=y
CONFIG_F2FS_FS_POSIX_ACL=y
CONFIG_F2FS_FS_SECURITY=y
# CONFIG_F2FS_CHECK_FS is not set
CONFIG_F2FS_FAULT_INJECTION=y
# CONFIG_F2FS_FS_COMPRESSION is not set
# CONFIG_F2FS_IOSTAT is not set
CONFIG_BCACHEFS_FS=y
# CONFIG_BCACHEFS_QUOTA is not set
# CONFIG_BCACHEFS_ERASURE_CODING is not set
CONFIG_BCACHEFS_POSIX_ACL=y
# CONFIG_BCACHEFS_DEBUG is not set
# CONFIG_BCACHEFS_TESTS is not set
CONFIG_BCACHEFS_LOCK_TIME_STATS=y
# CONFIG_BCACHEFS_NO_LATENCY_ACCT is not set
# CONFIG_BCACHEFS_SIX_OPTIMISTIC_SPIN is not set
# CONFIG_MEAN_AND_VARIANCE_UNIT_TEST is not set
CONFIG_FS_DAX=y
CONFIG_FS_DAX_LIMITED=y
CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
# CONFIG_EXPORTFS_BLOCK_OPS is not set
# CONFIG_FILE_LOCKING is not set
# CONFIG_FS_ENCRYPTION is not set
# CONFIG_FS_VERITY is not set
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_FANOTIFY=y
# CONFIG_QUOTA is not set
CONFIG_QUOTACTL=y
# CONFIG_AUTOFS_FS is not set
CONFIG_FUSE_FS=y
CONFIG_CUSE=y
CONFIG_VIRTIO_FS=y
# CONFIG_FUSE_DAX is not set
# CONFIG_FUSE_PASSTHROUGH is not set
CONFIG_OVERLAY_FS=y
# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set
CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
CONFIG_OVERLAY_FS_INDEX=y
# CONFIG_OVERLAY_FS_NFS_EXPORT is not set
# CONFIG_OVERLAY_FS_XINO_AUTO is not set
# CONFIG_OVERLAY_FS_METACOPY is not set
CONFIG_OVERLAY_FS_DEBUG=y
#
# Caches
#
# end of Caches
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set
# end of CD-ROM/DVD Filesystems
#
# DOS/FAT/EXFAT/NT Filesystems
#
CONFIG_FAT_FS=y
# CONFIG_MSDOS_FS is not set
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_FAT_DEFAULT_UTF8 is not set
CONFIG_FAT_KUNIT_TEST=y
CONFIG_EXFAT_FS=y
CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
CONFIG_NTFS3_FS=y
# CONFIG_NTFS3_64BIT_CLUSTER is not set
CONFIG_NTFS3_LZX_XPRESS=y
CONFIG_NTFS3_FS_POSIX_ACL=y
CONFIG_NTFS_FS=y
# end of DOS/FAT/EXFAT/NT Filesystems
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set
CONFIG_PROC_VMCORE=y
CONFIG_PROC_VMCORE_DEVICE_DUMP=y
# CONFIG_PROC_SYSCTL is not set
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_PROC_CHILDREN=y
CONFIG_KERNFS=y
CONFIG_SYSFS=y
CONFIG_ARCH_SUPPORTS_HUGETLBFS=y
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON=y
CONFIG_HUGETLB_PAGE=y
CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y
CONFIG_ARCH_HAS_GIGANTIC_PAGE=y
CONFIG_CONFIGFS_FS=y
# end of Pseudo filesystems
# CONFIG_MISC_FILESYSTEMS is not set
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set
CONFIG_NLS_CODEPAGE_737=y
CONFIG_NLS_CODEPAGE_775=y
CONFIG_NLS_CODEPAGE_850=y
# CONFIG_NLS_CODEPAGE_852 is not set
CONFIG_NLS_CODEPAGE_855=y
CONFIG_NLS_CODEPAGE_857=y
CONFIG_NLS_CODEPAGE_860=y
CONFIG_NLS_CODEPAGE_861=y
CONFIG_NLS_CODEPAGE_862=y
# CONFIG_NLS_CODEPAGE_863 is not set
CONFIG_NLS_CODEPAGE_864=y
# CONFIG_NLS_CODEPAGE_865 is not set
CONFIG_NLS_CODEPAGE_866=y
CONFIG_NLS_CODEPAGE_869=y
CONFIG_NLS_CODEPAGE_936=y
# CONFIG_NLS_CODEPAGE_950 is not set
CONFIG_NLS_CODEPAGE_932=y
CONFIG_NLS_CODEPAGE_949=y
CONFIG_NLS_CODEPAGE_874=y
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
CONFIG_NLS_CODEPAGE_1251=y
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_2=y
# CONFIG_NLS_ISO8859_3 is not set
CONFIG_NLS_ISO8859_4=y
CONFIG_NLS_ISO8859_5=y
CONFIG_NLS_ISO8859_6=y
# CONFIG_NLS_ISO8859_7 is not set
CONFIG_NLS_ISO8859_9=y
# CONFIG_NLS_ISO8859_13 is not set
CONFIG_NLS_ISO8859_14=y
CONFIG_NLS_ISO8859_15=y
CONFIG_NLS_KOI8_R=y
CONFIG_NLS_KOI8_U=y
CONFIG_NLS_MAC_ROMAN=y
CONFIG_NLS_MAC_CELTIC=y
CONFIG_NLS_MAC_CENTEURO=y
CONFIG_NLS_MAC_CROATIAN=y
CONFIG_NLS_MAC_CYRILLIC=y
CONFIG_NLS_MAC_GAELIC=y
CONFIG_NLS_MAC_GREEK=y
CONFIG_NLS_MAC_ICELAND=y
# CONFIG_NLS_MAC_INUIT is not set
# CONFIG_NLS_MAC_ROMANIAN is not set
CONFIG_NLS_MAC_TURKISH=y
CONFIG_NLS_UTF8=y
# CONFIG_UNICODE is not set
CONFIG_IO_WQ=y
# end of File systems
#
# Security options
#
CONFIG_KEYS=y
# CONFIG_KEYS_REQUEST_CACHE is not set
# CONFIG_PERSISTENT_KEYRINGS is not set
CONFIG_TRUSTED_KEYS=y
#
# No trust source selected!
#
CONFIG_ENCRYPTED_KEYS=y
CONFIG_USER_DECRYPTED_DATA=y
CONFIG_KEY_DH_OPERATIONS=y
# CONFIG_SECURITY_DMESG_RESTRICT is not set
# CONFIG_SECURITYFS is not set
# CONFIG_HARDENED_USERCOPY is not set
# CONFIG_FORTIFY_SOURCE is not set
CONFIG_STATIC_USERMODEHELPER=y
CONFIG_STATIC_USERMODEHELPER_PATH="/sbin/usermode-helper"
# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set
CONFIG_DEFAULT_SECURITY_DAC=y
CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,bpf"
#
# Kernel hardening options
#
#
# Memory initialization
#
CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y
CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_BARE=y
CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y
# CONFIG_INIT_STACK_NONE is not set
# CONFIG_INIT_STACK_ALL_PATTERN is not set
CONFIG_INIT_STACK_ALL_ZERO=y
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
CONFIG_INIT_ON_FREE_DEFAULT_ON=y
# CONFIG_INIT_MLOCKED_ON_FREE_DEFAULT_ON is not set
CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y
# CONFIG_ZERO_CALL_USED_REGS is not set
# end of Memory initialization
#
# Hardening of kernel data structures
#
CONFIG_LIST_HARDENED=y
# CONFIG_BUG_ON_DATA_CORRUPTION is not set
# end of Hardening of kernel data structures
CONFIG_RANDSTRUCT_NONE=y
# end of Kernel hardening options
# end of Security options
CONFIG_XOR_BLOCKS=y
CONFIG_CRYPTO=y
#
# Crypto core or helper
#
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_SIG2=y
CONFIG_CRYPTO_SKCIPHER=y
CONFIG_CRYPTO_SKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_RNG_DEFAULT=y
CONFIG_CRYPTO_AKCIPHER2=y
CONFIG_CRYPTO_AKCIPHER=y
CONFIG_CRYPTO_KPP2=y
CONFIG_CRYPTO_KPP=y
CONFIG_CRYPTO_ACOMP2=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
CONFIG_CRYPTO_NULL=y
CONFIG_CRYPTO_NULL2=y
CONFIG_CRYPTO_PCRYPT=y
CONFIG_CRYPTO_CRYPTD=y
CONFIG_CRYPTO_AUTHENC=y
CONFIG_CRYPTO_TEST=y
CONFIG_CRYPTO_ENGINE=y
# end of Crypto core or helper
#
# Public-key cryptography
#
CONFIG_CRYPTO_RSA=y
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_ECC=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
# CONFIG_CRYPTO_ECRDSA is not set
# CONFIG_CRYPTO_SM2 is not set
# CONFIG_CRYPTO_CURVE25519 is not set
# end of Public-key cryptography
#
# Block ciphers
#
CONFIG_CRYPTO_AES=y
# CONFIG_CRYPTO_AES_TI is not set
CONFIG_CRYPTO_ARIA=y
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_CAMELLIA is not set
CONFIG_CRYPTO_CAST_COMMON=y
# CONFIG_CRYPTO_CAST5 is not set
CONFIG_CRYPTO_CAST6=y
# CONFIG_CRYPTO_DES is not set
# CONFIG_CRYPTO_FCRYPT is not set
CONFIG_CRYPTO_SERPENT=y
CONFIG_CRYPTO_SM4=y
CONFIG_CRYPTO_SM4_GENERIC=y
CONFIG_CRYPTO_TWOFISH=y
CONFIG_CRYPTO_TWOFISH_COMMON=y
# end of Block ciphers
#
# Length-preserving ciphers and modes
#
# CONFIG_CRYPTO_ADIANTUM is not set
CONFIG_CRYPTO_CHACHA20=y
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=y
CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_HCTR2=y
CONFIG_CRYPTO_KEYWRAP=y
CONFIG_CRYPTO_LRW=y
CONFIG_CRYPTO_PCBC=y
CONFIG_CRYPTO_XCTR=y
CONFIG_CRYPTO_XTS=y
# end of Length-preserving ciphers and modes
#
# AEAD (authenticated encryption with associated data) ciphers
#
# CONFIG_CRYPTO_AEGIS128 is not set
CONFIG_CRYPTO_CHACHA20POLY1305=y
CONFIG_CRYPTO_CCM=y
CONFIG_CRYPTO_GCM=y
# CONFIG_CRYPTO_SEQIV is not set
# CONFIG_CRYPTO_ECHAINIV is not set
CONFIG_CRYPTO_ESSIV=y
# end of AEAD (authenticated encryption with associated data) ciphers
#
# Hashes, digests, and MACs
#
CONFIG_CRYPTO_BLAKE2B=y
CONFIG_CRYPTO_CMAC=y
CONFIG_CRYPTO_GHASH=y
CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=y
CONFIG_CRYPTO_POLYVAL=y
CONFIG_CRYPTO_POLY1305=y
# CONFIG_CRYPTO_RMD160 is not set
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=y
CONFIG_CRYPTO_SHA3=y
CONFIG_CRYPTO_SM3=y
CONFIG_CRYPTO_SM3_GENERIC=y
CONFIG_CRYPTO_STREEBOG=y
# CONFIG_CRYPTO_VMAC is not set
CONFIG_CRYPTO_WP512=y
CONFIG_CRYPTO_XCBC=y
CONFIG_CRYPTO_XXHASH=y
# end of Hashes, digests, and MACs
#
# CRCs (cyclic redundancy checks)
#
CONFIG_CRYPTO_CRC32C=y
CONFIG_CRYPTO_CRC32=y
CONFIG_CRYPTO_CRCT10DIF=y
CONFIG_CRYPTO_CRC64_ROCKSOFT=y
# end of CRCs (cyclic redundancy checks)
#
# Compression
#
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_LZO=y
# CONFIG_CRYPTO_842 is not set
# CONFIG_CRYPTO_LZ4 is not set
# CONFIG_CRYPTO_LZ4HC is not set
CONFIG_CRYPTO_ZSTD=y
# end of Compression
#
# Random number generation
#
CONFIG_CRYPTO_ANSI_CPRNG=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_DRBG_HMAC=y
# CONFIG_CRYPTO_DRBG_HASH is not set
CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG=y
CONFIG_CRYPTO_JITTERENTROPY=y
CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKS=64
CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE=32
CONFIG_CRYPTO_JITTERENTROPY_OSR=1
CONFIG_CRYPTO_KDF800108_CTR=y
# end of Random number generation
#
# Userspace interface
#
# end of Userspace interface
#
# Accelerated Cryptographic Algorithms for CPU (s390)
#
# CONFIG_CRYPTO_CRC32_S390 is not set
CONFIG_CRYPTO_SHA512_S390=y
# CONFIG_CRYPTO_SHA1_S390 is not set
CONFIG_CRYPTO_SHA256_S390=y
CONFIG_CRYPTO_SHA3_256_S390=y
CONFIG_CRYPTO_SHA3_512_S390=y
# CONFIG_CRYPTO_GHASH_S390 is not set
# CONFIG_CRYPTO_AES_S390 is not set
CONFIG_CRYPTO_DES_S390=y
# CONFIG_CRYPTO_CHACHA_S390 is not set
# end of Accelerated Cryptographic Algorithms for CPU (s390)
CONFIG_CRYPTO_HW=y
CONFIG_ZCRYPT=y
# CONFIG_PKEY is not set
CONFIG_S390_PRNG=y
CONFIG_CRYPTO_DEV_ATMEL_I2C=y
CONFIG_CRYPTO_DEV_ATMEL_ECC=y
CONFIG_CRYPTO_DEV_ATMEL_SHA204A=y
CONFIG_CRYPTO_DEV_VIRTIO=y
# CONFIG_ASYMMETRIC_KEY_TYPE is not set
#
# Certificates for signature checking
#
# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set
# end of Certificates for signature checking
CONFIG_BINARY_PRINTF=y
#
# Library routines
#
CONFIG_RAID6_PQ=y
# CONFIG_RAID6_PQ_BENCHMARK is not set
CONFIG_LINEAR_RANGES=y
# CONFIG_PACKING is not set
CONFIG_BITREVERSE=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_CORDIC=y
CONFIG_PRIME_NUMBERS=y
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
CONFIG_ARCH_USE_SYM_ANNOTATIONS=y
#
# Crypto library routines
#
CONFIG_CRYPTO_LIB_UTILS=y
CONFIG_CRYPTO_LIB_AES=y
CONFIG_CRYPTO_LIB_GF128MUL=y
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y
CONFIG_CRYPTO_LIB_CHACHA=y
CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=y
CONFIG_CRYPTO_LIB_CURVE25519=y
CONFIG_CRYPTO_LIB_DES=y
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
CONFIG_CRYPTO_LIB_POLY1305_GENERIC=y
CONFIG_CRYPTO_LIB_POLY1305=y
CONFIG_CRYPTO_LIB_CHACHA20POLY1305=y
CONFIG_CRYPTO_LIB_SHA1=y
CONFIG_CRYPTO_LIB_SHA256=y
# end of Crypto library routines
CONFIG_CRC_CCITT=y
CONFIG_CRC16=y
CONFIG_CRC_T10DIF=y
CONFIG_CRC64_ROCKSOFT=y
CONFIG_CRC_ITU_T=y
CONFIG_CRC32=y
# CONFIG_CRC32_SELFTEST is not set
CONFIG_CRC32_SLICEBY8=y
# CONFIG_CRC32_SLICEBY4 is not set
# CONFIG_CRC32_SARWATE is not set
# CONFIG_CRC32_BIT is not set
CONFIG_CRC64=y
CONFIG_CRC4=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=y
CONFIG_CRC8=y
CONFIG_XXHASH=y
CONFIG_RANDOM32_SELFTEST=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_DFLTCC=y
CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
CONFIG_LZ4_COMPRESS=y
CONFIG_LZ4HC_COMPRESS=y
CONFIG_LZ4_DECOMPRESS=y
CONFIG_ZSTD_COMMON=y
CONFIG_ZSTD_COMPRESS=y
CONFIG_ZSTD_DECOMPRESS=y
CONFIG_XZ_DEC=y
CONFIG_XZ_DEC_X86=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_ARM=y
# CONFIG_XZ_DEC_ARMTHUMB is not set
# CONFIG_XZ_DEC_SPARC is not set
CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_BCJ=y
CONFIG_XZ_DEC_TEST=y
CONFIG_GENERIC_ALLOCATOR=y
CONFIG_BCH=y
CONFIG_INTERVAL_TREE=y
CONFIG_XARRAY_MULTI=y
CONFIG_ASSOCIATIVE_ARRAY=y
CONFIG_CLOSURES=y
CONFIG_HAS_DMA=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_ARCH_HAS_FORCE_DMA_UNENCRYPTED=y
CONFIG_SWIOTLB=y
CONFIG_SWIOTLB_DYNAMIC=y
CONFIG_DMA_NEED_SYNC=y
# CONFIG_DMA_API_DEBUG is not set
CONFIG_DMA_MAP_BENCHMARK=y
CONFIG_SGL_ALLOC=y
CONFIG_CPUMASK_OFFSTACK=y
# CONFIG_FORCE_NR_CPUS is not set
CONFIG_GLOB=y
CONFIG_GLOB_SELFTEST=y
CONFIG_CLZ_TAB=y
CONFIG_IRQ_POLL=y
CONFIG_MPILIB=y
CONFIG_HAVE_GENERIC_VDSO=y
CONFIG_GENERIC_GETTIMEOFDAY=y
CONFIG_GENERIC_VDSO_TIME_NS=y
CONFIG_SG_POOL=y
CONFIG_ARCH_STACKWALK=y
CONFIG_STACKDEPOT=y
CONFIG_STACKDEPOT_ALWAYS_INIT=y
CONFIG_STACKDEPOT_MAX_FRAMES=64
CONFIG_SBITMAP=y
# CONFIG_LWQ_TEST is not set
# end of Library routines
#
# Kernel hacking
#
#
# printk and dmesg options
#
# CONFIG_PRINTK_TIME is not set
CONFIG_PRINTK_CALLER=y
# CONFIG_STACKTRACE_BUILD_ID is not set
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
CONFIG_CONSOLE_LOGLEVEL_QUIET=4
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_DYNAMIC_DEBUG is not set
CONFIG_DYNAMIC_DEBUG_CORE=y
CONFIG_SYMBOLIC_ERRNAME=y
# end of printk and dmesg options
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_MISC=y
#
# Compile-time checks and compiler options
#
CONFIG_AS_HAS_NON_CONST_ULEB128=y
CONFIG_DEBUG_INFO_NONE=y
# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set
# CONFIG_DEBUG_INFO_DWARF4 is not set
# CONFIG_DEBUG_INFO_DWARF5 is not set
CONFIG_FRAME_WARN=0
# CONFIG_STRIP_ASM_SYMS is not set
# CONFIG_READABLE_ASM is not set
CONFIG_HEADERS_INSTALL=y
CONFIG_DEBUG_SECTION_MISMATCH=y
CONFIG_SECTION_MISMATCH_WARN_ONLY=y
CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B=y
CONFIG_VMLINUX_MAP=y
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
# end of Compile-time checks and compiler options
#
# Generic Kernel Debugging Instruments
#
# CONFIG_MAGIC_SYSRQ is not set
CONFIG_DEBUG_FS=y
CONFIG_DEBUG_FS_ALLOW_ALL=y
# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set
# CONFIG_DEBUG_FS_ALLOW_NONE is not set
CONFIG_ARCH_HAS_UBSAN=y
# CONFIG_UBSAN is not set
CONFIG_HAVE_ARCH_KCSAN=y
CONFIG_HAVE_KCSAN_COMPILER=y
CONFIG_KCSAN=y
CONFIG_KCSAN_SELFTEST=y
CONFIG_KCSAN_EARLY_ENABLE=y
CONFIG_KCSAN_NUM_WATCHPOINTS=64
CONFIG_KCSAN_UDELAY_TASK=80
CONFIG_KCSAN_UDELAY_INTERRUPT=20
CONFIG_KCSAN_DELAY_RANDOMIZE=y
CONFIG_KCSAN_SKIP_WATCH=4000
# CONFIG_KCSAN_SKIP_WATCH_RANDOMIZE is not set
CONFIG_KCSAN_INTERRUPT_WATCHER=y
CONFIG_KCSAN_REPORT_ONCE_IN_MS=3000
CONFIG_KCSAN_REPORT_RACE_UNKNOWN_ORIGIN=y
CONFIG_KCSAN_STRICT=y
CONFIG_KCSAN_WEAK_MEMORY=y
# end of Generic Kernel Debugging Instruments
#
# Networking Debugging
#
# end of Networking Debugging
#
# Memory Debugging
#
CONFIG_PAGE_EXTENSION=y
# CONFIG_DEBUG_PAGEALLOC is not set
CONFIG_PAGE_OWNER=y
CONFIG_PAGE_POISONING=y
# CONFIG_DEBUG_RODATA_TEST is not set
CONFIG_ARCH_HAS_DEBUG_WX=y
CONFIG_DEBUG_WX=y
CONFIG_GENERIC_PTDUMP=y
CONFIG_PTDUMP_CORE=y
# CONFIG_PTDUMP_DEBUGFS is not set
CONFIG_HAVE_DEBUG_KMEMLEAK=y
CONFIG_DEBUG_KMEMLEAK=y
CONFIG_DEBUG_KMEMLEAK_MEM_POOL_SIZE=16000
# CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF is not set
# CONFIG_DEBUG_KMEMLEAK_AUTO_SCAN is not set
CONFIG_PER_VMA_LOCK_STATS=y
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SHRINKER_DEBUG is not set
CONFIG_DEBUG_STACK_USAGE=y
# CONFIG_SCHED_STACK_END_CHECK is not set
CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_VM_PGTABLE is not set
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
CONFIG_DEBUG_VIRTUAL=y
# CONFIG_DEBUG_MEMORY_INIT is not set
CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=y
CONFIG_DEBUG_PER_CPU_MAPS=y
CONFIG_CODE_TAGGING=y
CONFIG_MEM_ALLOC_PROFILING=y
CONFIG_MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT=y
# CONFIG_MEM_ALLOC_PROFILING_DEBUG is not set
CONFIG_HAVE_ARCH_KASAN=y
CONFIG_HAVE_ARCH_KASAN_VMALLOC=y
CONFIG_CC_HAS_KASAN_GENERIC=y
CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
CONFIG_HAVE_ARCH_KFENCE=y
CONFIG_KFENCE=y
CONFIG_KFENCE_SAMPLE_INTERVAL=100
CONFIG_KFENCE_NUM_OBJECTS=255
# CONFIG_KFENCE_DEFERRABLE is not set
# CONFIG_KFENCE_STATIC_KEYS is not set
CONFIG_KFENCE_STRESS_TEST_FAULTS=0
# end of Memory Debugging
# CONFIG_DEBUG_SHIRQ is not set
#
# Debug Oops, Lockups and Hangs
#
# CONFIG_PANIC_ON_OOPS is not set
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y
# CONFIG_DETECT_HUNG_TASK is not set
CONFIG_WQ_WATCHDOG=y
CONFIG_WQ_CPU_INTENSIVE_REPORT=y
# end of Debug Oops, Lockups and Hangs
#
# Scheduler Debugging
#
CONFIG_SCHED_DEBUG=y
CONFIG_SCHED_INFO=y
CONFIG_SCHEDSTATS=y
# end of Scheduler Debugging
CONFIG_DEBUG_TIMEKEEPING=y
#
# Lock Debugging (spinlocks, mutexes, etc...)
#
CONFIG_LOCK_DEBUGGING_SUPPORT=y
# CONFIG_PROVE_LOCKING is not set
# CONFIG_LOCK_STAT is not set
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
# CONFIG_DEBUG_RWSEMS is not set
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_LOCKDEP=y
CONFIG_LOCKDEP_BITS=15
CONFIG_LOCKDEP_CHAINS_BITS=16
CONFIG_LOCKDEP_STACK_TRACE_BITS=19
CONFIG_LOCKDEP_STACK_TRACE_HASH_BITS=14
CONFIG_LOCKDEP_CIRCULAR_QUEUE_BITS=12
# CONFIG_DEBUG_LOCKDEP is not set
CONFIG_DEBUG_ATOMIC_SLEEP=y
CONFIG_DEBUG_LOCKING_API_SELFTESTS=y
# CONFIG_LOCK_TORTURE_TEST is not set
CONFIG_WW_MUTEX_SELFTEST=y
CONFIG_SCF_TORTURE_TEST=y
# CONFIG_CSD_LOCK_WAIT_DEBUG is not set
# end of Lock Debugging (spinlocks, mutexes, etc...)
# CONFIG_DEBUG_IRQFLAGS is not set
CONFIG_STACKTRACE=y
# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
CONFIG_DEBUG_KOBJECT=y
#
# Debug kernel data structures
#
CONFIG_DEBUG_LIST=y
# CONFIG_DEBUG_PLIST is not set
# CONFIG_DEBUG_SG is not set
CONFIG_DEBUG_NOTIFIERS=y
CONFIG_DEBUG_CLOSURES=y
# CONFIG_DEBUG_MAPLE_TREE is not set
# end of Debug kernel data structures
#
# RCU Debugging
#
CONFIG_TORTURE_TEST=y
# CONFIG_RCU_SCALE_TEST is not set
CONFIG_RCU_TORTURE_TEST=y
# CONFIG_RCU_REF_SCALE_TEST is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=21
CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0
CONFIG_RCU_CPU_STALL_CPUTIME=y
CONFIG_RCU_TRACE=y
# CONFIG_RCU_EQS_DEBUG is not set
# end of RCU Debugging
# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
CONFIG_CPU_HOTPLUG_STATE_CONTROL=y
# CONFIG_LATENCYTOP is not set
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_HAVE_RETHOOK=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_FENTRY=y
CONFIG_HAVE_NOP_MCOUNT=y
CONFIG_TRACE_CLOCK=y
CONFIG_TRACING_SUPPORT=y
# CONFIG_FTRACE is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y
CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y
CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
CONFIG_STRICT_DEVMEM=y
# CONFIG_IO_STRICT_DEVMEM is not set
#
# s390 Debugging
#
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_ENTRY=y
CONFIG_CIO_INJECT=y
# end of s390 Debugging
#
# Kernel Testing and Coverage
#
CONFIG_KUNIT=y
# CONFIG_KUNIT_DEBUGFS is not set
CONFIG_KUNIT_FAULT_TEST=y
CONFIG_KUNIT_TEST=y
CONFIG_KUNIT_EXAMPLE_TEST=y
# CONFIG_KUNIT_ALL_TESTS is not set
CONFIG_KUNIT_DEFAULT_ENABLED=y
CONFIG_NOTIFIER_ERROR_INJECTION=y
CONFIG_FAULT_INJECTION=y
# CONFIG_FAILSLAB is not set
CONFIG_FAIL_PAGE_ALLOC=y
# CONFIG_FAULT_INJECTION_USERCOPY is not set
CONFIG_FAIL_MAKE_REQUEST=y
CONFIG_FAIL_IO_TIMEOUT=y
CONFIG_FAULT_INJECTION_DEBUG_FS=y
# CONFIG_FAULT_INJECTION_CONFIGFS is not set
# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set
CONFIG_ARCH_HAS_KCOV=y
CONFIG_CC_HAS_SANCOV_TRACE_PC=y
# CONFIG_KCOV is not set
# CONFIG_RUNTIME_TESTING_MENU is not set
# end of Kernel Testing and Coverage
#
# Rust hacking
#
# end of Rust hacking
# end of Kernel hacking
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 6/9] dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc
2024-06-27 7:41 ` Krzysztof Kozlowski
@ 2024-06-30 22:12 ` Chris Packham
2024-07-01 3:02 ` Chris Packham
0 siblings, 1 reply; 32+ messages in thread
From: Chris Packham @ 2024-06-30 22:12 UTC (permalink / raw)
To: Krzysztof Kozlowski, tglx@linutronix.de, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org,
tsbogend@alpha.franken.de, daniel.lezcano@linaro.org,
paulburton@kernel.org, peterz@infradead.org,
mail@birger-koblitz.de, bert@biot.com, john@phrozen.org,
sander@svanheule.net
Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-mips@vger.kernel.org, kabel@kernel.org, ericwouds@gmail.com
On 27/06/24 19:41, Krzysztof Kozlowski wrote:
> On 27/06/2024 06:33, Chris Packham wrote:
>> Add a compatible string for the interrupt controller found on the
>> rtl930x SoCs. The interrupt controller has registers for VPE1 so these
>> are added as a second reg cell.
>>
>> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
>> ---
>>
>> Notes:
>> Changes in v3:
>> - Use items to describe the regs property
>> Changes in v2:
>> - Set reg:maxItems to 2 to allow for VPE1 registers on the rtl9300. Add
>> a condition to enforce the old limit on other SoCs.
>> - Connor and Krzysztof offered acks on v1 but I think the changes here
>> are big enough to void those.
>>
>> .../interrupt-controller/realtek,rtl-intc.yaml | 18 +++++++++++++++++-
>> 1 file changed, 17 insertions(+), 1 deletion(-)
>>
>> diff --git a/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml b/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml
>> index fb5593724059..d0e5bdf45d05 100644
>> --- a/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml
>> +++ b/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml
>> @@ -25,6 +25,7 @@ properties:
>> - items:
>> - enum:
>> - realtek,rtl8380-intc
>> + - realtek,rtl9300-intc
>> - const: realtek,rtl-intc
>> - const: realtek,rtl-intc
>> deprecated: true
>> @@ -35,7 +36,9 @@ properties:
>> const: 1
>>
>> reg:
>> - maxItems: 1
> Missing minItems (as testing would tell you)
Hmm I really did test this. Even now running
`make ARCH=mips O=build_mips
DT_SCHEMA_FILES=realtek,rtl-intc.yaml:realtek-rtl.yaml:realtek,otto-timer.yaml
clean dt_binding_check` doesn't seem to yield any complaints. Am I
testing this properly?
>
>> + items:
>> + - description: vpe0 registers
>> + - description: vpe1 registers
>>
>> interrupts:
>> minItems: 1
>> @@ -71,6 +74,19 @@ allOf:
>> else:
>> required:
>> - interrupts
>> + - if:
>> + properties:
>> + compatible:
>> + contains:
>> + const: realtek,rtl9300-intc
>> + then:
>> + properties:
>> + reg:
> Needed is: minItems: 2
>
>> + maxItems: 2
>> + else:
>> + properties:
>> + reg:
>> + maxItems: 1
>>
>> additionalProperties: false
>>
> Best regards,
> Krzysztof
>
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 8/9] mips: generic: add fdt fixup for Realtek reference board
2024-06-27 17:48 ` Rob Herring
@ 2024-06-30 22:39 ` Chris Packham
0 siblings, 0 replies; 32+ messages in thread
From: Chris Packham @ 2024-06-30 22:39 UTC (permalink / raw)
To: Rob Herring
Cc: tglx@linutronix.de, krzk+dt@kernel.org, conor+dt@kernel.org,
tsbogend@alpha.franken.de, daniel.lezcano@linaro.org,
paulburton@kernel.org, peterz@infradead.org,
mail@birger-koblitz.de, bert@biot.com, john@phrozen.org,
sander@svanheule.net, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, linux-mips@vger.kernel.org,
kabel@kernel.org, ericwouds@gmail.com
On 28/06/24 05:48, Rob Herring wrote:
> On Wed, Jun 26, 2024 at 10:33 PM Chris Packham
> <chris.packham@alliedtelesis.co.nz> wrote:
>> The bootloader used on the Realtek RTL9302C boards is an ancient vendor
>> fork of U-Boot that doesn't understand device trees. So to run a modern
>> kernel it is necessary use one of the APPENDED_DTB options.
>>
>> When appending the DTB the inintrd information, if present, needs to be
>> inserted into the /chosen device tree node. The bootloader provides the
>> initrd start/size via the firmware environment. Add a fdt fixup that
>> will update the device tree with the initrd information.
> Is this really specific to this board/soc?
Based on my sample size of 1 I can't say. I thought this was a quirk of
the realtek SDK version of U-Boot because it's based on something old
and dt unaware. I did think about putting this code in a more generic
place but in the end I went with something less invasive figuring it
could be expanded on later if needed.
> I think there are lots of MIPS boards in this state.
If anyone can confirm that I'd be happy to make the workaround kick in
if the fw_env has an initrd_start in it. I'm not sure if there is any
risk in that approach. I don't know how other mips boards are currently
booting using the generic board support.
> The code to handle all the possible
> combinations of bootloader handoff information and sources of DTB is
> quite the mess. Just for DTB source you have bootloader DTB, appended
> DTB, or built-in DTB (and there's even logic if you have multiple of
> those). Contrast that to arm32 ('the zoo"), where you have 2 choices:
> bootloader DTB or appended DTB with legacy bootloader parameters
> transferred to DTB. All the uglyness is contained and the kernel boot
> deals with 1 possibility. </rant>
>
>> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
>> ---
>>
>> Notes:
>> Changes in v3:
>> - None
>> Changes in v2:
>> - update compatible string
>>
>> arch/mips/generic/Makefile | 1 +
>> arch/mips/generic/board-realtek.c | 81 +++++++++++++++++++++++++++++++
>> 2 files changed, 82 insertions(+)
>> create mode 100644 arch/mips/generic/board-realtek.c
>>
>> diff --git a/arch/mips/generic/Makefile b/arch/mips/generic/Makefile
>> index 56011d738441..ea0e4ad5e600 100644
>> --- a/arch/mips/generic/Makefile
>> +++ b/arch/mips/generic/Makefile
>> @@ -13,3 +13,4 @@ obj-$(CONFIG_LEGACY_BOARD_SEAD3) += board-sead3.o
>> obj-$(CONFIG_LEGACY_BOARD_OCELOT) += board-ocelot.o
>> obj-$(CONFIG_MACH_INGENIC) += board-ingenic.o
>> obj-$(CONFIG_VIRT_BOARD_RANCHU) += board-ranchu.o
>> +obj-$(CONFIG_MACH_REALTEK_RTL) += board-realtek.o
>> diff --git a/arch/mips/generic/board-realtek.c b/arch/mips/generic/board-realtek.c
>> new file mode 100644
>> index 000000000000..cd83fbf1968c
>> --- /dev/null
>> +++ b/arch/mips/generic/board-realtek.c
>> @@ -0,0 +1,81 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
> Kernel license by default is GPL-2.0-only. Why do something different?
Copy and paste from the existing arch/mips/generic/board-*.c. I'm fine
with making it GPL-2.0-only
>> +/*
>> + * Copyright (C) 2024 Allied Telesis
>> + */
>> +
>> +#include <linux/errno.h>
>> +#include <linux/libfdt.h>
>> +#include <linux/of_address.h>
> You aren't using this header.
Ack.
>> +#include <linux/types.h>
>> +
>> +#include <asm/fw/fw.h>
>> +#include <asm/machine.h>
>> +
>> +static __init int realtek_add_initrd(void *fdt)
>> +{
>> + int node, err;
>> + u32 start, size;
>> +
>> + node = fdt_path_offset(fdt, "/chosen");
>> + if (node < 0) {
>> + pr_err("/chosen node not found\n");
>> + return -ENOENT;
>> + }
>> +
>> + start = fw_getenvl("initrd_start");
>> + size = fw_getenvl("initrd_size");
>> +
>> + if (start == 0 && size == 0)
>> + return 0;
>> +
>> + pr_info("Adding initrd info from environment\n");
>> +
>> + err = fdt_setprop_u32(fdt, node, "linux,initrd-start", start);
>> + if (err) {
>> + pr_err("unable to set initrd-start: %d\n", err);
>> + return err;
>> + }
>> +
>> + err = fdt_setprop_u32(fdt, node, "linux,initrd-end", start + size);
>> + if (err) {
>> + pr_err("unable to set initrd-end: %d\n", err);
>> + return err;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> +static const struct mips_fdt_fixup realtek_fdt_fixups[] __initconst = {
>> + { realtek_add_initrd, "add initrd" },
>> + {},
>> +};
>> +
>> +static __init const void *realtek_fixup_fdt(const void *fdt, const void *match_data)
>> +{
>> + static unsigned char fdt_buf[16 << 10] __initdata;
>> + int err;
>> +
>> + if (fdt_check_header(fdt))
>> + panic("Corrupt DT");
>> +
>> + fw_init_cmdline();
>> +
>> + err = apply_mips_fdt_fixups(fdt_buf, sizeof(fdt_buf), fdt, realtek_fdt_fixups);
>> + if (err)
>> + panic("Unable to fixup FDT: %d", err);
>> +
>> + return fdt_buf;
>> +
>> +}
>> +
>> +static const struct of_device_id realtek_of_match[] __initconst = {
>> + {
>> + .compatible = "realtek,rtl9302",
>> + },
>> + {}
>> +};
>> +
>> +MIPS_MACHINE(realtek) = {
>> + .matches = realtek_of_match,
>> + .fixup_fdt = realtek_fixup_fdt,
>> +};
>> --
>> 2.45.2
>>
>>
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 0/9] mips: Support for RTL9302C
2024-06-27 14:42 ` [PATCH v3 0/9] mips: Support for RTL9302C Rob Herring
@ 2024-06-30 23:43 ` Chris Packham
2024-07-01 3:26 ` Chris Packham
0 siblings, 1 reply; 32+ messages in thread
From: Chris Packham @ 2024-06-30 23:43 UTC (permalink / raw)
To: Rob Herring
Cc: tglx@linutronix.de, krzk+dt@kernel.org, conor+dt@kernel.org,
tsbogend@alpha.franken.de, daniel.lezcano@linaro.org,
paulburton@kernel.org, peterz@infradead.org,
mail@birger-koblitz.de, bert@biot.com, john@phrozen.org,
sander@svanheule.net, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, linux-mips@vger.kernel.org,
kabel@kernel.org, ericwouds@gmail.com
On 28/06/24 02:42, Rob Herring wrote:
> On Wed, Jun 26, 2024 at 10:33 PM Chris Packham
> <chris.packham@alliedtelesis.co.nz> wrote:
>> This series adds basic support for the RTL9302C reference board. Currently the
>> focus is on the CPU block stuff. I hope to get around to the DSA switch driver
>> eventually but this is a small start that lets me boot a mainline kernel on the
>> board I have. I initialiy started with code from openwrt but have paired it
>> down to just the clocksource driver and devicetree.
> Your emails are being sent as quoted-printable encoding which is
> generally preferred to be avoided on maillists (as is base64).
> git-send-email should normally use 8-bit encoding, but the man page
> indicates QP may be used if there are carriage returns (there
> shouldn't be).
Hmm here's the output from when I sent this series.
Subject: [PATCH v3 0/9] mips: Support for RTL9302C
Date: Thu, 27 Jun 2024 16:33:08 +1200
Message-ID: <20240627043317.3751996-1-chris.packham@alliedtelesis.co.nz>
X-Mailer: git-send-email 2.45.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
All the patches are also 8bit. So I think git chose the right thing.
I do keep needing to convince Thunderbird to send my replies as plain
text. Occasionally I forget and vger complains at me.
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 7/9] clocksource: realtek: Add timer driver for rtl-otto platforms
2024-06-29 21:03 ` Sander Vanheule
@ 2024-07-01 2:07 ` Chris Packham
0 siblings, 0 replies; 32+ messages in thread
From: Chris Packham @ 2024-07-01 2:07 UTC (permalink / raw)
To: Sander Vanheule, tglx@linutronix.de, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org,
tsbogend@alpha.franken.de, daniel.lezcano@linaro.org,
paulburton@kernel.org, peterz@infradead.org,
mail@birger-koblitz.de, bert@biot.com, john@phrozen.org
Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-mips@vger.kernel.org, kabel@kernel.org, ericwouds@gmail.com,
Markus Stockhausen
On 30/06/24 09:03, Sander Vanheule wrote:
> Hi Chris,
>
> On Thu, 2024-06-27 at 16:33 +1200, Chris Packham wrote:
>> The timer/counter block on the Realtek SoCs provides up to 5 timers. It
>> also includes a watchdog timer but this isn't being used currently (it
>> will be added as a separate wdt driver).
> Do you mean the watchdog timer supported by drivers/watchdog/realtek_otto_wdt.c? Or are
> you referring to another watchdog timer?
Yes realtek_otto_wdt.c. I thought that was only on openwrt but looks
like you've already landed that one. I'll reword my message to reflect that.
>> One timer will be used per CPU as a local clock event generator. An
>> additional timer will be used as an overal stable clocksource.
>>
>> Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
>> Signed-off-by: Sander Vanheule <sander@svanheule.net>
>> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
>> ---
> For reference, I submitted a driver for the same hardware back in 2022, but didn't manage
> to follow up to finalize the submission:
>
> https://lore.kernel.org/all/cover.1642369117.git.sander@svanheule.net/
OK thanks for the link. I'll try and make sure I'm not rehashing things
that have already been discussed.
>> +
>> +/* Module initialization part. */
>> +static DEFINE_PER_CPU(struct timer_of, rttm_to) = {
>> + .flags = TIMER_OF_BASE | TIMER_OF_CLOCK |
>> TIMER_OF_IRQ,
>> + .of_irq = {
>> + .flags = IRQF_PERCPU | IRQF_TIMER,
> In the original review of this code, I had some doubts about the use of IRQF_PERCPU. Maybe
> the people in Cc can shed some light on this.
>
> If I understand correctly, the SoC interrupts these timers use are not per-cpu interrupts.
> (For comparison, AFAICT the MIPS CPU interrupts are)
I'm not exactly sure either and I've only got the single core RTL9302 to
test with so if there were some difference I may not notice. Eventually
we're planning a RTL931x based board so that may be something I can
check then.
>> + .handler = rttm_timer_interrupt,
>> + },
>> + .clkevt = {
>> + .rating = 400,
>> + .features = CLOCK_EVT_FEAT_PERIODIC |
>> CLOCK_EVT_FEAT_ONESHOT,
> If the use of IRQF_PERCPU is appropriate, I wonder if the driver should also use
> CLOCK_EVT_FEAT_PERCPU.
>
>
> Best,
> Sander
>
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 5/9] dt-bindings: timer: Add schema for realtek,otto-timer
2024-06-29 20:40 ` Sander Vanheule
@ 2024-07-01 2:15 ` Chris Packham
0 siblings, 0 replies; 32+ messages in thread
From: Chris Packham @ 2024-07-01 2:15 UTC (permalink / raw)
To: Sander Vanheule, tglx@linutronix.de, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org,
tsbogend@alpha.franken.de, daniel.lezcano@linaro.org,
paulburton@kernel.org, peterz@infradead.org,
mail@birger-koblitz.de, bert@biot.com, john@phrozen.org
Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-mips@vger.kernel.org, kabel@kernel.org, ericwouds@gmail.com
On 30/06/24 08:40, Sander Vanheule wrote:
> Hi Chris,
>
> Thanks for submitting these patches!
>
> On Thu, 2024-06-27 at 16:33 +1200, Chris Packham wrote:
>> Add the devicetree schema for the realtek,otto-timer present on a number
>> of Realtek SoCs.
>>
>> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
>> ---
> [...]
>
>> +
>> + reg:
>> + items:
>> + - description: timer0 registers
>> + - description: timer1 registers
>> + - description: timer2 registers
>> + - description: timer3 registers
>> + - description: timer4 registers
>> +
>> + clocks:
>> + maxItems: 1
>> +
>> + interrupts:
>> + items:
>> + - description: timer0 interrupt
>> + - description: timer1 interrupt
>> + - description: timer2 interrupt
>> + - description: timer3 interrupt
>> + - description: timer4 interrupt
> Instead of providing a (SoC dependent) number of reg and interrupt items, can't we just
> provide one reg+interrupt per timer and instantiate one block for however many timers the
> SoC has?
>
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + timer@3200 {
>> + compatible = "realtek,rtl9302-timer", "realtek,otto-timer";
>> + reg = <0x3200 0x10>, <0x3210 0x10>, <0x3220 0x10>,
>> + <0x3230 0x10>, <0x3240 0x10>;
>> +
>> + interrupt-parent = <&intc>;
>> + interrupts = <7>, <8>, <9>, <10>, <11>;
>> + clocks = <&lx_clk>;
>> + };
> So this would become:
> timer@3200 {
> compatible = ...
> reg = <0x3200 0x10>;
> interrupt-parent = <&intc>;
> interrupts = <7>;
> ...
> };
> timer@3210 {
> compatible = ...
> reg = <0x3210 0x10>;
> interrupt-parent = <&intc>;
> interrupts = <8>;
> ...
> };
> ...
>
> More verbose, but it also makes the binding a bit simpler. The driver can then still do
> whatever it wants with all the timers that are registered, although some more resource
> locking might be required.
I kind of prefer the single entry for the whole TCU. If we were to fold
the watchdog into this then we could have a single larger range that
covered all the timers similar to the ingenic,tcu. But that would
technically be a breaking change at this point.
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 6/9] dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc
2024-06-30 22:12 ` Chris Packham
@ 2024-07-01 3:02 ` Chris Packham
0 siblings, 0 replies; 32+ messages in thread
From: Chris Packham @ 2024-07-01 3:02 UTC (permalink / raw)
To: Krzysztof Kozlowski, tglx@linutronix.de, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org,
tsbogend@alpha.franken.de, daniel.lezcano@linaro.org,
paulburton@kernel.org, peterz@infradead.org,
mail@birger-koblitz.de, bert@biot.com, john@phrozen.org,
sander@svanheule.net
Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-mips@vger.kernel.org, kabel@kernel.org, ericwouds@gmail.com
On 1/07/24 10:12, Chris Packham wrote:
>
> On 27/06/24 19:41, Krzysztof Kozlowski wrote:
>> On 27/06/2024 06:33, Chris Packham wrote:
>>> Add a compatible string for the interrupt controller found on the
>>> rtl930x SoCs. The interrupt controller has registers for VPE1 so these
>>> are added as a second reg cell.
>>>
>>> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
>>> ---
>>>
>>> Notes:
>>> Changes in v3:
>>> - Use items to describe the regs property
>>> Changes in v2:
>>> - Set reg:maxItems to 2 to allow for VPE1 registers on the
>>> rtl9300. Add
>>> a condition to enforce the old limit on other SoCs.
>>> - Connor and Krzysztof offered acks on v1 but I think the
>>> changes here
>>> are big enough to void those.
>>>
>>> .../interrupt-controller/realtek,rtl-intc.yaml | 18
>>> +++++++++++++++++-
>>> 1 file changed, 17 insertions(+), 1 deletion(-)
>>>
>>> diff --git
>>> a/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml
>>> b/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml
>>>
>>> index fb5593724059..d0e5bdf45d05 100644
>>> ---
>>> a/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml
>>> +++
>>> b/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml
>>> @@ -25,6 +25,7 @@ properties:
>>> - items:
>>> - enum:
>>> - realtek,rtl8380-intc
>>> + - realtek,rtl9300-intc
>>> - const: realtek,rtl-intc
>>> - const: realtek,rtl-intc
>>> deprecated: true
>>> @@ -35,7 +36,9 @@ properties:
>>> const: 1
>>> reg:
>>> - maxItems: 1
>> Missing minItems (as testing would tell you)
>
> Hmm I really did test this. Even now running
>
> `make ARCH=mips O=build_mips
> DT_SCHEMA_FILES=realtek,rtl-intc.yaml:realtek-rtl.yaml:realtek,otto-timer.yaml
> clean dt_binding_check` doesn't seem to yield any complaints. Am I
> testing this properly?
Looks like there is a difference between
`DT_SCHEMA_FILES=realtek,rtl-intc.yaml` and
`DT_SCHEMA_FILES=realtek,rtl-intc.yaml:realtek-rtl.yaml:realtek,otto-timer.yaml`.
>
>
>>
>>> + items:
>>> + - description: vpe0 registers
>>> + - description: vpe1 registers
>>> interrupts:
>>> minItems: 1
>>> @@ -71,6 +74,19 @@ allOf:
>>> else:
>>> required:
>>> - interrupts
>>> + - if:
>>> + properties:
>>> + compatible:
>>> + contains:
>>> + const: realtek,rtl9300-intc
>>> + then:
>>> + properties:
>>> + reg:
>> Needed is: minItems: 2
>>
>>> + maxItems: 2
>>> + else:
>>> + properties:
>>> + reg:
>>> + maxItems: 1
>>> additionalProperties: false
>> Best regards,
>> Krzysztof
>>
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 0/9] mips: Support for RTL9302C
2024-06-30 23:43 ` Chris Packham
@ 2024-07-01 3:26 ` Chris Packham
0 siblings, 0 replies; 32+ messages in thread
From: Chris Packham @ 2024-07-01 3:26 UTC (permalink / raw)
To: Rob Herring
Cc: tglx@linutronix.de, krzk+dt@kernel.org, conor+dt@kernel.org,
tsbogend@alpha.franken.de, daniel.lezcano@linaro.org,
paulburton@kernel.org, peterz@infradead.org,
mail@birger-koblitz.de, bert@biot.com, john@phrozen.org,
sander@svanheule.net, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, linux-mips@vger.kernel.org,
kabel@kernel.org, ericwouds@gmail.com
On 1/07/24 11:43, Chris Packham wrote:
>
> On 28/06/24 02:42, Rob Herring wrote:
>> On Wed, Jun 26, 2024 at 10:33 PM Chris Packham
>> <chris.packham@alliedtelesis.co.nz> wrote:
>>> This series adds basic support for the RTL9302C reference board.
>>> Currently the
>>> focus is on the CPU block stuff. I hope to get around to the DSA
>>> switch driver
>>> eventually but this is a small start that lets me boot a mainline
>>> kernel on the
>>> board I have. I initialiy started with code from openwrt but have
>>> paired it
>>> down to just the clocksource driver and devicetree.
>> Your emails are being sent as quoted-printable encoding which is
>> generally preferred to be avoided on maillists (as is base64).
>> git-send-email should normally use 8-bit encoding, but the man page
>> indicates QP may be used if there are carriage returns (there
>> shouldn't be).
>
> Hmm here's the output from when I sent this series.
>
> Subject: [PATCH v3 0/9] mips: Support for RTL9302C
> Date: Thu, 27 Jun 2024 16:33:08 +1200
> Message-ID: <20240627043317.3751996-1-chris.packham@alliedtelesis.co.nz>
> X-Mailer: git-send-email 2.45.2
> MIME-Version: 1.0
> Content-Transfer-Encoding: 8bit
>
> All the patches are also 8bit. So I think git chose the right thing.
>
> I do keep needing to convince Thunderbird to send my replies as plain
> text. Occasionally I forget and vger complains at me.
I did a bit of digging. My replies are indeed being sent as
quoted-printable and get base64 encoded by the time they hit lore e.g.
https://lore.kernel.org/all/68a574c0-2775-4275-b590-b7f362ae3885@alliedtelesis.co.nz/raw
(not sure where that's happening).
There are some suggestions for older versions of Thunderbird but none of
the options exist for me. It seems I'm not the only one with an issue
https://www.reddit.com/r/Thunderbird/comments/18drd4p/how_to_set_contenttransferencoding/
I'll keep looking but if anyone knows how to tame Thunderbird that'd be
a great help.
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v3 7/9] clocksource: realtek: Add timer driver for rtl-otto platforms
2024-06-27 11:17 ` Marek Behún
@ 2024-07-01 4:41 ` Chris Packham
0 siblings, 0 replies; 32+ messages in thread
From: Chris Packham @ 2024-07-01 4:41 UTC (permalink / raw)
To: Marek Behún
Cc: tglx@linutronix.de, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, tsbogend@alpha.franken.de,
daniel.lezcano@linaro.org, paulburton@kernel.org,
peterz@infradead.org, mail@birger-koblitz.de, bert@biot.com,
john@phrozen.org, sander@svanheule.net,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-mips@vger.kernel.org, ericwouds@gmail.com,
Markus Stockhausen
On 27/06/24 23:17, Marek Behún wrote:
> On Thu, 27 Jun 2024 16:33:15 +1200
> Chris Packham <chris.packham@alliedtelesis.co.nz> wrote:
>
>> +/* Simple internal register functions */
>> +static inline void rttm_set_counter(void __iomem *base, unsigned int counter)
>> +{
>> + iowrite32(counter, base + RTTM_CNT);
> These require #include <asm/io.h>
linux/io.h I'm guessing.
>> +/* Aggregated control functions for kernel clock framework */
>> +#define RTTM_DEBUG(base) \
>> + pr_debug("------------- %d %p\n", \
>> + smp_processor_id(), base)
> #include <linux/printk.h>
ack
>> +static irqreturn_t rttm_timer_interrupt(int irq, void *dev_id)
>> +{
>> + struct clock_event_device *clkevt = dev_id;
>> + struct timer_of *to = to_timer_of(clkevt);
>> +
>> + rttm_ack_irq(to->of_base.base);
>> + RTTM_DEBUG(to->of_base.base);
>> + clkevt->event_handler(clkevt);
> Although you include "timer-of.h", which includes clockchips.h, please
> do also explicit #include <linux/clockchips.h>
>
>> + rttm_set_period(to->of_base.base, RTTM_TICKS_PER_SEC / HZ);
> HZ -> linux/jiffies.h, or maybe asm/param.h
ack
>> +static u64 rttm_read_clocksource(struct clocksource *cs)
>> +{
>> + struct rttm_cs *rcs = container_of(cs, struct rttm_cs, cs);
>> +
>> + return (u64)rttm_get_counter(rcs->to.of_base.base);
> Redundant cast to u64.
ack
>> + rttm_enable_timer(rcs->to.of_base.base, RTTM_CTRL_TIMER,
>> + rcs->to.of_clk.rate / RTTM_TICKS_PER_SEC);
> Is this correct? Sometimes it makes sense to use DIV_ROUND_CLOSEST, but
> maybe not here.
It's OK for me because the Lexra bus clock is 175mhz so plain division
works fine. The docs do say something about a configurable divisor but
the range seems fairly limited so I don't think there's a specific need
to use DIV_ROUND_CLOSEST.
>
>> +static u64 notrace rttm_read_clock(void)
>> +{
>> + return (u64)rttm_get_counter(rttm_cs.to.of_base.base);
> Redundant cast to u64.
ack
>> +static int __init rttm_probe(struct device_node *np)
>> +{
>> + int cpu, cpu_rollback;
> unsigned int?
ack
>> + struct timer_of *to;
>> + int clkidx = num_possible_cpus();
> linux/cpumask.h, unsigned int
ack
> Marek
^ permalink raw reply [flat|nested] 32+ messages in thread
end of thread, other threads:[~2024-07-01 4:41 UTC | newest]
Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-27 4:33 [PATCH v3 0/9] mips: Support for RTL9302C Chris Packham
2024-06-27 4:33 ` [PATCH v3 1/9] mips: dts: realtek: use "serial" instead of "uart" in node name Chris Packham
2024-06-27 10:59 ` Marek Behún
2024-06-27 4:33 ` [PATCH v3 2/9] mips: dts: realtek: add device_type property to cpu node Chris Packham
2024-06-27 11:01 ` Marek Behún
2024-06-27 4:33 ` [PATCH v3 3/9] dt-bindings: vendor-prefixes: Add Cameo Communications Chris Packham
2024-06-27 7:39 ` Krzysztof Kozlowski
2024-06-27 4:33 ` [PATCH v3 4/9] dt-bindings: mips: realtek: Add rtl930x-soc compatible Chris Packham
2024-06-27 7:39 ` Krzysztof Kozlowski
2024-06-27 4:33 ` [PATCH v3 5/9] dt-bindings: timer: Add schema for realtek,otto-timer Chris Packham
2024-06-27 7:40 ` Krzysztof Kozlowski
2024-06-29 20:40 ` Sander Vanheule
2024-07-01 2:15 ` Chris Packham
2024-06-27 4:33 ` [PATCH v3 6/9] dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc Chris Packham
2024-06-27 5:37 ` Rob Herring (Arm)
2024-06-27 7:41 ` Krzysztof Kozlowski
2024-06-30 22:12 ` Chris Packham
2024-07-01 3:02 ` Chris Packham
2024-06-27 4:33 ` [PATCH v3 7/9] clocksource: realtek: Add timer driver for rtl-otto platforms Chris Packham
2024-06-27 11:17 ` Marek Behún
2024-07-01 4:41 ` Chris Packham
2024-06-29 21:03 ` Sander Vanheule
2024-07-01 2:07 ` Chris Packham
2024-06-30 1:10 ` kernel test robot
2024-06-27 4:33 ` [PATCH v3 8/9] mips: generic: add fdt fixup for Realtek reference board Chris Packham
2024-06-27 11:19 ` Marek Behún
2024-06-27 17:48 ` Rob Herring
2024-06-30 22:39 ` Chris Packham
2024-06-27 4:33 ` [PATCH v3 9/9] mips: dts: realtek: Add RTL9302C board Chris Packham
2024-06-27 14:42 ` [PATCH v3 0/9] mips: Support for RTL9302C Rob Herring
2024-06-30 23:43 ` Chris Packham
2024-07-01 3:26 ` Chris Packham
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).