do_sysinfo_bcm47xx() {
	local boardtype="$(nvram get boardtype)"
	local boardnum="$(nvram get boardnum)"
	local model="$(sed -ne 's/^machine[ \t]*: //p' /proc/cpuinfo)"

	[ -z "$model" ] && model="unknown"
	[ -z "$boardtype" ] && boardtype="unknown"

	[ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/"
	echo "$boardtype${boardnum:+:$boardnum}" > /tmp/sysinfo/boardtype
	echo "$model" > /tmp/sysinfo/model
	# Generate board_name in the form <vendor,device-variant> for ASU sysupgrades
	printf '%s' "$model" | awk '{
		$0 = tolower($0);
		if (NF>=2) {
			sub(/ /, ",");
			gsub(/ /, "-");
		}
		print;
	}' > /tmp/sysinfo/board_name
}

boot_hook_add preinit_main do_sysinfo_bcm47xx
