brcm63xx: populate /tmp/sysinfo
[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