brcm63xx: populate /tmp/sysinfo
[openwrt/openwrt.git] / target / linux / brcm63xx / base-files / lib / brcm63xx.sh
1 #!/bin/sh
2 #
3 # Copyright (C) 2007 OpenWrt.org
4 #
5 #
6
7 board_id=""
8 status_led=""
9 status_led2=""
10 sys_mtd_part=""
11 brcm63xx_has_reset_button=""
12 ifname=""
13
14 brcm63xx_legacy_detect() {
15 local board_name
16
17 case "$1" in
18 963281TAN)
19 board_name="bcm963281tan"
20 ;;
21 963281T_TEF)
22 board_name="a4001n1"
23 ;;
24 96328avng)
25 board_name="bcm96328avng"
26 ;;
27 96328dg2x2)
28 board_name="a4401n"
29 ;;
30 96328A-1241N)
31 board_name="ar-5381u"
32 ;;
33 96328A-1441N1)
34 board_name="ar-5387un"
35 ;;
36 96348GW)
37 board_name="bcm96348gw"
38 ;;
39 96348GW-11)
40 board_name="bcm96348gw-11"
41 ;;
42 96358-502V)
43 board_name="spw303v"
44 ;;
45 96368M-1341N)
46 board_name="vr-3025un"
47 ;;
48 96368M-1541N)
49 board_name="vr-3025u"
50 ;;
51 96369R-1231N)
52 board_name="wap-5813n"
53 ;;
54 AR1004G)
55 board_name="ar1004g"
56 ;;
57 AW4139 |\
58 AW4339U)
59 board_name="dsl-274xb-c"
60 ;;
61 AW5200B)
62 board_name="dsl-275xb-d"
63 ;;
64 CPVA642)
65 board_name="cpva642"
66 ;;
67 CT536_CT5621)
68 board_name="ct536_ct5621"
69 ;;
70 CVG834G_E15R3921)
71 board_name="cvg834g"
72 ;;
73 D-4P-W)
74 board_name="dsl-2640b-b"
75 ;;
76 DGND3700v1_3800B)
77 board_name="dgnd3700v1_dgnd3800b"
78 ;;
79 "F@ST2504n")
80 board_name="fast2504n"
81 ;;
82 'F@ST2704V2')
83 board_name="fast2704v2"
84 ;;
85 GW6000)
86 board_name="gw6000"
87 ;;
88 GW6200)
89 board_name="gw6200"
90 ;;
91 HW553)
92 board_name="hg553"
93 ;;
94 HW556_A)
95 board_name="hg556a_a"
96 ;;
97 HW556_B)
98 board_name="hg556a_b"
99 ;;
100 HW556_C)
101 board_name="hg556a_c"
102 ;;
103 HW6358GW_B)
104 board_name="hg620"
105 ;;
106 NB6)
107 board_name="neufbox6"
108 ;;
109 P870HW-51a_v2)
110 board_name="p870hw-51a_v2"
111 ;;
112 RTA770BW)
113 board_name="rta770bw"
114 ;;
115 RTA770W)
116 board_name="rta770w"
117 ;;
118 SPW500V)
119 board_name="spw500v"
120 ;;
121 V2110)
122 board_name="v2110"
123 ;;
124 *)
125 board_name="unknown"
126 ;;
127 esac
128
129 echo "$board_name"
130 }
131
132 brcm63xx_detect() {
133 local board_name model
134
135 board_id=$(awk 'BEGIN{FS="[ \t:/]+"} /system type/ {print $4}' /proc/cpuinfo)
136
137 if [ "$board_id" = "96358VW" ] && [ -n "$(swconfig dev eth1 help 2>/dev/null)" ]; then
138 board_id="DVAG3810BN"
139 fi
140
141 if [ -e /proc/device-tree ]; then
142 model=$(cat /proc/device-tree/model)
143 else
144 model="Unknown bcm63xx board"
145 fi
146
147 board_name=$(brcm63xx_legacy_detect "$board_id")
148
149 case "$board_name" in
150 bcm963281tan)
151 status_led="963281TAN::power"
152 ifname=eth0
153 ;;
154 a4001n1)
155 brcm63xx_has_reset_button="true"
156 status_led="A4001N1:green:power"
157 ifname=eth0
158 ;;
159 bcm96328avng)
160 status_led="96328avng::power"
161 ifname=eth0
162 ;;
163 a4001n)
164 brcm63xx_has_reset_button="true"
165 status_led="A4001N:green:power"
166 ifname="eth0"
167 ;;
168 ar-5381u)
169 brcm63xx_has_reset_button="true"
170 status_led="AR-5381u:green:power"
171 ifname=eth0
172 ;;
173 ar-5387un)
174 brcm63xx_has_reset_button="true"
175 status_led="AR-5387un:green:power"
176 ifname=eth0
177 ;;
178 bcm96348gw)
179 status_led="96348GW:green:power"
180 brcm63xx_has_reset_button="true"
181 ifname=eth1
182 ;;
183 bcm96348gw-11)
184 status_led="96348GW-11:green:power"
185 brcm63xx_has_reset_button="true"
186 ifname=eth1
187 ;;
188 spw303v)
189 status_led="spw303v:green:power+adsl"
190 brcm63xx_has_reset_button="true"
191 ifname=eth0
192 ;;
193 vr-3025un)
194 brcm63xx_has_reset_button="true"
195 status_led="VR-3025un:green:power"
196 ifname="eth0"
197 ;;
198 vr-3025u)
199 brcm63xx_has_reset_button="true"
200 status_led="VR-3025u:green:power"
201 ifname="eth0"
202 ;;
203 wap-5813n)
204 brcm63xx_has_reset_button="true"
205 status_led="WAP-5813n:green:power"
206 ifname="eth0"
207 ;;
208 ar1004g)
209 status_led="AR1004G:green:power"
210 brcm63xx_has_reset_button="true"
211 ;;
212 dsl-274xb-c)
213 status_led="dsl-274xb:green:power"
214 brcm63xx_has_reset_button="true"
215 ifname=eth0
216 ;;
217 dsl-275xb-d)
218 status_led="dsl-275xb:green:power"
219 brcm63xx_has_reset_button="true"
220 ifname=eth0
221 ;;
222 cpva642)
223 status_led="CPVA642:green:power:"
224 brcm63xx_has_reset_button="true"
225 ifname=eth0
226 ;;
227 ct536_ct5621)
228 status_led="CT536_CT5621:green:power"
229 brcm63xx_has_reset_button="true"
230 ifname=eth0
231 ;;
232 cvg834g)
233 status_led="CVG834G:green:power"
234 ifname=eth0
235 ;;
236 dsl-2640b-b)
237 status_led="D-4P-W:green:power"
238 brcm63xx_has_reset_button="true"
239 ifname=eth0
240 ;;
241 dgnd3700v1_dgnd3800b)
242 status_led="DGND3700v1_3800B:green:power"
243 brcm63xx_has_reset_button="true"
244 ifname="eth0"
245 ;;
246 fast2504n)
247 status_led="fast2504n:green:ok"
248 brcm63xx_has_reset_button="true"
249 ifname=eth0
250 ;;
251 fast2704v2)
252 status_led="F@ST2704V2:green:power"
253 brcm63xx_has_reset_button="true"
254 ifname=eth0
255 ;;
256 gw6000)
257 brcm63xx_has_reset_button="true"
258 ifname=eth1
259 ;;
260 gw6200)
261 status_led="GW6200:green:line1"
262 status_led2="GW6200:green:tel"
263 brcm63xx_has_reset_button="true"
264 ifname=eth1
265 ;;
266 hg553)
267 status_led="HW553:blue:power"
268 brcm63xx_has_reset_button="true"
269 ifname=eth0
270 ;;
271 hg556a_*)
272 status_led="HW556:red:power"
273 brcm63xx_has_reset_button="true"
274 ifname=eth0
275 ;;
276 hg520)
277 status_led="HW520:green:net"
278 brcm63xx_has_reset_button="true"
279 ifname="eth0"
280 ;;
281 neufbox6)
282 brcm63xx_has_reset_button="true"
283 ifname=eth0
284 ;;
285 p870hw-51a_v2)
286 brcm63xx_has_reset_button="true"
287 status_led="P870HW-51a:green:power"
288 ifname="eth0"
289 ;;
290 rta770bw)
291 brcm63xx_has_reset_button="true"
292 status_led="RTA770BW:green:diag"
293 ifname=eth0
294 ;;
295 rta770w)
296 brcm63xx_has_reset_button="true"
297 status_led="RTA770W:green:diag"
298 ifname=eth0
299 ;;
300 spw500v)
301 status_led="SPW500V:green:power"
302 brcm63xx_has_reset_button="true"
303 ifname=eth0
304 ;;
305 v2110)
306 status_led="V2110:power:green"
307 brcm63xx_has_reset_button="true"
308 ifname=eth0
309 ;;
310 esac
311
312 [ -e "/tmp/sysinfo" ] || mkdir -p "/tmp/sysinfo"
313
314 echo "$board_name" > /tmp/sysinfo/board_name
315 echo "$model" > /tmp/sysinfo/model
316 }
317
318 brcm63xx_board_name() {
319 local name
320
321 [ -f /tmp/sysinfo/board_name ] && name=$(cat /tmp/sysinfo/board_name)
322 [ -n "$name" ] || name="unknown"
323
324 echo $name
325 }
326
327 brcm63xx_detect