It's in the *.patch file (it's a text file) in the linux-5.5.1-kirkwood-tld-1-bodhi.tar.bz2 archive form the forum thread I linked above.
It might be easier than I said, there is no need to add official support, you can just compile for NSA310b and just hijack its dtb file to be for your device instead.
download the sources of OpenWrt, then open the file /openwrt/target/linux/kirkwood/files-5.4/arch/arm/boot/dts/kirkwood-nsa310b.dts (this is the dts file of the NSA 310b), delete all text and paste this text (please copy this from inside a Linux system or a text editor that is using Unix line terminator setting or it will mess up the formatting of the text) so now the dts file is correct for your device.
/*
* Device tree file for the Zyxel NSA 310S NAS box, hacked to disguise itself as a NSA 310b for OpenWrt
*
* Copyright (c) 2015-2016, bodhi <mibodhi@gmail.com>
*
* Based on
* Copyright (c) 2014, Adam Baker <linux@baker-net.org.uk>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*
* Based upon the board setup file created by Peter Schildmann
*/
/dts-v1/;
#include "kirkwood.dtsi"
#include "kirkwood-6281.dtsi"
/ {
model = "ZyXEL NSA310b";
compatible = "zyxel,nsa310b", "zyxel,nsa310", "marvell,kirkwood-88f6281", "marvell,kirkwood";
memory {
device_type = "memory";
reg = <0x00000000 0x10000000>;
};
chosen {
bootargs = "console=ttyS0,115200";
stdout-path = &uart0;
};
ocp@f1000000 {
pinctrl: pin-controller@10000 {
pinctrl-names = "default";
pmx_sata0: pmx-sata0 {
marvell,pins ; /* NA */
marvell,function = "sata0";
};
pmx_sata1: pmx-sata1 {
marvell,pins ; /* NA */
marvell,function = "sata1";
};
pmx_usb_power: pmx-usb-power {
marvell,pins = "mpp21"; /* OK */
marvell,function = "gpio";
};
pmx_pwr_off: pmx-pwr-off {
marvell,pins = "mpp27"; /* OK */
marvell,function = "gpio";
};
pmx_btn_reset: pmx-btn-reset {
marvell,pins = "mpp24"; /* OK */
marvell,function = "gpio";
};
pmx_btn_copy: pmx-btn-copy {
marvell,pins = "mpp25"; /* OK */
marvell,function = "gpio";
};
pmx_btn_power: pmx-btn-power {
marvell,pins = "mpp26"; /* OK */
marvell,function = "gpio";
};
pmx_led_hdd2_green: pmx-led-hdd2-green {
marvell,pins = "mpp34"; /* OK */
marvell,function = "gpio";
};
pmx_led_hdd2_red: pmx-led-hdd2-red {
marvell,pins = "mpp12"; /* OK */
marvell,function = "gpio";
};
pmx_led_usb_green: pmx-led-usb-green {
marvell,pins = "mpp15"; /* OK */
marvell,function = "gpio";
};
pmx_led_copy_green: pmx-led-copy-green {
marvell,pins = "mpp22"; /* OK */
marvell,function = "gpio";
};
pmx_led_copy_red: pmx-led-copy-red {
marvell,pins = "mpp23"; /* OK */
marvell,function = "gpio";
};
pmx_led_sys_green: pmx-led-sys-green {
marvell,pins = "mpp28"; /* OK */
marvell,function = "gpio";
};
pmx_led_sys_orange: pmx-led-sys-orange {
marvell,pins = "mpp29"; /* OK */
marvell,function = "gpio";
};
pmx_led_hdd1_green: pmx-led-hdd1-green {
marvell,pins = "mpp16"; /* OK */
marvell,function = "gpio";
};
pmx_led_hdd1_red: pmx-led-hdd1-red {
marvell,pins = "mpp13"; /* OK */
marvell,function = "gpio";
};
/*
pmx_buzzer: pmx-buzzer {
marvell,pins = "mpp20";
marvell,function = "gpio";
};
*/
pmx_pwr_sata1: pmx-pwr-sata1 {
marvell,pins = "mpp33";
marvell,function = "gpio";
};
};
serial@12000 {
status = "ok";
};
sata@80000 {
status = "okay";
nr-ports = <2>;
};
rtc@10300 {
status = "disabled";
};
i2c@11000 {
status = "okay";
ht1382: rtc@68 {
compatible = "htk,ht1382";
reg = <0x68>;
};
};
};
regulators {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&pmx_usb_power &pmx_pwr_sata1>;
usb0_power: regulator@1 {
compatible = "regulator-fixed";
reg = <1>;
regulator-name = "USB Power";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-always-on;
regulator-boot-on;
enable-active-high;
gpio = <&gpio0 21 GPIO_ACTIVE_HIGH>;
};
sata1_power: regulator@2 {
compatible = "regulator-fixed";
reg = <2>;
regulator-name = "SATA1 Power";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-always-on;
regulator-boot-on;
enable-active-high;
gpio = <&gpio1 1 GPIO_ACTIVE_HIGH>;
};
};
gpio_poweroff {
compatible = "gpio-poweroff";
pinctrl-0 = <&pmx_pwr_off>;
pinctrl-names = "default";
gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
};
gpio_keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
pinctrl-0 = <&pmx_btn_reset &pmx_btn_copy &pmx_btn_power>;
pinctrl-names = "default";
button@1 {
label = "Power Button";
linux,code = <KEY_POWER>;
gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
};
button@2 {
label = "Copy Button";
linux,code = <KEY_COPY>;
gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
};
button@3 {
label = "Reset Button";
linux,code = <KEY_RESTART>;
gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
};
};
gpio-leds {
compatible = "gpio-leds";
pinctrl-0 = <&pmx_led_hdd2_green &pmx_led_hdd2_red
&pmx_led_usb_green
&pmx_led_sys_green &pmx_led_sys_orange
&pmx_led_copy_green &pmx_led_copy_red
&pmx_led_hdd1_green &pmx_led_hdd1_red>;
pinctrl-names = "default";
green-sys {
label = "nsa310s:green:sys";
gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "default-on";
};
orange-sys {
label = "nsa310s:orange:sys";
gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
};
green-hdd1 {
label = "nsa310s:green:hdd1";
gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
};
red-hdd1 {
label = "nsa310s:red:hdd1";
gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
};
green-hdd2 {
label = "nsa310s:green:hdd2";
gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
};
red-hdd2 {
label = "nsa310s:red:hdd2";
gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
};
green-usb {
label = "nsa310s:green:usb";
gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
};
green-copy {
label = "nsa310s:green:copy";
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "ide-disk";
};
red-copy {
label = "nsa310s:red:copy";
gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>;
};
};
};
&nand {
status = "okay";
chip-delay = <35>;
partition@0 {
label = "uboot";
reg = <0x00c0000 0x0080000>;
};
partition@140000 {
label = "ubi";
reg = <0x0140000 0x7ec0000>;
};
};
&mdio {
status = "okay";
ethphy0: ethernet-phy@1 {
compatible = "marvell,88e1510";
reg = <1>;
};
};
ð0 {
status = "okay";
ethernet0-port@0 {
phy-handle = <ðphy0>;
};
};
&pciec {
status = "okay";
};
&pcie0 {
status = "okay";
};
Save and compile for nsa310b, and you should get an OpenWrt image that will report itself as nsa310b but will be in fact using the correct hardware settings for a nsa310S
EDIT: fixed partitions in dts file