From 3e96de394ca0d426b2df6f63991057036b89e643 Mon Sep 17 00:00:00 2001 From: Alexey Charkov Date: Fri, 25 Apr 2025 19:02:22 +0400 Subject: [PATCH 1/4] dt-bindings: arm: vt8500: Add VIA APC Rock/Paper boards APC Rock is a development board based on WonderMedia WM8950 SoC released around 2013. Paper is the same as Rock but lacking a VGA port and shipped with a recycled cardboard case. While at that, put myself as the maintainer, given that Tony is unavailable as of lately. Acked-by: Conor Dooley Signed-off-by: Alexey Charkov Link: https://lore.kernel.org/r/20250425-apc_paper_binding-v5-1-3aef49e97332@gmail.com Signed-off-by: Krzysztof Kozlowski --- Documentation/devicetree/bindings/arm/vt8500.yaml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/arm/vt8500.yaml b/Documentation/devicetree/bindings/arm/vt8500.yaml index 5d5ad5a60451..fa47b8989bbf 100644 --- a/Documentation/devicetree/bindings/arm/vt8500.yaml +++ b/Documentation/devicetree/bindings/arm/vt8500.yaml @@ -7,14 +7,13 @@ $schema: http://devicetree.org/meta-schemas/core.yaml# title: VIA/Wondermedia VT8500 Platforms maintainers: - - Tony Prisk -description: test + - Alexey Charkov properties: $nodename: const: '/' compatible: - items: + oneOf: - enum: - via,vt8500 - wm,wm8505 @@ -22,4 +21,9 @@ properties: - wm,wm8750 - wm,wm8850 + - description: VIA APC Rock and Paper boards + items: + - const: via,apc-rock + - const: wm,wm8950 + additionalProperties: true From 22488d6bd17cbad9eeee70d64c888735b366167d Mon Sep 17 00:00:00 2001 From: Alexey Charkov Date: Fri, 25 Apr 2025 19:02:23 +0400 Subject: [PATCH 2/4] ARM: dts: vt8500: Add VIA APC Rock/Paper board APC Rock is a development board based on WonderMedia WM8590 released around 2013. Paper is the same board, but with the VGA port left unpopulated, and shipped with a recycled cardboard case Its hardware includes: * Single-core Cortex-A9 CPU at 800 MHz * 512MB DDR3 RAM * 4GB NAND flash * 8MB SPI NOR flash * ARM Mali-400 GPU * HDMI output (type A) capable of 1080p * VGA output (on Rock, but not on Paper) * 2x USB 2.0 type A * 1x USB 2.0 OTG (microUSB connector) * microSD slot * 10/100M Ethernet * 3.5mm minijack connector with combined headphones/mic * Half-height miniPCIe slot (with only USB 2.0 signals) Signed-off-by: Alexey Charkov Link: https://lore.kernel.org/r/20250425-apc_paper_binding-v5-2-3aef49e97332@gmail.com Signed-off-by: Krzysztof Kozlowski --- arch/arm/boot/dts/vt8500/Makefile | 3 ++- arch/arm/boot/dts/vt8500/wm8950-apc-rock.dts | 21 ++++++++++++++++++++ arch/arm/boot/dts/vt8500/wm8950.dtsi | 11 ++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 arch/arm/boot/dts/vt8500/wm8950-apc-rock.dts create mode 100644 arch/arm/boot/dts/vt8500/wm8950.dtsi diff --git a/arch/arm/boot/dts/vt8500/Makefile b/arch/arm/boot/dts/vt8500/Makefile index 255f4403af91..6fd29c41f366 100644 --- a/arch/arm/boot/dts/vt8500/Makefile +++ b/arch/arm/boot/dts/vt8500/Makefile @@ -4,4 +4,5 @@ dtb-$(CONFIG_ARCH_VT8500) += \ wm8505-ref.dtb \ wm8650-mid.dtb \ wm8750-apc8750.dtb \ - wm8850-w70v2.dtb + wm8850-w70v2.dtb \ + wm8950-apc-rock.dtb diff --git a/arch/arm/boot/dts/vt8500/wm8950-apc-rock.dts b/arch/arm/boot/dts/vt8500/wm8950-apc-rock.dts new file mode 100644 index 000000000000..58b3c8deb4f2 --- /dev/null +++ b/arch/arm/boot/dts/vt8500/wm8950-apc-rock.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2025 Alexey Charkov + */ + +/dts-v1/; +/include/ "wm8950.dtsi" + +/ { + model = "VIA APC Rock"; + compatible = "via,apc-rock", "wm,wm8950"; + + memory@0 { + device_type = "memory"; + reg = <0x0 0x20000000>; + }; +}; + +&uart0 { + status = "okay"; +}; diff --git a/arch/arm/boot/dts/vt8500/wm8950.dtsi b/arch/arm/boot/dts/vt8500/wm8950.dtsi new file mode 100644 index 000000000000..31fba05d3c3e --- /dev/null +++ b/arch/arm/boot/dts/vt8500/wm8950.dtsi @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2025 Alexey Charkov + */ + +/* No differences have been discovered vs. WM8850, but chip markings differ */ +/include/ "wm8850.dtsi" + +/ { + compatible = "wm,wm8950"; +}; From 7314374c8639ab64217fba522c0b4f0a4e6373f0 Mon Sep 17 00:00:00 2001 From: Alexey Charkov Date: Sat, 3 May 2025 15:52:33 +0400 Subject: [PATCH 3/4] ARM: dts: vt8500: add DT nodes for the system config ID register Every VIA/WonderMedia SoC has a 32-bit chip ID register at the MMIO address 0xd8120000. Add respective device tree nodes to let the system code access it at runtime for the selection of appropriate hardware quirks where needed. Signed-off-by: Alexey Charkov Link: https://lore.kernel.org/r/20250503-wmt-soc-driver-v3-3-2daa9056fa10@gmail.com Signed-off-by: Krzysztof Kozlowski --- arch/arm/boot/dts/vt8500/vt8500.dtsi | 5 +++++ arch/arm/boot/dts/vt8500/wm8505.dtsi | 5 +++++ arch/arm/boot/dts/vt8500/wm8650.dtsi | 5 +++++ arch/arm/boot/dts/vt8500/wm8750.dtsi | 5 +++++ arch/arm/boot/dts/vt8500/wm8850.dtsi | 5 +++++ 5 files changed, 25 insertions(+) diff --git a/arch/arm/boot/dts/vt8500/vt8500.dtsi b/arch/arm/boot/dts/vt8500/vt8500.dtsi index f23cb5ee11ae..e64363e5fe23 100644 --- a/arch/arm/boot/dts/vt8500/vt8500.dtsi +++ b/arch/arm/boot/dts/vt8500/vt8500.dtsi @@ -55,6 +55,11 @@ pinctrl: pinctrl@d8110000 { #gpio-cells = <2>; }; + chipid@d8120000 { + compatible = "via,vt8500-scc-id"; + reg = <0xd8120000 0x4>; + }; + pmc@d8130000 { compatible = "via,vt8500-pmc"; reg = <0xd8130000 0x1000>; diff --git a/arch/arm/boot/dts/vt8500/wm8505.dtsi b/arch/arm/boot/dts/vt8500/wm8505.dtsi index d9e1280372c5..ce06baa6cecb 100644 --- a/arch/arm/boot/dts/vt8500/wm8505.dtsi +++ b/arch/arm/boot/dts/vt8500/wm8505.dtsi @@ -66,6 +66,11 @@ pinctrl: pinctrl@d8110000 { #gpio-cells = <2>; }; + chipid@d8120000 { + compatible = "via,vt8500-scc-id"; + reg = <0xd8120000 0x4>; + }; + pmc@d8130000 { compatible = "via,vt8500-pmc"; reg = <0xd8130000 0x1000>; diff --git a/arch/arm/boot/dts/vt8500/wm8650.dtsi b/arch/arm/boot/dts/vt8500/wm8650.dtsi index 35d12d77efc0..4bb0b0b3211e 100644 --- a/arch/arm/boot/dts/vt8500/wm8650.dtsi +++ b/arch/arm/boot/dts/vt8500/wm8650.dtsi @@ -62,6 +62,11 @@ pinctrl: pinctrl@d8110000 { #gpio-cells = <2>; }; + chipid@d8120000 { + compatible = "via,vt8500-scc-id"; + reg = <0xd8120000 0x4>; + }; + pmc@d8130000 { compatible = "via,vt8500-pmc"; reg = <0xd8130000 0x1000>; diff --git a/arch/arm/boot/dts/vt8500/wm8750.dtsi b/arch/arm/boot/dts/vt8500/wm8750.dtsi index b292f85d4e69..f6fe35feea12 100644 --- a/arch/arm/boot/dts/vt8500/wm8750.dtsi +++ b/arch/arm/boot/dts/vt8500/wm8750.dtsi @@ -68,6 +68,11 @@ pinctrl: pinctrl@d8110000 { #gpio-cells = <2>; }; + chipid@d8120000 { + compatible = "via,vt8500-scc-id"; + reg = <0xd8120000 0x4>; + }; + pmc@d8130000 { compatible = "via,vt8500-pmc"; reg = <0xd8130000 0x1000>; diff --git a/arch/arm/boot/dts/vt8500/wm8850.dtsi b/arch/arm/boot/dts/vt8500/wm8850.dtsi index c61717ebb4f1..d64d17f9e8cd 100644 --- a/arch/arm/boot/dts/vt8500/wm8850.dtsi +++ b/arch/arm/boot/dts/vt8500/wm8850.dtsi @@ -65,6 +65,11 @@ pinctrl: pinctrl@d8110000 { #gpio-cells = <2>; }; + chipid@d8120000 { + compatible = "via,vt8500-scc-id"; + reg = <0xd8120000 0x4>; + }; + pmc@d8130000 { compatible = "via,vt8500-pmc"; reg = <0xd8130000 0x1000>; From e58afb3e1f365badd69aad6f0d53a2c66a63f689 Mon Sep 17 00:00:00 2001 From: Alexey Charkov Date: Wed, 7 May 2025 10:58:33 +0400 Subject: [PATCH 4/4] ARM: dts: vt8500: list all four timer interrupts VIA/WonderMedia SoC timer can generate up to four interrupts corresponding to four timer match registers (firing when the 32-bit freerunning clock source counter matches either of the match registers, respectively). List all four interrupts in device trees. This also enables the system event timer to use a match register other than 0, which can then in turn be used as a system watchdog (watchdog function is not available on other channels) Signed-off-by: Alexey Charkov Link: https://lore.kernel.org/r/20250507-vt8500-timer-updates-v2-4-65e5d1b0855e@gmail.com Signed-off-by: Krzysztof Kozlowski --- arch/arm/boot/dts/vt8500/vt8500.dtsi | 2 +- arch/arm/boot/dts/vt8500/wm8505.dtsi | 2 +- arch/arm/boot/dts/vt8500/wm8650.dtsi | 2 +- arch/arm/boot/dts/vt8500/wm8750.dtsi | 2 +- arch/arm/boot/dts/vt8500/wm8850.dtsi | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/arm/boot/dts/vt8500/vt8500.dtsi b/arch/arm/boot/dts/vt8500/vt8500.dtsi index e64363e5fe23..3db1340b130d 100644 --- a/arch/arm/boot/dts/vt8500/vt8500.dtsi +++ b/arch/arm/boot/dts/vt8500/vt8500.dtsi @@ -111,7 +111,7 @@ clkuart3: uart3 { timer@d8130100 { compatible = "via,vt8500-timer"; reg = <0xd8130100 0x28>; - interrupts = <36>; + interrupts = <36>, <37>, <38>, <39>; }; ehci@d8007900 { diff --git a/arch/arm/boot/dts/vt8500/wm8505.dtsi b/arch/arm/boot/dts/vt8500/wm8505.dtsi index ce06baa6cecb..fd4aca7e33f6 100644 --- a/arch/arm/boot/dts/vt8500/wm8505.dtsi +++ b/arch/arm/boot/dts/vt8500/wm8505.dtsi @@ -209,7 +209,7 @@ clksdhc: sdhc { timer@d8130100 { compatible = "via,vt8500-timer"; reg = <0xd8130100 0x28>; - interrupts = <36>; + interrupts = <36>, <37>, <38>, <39>; }; ehci@d8007100 { diff --git a/arch/arm/boot/dts/vt8500/wm8650.dtsi b/arch/arm/boot/dts/vt8500/wm8650.dtsi index 4bb0b0b3211e..e8c92215ae0b 100644 --- a/arch/arm/boot/dts/vt8500/wm8650.dtsi +++ b/arch/arm/boot/dts/vt8500/wm8650.dtsi @@ -181,7 +181,7 @@ clksdhc: sdhc { timer@d8130100 { compatible = "via,vt8500-timer"; reg = <0xd8130100 0x28>; - interrupts = <36>; + interrupts = <36>, <37>, <38>, <39>; }; ehci@d8007900 { diff --git a/arch/arm/boot/dts/vt8500/wm8750.dtsi b/arch/arm/boot/dts/vt8500/wm8750.dtsi index f6fe35feea12..0124e215e47f 100644 --- a/arch/arm/boot/dts/vt8500/wm8750.dtsi +++ b/arch/arm/boot/dts/vt8500/wm8750.dtsi @@ -253,7 +253,7 @@ pwm: pwm@d8220000 { timer@d8130100 { compatible = "via,vt8500-timer"; reg = <0xd8130100 0x28>; - interrupts = <36>; + interrupts = <36>, <37>, <38>, <39>; }; ehci@d8007900 { diff --git a/arch/arm/boot/dts/vt8500/wm8850.dtsi b/arch/arm/boot/dts/vt8500/wm8850.dtsi index d64d17f9e8cd..9a936a1484aa 100644 --- a/arch/arm/boot/dts/vt8500/wm8850.dtsi +++ b/arch/arm/boot/dts/vt8500/wm8850.dtsi @@ -240,7 +240,7 @@ pwm: pwm@d8220000 { timer@d8130100 { compatible = "via,vt8500-timer"; reg = <0xd8130100 0x28>; - interrupts = <36>; + interrupts = <36>, <37>, <38>, <39>; }; ehci@d8007900 {