mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-31 02:17:58 +00:00 
			
		
		
		
	ipq807x: fix dualboot on emmc flash chips
Fixes: WIFI-12537 Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
		| @@ -39,6 +39,8 @@ do_flash_emmc() { | ||||
| 	local board_dir=$3 | ||||
| 	local part=$4 | ||||
| 	 | ||||
| 	[ -b "$emmcblock" ] || emmcblock=$(find_mmc_part $2) | ||||
|  | ||||
| 	[ -z "$emmcblock" ] && { | ||||
| 		echo failed to find $2 | ||||
| 		return | ||||
| @@ -50,21 +52,46 @@ do_flash_emmc() { | ||||
| 	tar Oxf $tar_file ${board_dir}/$part | dd of=${emmcblock} | ||||
| } | ||||
|  | ||||
| emmc_do_upgrade_cig() { | ||||
| emmc_do_upgrade_bootconfig() { | ||||
| 	local tar_file="$1" | ||||
|  | ||||
| 	local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$') | ||||
| 	board_dir=${board_dir%/} | ||||
| 	mount -t proc proc /proc | ||||
| 	[ -f /proc/boot_info/getbinary_bootconfig ] || { | ||||
| 		echo "bootconfig does not exist" | ||||
| 		exit | ||||
| 	} | ||||
| 	CI_ROOTPART="$(cat /proc/boot_info/rootfs/upgradepartition)" | ||||
| 	CI_KERNPART="$(cat /proc/boot_info/0:HLOS/upgradepartition)" | ||||
|  | ||||
|         do_flash_emmc $tar_file '0:HLOS_1' $board_dir kernel | ||||
|         do_flash_emmc $tar_file 'rootfs_1' $board_dir root | ||||
| 	[ -n "$CI_KERNPART" -a -n "$CI_ROOTPART" ] || { | ||||
| 		echo "kernel or rootfs partition is unknown" | ||||
| 		exit | ||||
| 	} | ||||
|  | ||||
| 	local primary="0" | ||||
| 	[ "$(cat /proc/boot_info/rootfs/primaryboot)" = "0" ] && primary="1" | ||||
| 	echo "$primary" > /proc/boot_info/rootfs/primaryboot 2>/dev/null | ||||
| 	echo "$primary" > /proc/boot_info/0:HLOS/primaryboot 2>/dev/null | ||||
| 	cp /proc/boot_info/getbinary_bootconfig /tmp/bootconfig | ||||
|  | ||||
| 	do_flash_emmc $tar_file $CI_KERNPART $board_dir kernel | ||||
| 	do_flash_emmc $tar_file $CI_ROOTPART $board_dir root | ||||
|  | ||||
| 	local emmcblock="$(find_mmc_part "rootfs_data")" | ||||
| 	if [ -e "$emmcblock" ]; then | ||||
| 		mkfs.ext4 -F "$emmcblock" | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| 	for part in "0:BOOTCONFIG" "0:BOOTCONFIG1"; do | ||||
| 		local emmcblock=$(find_mmc_part $part) | ||||
| 		echo erase ${emmcblock} | ||||
| 		dd if=/dev/zero of=${emmcblock} 2> /dev/null | ||||
| 		echo update $emmcblock | ||||
| 		dd if=/tmp/bootconfig of=${emmcblock} 2> /dev/null | ||||
| 	done | ||||
| } | ||||
|  | ||||
| emmc_do_upgrade() { | ||||
| 	local tar_file="$1" | ||||
| @@ -139,7 +166,7 @@ platform_do_upgrade() { | ||||
| 		qca_do_upgrade $1 | ||||
| 		;; | ||||
| 	cig,wf660a) | ||||
| 		emmc_do_upgrade_cig $1 | ||||
| 		emmc_do_upgrade_bootconfig $1 | ||||
| 		;; | ||||
| 	motorola,q14) | ||||
| 		emmc_do_upgrade $1 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 John Crispin
					John Crispin