1#
2# Copyright (C) 2010 OpenWrt.org
3#
4
5. /lib/ramips.sh
6
7PART_NAME=firmware
8RAMFS_COPY_DATA=/lib/ramips.sh
9
10platform_check_image() {
11	local board=$(ramips_board_name)
12	local magic="$(get_magic_long "$1")"
13
14	[ "$#" -gt 1 ] && return 1
15
16	case "$board" in
17	3g150b|\
18	3g300m|\
19	3g-6200n|\
20	3g-6200nl|\
21	a5-v11|\
22	ai-br100|\
23	air3gii|\
24	all0239-3g|\
25	all0256n|\
26	all5002|\
27	all5003|\
28	ar725w|\
29	asl26555|\
30	awapn2403|\
31	awm002-evb|\
32	awm003-evb|\
33	bc2|\
34	broadway|\
35	carambola|\
36	cf-wr800n|\
37	cs-qr10|\
38	d105|\
39	dap-1350|\
40	db-wrt01|\
41	dcs-930|\
42	dcs-930l-b1|\
43	dir-300-b1|\
44	dir-300-b7|\
45	dir-320-b1|\
46	dir-600-b1|\
47	dir-600-b2|\
48	dir-615-d|\
49	dir-615-h1|\
50	dir-620-a1|\
51	dir-620-d1|\
52	dir-810l|\
53	duzun-dm06|\
54	e1700|\
55	esr-9753|\
56	ex2700|\
57	f7c027|\
58	firewrt|\
59	fonera20n|\
60	freestation5|\
61	gl-mt300a|\
62	gl-mt300n|\
63	gl-mt750|\
64	hc5*61|\
65	hg255d|\
66	hlk-rm04|\
67	hpm|\
68	ht-tm02|\
69	hw550-3g|\
70	ip2202|\
71	jhr-n805r|\
72	jhr-n825r|\
73	jhr-n926r|\
74	linkits7688|\
75	linkits7688d|\
76	m2m|\
77	m3|\
78	m4|\
79	microwrt|\
80	miniembplug|\
81	miniembwifi|\
82	miwifi-mini|\
83	miwifi-nano|\
84	mlw221|\
85	mlwg2|\
86	mofi3500-3gn|\
87	mpr-a1|\
88	mpr-a2|\
89	mr-102n|\
90	mt7628|\
91	mzk-750dhp|\
92	mzk-dp150n|\
93	mzk-ex300np|\
94	mzk-ex750np|\
95	mzk-w300nh2|\
96	mzk-wdpr|\
97	nbg-419n|\
98	nw718|\
99	oy-0001|\
100	pbr-m1|\
101	psg1208|\
102	psg1218|\
103	psr-680w|\
104	px-4885|\
105	re6500|\
106	rp-n53|\
107	rt5350f-olinuxino|\
108	rt5350f-olinuxino-evb|\
109	rt-g32-b1|\
110	rt-n10-plus|\
111	rt-n13u|\
112	rt-n14u|\
113	rt-n15|\
114	rt-n56u|\
115	rut5xx|\
116	sap-g3200u3|\
117	sk-wb8|\
118	sl-r7205|\
119	tew-691gr|\
120	tew-692gr|\
121	tiny-ac|\
122	ur-326n4g|\
123	ur-336un|\
124	v22rw-2x2|\
125	vocore|\
126	w150m|\
127	w306r-v20|\
128	w502u|\
129	wf-2881|\
130	whr-1166d|\
131	whr-300hp2|\
132	whr-600d|\
133	whr-g300n|\
134	widora-neo|\
135	witi|\
136	wizfi630a|\
137	wl-330n|\
138	wl-330n3g|\
139	wl-341v3|\
140	wl-351|\
141	wli-tx4-ag300n|\
142	wmr-300|\
143	wnce2001|\
144	wndr3700v5|\
145	wr512-3gn|\
146	wr6202|\
147	wrh-300cr|\
148	wrtnode|\
149	wrtnode2r |\
150	wrtnode2p |\
151	wsr-600|\
152	wt1520|\
153	wt3020|\
154	wzr-agl300nh|\
155	x5|\
156	x8|\
157	y1|\
158	y1s|\
159	zbt-ape522ii|\
160	zbt-wa05|\
161	zbt-we826|\
162	zbt-wg2626|\
163	zbt-wg3526|\
164	zbt-wr8305rt|\
165	zte-q7|\
166	youku-yk1)
167		[ "$magic" != "27051956" ] && {
168			echo "Invalid image type."
169			return 1
170		}
171		return 0
172		;;
173	ar670w)
174		[ "$magic" != "6d000080" ] && {
175			echo "Invalid image type."
176			return 1
177		}
178		return 0
179		;;
180	br-6475nd)
181		[ "$magic" != "43535953" ] && {
182			echo "Invalid image type."
183			return 1
184		}
185		return 0
186		;;
187	c20i|\
188	c50)
189		[ "$magic" != "03000000" ] && {
190			echo "Invalid image type."
191			return 1
192		}
193		return 0
194		;;
195	cy-swr1100|\
196	dir-610-a1|\
197	dir-645|\
198	dir-860l-b1)
199		[ "$magic" != "5ea3a417" ] && {
200			echo "Invalid image type."
201			return 1
202		}
203		return 0
204		;;
205	wsr-1166)
206		[ "$magic" != "48445230" ] && {
207			echo "Invalid image type."
208			return 1
209		}
210		return 0
211		;;
212	ubnt-erx)
213		nand_do_platform_check "$board" "$1"
214		return $?;
215		;;
216	esac
217
218	echo "Sysupgrade is not yet supported on $board."
219	return 1
220}
221
222platform_nand_pre_upgrade() {
223	local board=$(ramips_board_name)
224
225	case "$board" in
226	ubnt-erx)
227		platform_upgrade_ubnt_erx "$ARGV"
228		;;
229	esac
230}
231
232platform_pre_upgrade() {
233	local board=$(ramips_board_name)
234
235	case "$board" in
236    	ubnt-erx)
237		nand_do_upgrade "$ARGV"
238		;;
239	esac
240}
241
242platform_do_upgrade() {
243	local board=$(ramips_board_name)
244
245	case "$board" in
246	*)
247		default_do_upgrade "$ARGV"
248		;;
249	esac
250}
251
252disable_watchdog() {
253	killall watchdog
254	( ps | grep -v 'grep' | grep '/dev/watchdog' ) && {
255		echo 'Could not disable watchdog'
256		return 1
257	}
258}
259
260blink_led() {
261	. /etc/diag.sh; set_state upgrade
262}
263
264append sysupgrade_pre_upgrade disable_watchdog
265append sysupgrade_pre_upgrade blink_led
266