From 62798db8d1a2946fa304ab6c071b87bc6b3db98c Mon Sep 17 00:00:00 2001
From: Arne Jonsson <arne.jonsson@seliro.com>
Date: Fri, 4 Feb 2022 16:53:42 +0100
Subject: [PATCH] Adding DNA0332TLS

---
 .../base-files/etc/board-db/boards/DNA0332TLS | 183 ++++++++++++++++++
 .../etc/system_layout/DNA0332TLS.json         |  22 +++
 iopsys-brcm63xx-arm/config/dna0332tls/config  |  10 +
 .../dna0332tls/base-files/etc/config/buttons  |  10 +
 .../base-files/etc/hotplug.d/dsl/20-leds      |  10 +
 .../etc/hotplug.d/ethernet/10-wan-led         |  10 +
 .../base-files/etc/ruleng/wifi.json           | 140 ++++++++++++++
 .../etc/uci-defaults/DNA0332tls-workarounds   |   4 +
 .../base-files/etc/wlan/nvram/DNA0332TLS.nvm  | Bin 0 -> 24920 bytes
 .../lib/preinit/70_flash_layout_fixup         |  12 ++
 iopsys-brcm63xx-arm/profiles/iopsys.mk        |  12 ++
 11 files changed, 413 insertions(+)
 create mode 100644 iopsys-brcm63xx-arm/base-files/etc/board-db/boards/DNA0332TLS
 create mode 100644 iopsys-brcm63xx-arm/base-files/etc/system_layout/DNA0332TLS.json
 create mode 100644 iopsys-brcm63xx-arm/config/dna0332tls/config
 create mode 100644 iopsys-brcm63xx-arm/dna0332tls/base-files/etc/config/buttons
 create mode 100644 iopsys-brcm63xx-arm/dna0332tls/base-files/etc/hotplug.d/dsl/20-leds
 create mode 100644 iopsys-brcm63xx-arm/dna0332tls/base-files/etc/hotplug.d/ethernet/10-wan-led
 create mode 100644 iopsys-brcm63xx-arm/dna0332tls/base-files/etc/ruleng/wifi.json
 create mode 100644 iopsys-brcm63xx-arm/dna0332tls/base-files/etc/uci-defaults/DNA0332tls-workarounds
 create mode 100644 iopsys-brcm63xx-arm/dna0332tls/base-files/etc/wlan/nvram/DNA0332TLS.nvm
 create mode 100644 iopsys-brcm63xx-arm/dna0332tls/base-files/lib/preinit/70_flash_layout_fixup

