sunxi: fix network bringup on Olinuxino Micro boards
[openwrt/staging/stintel.git] / target / linux / sunxi / base-files / etc / board.d / 02_network
1 #
2 # Copyright (C) 2013-2015 OpenWrt.org
3 #
4
5 . /lib/functions/uci-defaults.sh
6 . /lib/functions/system.sh
7
8 sunxi_setup_interfaces()
9 {
10 local board="$1"
11
12 case "$board" in
13 friendlyarm,nanopi-r1|\
14 friendlyarm,nanopi-r1s-h5)
15 ucidef_set_interfaces_lan_wan "eth1" "eth0"
16 ;;
17 lamobo,lamobo-r1)
18 ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" wan
19 ;;
20 olimex,a13-olinuxino-micro)
21 ucidef_set_interface_lan "wlan0"
22 ;;
23 xunlong,orangepi-r1)
24 ucidef_set_interfaces_lan_wan "eth0" "eth1"
25 ;;
26 *)
27 ucidef_set_interface_lan "eth0"
28 ;;
29 esac
30 }
31
32 nanopi_r1_get_mac()
33 {
34 local interface=$1
35 local eeprom_path="/sys/bus/i2c/devices/2-0051/eeprom"
36 local address
37
38 if [ -f "$eeprom_path" ]; then
39 address=$(get_mac_binary "$eeprom_path" 0xfa)
40 if [ "$interface" = "lan" ]; then
41 address=$(macaddr_setbit_la "$address")
42 fi
43 else
44 address=$(macaddr_generate_from_mmc_cid mmcblk1)
45 if [ "$interface" = "lan" ]; then
46 address=$(macaddr_add "$address" 1)
47 fi
48 fi
49
50 echo "$address"
51 }
52
53 sunxi_setup_macs()
54 {
55 local board="$1"
56 local lan_mac=""
57 local wan_mac=""
58 local label_mac=""
59
60 case "$board" in
61 friendlyarm,nanopi-r1)
62 wan_mac=$(nanopi_r1_get_mac wan)
63 lan_mac=$(nanopi_r1_get_mac lan)
64 ;;
65 friendlyarm,nanopi-r1s-h5)
66 lan_mac=$(get_mac_binary "/sys/bus/i2c/devices/0-0051/eeprom" 0xfa)
67 ;;
68 esac
69
70 [ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
71 [ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" $wan_mac
72 [ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac
73 }
74
75 board_config_update
76 board=$(board_name)
77 sunxi_setup_interfaces $board
78 sunxi_setup_macs $board
79 board_config_flush
80
81 exit 0