aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ath79
diff options
context:
space:
mode:
authorDaniel Golle <daniel@makrotopia.org>2020-04-29 20:59:04 +0100
committerDaniel Golle <daniel@makrotopia.org>2020-04-29 21:32:35 +0100
commitaa4a33ac6256fadd7201908dad1be9659b942ecd (patch)
treee5c7a3cd56609ea70a674009b416600c86587722 /target/linux/ath79
parentc8b309b53d6739b91d81311e4228f66f31c894f1 (diff)
downloadupstream-aa4a33ac6256fadd7201908dad1be9659b942ecd.tar.gz
upstream-aa4a33ac6256fadd7201908dad1be9659b942ecd.tar.bz2
upstream-aa4a33ac6256fadd7201908dad1be9659b942ecd.zip
ath79: add support for Teltonika RUT955 H7V3C0
This board was previously supported in ar71xx as 'RUT9XX'. The difference between that and the other RUT955 board already supported in ath79 is that instead of the SPI shift registers driving the LEDs and digital outputs that model got an I2C GPIO expander instead. To support LEDs during early boot and interrupt-driven digital inputs, I2C support as well as support for PCA953x has to be built-in and cannot be kernel modules, hence select those symbols for ath79/generic. Specification: - 550/400/200 MHz (CPU/DDR/AHB) - 128 MB of RAM (DDR2) - 16 MB of FLASH (SPI NOR) - 4x 10/100 Mbps Ethernet, with passive PoE support on LAN1 - 2T2R 2,4 GHz (AR9344) - built-in 4G/3G module (example: Quectel EC-25EU) - internal microSD slot (spi-mmc, buggy and disabled for now) - RS232 on D-Sub9 port (Cypress ACM via USB, /dev/ttyACM0) - RS422/RS485 (AR934x high speed UART, /dev/ttyATH1) - analog 0-24V input (MCP3221) - various digital inputs and outputs incl. a relay - 11x LED (4 are driven by AR9344, 7 by PCA9539) - 2x miniSIM slot (can be swapped via GPIO) - 2x RP-SMA/F (Wi-Fi), 3x SMA/F (2x WWAN, GPS) - 1x button (reset) - DC jack for main power input (9-30 V) - debugging UART available on PCB edge connector Serial console (/dev/ttyS0) pinout: - RX: pin1 (square) on top side of the main PCB (AR9344 is on top) - TX: pin1 (square) on bottom side Flash instruction: Vendor firmware is based on OpenWrt CC release. Use the "factory" image directly in GUI (make sure to uncheck "keep settings") or in U-Boot web based recovery. To avoid any problems, make sure to first update vendor firmware to latest version - "factory" image was successfully tested on device running "RUT9XX_R_00.06.051" firmware and U-Boot "3.0.1". Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Diffstat (limited to 'target/linux/ath79')
-rw-r--r--target/linux/ath79/dts/ar9344_teltonika_rut955-h7v3c0.dts197
-rwxr-xr-xtarget/linux/ath79/generic/base-files/etc/board.d/02_network3
-rwxr-xr-xtarget/linux/ath79/generic/base-files/etc/board.d/03_gpio_switches8
-rw-r--r--target/linux/ath79/generic/config-default6
-rw-r--r--target/linux/ath79/image/generic.mk6
5 files changed, 219 insertions, 1 deletions
diff --git a/target/linux/ath79/dts/ar9344_teltonika_rut955-h7v3c0.dts b/target/linux/ath79/dts/ar9344_teltonika_rut955-h7v3c0.dts
new file mode 100644
index 0000000000..426c6ac179
--- /dev/null
+++ b/target/linux/ath79/dts/ar9344_teltonika_rut955-h7v3c0.dts
@@ -0,0 +1,197 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "ar9344_teltonika_rut9xx.dtsi"
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+ model = "Teltonika RUT955 H7V3C0";
+ compatible = "teltonika,rut955-h7v3c0", "teltonika,rut9xx", "qca,ar9344";
+
+ aliases {
+ led-boot = &led_system_green;
+ led-failsafe = &led_system_red;
+ led-running = &led_system_green;
+ led-upgrade = &led_system_red;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ signal0 {
+ label = "rut955:green:signal0";
+ gpios = <&gpio_ext 0 GPIO_ACTIVE_HIGH>;
+ };
+
+ signal1 {
+ label = "rut955:green:signal1";
+ gpios = <&gpio_ext 1 GPIO_ACTIVE_HIGH>;
+ };
+
+ signal2 {
+ label = "rut955:green:signal2";
+ gpios = <&gpio_ext 2 GPIO_ACTIVE_HIGH>;
+ };
+
+ signal3 {
+ label = "rut955:green:signal3";
+ gpios = <&gpio_ext 3 GPIO_ACTIVE_HIGH>;
+ };
+
+ signal4 {
+ label = "rut955:green:signal4";
+ gpios = <&gpio_ext 4 GPIO_ACTIVE_HIGH>;
+ };
+
+ led_system_red: system_red {
+ label = "rut955:red:system";
+ gpios = <&gpio_ext 5 GPIO_ACTIVE_HIGH>;
+ };
+
+ led_system_green: system_green {
+ label = "rut955:green:system";
+ gpios = <&gpio_ext 6 GPIO_ACTIVE_HIGH>;
+ default-state = "on";
+ };
+ };
+};
+
+&gpio {
+ pinctrl-names = "default";
+ pinctrl-0 = <&jtag_disable_pins>;
+
+ gpio-line-names = "RS485_D", "led_wan", "wmac_lna", "mmc_cs",
+ "EXT_INT", "", "", "",
+ "", "", "", "",
+ "", "led_lan2", "led_lan1", "",
+ "i2c_scl", "i2c_sda", "", "",
+ "", "", "led_lan3", "",
+ "", "", "", "",
+ "", "", "", "";
+
+ ext_lna {
+ gpio-hog;
+ gpios = <2 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "rut955:wmac:ext_lna";
+ };
+
+ mmc_cs {
+ gpio-hog;
+ gpios = <3 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "rut955:mmc:cs";
+ };
+
+ ext_int {
+ gpio-hog;
+ gpios = <4 GPIO_ACTIVE_LOW>;
+ input;
+ line-name = "rut955:ext:int";
+ };
+
+ uart1_td {
+ gpio-hog;
+ gpios = <18 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "rut955:uart1:td";
+ };
+
+ uart1_rd {
+ gpio-hog;
+ gpios = <11 GPIO_ACTIVE_LOW>;
+ input;
+ line-name = "rut955:uart1:rd";
+ };
+
+ led_wan {
+ gpio-hog;
+ gpios = <1 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "rut955:led:wan";
+ };
+
+ led_lan2 {
+ gpio-hog;
+ gpios = <13 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "rut955:led:lan2";
+ };
+
+ led_lan1 {
+ gpio-hog;
+ gpios = <14 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "rut955:led:lan1";
+ };
+
+ led_lan3 {
+ gpio-hog;
+ gpios = <22 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "rut955:led:lan3";
+ };
+};
+
+&i2c0 {
+ gpio_ext: gpio_ext@74 {
+ status = "okay";
+
+ compatible = "nxp,pca9539";
+ reg = <0x74>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ reset-gpios = <&gpio 21 GPIO_ACTIVE_HIGH>;
+
+ interrupt-parent = <&gpio>;
+ interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ gpio-line-names = "signal_bar0", "signal_bar1", "signal_bar2", "signal_bar3",
+ "signal_bar4", "status_red", "status_green", "sim_sel",
+ "DOUT1", "DOUT2", "DIN2", "DIN1",
+ "MON", "MRST", "SDCD", "RS485_R";
+ };
+};
+
+&hs_uart {
+ dtr-gpios = <&gpio_ext 15 GPIO_ACTIVE_HIGH>;
+}
+
+&eth0 {
+ status = "okay";
+
+ phy-handle = <&swphy4>;
+
+ mtd-mac-address = <&config 0x0>;
+ mtd-mac-address-increment = <1>;
+};
+
+&eth1 {
+ status = "okay";
+
+ mtd-mac-address = <&config 0x0>;
+};
+
+&builtin_switch {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pmx_leds_switch>;
+};
+
+&wmac {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pmx_ext_lna>;
+};
+
+&pinmux {
+ pmx_ext_lna: ext_lna {
+ // EXT_LNA0 on GPIO 2
+ pinctrl-single,bits = <0x0 0x002e0000 0x00ff0000>;
+ };
+};
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
index d7f7eed829..9768e4e076 100755
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -228,7 +228,8 @@ ath79_setup_interfaces()
ucidef_add_switch "switch0" \
"0@eth0" "1:lan" "2:lan" "3:wan"
;;
- teltonika,rut955)
+ teltonika,rut955|\
+ teltonika,rut955-h7v3c0)
ucidef_set_interface_wan "eth1"
ucidef_add_switch "switch0" \
"0@eth0" "2:lan:3" "3:lan:2" "4:lan:1"
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/03_gpio_switches b/target/linux/ath79/generic/base-files/etc/board.d/03_gpio_switches
index 051c468f87..66b2a3e1d8 100755
--- a/target/linux/ath79/generic/base-files/etc/board.d/03_gpio_switches
+++ b/target/linux/ath79/generic/base-files/etc/board.d/03_gpio_switches
@@ -50,6 +50,14 @@ teltonika,rut955)
ucidef_add_gpio_switch "modem_rst" "Modem reset" "507" "0"
ucidef_add_gpio_switch "DOUT3" "DOUT3" "508" "0"
;;
+teltonika,rut955-h7v3c0)
+ ucidef_add_gpio_switch "sim_sel" "SIM select" "503" "1"
+ ucidef_add_gpio_switch "DOUT1" "DOUT1 (OC)" "504" "0"
+ ucidef_add_gpio_switch "DOUT2" "DOUT2 (Relay)" "505" "0"
+ ucidef_add_gpio_switch "modem_vbus" "Modem enable" "508" "1"
+ ucidef_add_gpio_switch "modem_rst" "Modem reset" "509" "0"
+ ;;
+
tplink,archer-c25-v1)
ucidef_add_gpio_switch "led_control" "LED control" "21" "0"
ucidef_add_gpio_switch "led_reset" "LED reset" "19" "1"
diff --git a/target/linux/ath79/generic/config-default b/target/linux/ath79/generic/config-default
index 5459bafd7d..d49df6bbee 100644
--- a/target/linux/ath79/generic/config-default
+++ b/target/linux/ath79/generic/config-default
@@ -1,8 +1,14 @@
CONFIG_AT803X_PHY=y
CONFIG_BCM_NET_PHYLIB=y
CONFIG_BROADCOM_PHY=y
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_PCA953X_IRQ=y
CONFIG_GPIO_WATCHDOG=y
CONFIG_GPIO_WATCHDOG_ARCH_INITCALL=y
+CONFIG_I2C=y
+CONFIG_I2C_ALGOBIT=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_GPIO=y
CONFIG_INTEL_XWAY_PHY=y
CONFIG_IP17XX_PHY=y
CONFIG_LEDS_RESET=y
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index 321615f014..8d8767ddf6 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -1158,6 +1158,12 @@ define Device/teltonika_rut955
endef
TARGET_DEVICES += teltonika_rut955
+define Device/teltonika_rut955-h7v3c0
+ $(Device/teltonika_rut955)
+ DEVICE_VARIANT := H7V3C0
+endef
+TARGET_DEVICES += teltonika_rut955-h7v3c0
+
define Device/trendnet_tew-823dru
SOC := qca9558
DEVICE_VENDOR := Trendnet