octeon: add support for Ubiquiti UniFi Security Gateway
Ubiquiti UniFi Security Gateway (USG) is largely identical to the EdgeRouter Lite (ERLite-3) apart from a different board ID and two dome leds. Device data (from WikiDev): CPU: Cavium Octeon Plus CN5020 @500MHz 2-cores Ethernet: 3x Atheros AR8035-A GbE PHY's Flash: On-board 4MB Flash Storage: Internal 3.8GB USB Flash (Kingston ID) drive w/ 1.5GB free for use occupies single internal USB port. Serial: 1x RJ45 port on front panel. 115200, 8N1 Buttons: 1x Reset Flash instructions are identical to EdgeRouter Lite. Signed-off-by: Clemens Hopfer <openwrt@wireloss.net>
This commit is contained in:
parent
29ed58c8be
commit
8c0930b70b
@ -7,7 +7,8 @@
|
|||||||
board_config_update
|
board_config_update
|
||||||
|
|
||||||
case "$(board_name)" in
|
case "$(board_name)" in
|
||||||
itus,shield-router)
|
itus,shield-router|\
|
||||||
|
ubnt,usg)
|
||||||
ucidef_set_interfaces_lan_wan "eth1 eth2" "eth0"
|
ucidef_set_interfaces_lan_wan "eth1 eth2" "eth0"
|
||||||
;;
|
;;
|
||||||
ubnt,edgerouter-4)
|
ubnt,edgerouter-4)
|
||||||
|
@ -17,7 +17,8 @@ do_sysinfo_octeon() {
|
|||||||
name="erpro"
|
name="erpro"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"UBNT_E300"*)
|
"UBNT_E300"*|\
|
||||||
|
"UBNT_USG"*)
|
||||||
# let generic 02_sysinfo handle it since device has its own device tree
|
# let generic 02_sysinfo handle it since device has its own device tree
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
|
@ -15,7 +15,8 @@ octeon_move_config() {
|
|||||||
. /lib/functions.sh
|
. /lib/functions.sh
|
||||||
|
|
||||||
case "$(board_name)" in
|
case "$(board_name)" in
|
||||||
erlite)
|
erlite|\
|
||||||
|
ubnt,usg)
|
||||||
move_config "/dev/sda1"
|
move_config "/dev/sda1"
|
||||||
;;
|
;;
|
||||||
itus,shield-router)
|
itus,shield-router)
|
||||||
|
@ -27,7 +27,8 @@ platform_copy_config_helper() {
|
|||||||
|
|
||||||
platform_copy_config() {
|
platform_copy_config() {
|
||||||
case "$(board_name)" in
|
case "$(board_name)" in
|
||||||
erlite)
|
erlite|\
|
||||||
|
ubnt,usg)
|
||||||
platform_copy_config_helper /dev/sda1
|
platform_copy_config_helper /dev/sda1
|
||||||
;;
|
;;
|
||||||
itus,shield-router)
|
itus,shield-router)
|
||||||
@ -91,7 +92,8 @@ platform_do_upgrade() {
|
|||||||
ubnt,edgerouter-6p)
|
ubnt,edgerouter-6p)
|
||||||
kernel=mmcblk0p1
|
kernel=mmcblk0p1
|
||||||
;;
|
;;
|
||||||
erlite)
|
erlite|\
|
||||||
|
ubnt,usg)
|
||||||
kernel=sda1
|
kernel=sda1
|
||||||
;;
|
;;
|
||||||
itus,shield-router)
|
itus,shield-router)
|
||||||
@ -119,7 +121,8 @@ platform_check_image() {
|
|||||||
erlite | \
|
erlite | \
|
||||||
itus,shield-router | \
|
itus,shield-router | \
|
||||||
ubnt,edgerouter-4 | \
|
ubnt,edgerouter-4 | \
|
||||||
ubnt,edgerouter-6p)
|
ubnt,edgerouter-6p | \
|
||||||
|
ubnt,usg)
|
||||||
local kernel_length=$(tar xf $tar_file $board_dir/kernel -O | wc -c 2> /dev/null)
|
local kernel_length=$(tar xf $tar_file $board_dir/kernel -O | wc -c 2> /dev/null)
|
||||||
local rootfs_length=$(tar xf $tar_file $board_dir/root -O | wc -c 2> /dev/null)
|
local rootfs_length=$(tar xf $tar_file $board_dir/root -O | wc -c 2> /dev/null)
|
||||||
[ "$kernel_length" = 0 -o "$rootfs_length" = 0 ] && {
|
[ "$kernel_length" = 0 -o "$rootfs_length" = 0 ] && {
|
||||||
|
@ -0,0 +1,97 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
/*
|
||||||
|
* Device tree source for Ubiquity UniFi Security Gateway.
|
||||||
|
*
|
||||||
|
* Written for EdgeRouter Lite by: Aaro Koskinen <aaro.koskinen@iki.fi>
|
||||||
|
* Adapted for USG by: Clemens Hopfer <openwrt@wireloss.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/include/ "octeon_3xxx.dtsi"
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "ubnt,usg";
|
||||||
|
model = "Ubiquiti UniFi Security Gateway";
|
||||||
|
|
||||||
|
soc@0 {
|
||||||
|
smi0: mdio@1180000001800 {
|
||||||
|
phy5: ethernet-phy@5 {
|
||||||
|
reg = <5>;
|
||||||
|
compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
|
};
|
||||||
|
phy6: ethernet-phy@6 {
|
||||||
|
reg = <6>;
|
||||||
|
compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
|
};
|
||||||
|
phy7: ethernet-phy@7 {
|
||||||
|
reg = <7>;
|
||||||
|
compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
pip: pip@11800a0000000 {
|
||||||
|
interface@0 {
|
||||||
|
ethernet@0 {
|
||||||
|
phy-handle = <&phy7>;
|
||||||
|
rx-delay = <0>;
|
||||||
|
tx-delay = <0x10>;
|
||||||
|
};
|
||||||
|
ethernet@1 {
|
||||||
|
phy-handle = <&phy6>;
|
||||||
|
rx-delay = <0>;
|
||||||
|
tx-delay = <0x10>;
|
||||||
|
};
|
||||||
|
ethernet@2 {
|
||||||
|
phy-handle = <&phy5>;
|
||||||
|
rx-delay = <0>;
|
||||||
|
tx-delay = <0x10>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
uart0: serial@1180000000800 {
|
||||||
|
clock-frequency = <500000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
usbn: usbn@1180068000000 {
|
||||||
|
refclk-frequency = <12000000>;
|
||||||
|
refclk-type = "crystal";
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
|
led_dome_white: led-0 {
|
||||||
|
label = "white:dome";
|
||||||
|
gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
led_dome_blue: led-1 {
|
||||||
|
label = "blue:dome";
|
||||||
|
gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
keys {
|
||||||
|
compatible = "gpio-keys-polled";
|
||||||
|
poll-interval = <20>;
|
||||||
|
|
||||||
|
key-restart {
|
||||||
|
label = "reset";
|
||||||
|
linux,code = <KEY_RESTART>;
|
||||||
|
gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
|
||||||
|
debounce-interval = <60>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
pip = &pip;
|
||||||
|
led-boot = &led_dome_white;
|
||||||
|
led-failsafe = &led_dome_blue;
|
||||||
|
led-running = &led_dome_blue;
|
||||||
|
led-upgrade = &led_dome_blue;
|
||||||
|
};
|
||||||
|
};
|
@ -84,4 +84,14 @@ define Device/ubnt_edgerouter-lite
|
|||||||
endef
|
endef
|
||||||
TARGET_DEVICES += ubnt_edgerouter-lite
|
TARGET_DEVICES += ubnt_edgerouter-lite
|
||||||
|
|
||||||
|
define Device/ubnt_unifi-usg
|
||||||
|
$(Device/ubnt_edgerouter-lite)
|
||||||
|
DEVICE_MODEL := UniFi Security Gateway
|
||||||
|
BOARD_NAME := ubnt,usg
|
||||||
|
DEVICE_PACKAGES += kmod-gpio-button-hotplug kmod-leds-gpio
|
||||||
|
DEVICE_DTS := cn5020_ubnt_usg
|
||||||
|
KERNEL += | append-dtb-to-elf
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += ubnt_unifi-usg
|
||||||
|
|
||||||
$(eval $(call BuildImage))
|
$(eval $(call BuildImage))
|
||||||
|
46
target/linux/octeon/patches-5.10/150-ubnt_usg_support.patch
Normal file
46
target/linux/octeon/patches-5.10/150-ubnt_usg_support.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
--- a/arch/mips/include/asm/octeon/cvmx-bootinfo.h
|
||||||
|
+++ b/arch/mips/include/asm/octeon/cvmx-bootinfo.h
|
||||||
|
@@ -296,6 +296,7 @@ enum cvmx_board_types_enum {
|
||||||
|
CVMX_BOARD_TYPE_CUST_PRIVATE_MIN = 20001,
|
||||||
|
CVMX_BOARD_TYPE_UBNT_E100 = 20002,
|
||||||
|
CVMX_BOARD_TYPE_UBNT_E200 = 20003,
|
||||||
|
+ CVMX_BOARD_TYPE_UBNT_USG = 20004,
|
||||||
|
CVMX_BOARD_TYPE_UBNT_E220 = 20005,
|
||||||
|
CVMX_BOARD_TYPE_ITUS_SHIELD = 20006,
|
||||||
|
CVMX_BOARD_TYPE_UBNT_E300 = 20300,
|
||||||
|
@@ -399,6 +400,7 @@ static inline const char *cvmx_board_typ
|
||||||
|
/* Customer private range */
|
||||||
|
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MIN)
|
||||||
|
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E100)
|
||||||
|
+ ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_USG)
|
||||||
|
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E200)
|
||||||
|
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E220)
|
||||||
|
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_ITUS_SHIELD)
|
||||||
|
--- a/arch/mips/cavium-octeon/octeon-platform.c
|
||||||
|
+++ b/arch/mips/cavium-octeon/octeon-platform.c
|
||||||
|
@@ -634,6 +634,7 @@ static void __init octeon_rx_tx_delay(in
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case CVMX_BOARD_TYPE_UBNT_E100:
|
||||||
|
+ case CVMX_BOARD_TYPE_UBNT_USG:
|
||||||
|
if (iface == 0 && port <= 2) {
|
||||||
|
_octeon_rx_tx_delay(eth, 0x0, 0x10);
|
||||||
|
return;
|
||||||
|
--- a/arch/mips/cavium-octeon/executive/cvmx-helper-board.c
|
||||||
|
+++ b/arch/mips/cavium-octeon/executive/cvmx-helper-board.c
|
||||||
|
@@ -170,6 +170,7 @@ int cvmx_helper_board_get_mii_address(in
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
case CVMX_BOARD_TYPE_UBNT_E100:
|
||||||
|
+ case CVMX_BOARD_TYPE_UBNT_USG:
|
||||||
|
if (ipd_port >= 0 && ipd_port <= 2)
|
||||||
|
return 7 - ipd_port;
|
||||||
|
else
|
||||||
|
@@ -337,6 +338,7 @@ enum cvmx_helper_board_usb_clock_types _
|
||||||
|
case CVMX_BOARD_TYPE_LANAI2_G:
|
||||||
|
case CVMX_BOARD_TYPE_NIC10E_66:
|
||||||
|
case CVMX_BOARD_TYPE_UBNT_E100:
|
||||||
|
+ case CVMX_BOARD_TYPE_UBNT_USG:
|
||||||
|
return USB_CLOCK_TYPE_CRYSTAL_12;
|
||||||
|
case CVMX_BOARD_TYPE_NIC10E:
|
||||||
|
return USB_CLOCK_TYPE_REF_12;
|
46
target/linux/octeon/patches-5.15/150-ubnt_usg_support.patch
Normal file
46
target/linux/octeon/patches-5.15/150-ubnt_usg_support.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
--- a/arch/mips/include/asm/octeon/cvmx-bootinfo.h
|
||||||
|
+++ b/arch/mips/include/asm/octeon/cvmx-bootinfo.h
|
||||||
|
@@ -296,6 +296,7 @@ enum cvmx_board_types_enum {
|
||||||
|
CVMX_BOARD_TYPE_CUST_PRIVATE_MIN = 20001,
|
||||||
|
CVMX_BOARD_TYPE_UBNT_E100 = 20002,
|
||||||
|
CVMX_BOARD_TYPE_UBNT_E200 = 20003,
|
||||||
|
+ CVMX_BOARD_TYPE_UBNT_USG = 20004,
|
||||||
|
CVMX_BOARD_TYPE_UBNT_E220 = 20005,
|
||||||
|
CVMX_BOARD_TYPE_ITUS_SHIELD = 20006,
|
||||||
|
CVMX_BOARD_TYPE_UBNT_E300 = 20300,
|
||||||
|
@@ -399,6 +400,7 @@ static inline const char *cvmx_board_typ
|
||||||
|
/* Customer private range */
|
||||||
|
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MIN)
|
||||||
|
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E100)
|
||||||
|
+ ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_USG)
|
||||||
|
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E200)
|
||||||
|
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E220)
|
||||||
|
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_ITUS_SHIELD)
|
||||||
|
--- a/arch/mips/cavium-octeon/octeon-platform.c
|
||||||
|
+++ b/arch/mips/cavium-octeon/octeon-platform.c
|
||||||
|
@@ -634,6 +634,7 @@ static void __init octeon_rx_tx_delay(in
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case CVMX_BOARD_TYPE_UBNT_E100:
|
||||||
|
+ case CVMX_BOARD_TYPE_UBNT_USG:
|
||||||
|
if (iface == 0 && port <= 2) {
|
||||||
|
_octeon_rx_tx_delay(eth, 0x0, 0x10);
|
||||||
|
return;
|
||||||
|
--- a/arch/mips/cavium-octeon/executive/cvmx-helper-board.c
|
||||||
|
+++ b/arch/mips/cavium-octeon/executive/cvmx-helper-board.c
|
||||||
|
@@ -170,6 +170,7 @@ int cvmx_helper_board_get_mii_address(in
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
case CVMX_BOARD_TYPE_UBNT_E100:
|
||||||
|
+ case CVMX_BOARD_TYPE_UBNT_USG:
|
||||||
|
if (ipd_port >= 0 && ipd_port <= 2)
|
||||||
|
return 7 - ipd_port;
|
||||||
|
else
|
||||||
|
@@ -337,6 +338,7 @@ enum cvmx_helper_board_usb_clock_types _
|
||||||
|
case CVMX_BOARD_TYPE_LANAI2_G:
|
||||||
|
case CVMX_BOARD_TYPE_NIC10E_66:
|
||||||
|
case CVMX_BOARD_TYPE_UBNT_E100:
|
||||||
|
+ case CVMX_BOARD_TYPE_UBNT_USG:
|
||||||
|
return USB_CLOCK_TYPE_CRYSTAL_12;
|
||||||
|
case CVMX_BOARD_TYPE_NIC10E:
|
||||||
|
return USB_CLOCK_TYPE_REF_12;
|
Loading…
x
Reference in New Issue
Block a user