From: Linus Walleij Date: Sun, 1 Feb 2026 22:23:49 +0000 (+0100) Subject: gemini: add support for Verbatim S08V1901-D1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F21989%2Fhead;p=thirdparty%2Fopenwrt.git gemini: add support for Verbatim S08V1901-D1 This adds support for the Gemini-based Verbatim S08V1901-D1 also known as Gigabit Ethernet Hard Drive and perhaps other funny names. Link: https://github.com/openwrt/openwrt/pull/21989 Signed-off-by: Linus Walleij --- diff --git a/target/linux/gemini/base-files/etc/board.d/02_network b/target/linux/gemini/base-files/etc/board.d/02_network index 93a02a7564e..9a39b386e87 100644 --- a/target/linux/gemini/base-files/etc/board.d/02_network +++ b/target/linux/gemini/base-files/etc/board.d/02_network @@ -12,6 +12,7 @@ dlink,dir-685) dlink,dns-313|\ edimax,ns-2502|\ raidsonic,ib-4220-b|\ +verbatim,s08v1901-d1|\ wiliboard,wbd111|\ wiliboard,wbd222) # NAS machines with a single ethernet port diff --git a/target/linux/gemini/base-files/lib/upgrade/platform.sh b/target/linux/gemini/base-files/lib/upgrade/platform.sh index 1553bdd55ac..6b49652a57e 100644 --- a/target/linux/gemini/base-files/lib/upgrade/platform.sh +++ b/target/linux/gemini/base-files/lib/upgrade/platform.sh @@ -94,7 +94,8 @@ platform_check_image() { dlink,dir-685|\ itian,sq201|\ storlink,gemini324|\ - raidsonic,ib-4220-b) + raidsonic,ib-4220-b|\ + verbatim,s08v1901-d1) return 0 ;; esac @@ -112,7 +113,8 @@ platform_do_upgrade() { default_do_upgrade "$1" ;; raidsonic,ib-4220-b|\ - storlink,gemini324) + storlink,gemini324|\ + verbatim,s08v1901-d1) gemini_do_combined_upgrade "$1" 24 48 48 ;; itian,sq201) diff --git a/target/linux/gemini/image/ImageInfo-verbatim_s08v1901_d1 b/target/linux/gemini/image/ImageInfo-verbatim_s08v1901_d1 new file mode 100644 index 00000000000..e2733418eff --- /dev/null +++ b/target/linux/gemini/image/ImageInfo-verbatim_s08v1901_d1 @@ -0,0 +1,34 @@ +UpgradeImages="zImage rd.gz hddapp.tgz" +productName="Verbatim Network Attached Storage" +hardwareName="Verbatim S08V1901" +productVendor="Verbatim Corproation" +VendorID="verbatim" +ProductID="v1901" +UpgradeVersion="263" +ExtraVersion="n" +manufacturerURL="http://www.verbatim.com" +Description="Verbatim VerbatimNAS" +hostname="verbatimnas" +softwareVersion="2.0.0" +TSS="enabled" +DIRECT_MODE="disabled" +Raid_Support="raid0_raid1_raid5_linear" +RaidTestDiskSize="0" +Raid_Show_Disk="6" +DEFAULT_LAN_IPADDR="192.168.1.1" +DEFAULT_LAN_NETMASK="255.255.255.0" +DEFAULT_LAN_BOOTPROTO="dhcp" +DEFAULT_WAN_BOOTPROTO="none" +DEFAULT_WAN_ENABLED="no" +DEFAULT_WLAN_DEVICENAME="ra0" +DEFAULT_LAN_DEVICENAME="eth0" +DEFAULT_HW_LAN_DEVICENAME="eth0" +DEFAULT_WAN_DEVICENAME="eth1" +DEFAULT_HW_WAN_DEVICENAME="eth1" +SUPPORT_FILESYSTEM="ext2_ext3_fat32" +SUPPORT_ENCRYPT_FILESYSTEM="ext2" +DEFAULT_DHCP_ENABLED="0" +SUPPORT_CODEPAGE="CP437_CP950_CP936_CP1145_CP1250_CP1252_CP932_CP949" +DEFAULT_SERVER_CODEPAGE="CP437" +FACTORY_RESET_ADMIN="0" +DEFAULT_TIME_ZONE="Eastern" diff --git a/target/linux/gemini/image/Makefile b/target/linux/gemini/image/Makefile index 51191faad6d..38fda2eca9b 100644 --- a/target/linux/gemini/image/Makefile +++ b/target/linux/gemini/image/Makefile @@ -270,6 +270,16 @@ define Device/storlink_sl93512r endef TARGET_DEVICES += storlink_sl93512r +define Device/verbatim_s08v1901_d1 + $(Device/storlink-reference) + DEVICE_VENDOR := Verbatim + DEVICE_MODEL := S08V1901-D1 (Gigabit Ethernet Hard Drive) + DEVICE_DTS := gemini-verbatim-s08v1901-d1 + IMAGE/factory.bin := storlink-3072k-factory-image $(1) + IMAGE/sysupgrade.bin := storlink-3072k-sysupgrade-image $(1) |\ + append-metadata +endef +TARGET_DEVICES += verbatim_s08v1901_d1 # The wiliboard images need some changes to be functional and buildable. # diff --git a/target/linux/gemini/patches-6.12/0002-ARM-dts-Add-a-Verbatim-Gigabit-NAS-DTS.patch b/target/linux/gemini/patches-6.12/0002-ARM-dts-Add-a-Verbatim-Gigabit-NAS-DTS.patch new file mode 100644 index 00000000000..93a33b722dc --- /dev/null +++ b/target/linux/gemini/patches-6.12/0002-ARM-dts-Add-a-Verbatim-Gigabit-NAS-DTS.patch @@ -0,0 +1,253 @@ +From 46267aeb78cc7aba845da4c17acff1d46b694647 Mon Sep 17 00:00:00 2001 +From: Linus Walleij +Date: Wed, 14 Jan 2026 09:29:48 +0100 +Subject: [PATCH 1/2] ARM: dts: Add a Verbatim Gigabit NAS DTS + +This adds a device tree for the Verbatim S08V1901-D1 NAS +which also has the product names "Gigabit Network Hard Drive" +"Gigabit NAS" and maybe other names. + +Signed-off-by: Linus Walleij +--- + arch/arm/boot/dts/gemini/Makefile | 1 + + .../gemini/gemini-verbatim-s08v1901-d1.dts | 225 ++++++++++++++++++ + 2 files changed, 226 insertions(+) + create mode 100644 arch/arm/boot/dts/gemini/gemini-verbatim-s08v1901-d1.dts + +--- a/arch/arm/boot/dts/gemini/Makefile ++++ b/arch/arm/boot/dts/gemini/Makefile +@@ -8,5 +8,6 @@ dtb-$(CONFIG_ARCH_GEMINI) += \ + gemini-sl93512r.dtb \ + gemini-sq201.dtb \ + gemini-ssi1328.dtb \ ++ gemini-verbatim-s08v1901-d1.dtb \ + gemini-wbd111.dtb \ + gemini-wbd222.dtb +--- /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 ++#include ++ ++/ { ++ 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 = ; ++ label = "reset"; ++ gpios = <&gpio1 31 GPIO_ACTIVE_LOW>; ++ }; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ led-green-harddisk { ++ function = LED_FUNCTION_DISK_ACTIVITY; ++ color = ; ++ 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/target/linux/gemini/patches-6.12/306-gemini-augment-Verbatim-DTS-with-botched-partitions.patch b/target/linux/gemini/patches-6.12/306-gemini-augment-Verbatim-DTS-with-botched-partitions.patch new file mode 100644 index 00000000000..b303dfed14d --- /dev/null +++ b/target/linux/gemini/patches-6.12/306-gemini-augment-Verbatim-DTS-with-botched-partitions.patch @@ -0,0 +1,68 @@ +From 590d33c31529aae924fc38e356e93beca684e3be Mon Sep 17 00:00:00 2001 +From: Linus Walleij +Date: Sun, 1 Feb 2026 23:10:25 +0100 +Subject: [PATCH 2/2] gemini: augment Verbatim DTS with botched partitions + +Same botched partitions as the Raidsonic IB-4220-B. + +Signed-off-by: Linus Walleij +--- + .../gemini/gemini-verbatim-s08v1901-d1.dts | 39 +++++++++++++++++-- + 1 file changed, 35 insertions(+), 4 deletions(-) + +--- a/arch/arm/boot/dts/gemini/gemini-verbatim-s08v1901-d1.dts ++++ b/arch/arm/boot/dts/gemini/gemini-verbatim-s08v1901-d1.dts +@@ -23,7 +23,7 @@ + }; + + chosen { +- bootargs = "console=ttyS0,19200n8 root=/dev/sda1 rw rootwait"; ++ bootargs = "console=ttyS0,19200n8"; + stdout-path = &uart0; + }; + +@@ -108,10 +108,41 @@ + status = "okay"; + reg = <0x30000000 0x01000000>; + ++ /* ++ * Override the RedBoot partition table with fixed partitions ++ * in order to create a coherent "firmware" partition so that ++ * we can have optimal flash usage with OpenWrt in a big ++ * MTD-splitted "firmware" partition. ++ */ + partitions { +- compatible = "redboot-fis"; +- /* Eraseblock at 0xfe0000 */ +- fis-index-block = <0x7f>; ++ compatible = "fixed-partitions"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ partition@0 { ++ label = "BOOT"; ++ reg = <0x00000000 0x00020000>; ++ read-only; ++ }; ++ partition@1 { ++ compatible = "openwrt,executable-prolog"; ++ label = "firmware"; ++ reg = <0x00020000 0x00f00000>; ++ }; ++ partition@2 { ++ label = "VCTL"; ++ reg = <0x00f20000 0x00020000>; ++ read-only; ++ }; ++ partition@3 { ++ label = "CurConf"; ++ reg = <0x00f40000 0x000a0000>; ++ read-only; ++ }; ++ partition@4 { ++ label = "FIS directory"; ++ reg = <0x00fe0000 0x00020000>; ++ read-only; ++ }; + }; + }; +