brcm63xx: set status leds from within diag.sh
[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 sys_mtd_part=""
9 brcm63xx_has_reset_button=""
10 ifname=""
11
12 brcm63xx_dt_detect() {
13         local board_name
14
15         case "$1" in
16         "ADB P.DG A4001N")
17                 board_name="a4001n"
18                 ;;
19         "ADB P.DG A4001N1")
20                 board_name="a4001n1"
21                 ;;
22         "Alcatel RG100A")
23                 board_name="rg100a"
24                 ;;
25         "ASMAX AR 1004g")
26                 board_name="ar100g"
27                 ;;
28         "Belkin F5D7633")
29                 board_name="f5d7633"
30                 ;;
31         "Broadcom 96348R reference board")
32                 board_name="bcm96348r"
33                 ;;
34         "Broadcom bcm963281TAN reference board")
35                 board_name="bcm963281tan"
36                 ;;
37         "Broadcom BCM96328avng reference board")
38                 board_name="bcm6328avng"
39                 ;;
40         "Broadcom BCM96345GW2 reference board")
41                 board_name="bcm96345gw2"
42                 ;;
43         "Broadcom BCM96348GW-10 reference board")
44                 board_name="bcm96348gw-10"
45                 ;;
46         "Broadcom BCM96348GW-11 reference board")
47                 board_name="bcm96348gw-11"
48                 ;;
49         "Broadcom BCM96348GW reference board")
50                 board_name="bcm96358gw"
51                 ;;
52         "Broadcom BCM96358VW reference board")
53                 board_name="bcm96358vw"
54                 ;;
55         "Broadcom BCM96358VW2 reference board")
56                 board_name="bcm96358vw2"
57                 ;;
58         "Broadcom BCM96368MVNgr reference board")
59                 board_name="bcm96368mvngr"
60                 ;;
61         "Broadcom BCM96368MVWG reference board")
62                 board_name="bcm96368mvwg"
63                 ;;
64         "BT Voyager V2500V")
65                 board_name="v2500v"
66                 ;;
67         "Comtrend AR-5381u")
68                 board_name="ar-5381u"
69                 ;;
70         "Comtrend AR-5387un")
71                 board_name="ar-5387un"
72                 ;;
73         "Comtrend CT-5365")
74                 board_name="ct-5365"
75                 ;;
76         "Comtrend CT-536+/CT-5621T")
77                 board_name="ct-536p_5621t"
78                 ;;
79         "Comtrend CT-6373")
80                 board_name="ct-6373"
81                 ;;
82         "Comtrend VR-3025u")
83                 board_name="vr-3025u"
84                 ;;
85         "Comtrend VR-3025un")
86                 board_name="vr-3025un"
87                 ;;
88         "Comtrend WAP-5813n")
89                 board_name="wap-5813n"
90                 ;;
91         "Davolink DV-201AMR")
92                 board_name="dv-201amr"
93                 ;;
94         "D-Link DSL-2640B rev B2")
95                 board_name="dsl-2640b-b"
96                 ;;
97         "D-Link DSL-2650U")
98                 board_name="dsl-2650u"
99                 ;;
100         "D-Link DSL-2740B/DSL-2741B rev C2/3")
101                 board_name="dsl-274xb-c"
102                 ;;
103         "D-Link DSL-2740B/DSL-2741B rev F1")
104                 board_name="dsl-274xb-f"
105                 ;;
106         "D-Link DVA-G3810BN/TL")
107                 board_name="dva-g3810bn"
108                 ;;
109         "Dynalink RTA1025W")
110                 board_name="rta1025w"
111                 ;;
112         "Dynalink RTA1320")
113                 board_name="rta1320"
114                 ;;
115         "Huawei EchoLife HG520v")
116                 board_name="hg520v"
117                 ;;
118         "Huawei EchoLife HG553")
119                 board_name="hg553"
120                 ;;
121         "Huawei EchoLife HG556a (version A)")
122                 board_name="hg556a_a"
123                 ;;
124         "Huawei EchoLife HG556a (version B)")
125                 board_name="hg556a_b"
126                 ;;
127         "Huawei EchoLife HG556a (version C)")
128                 board_name="hg556a_c"
129                 ;;
130         "Inventel Livebox 1")
131                 board_name="livebox1"
132                 ;;
133         "Netgear CVG834G")
134                 board_name="cvg834g"
135                 ;;
136         "Netgear DG834GT/PN")
137                 board_name="dg834gt"
138                 ;;
139         "Netgear DGND3700v1/DGND3800B")
140                 board_name="dgnd3700v1_dgnd3800b"
141                 ;;
142         "Pirelli A226G")
143                 board_name="a226g"
144                 ;;
145         "Pirelli A226M")
146                 board_name="a226m"
147                 ;;
148         "Pirelli A226M-FWB")
149                 board_name="a226m-fwb"
150                 ;;
151         "Pirelli Alice Gate AGPF-S0")
152                 board_name="agpf-s0"
153                 ;;
154         "Sagem F@ST2404")
155                 board_name="fast2404"
156                 ;;
157         "Sagem F@ST2504n")
158                 board_name="fast2504n"
159                 ;;
160         "Sagem F@ST2604")
161                 board_name="fast2604"
162                 ;;
163         "Sagem F@ST2704V2")
164                 board_name="fast2704v2"
165                 ;;
166         "SFR Neuf Box 4"*)
167                 board_name="neufbox4"
168                 ;;
169         "SFR neufbox 6 (Sercomm)")
170                 board_name="neufbox6"
171                 ;;
172         "T-Com Speedport W303 V")
173                 board_name="spw303v"
174                 ;;
175         "T-Com Speedport W500 V")
176                 board_name="spw500v"
177                 ;;
178         "TECOM GW6000")
179                 board_name="g6000"
180                 ;;
181         "TECOM GW6200")
182                 board_name="g6200"
183                 ;;
184         "Telsey CPVA642-type (CPA-ZNTE60T)")
185                 board_name="cpva642"
186                 ;;
187         "TP-Link TD-W8900GB")
188                 board_name="td-w8900gb"
189                 ;;
190         "USRobotics 9108")
191                 board_name="usr9108"
192                 ;;
193         "Zyxel P870HW-51a v2")
194                 board_name="p870hw-51a_v2"
195                 ;;
196         *)
197                 board_name="unknown"
198                 ;;
199         esac
200
201         echo "$board_name"
202 }
203
204 brcm63xx_legacy_detect() {
205         local board_name
206
207         case "$1" in
208         963268BU_P300)
209                 board_name="bcm963268bu_p300"
210                 ;;
211         96338W2_E7T)
212                 board_name="dsl-2640u"
213                 ;;
214         96348W3)
215                 board_name="dg834g_v4"
216                 ;;
217         CPVA502+)
218                 board_name="cpva502p"
219                 ;;
220         MAGIC)
221                 board_name="magic"
222                 ;;
223         RTA770BW)
224                 board_name="rta770bw"
225                 ;;
226         RTA770W)
227                 board_name="rta770w"
228                 ;;
229         V2110)
230                 board_name="v2110"
231                 ;;
232         V2500V_BB)
233                 board_name="v2500v_bb"
234                 ;;
235         VW6339GU)
236                 board_namge="vg50"
237                 ;;
238         *)
239                 board_name="unknown"
240                 ;;
241         esac
242
243         echo "$board_name"
244 }
245
246 brcm63xx_detect() {
247         local board_name model
248
249         board_id=$(awk 'BEGIN{FS="[ \t:/]+"} /system type/ {print $4}' /proc/cpuinfo)
250
251         if [ -e /proc/device-tree ]; then
252                 model=$(cat /proc/device-tree/model)
253                 board_name=$(brcm63xx_dt_detect "$model")
254         else
255                 model="Unknown bcm63xx board"
256                 board_name=$(brcm63xx_legacy_detect "$board_id")
257         fi
258
259         case "$board_name" in
260         bcm963281tan)
261                 ifname=eth0
262                 ;;
263         a4001n1)
264                 brcm63xx_has_reset_button="true"
265                 ifname=eth0
266                 ;;
267         bcm96328avng)
268                 ifname=eth0
269                 ;;
270         a4001n)
271                 brcm63xx_has_reset_button="true"
272                 ifname="eth0"
273                 ;;
274         ar-5381u)
275                 brcm63xx_has_reset_button="true"
276                 ifname=eth0
277                 ;;
278         ar-5387un)
279                 brcm63xx_has_reset_button="true"
280                 ifname=eth0
281                 ;;
282         bcm96348gw)
283                 brcm63xx_has_reset_button="true"
284                 ifname=eth1
285                 ;;
286         bcm96348gw-11)
287                 brcm63xx_has_reset_button="true"
288                 ifname=eth1
289                 ;;
290         spw303v)
291                 brcm63xx_has_reset_button="true"
292                 ifname=eth0
293                 ;;
294         vr-3025un)
295                 brcm63xx_has_reset_button="true"
296                 ifname="eth0"
297                 ;;
298         vr-3025u)
299                 brcm63xx_has_reset_button="true"
300                 ifname="eth0"
301                 ;;
302         wap-5813n)
303                 brcm63xx_has_reset_button="true"
304                 ifname="eth0"
305                 ;;
306         ar1004g)
307                 brcm63xx_has_reset_button="true"
308                 ;;
309         dsl-274xb-c)
310                 brcm63xx_has_reset_button="true"
311                 ifname=eth0
312                 ;;
313         dsl-275xb-d)
314                 brcm63xx_has_reset_button="true"
315                 ifname=eth0
316                 ;;
317         cpva642)
318                 brcm63xx_has_reset_button="true"
319                 ifname=eth0
320                 ;;
321         ct536_ct5621)
322                 brcm63xx_has_reset_button="true"
323                 ifname=eth0
324                 ;;
325         cvg834g)
326                 ifname=eth0
327                 ;;
328         dsl-2640b-b)
329                 brcm63xx_has_reset_button="true"
330                 ifname=eth0
331                 ;;
332         dgnd3700v1_dgnd3800b)
333                 brcm63xx_has_reset_button="true"
334                 ifname="eth0"
335                 ;;
336         fast2504n)
337                 brcm63xx_has_reset_button="true"
338                 ifname=eth0
339                 ;;
340         fast2704v2)
341                 brcm63xx_has_reset_button="true"
342                 ifname=eth0
343                 ;;
344         gw6000)
345                 brcm63xx_has_reset_button="true"
346                 ifname=eth1
347                 ;;
348         gw6200)
349                 brcm63xx_has_reset_button="true"
350                 ifname=eth1
351                 ;;
352         hg553)
353                 brcm63xx_has_reset_button="true"
354                 ifname=eth0
355                 ;;
356         hg556a_*)
357                 brcm63xx_has_reset_button="true"
358                 ifname=eth0
359                 ;;
360         hg520)
361                 brcm63xx_has_reset_button="true"
362                 ifname="eth0"
363                 ;;
364         neufbox6)
365                 brcm63xx_has_reset_button="true"
366                 ifname=eth0
367                 ;;
368         p870hw-51a_v2)
369                 brcm63xx_has_reset_button="true"
370                 ifname="eth0"
371                 ;;
372         rta770bw)
373                 brcm63xx_has_reset_button="true"
374                 ifname=eth0
375                 ;;
376         rta770w)
377                 brcm63xx_has_reset_button="true"
378                 ifname=eth0
379                 ;;
380         spw500v)
381                 brcm63xx_has_reset_button="true"
382                 ifname=eth0
383                 ;;
384         v2110)
385                 brcm63xx_has_reset_button="true"
386                 ifname=eth0
387                 ;;
388         esac
389
390         [ -e "/tmp/sysinfo" ] || mkdir -p "/tmp/sysinfo"
391
392         echo "$board_name" > /tmp/sysinfo/board_name
393         echo "$model" > /tmp/sysinfo/model
394 }
395
396 brcm63xx_board_name() {
397         local name
398
399         [ -f /tmp/sysinfo/board_name ] && name=$(cat /tmp/sysinfo/board_name)
400         [ -n "$name" ] || name="unknown"
401
402         echo $name
403 }
404
405 brcm63xx_detect