realtek: Clean up and standardize realtek-poe support
[openwrt/openwrt.git] / target / linux / realtek / base-files / etc / board.d / 02_network
1
2 . /lib/functions.sh
3 . /lib/functions/uci-defaults.sh
4 . /lib/functions/system.sh
5
6 ucidef_set_poe() {
7 json_select_object poe
8 json_add_string "budget" "$1"
9 json_select_array ports
10 for port in $2; do
11 if [ -n "$3" -a -n "$(expr "$3" : "\(.\+[[:space:]]\)\{0,1\}$port\([[:space:]].*\|\$\)")" ]; then
12 continue # skip ports passed via $3
13 fi
14 json_add_string "" "$port"
15 done
16 json_select ..
17 json_select ..
18 }
19
20 board=$(board_name)
21 board_config_update
22
23 lan_list=$(ls -1 -v -d /sys/class/net/lan* | xargs -n1 basename | xargs)
24 lan_list_rev=$(ls -1 -v -d -r /sys/class/net/lan* | xargs -n1 basename | xargs)
25 ucidef_set_bridge_device switch
26 ucidef_set_interface_lan "$lan_list"
27
28 lan_mac=""
29 lan_mac_start=""
30 lan_mac_end=""
31 label_mac=""
32 case $board in
33 hpe,1920-8g|\
34 hpe,1920-8g-poe-65w|\
35 hpe,1920-8g-poe-180w|\
36 hpe,1920-16g|\
37 hpe,1920-24g)
38 label_mac=$(mtd_get_mac_binary factory 0x68)
39 lan_mac=$label_mac
40 mac_count1=$(hexdump -v -n 4 -s 0x110 -e '4 "%d"' $(find_mtd_part factory) 2>/dev/null)
41 mac_count2=$(hexdump -v -n 4 -s 0x114 -e '4 "%d"' $(find_mtd_part factory) 2>/dev/null)
42 lan_mac_start=$(macaddr_add $lan_mac 2)
43 lan_mac_end=$(macaddr_add $lan_mac $((mac_count2-mac_count1)))
44 ;;
45 tplink,sg2008p-v1|\
46 tplink,sg2210p-v3|\
47 tplink,sg2452p-v4|\
48 tplink,t1600g-28ts-v3)
49 label_mac=$(get_mac_label)
50 lan_mac="$label_mac"
51 ;;
52 *)
53 lan_mac=$(mtd_get_mac_ascii u-boot-env2 mac_start)
54 lan_mac_end=$(mtd_get_mac_ascii u-boot-env2 mac_end)
55 label_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
56 [ -z "$lan_mac" ] && lan_mac=$label_mac
57 ;;
58 esac
59
60 ucidef_set_interface_macaddr "lan" $lan_mac
61 ucidef_set_bridge_mac "$lan_mac"
62 ucidef_set_network_device_mac eth0 $lan_mac
63 [ -z "$lan_mac_start" ] && lan_mac_start=$lan_mac
64 for lan in $lan_list; do
65 ucidef_set_network_device_mac $lan $lan_mac_start
66 [ -z "$lan_mac_end" ] || [ "$lan_mac_start" == "$lan_mac_end" ] && lan_mac_start=$(macaddr_setbit_la $lan_mac_start)
67 lan_mac_start=$(macaddr_add $lan_mac_start 1)
68 done
69 [ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac
70
71 case $board in
72 d-link,dgs-1210-10mp-f)
73 ucidef_set_poe 130 "$lan_list" "lan9 lan10"
74 ;;
75 d-link,dgs-1210-10p)
76 ucidef_set_poe 65 "$lan_list" "lan9 lan10"
77 ;;
78 d-link,dgs-1210-28mp-f)
79 ucidef_set_poe 370 "lan8 lan7 lan6 lan5 lan4 lan3 lan2 lan1 lan16 lan15 lan14 lan13 lan12 lan11 lan10 lan9 lan24 lan23
80 lan22 lan21 lan20 lan19 lan18 lan17" "lan25 lan26 lan27 lan28"
81 ;;
82 engenius,ews2910p)
83 ucidef_set_poe 60 "$lan_list" "lan9 lan10"
84 ;;
85 hpe,1920-8g-poe-65w)
86 ucidef_set_poe 65 "$lan_list_rev" "lan9 lan10"
87 ;;
88 hpe,1920-8g-poe-180w)
89 ucidef_set_poe 180 "$lan_list_rev" "lan9 lan10"
90 ;;
91 netgear,gs110tpp-v1)
92 ucidef_set_poe 130 "$lan_list" "lan9 lan10"
93 ;;
94 netgear,gs310tp-v1)
95 ucidef_set_poe 55 "$lan_list" "lan9 lan10"
96 ;;
97 zyxel,gs1900-10hp)
98 ucidef_set_poe 77 "$lan_list" "lan9 lan10"
99 ;;
100 zyxel,gs1900-8hp-v1|\
101 zyxel,gs1900-8hp-v2)
102 ucidef_set_poe 70 "$lan_list"
103 ;;
104 zyxel,gs1900-24hp-v1|\
105 zyxel,gs1900-24hp-v2)
106 ucidef_set_poe 170 "$lan_list" "lan25 lan26"
107 ;;
108 esac
109
110 board_config_flush
111
112 exit 0