diff options
| author | Linus Walleij <linusw@kernel.org> | 2026-06-03 15:03:31 +0300 |
|---|---|---|
| committer | Linus Walleij <linusw@kernel.org> | 2026-06-03 15:03:31 +0300 |
| commit | f8160c84dd88c98f4e2ee5165b736825f41c2ce2 (patch) | |
| tree | c8c3f4dd26f6bb1a41cf3b2ce1ce29c7061500c0 | |
| parent | 513edb14962889edb5666e82288f90844d05d718 (diff) | |
| parent | dce8e0cb88fb12d068459b75f299ff2242172257 (diff) | |
| download | linux-f8160c84dd88c98f4e2ee5165b736825f41c2ce2.tar.xz | |
Merge tag 'gemini-for-v7.2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator into soc/dt
Gemini device tree updates:
- Add two new devices: the Verbatim Gigabit NAS and the
Raidsonic IB-4210-B, including ACKed binding updates.
- Fix up boot device for the SQ201.
- Use the right LED trigger for disk activity.
- Add the SSP/SPI block to the SoC.
- Fix up the RUT1xx device tree.
* tag 'gemini-for-v7.2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator:
ARM: dts: gemini: Correct the RUT1xx
ARM: dts: Add a Raidsonic IB-4210-B DTS
ARM: dts: Add a Verbatim Gigabit NAS DTS
dt-bindings: arm: Add two missing Gemini devices
dt-bindings: vendor-prefixes: Add Verbatim Corporation
ARM: dts: gemini: Add SSP/SPI block
ARM: dts: gemini: Tag disk led for disk-activity
ARM: dts: gemini: iTian SQ201 need to boot from mtdblock3
Signed-off-by: Linus Walleij <linusw@kernel.org>
| -rw-r--r-- | Documentation/devicetree/bindings/arm/gemini.yaml | 10 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 | ||||
| -rw-r--r-- | arch/arm/boot/dts/gemini/Makefile | 2 | ||||
| -rw-r--r-- | arch/arm/boot/dts/gemini/gemini-nas4210b.dts | 205 | ||||
| -rw-r--r-- | arch/arm/boot/dts/gemini/gemini-nas4220b.dts | 1 | ||||
| -rw-r--r-- | arch/arm/boot/dts/gemini/gemini-rut1xx.dts | 18 | ||||
| -rw-r--r-- | arch/arm/boot/dts/gemini/gemini-sq201.dts | 2 | ||||
| -rw-r--r-- | arch/arm/boot/dts/gemini/gemini-verbatim-s08v1901-d1.dts | 225 | ||||
| -rw-r--r-- | arch/arm/boot/dts/gemini/gemini.dtsi | 17 |
9 files changed, 470 insertions, 12 deletions
diff --git a/Documentation/devicetree/bindings/arm/gemini.yaml b/Documentation/devicetree/bindings/arm/gemini.yaml index fc092962ab56..dfb11244b57e 100644 --- a/Documentation/devicetree/bindings/arm/gemini.yaml +++ b/Documentation/devicetree/bindings/arm/gemini.yaml @@ -55,6 +55,11 @@ properties: - const: itian,sq201 - const: cortina,gemini + - description: Raidsonic NAS IB-4210-B + items: + - const: raidsonic,ib-4210-b + - const: cortina,gemini + - description: Raidsonic NAS IB-4220-B items: - const: raidsonic,ib-4220-b @@ -70,6 +75,11 @@ properties: - const: teltonika,rut1xx - const: cortina,gemini + - description: Verbatim S08V1901-D1 NAS + items: + - const: verbatim,s08v1901-d1 + - const: cortina,gemini + - description: Wiligear Wiliboard WBD-111 items: - const: wiligear,wiliboard-wbd111 diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml index 28784d66ae7b..5a043ad75cb1 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -1783,6 +1783,8 @@ patternProperties: description: Variscite Ltd. "^vdl,.*": description: Van der Laan b.v. + "^verbatim,.*": + description: Verbatim Corporation "^verisilicon,.*": description: VeriSilicon Microelectronics (Shanghai) Co., Ltd. "^vertexcom,.*": diff --git a/arch/arm/boot/dts/gemini/Makefile b/arch/arm/boot/dts/gemini/Makefile index f9f63ce3eb49..4722fb1bac49 100644 --- a/arch/arm/boot/dts/gemini/Makefile +++ b/arch/arm/boot/dts/gemini/Makefile @@ -2,11 +2,13 @@ dtb-$(CONFIG_ARCH_GEMINI) += \ gemini-dlink-dir-685.dtb \ gemini-dlink-dns-313.dtb \ + gemini-nas4210b.dtb \ gemini-nas4220b.dtb \ gemini-ns2502.dtb \ gemini-rut1xx.dtb \ gemini-sl93512r.dtb \ gemini-sq201.dtb \ gemini-ssi1328.dtb \ + gemini-verbatim-s08v1901-d1.dtb \ gemini-wbd111.dtb \ gemini-wbd222.dtb diff --git a/arch/arm/boot/dts/gemini/gemini-nas4210b.dts b/arch/arm/boot/dts/gemini/gemini-nas4210b.dts new file mode 100644 index 000000000000..8bec57c8b7b1 --- /dev/null +++ b/arch/arm/boot/dts/gemini/gemini-nas4210b.dts @@ -0,0 +1,205 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Device Tree file for the Gemini-based Raidsonic NAS IB-4210-B + * Based on the NAS Forum experiments by user "CptSpock". + */ + +/dts-v1/; + +#include "gemini.dtsi" +#include <dt-bindings/input/input.h> + +/ { + model = "Raidsonic NAS IB-4210-B"; + compatible = "raidsonic,ib-4210-b", "cortina,gemini"; + #address-cells = <1>; + #size-cells = <1>; + + memory@0 { /* 64 MB */ + device_type = "memory"; + reg = <0x00000000 0x4000000>; + }; + + chosen { + bootargs = "console=ttyS0,19200n8 root=/dev/sda1 rw rootwait"; + stdout-path = &uart0; + }; + + gpio_keys { + compatible = "gpio-keys"; + + button-setup { + debounce-interval = <100>; + wakeup-source; + linux,code = <KEY_SETUP>; + label = "Backup button"; + /* Conflict with TVC */ + gpios = <&gpio1 29 GPIO_ACTIVE_LOW>; + }; + button-restart { + debounce-interval = <100>; + wakeup-source; + linux,code = <KEY_RESTART>; + label = "Softreset button"; + /* Conflict with TVC */ + gpios = <&gpio1 31 GPIO_ACTIVE_LOW>; + }; + }; + + leds { + compatible = "gpio-leds"; + led-orange-hdd { + label = "nas4220b:orange:hdd"; + /* Conflict with TVC */ + gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>; + default-state = "on"; + linux,default-trigger = "disk-activity"; + }; + led-green-os { + label = "nas4220b:green:os"; + /* Conflict with TVC */ + gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>; + default-state = "on"; + linux,default-trigger = "heartbeat"; + }; + }; + + mdio0: mdio { + compatible = "virtual,mdio-gpio"; + gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */ + <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */ + #address-cells = <1>; + #size-cells = <0>; + + /* Realtek RTL8211B */ + phy0: ethernet-phy@1 { + reg = <1>; + device_type = "ethernet-phy"; + }; + }; + + soc { + flash@30000000 { + status = "okay"; + /* 16MB of flash */ + reg = <0x30000000 0x01000000>; + + partitions { + compatible = "redboot-fis"; + /* Eraseblock at 0xfe0000 */ + fis-index-block = <0x7f>; + }; + }; + + syscon: syscon@40000000 { + pinctrl { + gpio0_default_pins: pinctrl-gpio0 { + mux { + function = "gpio0"; + groups = + "gpio0egrp", + /* Used by MDIO */ + "gpio0igrp"; + }; + }; + gpio1_default_pins: pinctrl-gpio1 { + mux { + function = "gpio1"; + /* Lines 28-31 used by LEDs and buttons */ + groups = "gpio1dgrp"; + }; + }; + pinctrl-gmii { + mux { + function = "gmii"; + groups = "gmii_gmac0_grp"; + }; + conf0 { + pins = "R8 GMAC0 RXDV", "U11 GMAC1 RXDV"; + skew-delay = <0>; + }; + conf1 { + pins = "T8 GMAC0 RXC"; + skew-delay = <10>; + }; + conf2 { + pins = "T11 GMAC1 RXC"; + skew-delay = <15>; + }; + conf3 { + pins = "P8 GMAC0 TXEN", "V11 GMAC1 TXEN"; + skew-delay = <7>; + }; + conf4 { + pins = "V7 GMAC0 TXC", "P10 GMAC1 TXC"; + skew-delay = <10>; + }; + conf5 { + /* The data lines all have default skew */ + pins = "U8 GMAC0 RXD0", "V8 GMAC0 RXD1", + "P9 GMAC0 RXD2", "R9 GMAC0 RXD3", + "R11 GMAC1 RXD0", "P11 GMAC1 RXD1", + "V12 GMAC1 RXD2", "U12 GMAC1 RXD3", + "R10 GMAC1 TXD0", "T10 GMAC1 TXD1", + "U10 GMAC1 TXD2", "V10 GMAC1 TXD3"; + skew-delay = <7>; + }; + conf6 { + pins = "U7 GMAC0 TXD0", "T7 GMAC0 TXD1", + "R7 GMAC0 TXD2", "P7 GMAC0 TXD3"; + skew-delay = <5>; + }; + /* Set up drive strength on GMAC0 to 16 mA */ + conf7 { + groups = "gmii_gmac0_grp"; + drive-strength = <16>; + }; + }; + }; + }; + + sata: sata@46000000 { + cortina,gemini-ata-muxmode = <0>; + cortina,gemini-enable-sata-bridge; + status = "okay"; + }; + + gpio0: gpio@4d000000 { + pinctrl-names = "default"; + pinctrl-0 = <&gpio0_default_pins>; + }; + + gpio1: gpio@4e000000 { + pinctrl-names = "default"; + pinctrl-0 = <&gpio1_default_pins>; + }; + + ethernet@60000000 { + status = "okay"; + + ethernet-port@0 { + phy-mode = "rgmii"; + phy-handle = <&phy0>; + }; + ethernet-port@1 { + /* Not used in this platform */ + }; + }; + + ide@63000000 { + status = "okay"; + }; + + ide@63400000 { + status = "okay"; + }; + + usb@68000000 { + status = "okay"; + }; + + usb@69000000 { + status = "okay"; + }; + }; +}; diff --git a/arch/arm/boot/dts/gemini/gemini-nas4220b.dts b/arch/arm/boot/dts/gemini/gemini-nas4220b.dts index 6544c730340f..2488b9b24218 100644 --- a/arch/arm/boot/dts/gemini/gemini-nas4220b.dts +++ b/arch/arm/boot/dts/gemini/gemini-nas4220b.dts @@ -52,6 +52,7 @@ /* Conflict with TVC */ gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>; default-state = "on"; + linux,default-trigger = "disk-activity"; }; led-green-os { label = "nas4220b:green:os"; diff --git a/arch/arm/boot/dts/gemini/gemini-rut1xx.dts b/arch/arm/boot/dts/gemini/gemini-rut1xx.dts index 0ebda4efd9d0..4bdf86bd7c23 100644 --- a/arch/arm/boot/dts/gemini/gemini-rut1xx.dts +++ b/arch/arm/boot/dts/gemini/gemini-rut1xx.dts @@ -14,13 +14,13 @@ #address-cells = <1>; #size-cells = <1>; - memory@0 { /* 128 MB */ + memory@0 { /* 32 MB */ device_type = "memory"; - reg = <0x00000000 0x8000000>; + reg = <0x00000000 0x2000000>; }; chosen { - bootargs = "console=ttyS0,115200n8"; + bootargs = "console=ttyS0,19200n8"; stdout-path = &uart0; }; @@ -113,6 +113,10 @@ pinctrl-0 = <&gpio1_default_pins>; }; + pci@50000000 { + status = "okay"; + }; + ethernet@60000000 { status = "okay"; @@ -124,13 +128,5 @@ /* Not used in this platform */ }; }; - - usb@68000000 { - status = "okay"; - }; - - usb@69000000 { - status = "okay"; - }; }; }; diff --git a/arch/arm/boot/dts/gemini/gemini-sq201.dts b/arch/arm/boot/dts/gemini/gemini-sq201.dts index f8c6f6e5cdea..fb6959324658 100644 --- a/arch/arm/boot/dts/gemini/gemini-sq201.dts +++ b/arch/arm/boot/dts/gemini/gemini-sq201.dts @@ -20,7 +20,7 @@ }; chosen { - bootargs = "console=ttyS0,115200n8 root=/dev/mtdblock2 rw rootfstype=squashfs,jffs2 rootwait"; + bootargs = "console=ttyS0,115200n8 root=/dev/mtdblock3 rw rootfstype=squashfs,jffs2 rootwait"; stdout-path = &uart0; }; diff --git a/arch/arm/boot/dts/gemini/gemini-verbatim-s08v1901-d1.dts b/arch/arm/boot/dts/gemini/gemini-verbatim-s08v1901-d1.dts new file mode 100644 index 000000000000..2a689d276863 --- /dev/null +++ b/arch/arm/boot/dts/gemini/gemini-verbatim-s08v1901-d1.dts @@ -0,0 +1,225 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Device Tree file for the Verbatim S08V1901-D1 + * on product packaging called "Verbatim Gigabit Ethernet Hard Drive" + */ + +/dts-v1/; + +#include "gemini.dtsi" +#include <dt-bindings/leds/common.h> +#include <dt-bindings/input/input.h> + +/ { + model = "Verbatim Gigabit Ethernet Hard Drive S08V1901-D1"; + compatible = "verbatim,s08v1901-d1", "cortina,gemini"; + #address-cells = <1>; + #size-cells = <1>; + + memory@0 { + /* 64MB SDRAM in 2 x Hynix HY5DU561622ETP-D43 */ + device_type = "memory"; + reg = <0x00000000 0x4000000>; + }; + + chosen { + bootargs = "console=ttyS0,19200n8 root=/dev/sda1 rw rootwait"; + stdout-path = &uart0; + }; + + gpio_keys { + compatible = "gpio-keys"; + + button-reset { + debounce-interval = <50>; + wakeup-source; + linux,code = <KEY_RESTART>; + label = "reset"; + gpios = <&gpio1 31 GPIO_ACTIVE_LOW>; + }; + }; + + leds { + compatible = "gpio-leds"; + led-green-harddisk { + function = LED_FUNCTION_DISK_ACTIVITY; + color = <LED_COLOR_ID_GREEN>; + gpios = <&gpio0 1 GPIO_ACTIVE_LOW>; + default-state = "off"; + linux,default-trigger = "disk-activity"; + }; + }; + + /* + * Fan control candidates: gpio0 10, gpio1 28 + */ + + mdio0: mdio { + compatible = "virtual,mdio-gpio"; + /* Uses MDC and MDIO */ + gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */ + <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */ + #address-cells = <1>; + #size-cells = <0>; + + /* This is a Realtek RTL8211CL ethernet PHY */ + phy0: ethernet-phy@1 { + reg = <1>; + }; + }; + + /* + * I haven't found a way to control the fan, it appears to be + * always on. + */ + thermal-zones { + chassis-thermal { + /* Poll every 20 seconds */ + polling-delay = <20000>; + /* Poll every 2nd second when cooling */ + polling-delay-passive = <2000>; + /* Use the thermal sensor in the hard drive */ + thermal-sensors = <&drive0>; + + /* Tripping points from the fan.script in the rootfs */ + trips { + alert: chassis-alert { + /* At 43 degrees turn on the fan */ + temperature = <43000>; + hysteresis = <3000>; + type = "active"; + }; + crit: chassis-crit { + /* Just shut down at 60 degrees */ + temperature = <60000>; + hysteresis = <2000>; + type = "critical"; + }; + }; + }; + }; + + soc { + flash@30000000 { + /* + * This is a Spansion S29GL128P11TFI01 852FB245 A + * 128Mbit (16MB) Flash memory. + */ + status = "okay"; + reg = <0x30000000 0x01000000>; + + partitions { + compatible = "redboot-fis"; + /* Eraseblock at 0xfe0000 */ + fis-index-block = <0x7f>; + }; + }; + + syscon: syscon@40000000 { + pinctrl { + /* + * gpio0agrp cover line 0-4 as line 1 is used for the LED + * gpio0hgrp cover line 21, 22 used by MDIO for Marvell PHY + */ + gpio0_default_pins: pinctrl-gpio0 { + mux { + function = "gpio0"; + groups = "gpio0agrp", "gpio0hgrp"; + }; + }; + gpio1_default_pins: pinctrl-gpio1 { + /* + * Free up the TVC pins at GPIO1 offset 28,29,30,31 + * line 31 is used for reset key + */ + mux { + function = "gpio1"; + groups = "gpio1dgrp"; + }; + }; + pinctrl-gmii { + mux { + function = "gmii"; + groups = "gmii_gmac0_grp"; + }; + /* TODO: investigate vendor registers on boot */ + conf0 { + pins = "V8 GMAC0 RXDV"; + skew-delay = <0>; + }; + conf1 { + pins = "Y7 GMAC0 RXC"; + skew-delay = <15>; + }; + conf2 { + pins = "T8 GMAC0 TXEN"; + skew-delay = <7>; + }; + conf3 { + pins = "U8 GMAC0 TXC"; + skew-delay = <10>; + }; + conf4 { + /* The data lines all have default skew */ + pins = "W8 GMAC0 RXD0", "V9 GMAC0 RXD1", + "Y8 GMAC0 RXD2", "U9 GMAC0 RXD3", + "T7 GMAC0 TXD0", "U6 GMAC0 TXD1", + "V7 GMAC0 TXD2", "U7 GMAC0 TXD3"; + skew-delay = <7>; + }; + }; + }; + }; + + /* Both interfaces brought out on SATA connectors */ + sata: sata@46000000 { + cortina,gemini-ata-muxmode = <0>; + cortina,gemini-enable-sata-bridge; + status = "okay"; + }; + + gpio0: gpio@4d000000 { + pinctrl-names = "default"; + pinctrl-0 = <&gpio0_default_pins>; + }; + + gpio1: gpio@4e000000 { + pinctrl-names = "default"; + pinctrl-0 = <&gpio1_default_pins>; + }; + + ethernet@60000000 { + status = "okay"; + + ethernet-port@0 { + phy-mode = "rgmii"; + phy-handle = <&phy0>; + }; + }; + + ide@63000000 { + status = "okay"; + /* + * This drive may have a temperature sensor with a + * thermal zone we can use for thermal control of the + * chassis temperature using the fan. + */ + drive0: ide-port@0 { + reg = <0>; + #thermal-sensor-cells = <0>; + }; + }; + + ide@63400000 { + status = "okay"; + }; + + usb@68000000 { + status = "okay"; + }; + + usb@69000000 { + status = "okay"; + }; + }; +}; diff --git a/arch/arm/boot/dts/gemini/gemini.dtsi b/arch/arm/boot/dts/gemini/gemini.dtsi index befe322bd7de..23e68e17ffbb 100644 --- a/arch/arm/boot/dts/gemini/gemini.dtsi +++ b/arch/arm/boot/dts/gemini/gemini.dtsi @@ -61,6 +61,12 @@ groups = "rtcgrp"; }; }; + ssp_default_pins: pinctrl-ssp { + mux { + function = "ssp"; + groups = "sspgrp"; + }; + }; power_default_pins: pinctrl-power { mux { function = "power"; @@ -228,6 +234,17 @@ #interrupt-cells = <2>; }; + spi@4a000000 { + compatible = "faraday,ftssp010"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x4a000000 0x100>; + interrupts = <21 IRQ_TYPE_LEVEL_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&ssp_default_pins>; + status = "disabled"; + }; + power-controller@4b000000 { compatible = "cortina,gemini-power-controller"; reg = <0x4b000000 0x100>; |