diff --git a/iopsys-brcm63xx-arm/base-files/etc/board-db/boards/DNA0332TLS b/iopsys-brcm63xx-arm/base-files/etc/board-db/boards/DNA0332TLS
new file mode 100644
index 000000000..68b6276bf
--- /dev/null
+++ b/iopsys-brcm63xx-arm/base-files/etc/board-db/boards/DNA0332TLS
@@ -0,0 +1,183 @@
+config board 'board'
+	# Specs
+	option hasAdsl '1'
+	option hasVdsl '1'
+	option hasVoice '1'
+	option hasDect '0'
+	option hasUsb '1'
+	option hasCatv '0'
+	option hasSfp '1'
+	option hasWifi '1'
+	# Voice
+	option VoicePorts '2'
+	option VoicePortNames 'Tel_1 Tel_2'
+	option VoicePortOrder 'brcm0 brcm1'
+	# Ethernet
+	option ethernetPorts '4'
+	option ethernetPortNames 'LAN1 LAN2 LAN3 LAN4 WAN'
+	option ethernetPortOrder 'eth0 eth1 eth2 eth3 eth4'
+	option ethernetLanPorts 'eth0 eth1 eth2 eth3'
+	option ethernetWanPort 'eth4'
+	# DSL
+	option adslWanPort 'atm0'
+	option vdslWanPort 'ptm0'
+
+###############################################################################
+#
+#       Button config, start
+#
+############### gpio buttons, driver config
+config gpio_button gpio_buttons
+	list buttons gpio_reset
+	list buttons gpio_wps
+	list buttons gpio_wifi
+
+config gpio_button gpio_reset
+	option addr 63
+	option active low
+
+config gpio_button gpio_wps
+	option addr 62
+	option active low
+
+config gpio_button gpio_wifi
+	option addr 8
+	option active low
+
+############### mapping function button to driver button
+config button reset
+	list button gpio_reset
+	option minpress 5000
+	option hotplug resetbutton
+#
+#       Button config , end
+#
+###############################################################################
+
+###############################################################################
+#
+#       Led config, start
+#
+############### gpio led, driver config
+
+config gpio_led gpio_leds
+	list leds green_power
+	list leds red_power
+	list leds blue_power
+	list leds green_wan
+	list leds green_mobile
+	list leds red_mobile
+	list leds green_phone
+	list leds red_phone
+	list leds green_wifi
+
+config gpio_led           green_power
+	option sysfs_attr led_9
+	option active     hi
+	option mode       led_linux
+
+config gpio_led           red_power
+	option sysfs_attr led_7
+	option active     hi
+	option mode       led_linux
+
+config gpio_led           blue_power
+	option sysfs_attr led_4
+	option active     hi
+	option mode       led_linux
+
+config gpio_led           green_wan
+	option sysfs_attr led_11
+	option active     hi
+	option mode       led_linux
+
+config gpio_led           green_mobile
+	option sysfs_attr led_5
+	option active     hi
+	option mode       led_linux
+
+config gpio_led           red_mobile
+	option sysfs_attr led_16
+	option active     hi
+	option mode       led_linux
+
+config gpio_led           green_phone
+	option sysfs_attr led_15
+	option active     hi
+	option mode       led_linux
+
+config gpio_led           red_phone
+	option sysfs_attr led_1
+	option active     hi
+	option mode       led_linux
+
+config gpio_led           green_wifi
+	option sysfs_attr led_3
+	option active     hi
+	option mode       led_linux
+
+################ mapping led function to driver led
+config led_map led_map
+	list functions status
+	list functions internet
+	list functions wan
+	list functions mobile
+	list functions voice
+	list functions wifi
+
+config led_map led_status
+	list led_action_ok      'green_power = ON'
+	list led_action_ok      'red_power   = OFF'
+	list led_action_off     'green_power = OFF'
+	list led_action_off     'red_power   = OFF'
+	list led_action_notice  'green_power = FLASH_SLOW'
+	list led_action_notice  'red_power   = FLASH_SLOW'
+	list led_action_alert   'green_power = OFF'
+	list led_action_alert   'red_power   = FLASH_SLOW'
+	list led_action_error   'green_power = OFF'
+	list led_action_error   'red_power   = FLASH_FAST'
+
+config led_map led_internet
+	list led_action_ok	'blue_power  = ON'
+	list led_action_off	'blue_power  = OFF'
+	list led_action_notice	'blue_power  = OFF'
+	list led_action_alert	'blue_power  = OFF'
+	list led_action_error	'blue_power  = OFF'
+
+config led_map led_wan
+	list led_action_ok     'green_wan  = ON'
+	list led_action_off    'green_wan  = OFF'
+	list led_action_notice 'green_wan  = FLASH_SLOW'
+	list led_action_alert  'green_wan  = FLASH_FAST'
+	list led_action_error  'green_wan  = OFF'
+
+config led_map led_mobile
+	list led_action_ok     'green_mobile  = ON'
+	list led_action_ok     'red_mobile = OFF'
+	list led_action_off    'green_mobile  = OFF'
+	list led_action_off    'red_mobile = OFF'
+	list led_action_notice 'green_mobile  = FLASH_SLOW'
+	list led_action_notice 'red_mobile = OFF'
+	list led_action_alert  'green_mobile  = OFF'
+	list led_action_alert  'red_mobile = FLASH_FAST'
+	list led_action_error  'green_mobile  = OFF'
+	list led_action_error  'red_mobile = ON'
+
+config led_map led_voice
+	list led_action_ok     'green_phone  = ON'
+	list led_action_ok     'red_phone = OFF'
+	list led_action_off    'green_phone  = OFF'
+	list led_action_off    'red_phone = OFF'
+	list led_action_notice 'green_phone  = FLASH_SLOW'
+	list led_action_notice 'red_phone = OFF'
+	list led_action_alert  'green_phone  = OFF'
+	list led_action_alert  'red_phone = FLASH_FAST'
+	list led_action_error  'green_phone  = OFF'
+	list led_action_error  'red_phone = ON'
+
+config led_map led_wifi
+	list led_action_ok     'green_wifi  = ON'
+	list led_action_off    'green_wifi  = OFF'
+	list led_action_notice 'green_wifi  = FLASH_SLOW'
+	list led_action_alert  'green_wifi  = FLASH_FAST'
+	list led_action_error  'green_wifi  = OFF'
diff --git a/iopsys-brcm63xx-arm/base-files/etc/system_layout/DNA0332TLS.json b/iopsys-brcm63xx-arm/base-files/etc/system_layout/DNA0332TLS.json
new file mode 100644
index 000000000..904500db8
--- /dev/null
+++ b/iopsys-brcm63xx-arm/base-files/etc/system_layout/DNA0332TLS.json
@@ -0,0 +1,22 @@
+{
+  "type": "nand",
+  "banks": [
+    {
+      "id": 0,
+      "name": "A",
+      "rootfs": "/dev/ubiblock0_4",
+      "overlay": "ubi0:defaults"
+    },
+    {
+      "id": 1,
+      "name": "B",
+      "rootfs": "/dev/ubiblock0_6",
+      "overlay": "ubi0:defaults"
+    }
+  ],
+  "overlay_scope": [
+    "/"
+  ],
+  "mounts": [
+  ]
+}
diff --git a/iopsys-brcm63xx-arm/config/dna0332tls/config b/iopsys-brcm63xx-arm/config/dna0332tls/config
new file mode 100644
index 000000000..e6de4eddc
--- /dev/null
+++ b/iopsys-brcm63xx-arm/config/dna0332tls/config
@@ -0,0 +1,10 @@
+CONFIG_TARGET_FAMILY="DNA0332"
+CONFIG_BCM_KERNEL_PROFILE="DNA0332"
+CONFIG_BCM_CHIP_ID="63146"
+
+CONFIG_BCM_VOICE=y
+
+CONFIG_BCM_FIRMWARE_TYPE_NAND_SQUASHFS=y
+
+CONFIG_BCM_FLASH_LAYOUT_OPTIONS="options_63146_dna0332_nand"
+CONFIG_BCM_SECURE_BOOT_SUPPORT=y
diff --git a/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/config/buttons b/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/config/buttons
new file mode 100644
index 000000000..5adb755ca
--- /dev/null
+++ b/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/config/buttons
@@ -0,0 +1,10 @@
+config button wps
+	list button gpio_wps
+	option minpress 1000
+	option hotplug wpsbutton
+
+config button wifi
+	list button gpio_wifi
+	option minpress 1000
+	option hotplug wifibutton
+
diff --git a/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/hotplug.d/dsl/20-leds b/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/hotplug.d/dsl/20-leds
new file mode 100644
index 000000000..27b6a825a
--- /dev/null
+++ b/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/hotplug.d/dsl/20-leds
@@ -0,0 +1,10 @@
+. /lib/network/utils.sh
+
+if [ "$STATUS" == "up" ]; then
+	ubus call led.wan set '{"state":"ok"}'
+elif [ "$STATUS" == "down" ]; then
+	$(uplink_phy_connected) || ubus call led.wan set '{"state":"off"}'
+elif [ "$STATUS" == "training" ]; then
+	ubus call led.wan set '{"state":"alert"}'
+fi
+
diff --git a/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/hotplug.d/ethernet/10-wan-led b/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/hotplug.d/ethernet/10-wan-led
new file mode 100644
index 000000000..b15aaa2a3
--- /dev/null
+++ b/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/hotplug.d/ethernet/10-wan-led
@@ -0,0 +1,10 @@
+[ "$PORT" == "eth4"  ] || exit 0
+
+. /lib/network/utils.sh
+
+if [ "$LINK" == "up" ]; then
+	ubus call led.wan set '{"state":"ok"}'
+elif [ "$LINK" == "down" ]; then
+	$(uplink_phy_connected) || ubus call led.wan set '{"state":"off"}'
+fi
+
diff --git a/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/ruleng/wifi.json b/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/ruleng/wifi.json
new file mode 100644
index 000000000..e226c5de8
--- /dev/null
+++ b/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/ruleng/wifi.json
@@ -0,0 +1,140 @@
+{
+	"wifi_down": {
+		"if_operator" : "AND",
+		"if_event_period": 2,
+		"if" : [
+			{
+				"event": "wifi.radio",
+				"match": {
+					"ifname":"wl0",
+					"event":"ap-disabled"
+				}
+			},
+			{
+				"event": "wifi.radio",
+				"match": {
+					"ifname":"wl1",
+					"event":"ap-disabled"
+				}
+			}
+		],
+		"then" : [
+			{
+				"object": "led.wifi",
+				"method":"set",
+				"args" : {
+					"state": "off"
+				},
+				"timeout": 1
+			}
+		]
+	},
+	"wifi_up": {
+		"if_operator" : "OR",
+		"if" : [
+			{
+				"event": "wifi.radio",
+				"match": {
+					"ifname":"wl0",
+					"event":"ap-enabled"
+				}
+			},
+			{
+				"event": "wifi.radio",
+				"match": {
+					"ifname":"wl1",
+					"event":"ap-enabled"
+				}
+			}
+		],
+		"then" : [
+			{
+				"object": "led.wifi",
+				"method":"set",
+				"args" : {
+					"state": "ok"
+				},
+				"timeout": 1
+			}
+		]
+	},
+	"wps_active": {
+		"if_operator" : "OR",
+		"if" : [
+			{
+				"event": "wifi.ap",
+				"match": {
+					"event":"wps-pbc-active"
+				}
+			}
+		],
+		"then" : [
+			{
+				"object": "led.wifi",
+				"method":"set",
+				"args" : {
+					"state": "notice"
+				},
+				"timeout": 1
+			}
+		]
+	},
+	"wps_success_timeout": {
+		"if_operator" : "OR",
+		"if" : [
+			{
+				"event": "wifi.ap",
+				"match": {
+					"event":"wps-reg-success"
+				}
+			},
+			{
+				"event": "wifi.ap",
+				"match": {
+					"event":"wps-timeout"
+				}
+			}
+		],
+		"then" : [
+			{
+				"object": "led.wifi",
+				"method":"set",
+				"args" : {
+					"state": "ok"
+				},
+				"timeout": 1
+			}
+		]
+	},
+	"wps_overlap": {
+		"if_operator" : "OR",
+		"if" : [
+			{
+				"event": "wifi.ap",
+				"match": {
+					"event":"wps-overlap"
+				}
+			}
+		],
+		"then_exec_interval" : 5,
+		"then" : [
+			{
+				"object": "led.wifi",
+				"method":"set",
+				"args" : {
+					"state": "alert",
+					"timeout": 120
+				},
+				"timeout": 1
+			},
+			{
+				"object": "led.wifi",
+				"method":"set",
+				"args" : {
+					"state": "ok"
+				},
+				"timeout": 1
+			}
+		]
+	}
+}
diff --git a/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/uci-defaults/DNA0332tls-workarounds b/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/uci-defaults/DNA0332tls-workarounds
new file mode 100644
index 000000000..535b0cca6
--- /dev/null
+++ b/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/uci-defaults/DNA0332tls-workarounds
@@ -0,0 +1,4 @@
+# WPS states will be handled by ruleng.wifi
+uci -q delete ruleng.wps
+uci -q set ruleng.wifi=rule
+uci -q set ruleng.wifi.recipe='/etc/ruleng/wifi.json'
diff --git a/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/wlan/nvram/DNA0332TLS.nvm b/iopsys-brcm63xx-arm/dna0332tls/base-files/etc/wlan/nvram/DNA0332TLS.nvm
new file mode 100644
index 0000000000000000000000000000000000000000..f2a0a53cc7c806e435937fc29dc3c8cfa1b50e92
GIT binary patch
literal 24920
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

literal 0
HcmV?d00001

diff --git a/iopsys-brcm63xx-arm/dna0332tls/base-files/lib/preinit/70_flash_layout_fixup b/iopsys-brcm63xx-arm/dna0332tls/base-files/lib/preinit/70_flash_layout_fixup
new file mode 100644
index 000000000..e67cecbbd
--- /dev/null
+++ b/iopsys-brcm63xx-arm/dna0332tls/base-files/lib/preinit/70_flash_layout_fixup
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+OVERLAY_LEBS_COUNT=300 
+
+flash_layout_fixup () {
+	vol_name="overlay1"
+	ubinfo /dev/ubi0 -N $vol_name >/dev/null 2>&1 || ubimkvol /dev/ubi0 -N $vol_name -S $OVERLAY_LEBS_COUNT 
+	vol_name="overlay2"
+	ubinfo /dev/ubi0 -N $vol_name >/dev/null 2>&1 || ubimkvol /dev/ubi0 -N $vol_name -S $OVERLAY_LEBS_COUNT 
+}
+
+boot_hook_add preinit_main flash_layout_fixup
diff --git a/iopsys-brcm63xx-arm/profiles/iopsys.mk b/iopsys-brcm63xx-arm/profiles/iopsys.mk
index 6ecefd1dc..b2fc03a6a 100644
--- a/iopsys-brcm63xx-arm/profiles/iopsys.mk
+++ b/iopsys-brcm63xx-arm/profiles/iopsys.mk
@@ -132,3 +132,15 @@ define Profile/disc/Description
 endef
 
 $(eval $(call Profile,disc))
+
+#################### dna0332
+define Profile/dna0332tls
+  NAME:=dna0332
+  PACKAGES:=$(VOICE_SUPPORT)
+endef
+
+define Profile/dna0332tls/Description
+	dna0332tls profile
+endef
+
+$(eval $(call Profile,dna0332tls))
-- 
GitLab