ASR_BASE

Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/target/linux/mmp/base-files/sbin/rdp_transfer b/target/linux/mmp/base-files/sbin/rdp_transfer
new file mode 100755
index 0000000..6bde6fa
--- /dev/null
+++ b/target/linux/mmp/base-files/sbin/rdp_transfer
@@ -0,0 +1,580 @@
+#!/bin/sh
+# Set variable upload_over: DUMP media sequence
+# 1: SD -> USB, try usb no matter SD pass or fail for internal auto tool flow
+# 2: SD -> FLASH -> USB, reboot on any success
+# 3: SD->FLASH, reboot on any success, stall on final fail
+# 4: SD->FLASH, reboot on any success, reboot on final fail
+# 5: USB Only
+
+upload_over=5	#default mode
+
+if [ ! -e /dev/rdr ]; then
+	echo No RAMDUMP found > /dev/kmsg
+	exit 0
+fi
+
+echo =========================================== > /dev/kmsg
+echo RAMDUMP prepared by U-boot in RAM found > /dev/kmsg
+echo Script $0 is running > /dev/kmsg
+echo upload_over == $upload_over > /dev/kmsg
+
+# Use fixed File-Name:
+#	RDNAME=RAMDUMP0000
+# Use File-Name with RAMDUMP_YYMMDD-HHMM:
+RDNAME=RAMDUMP_$(date +%y%m%d-%H%M)
+CPDUMPNAME=cpdump_$(date +%y%m%d-%H%M)
+COMDDRNAME=COM_DDR_$(date +%y%m%d-%H%M)
+DSPDDRNAME=DSP_DDR_$(date +%y%m%d-%H%M)
+BMBUFFNAME=bm_buffer_$(date +%y%m%d-%H%M)
+ADSPSHMNAME=adsp_shm_$(date +%y%m%d-%H%M)
+ADSPDTCMNAME=adsp_dtcm_$(date +%y%m%d-%H%M)
+ADSPDDRNAME=adsp_ddr_$(date +%y%m%d-%H%M)
+ADSPSQUNAME=adsp_squ_$(date +%y%m%d-%H%M)
+
+#flash dump name should be fixed name
+AP_DUMPTXT=ap_dump.txt
+AP_DUMPGZ=ap_dump.gz
+COM_CP_DUMP=com_RW_DDR.bin
+COM_DSP_DUMP=com_dsp_ddr.bin
+
+FBMBUFFNAME=bm_buffer
+FADSPSHMNAME=adsp_shm
+FADSPDTCMNAME=adsp_dtcm
+FADSPDDRNAME=adsp_ddr
+FADSPSQUNAME=adsp_squ
+
+SD_DUMP_DIR=/sdcard/modem_dump/
+FLASH_DUMP_DIR=/data/modem_dump/
+
+iscpdump=`cat /proc/cmdline | grep "cpdump"`
+
+function no_usbdump_reboot {
+	echo "=========NO usbdump rboot" > /dev/kmsg
+	sync
+	sleep 3
+	sync
+	echo "reboot" > /dev/kmsg
+	# Clear ramdump descriptor before restart
+	echo c > /dev/rdr
+	ifconfig usbnet0 down
+	echo 0 > /sys/class/android_usb/android0/enable
+	reboot
+	exit 0
+}
+
+function sd_dump {
+	/etc/init.d/sdcard_mount start
+	sleep 5
+
+	if [ ! -e /sdcard ]; then
+		echo "no /sdcard directory" > /dev/kmsg
+		return 1
+	fi
+
+	if [ ! -e "$SD_DUMP_DIR" ]; then
+		echo "mkdir /sdcard/modem_dump" > /dev/kmsg
+		mkdir -p $SD_DUMP_DIR
+	fi
+
+	if [ ! -e "$SD_DUMP_DIR" ]; then
+		echo "!!!!!no /sdcard/modem_dump directory" > /dev/kmsg
+		return 1
+	fi
+
+	if [ -n "$iscpdump" ]; then
+		echo t > /dev/rdr
+		cp /dev/rdr $SD_DUMP_DIR/$COMDDRNAME.bin
+		result=$?
+		if [ $result -ne 0 ]; then
+			echo "sd dump CP image failed" > /dev/kmsg
+			return 1
+		fi
+
+		echo d > /dev/rdr
+		cp /dev/rdr $SD_DUMP_DIR/$DSPDDRNAME.bin
+		result=$?
+		if [ $result -ne 0 ]; then
+			echo "sd dump DSP image failed" > /dev/kmsg
+			return 1
+		fi
+
+		if [ -e /sys/kernel/debug/adsp/adsp_shm ]; then
+			echo "sd dump adsp_shm" > /dev/kmsg
+			cp /sys/kernel/debug/adsp/adsp_shm $SD_DUMP_DIR/$ADSPSHMNAME.bin
+			result=$?
+			if [ $result -ne 0 ]; then
+				echo "sd dump adsp_shm failed" > /dev/kmsg
+				return 1
+			fi
+		fi
+
+		if [ -e /sys/kernel/debug/adsp/adsp_dtcm ]; then
+			echo "sd dump adsp_dtcm" > /dev/kmsg
+			cp /sys/kernel/debug/adsp/adsp_dtcm $SD_DUMP_DIR/$ADSPDTCMNAME.bin
+			result=$?
+			if [ $result -ne 0 ]; then
+				echo "sd dump adsp_dtcm failed" > /dev/kmsg
+				return 1
+			fi
+		fi
+
+		if [ -e /sys/kernel/debug/adsp/adsp_ddr ]; then
+			echo "sd dump adsp_ddr" > /dev/kmsg
+			cp /sys/kernel/debug/adsp/adsp_ddr $SD_DUMP_DIR/$ADSPDDRNAME.bin
+			result=$?
+			if [ $result -ne 0 ]; then
+				echo "sd dump adsp_ddr failed" > /dev/kmsg
+				return 1
+			fi
+		fi
+
+
+		if [ -e /sys/kernel/debug/adsp/adsp_squ ]; then
+			echo "sd dump adsp_squ" > /dev/kmsg
+			cp /sys/kernel/debug/adsp/adsp_squ $SD_DUMP_DIR/$ADSPSQUNAME.bin
+			result=$?
+			if [ $result -ne 0 ]; then
+				echo "sd dump adsp_squ failed" > /dev/kmsg
+				return 1
+			fi
+		fi
+
+		if [ -e /sys/kernel/debug/bm/buffer ]; then
+			echo "sd dump bm_buffer" > /dev/kmsg
+			cp /sys/kernel/debug/bm/buffer $SD_DUMP_DIR/$BMBUFFNAME.bin
+			result=$?
+			if [ $result -ne 0 ]; then
+				echo "sd dump bm_buffer failed" > /dev/kmsg
+				return 1
+			fi
+		fi
+	else
+		echo t > /dev/rdr
+		cp /dev/rdr $SD_DUMP_DIR/$RDNAME.txt
+		result=$?
+		if [ $result -ne 0 ]; then
+			echo "!!!!!!!!!!sd dump txt image failed" > /dev/kmsg
+			return 1
+		fi
+
+		echo d > /dev/rdr
+		cp /dev/rdr $SD_DUMP_DIR/$RDNAME.gz
+		result=$?
+		if [ $result -ne 0 ]; then
+			echo "!!!!!!!!!!sd dump GZ image failed" > /dev/kmsg
+			return 1
+		fi
+	fi
+
+	return 0
+}
+
+function flash_dump {
+	if [ ! -e "$FLASH_DUMP_DIR" ]; then
+		echo "mkdir $FLASH_DUMP_DIR" > /dev/kmsg
+		mkdir -p $FLASH_DUMP_DIR
+	fi
+
+	if [ ! -e "$FLASH_DUMP_DIR" ]; then
+		echo "!!!!!no $FLASH_DUMP_DIR" > /dev/kmsg
+		return 1
+	fi
+
+	#remove the old dump files, as flash space is limited
+	rm $FLASH_DUMP_DIR/*
+
+	if [ -n "$iscpdump" ]; then
+		echo t > /dev/rdr
+		cp /dev/rdr $FLASH_DUMP_DIR/$COM_CP_DUMP
+		result=$?
+		if [ $result -ne 0 ]; then
+			echo "flash dump CP image failed" > /dev/kmsg
+			rm $FLASH_DUMP_DIR/$COM_CP_DUMP
+			return 1
+		fi
+
+		echo d > /dev/rdr
+		cp /dev/rdr $FLASH_DUMP_DIR/$COM_DSP_DUMP
+		result=$?
+		if [ $result -ne 0 ]; then
+			echo "flash dump DSP image failed" > /dev/kmsg
+			rm $COM_DSP_DUMP
+			return 1
+		fi
+
+		if [ -e /sys/kernel/debug/adsp/adsp_shm ]; then
+			echo "flash dump adsp_shm" > /dev/kmsg
+			cp /sys/kernel/debug/adsp/adsp_shm $FLASH_DUMP_DIR/$FADSPSHMNAME.bin
+			result=$?
+			if [ $result -ne 0 ]; then
+				echo "flash dump adsp_shm failed" > /dev/kmsg
+				return 1
+			fi
+		fi
+
+		if [ -e /sys/kernel/debug/adsp/adsp_dtcm ]; then
+			echo "flash dump adsp_dtcm" > /dev/kmsg
+			cp /sys/kernel/debug/adsp/adsp_dtcm $FLASH_DUMP_DIR/$FADSPDTCMNAME.bin
+			result=$?
+			if [ $result -ne 0 ]; then
+				echo "flash dump adsp_dtcm failed" > /dev/kmsg
+				return 1
+			fi
+		fi
+
+		if [ -e /sys/kernel/debug/adsp/adsp_ddr ]; then
+			echo "flash dump adsp_ddr" > /dev/kmsg
+			cp /sys/kernel/debug/adsp/adsp_ddr $FLASH_DUMP_DIR/$FADSPDDRNAME.bin
+			result=$?
+			if [ $result -ne 0 ]; then
+				echo "flash dump adsp_ddr failed" > /dev/kmsg
+				return 1
+			fi
+		fi
+
+		if [ -e /sys/kernel/debug/adsp/adsp_squ ]; then
+			echo "flash dump adsp_squ" > /dev/kmsg
+			cp /sys/kernel/debug/adsp/adsp_squ $FLASH_DUMP_DIR/$FADSPSQUNAME.bin
+			result=$?
+			if [ $result -ne 0 ]; then
+				echo "flash dump adsp_squ failed" > /dev/kmsg
+				return 1
+			fi
+		fi
+
+		if [ -e /sys/kernel/debug/bm/buffer ]; then
+			echo "flash dump bm_buffer" > /dev/kmsg
+			cp /sys/kernel/debug/bm/buffer $FLASH_DUMP_DIR/$FBMBUFFNAME.bin
+			result=$?
+			if [ $result -ne 0 ]; then
+				echo "flash dump bm_buffer failed" > /dev/kmsg
+				return 1
+			fi
+		fi
+	else
+		echo t > /dev/rdr
+		cp /dev/rdr $FLASH_DUMP_DIR/$AP_DUMPTXT
+		result=$?
+		if [ $result -ne 0 ]; then
+			echo "!!!!!!!!!!flash dump txt image failed" > /dev/kmsg
+			rm $FLASH_DUMP_DIR/$AP_DUMPTXT
+			return 1
+		fi
+
+		echo d > /dev/rdr
+		cp /dev/rdr $FLASH_DUMP_DIR/$AP_DUMPGZ
+		result=$?
+		if [ $result -ne 0 ]; then
+			echo "!!!!!!!!!!flash dump GZ image failed" > /dev/kmsg
+			rm $FLASH_DUMP_DIR/$AP_DUMPGZ
+			return 1
+		fi
+	fi
+
+	return 0
+}
+
+
+# 1: SD -> USB, try usb no matter SD pass or fail for internal auto tool flow
+# 2: SD -> FLASH -> USB, reboot on any success
+# 3: SD->FLASH, reboot on any success, stall on final fail
+# 4: SD->FLASH, reboot on any success, reboot on final fail
+if [ $upload_over -eq 1 ]; then
+	sd_dump
+	result=$?
+	if [ $result -eq 0 ]; then
+		echo "=========sd dump success" > /dev/kmsg
+	fi
+elif [ $upload_over -eq 2 ]; then
+	sd_dump
+	result=$?
+	if [ $result -eq 0 ]; then
+		echo "=========sd dump success" > /dev/kmsg
+		no_usbdump_reboot
+	fi
+	flash_dump
+	result=$?
+	if [ $result -eq 0 ]; then
+		echo "=========flash dump success" > /dev/kmsg
+		no_usbdump_reboot
+	fi
+elif [ $upload_over -eq 3 ]; then
+	sd_dump
+	result=$?
+	if [ $result -eq 0 ]; then
+		echo "=========sd dump success" > /dev/kmsg
+		no_usbdump_reboot
+	fi
+	flash_dump
+	result=$?
+	if [ $result -eq 0 ]; then
+		echo "=========flash dump success" > /dev/kmsg
+		no_usbdump_reboot
+	fi
+	#stall on fail
+	while [ 1 ]
+	do
+		sleep 100
+	done
+elif [ $upload_over -eq 4 ]; then
+	sd_dump
+	result=$?
+	if [ $result -eq 0 ]; then
+		echo "=========sd dump success" > /dev/kmsg
+		no_usbdump_reboot
+	fi
+	flash_dump
+	result=$?
+	if [ $result -eq 0 ]; then
+		echo "=========flash dump success" > /dev/kmsg
+		no_usbdump_reboot
+	fi
+	no_usbdump_reboot
+else
+	echo "don't check storage media" > /dev/kmsg
+fi
+
+FTP_SERV_IP=""
+loop_net=0
+#leave 3 days(for weekend test, 259200 secs) to check network on
+while [ $loop_net -le 259200 -a -z $FTP_SERV_IP ]
+do
+	if [ -z "$1" ]; then
+		cat /proc/net/arp > /tmp/tmp_arp1
+		sed -n '/br-lan/p' /tmp/tmp_arp1 > /tmp/tmp_arp2
+		sed -n '/0x2/p' /tmp/tmp_arp2 > /tmp/sed_arp_output
+		sed -n '1p' /tmp/sed_arp_output > /tmp/ip_string1
+		sed -n '2p' /tmp/sed_arp_output > /tmp/ip_string2
+		FTP_SERV_IP=`awk '{print $1}' /tmp/ip_string1`
+		echo $FTP_SERV_IP > /dev/kmsg
+		local_ip=`echo $FTP_SERV_IP |grep 192.168`
+		if [ -n "$local_ip" ]; then
+			break
+		fi
+		FTP_SERV_IP=`awk '{print $1}' /tmp/ip_string2`
+		local_ip=`echo $FTP_SERV_IP |grep 192.168`
+		echo $FTP_SERV_IP > /dev/kmsg
+		if [ -n "$local_ip" ]; then
+			break
+		fi
+	else
+		FTP_SERV_IP=$1
+	fi
+	loop_net=$((loop_net+1))
+	echo Searching PC SRV to dump image ... > /dev/kmsg
+	sleep 1
+done
+
+if [ -z "$FTP_SERV_IP" ]; then
+	echo "!!!!!!!!!!!!! Can't find any SRV PC to dump image" > /dev/kmsg
+	exit 0
+else
+	echo FTP_SERV_IP $FTP_SERV_IP > /dev/kmsg
+fi
+
+#if [ $upload_over -eq 1 ]; then
+#	echo ...Upload to SD /sdcard/$RDNAME.* > /dev/kmsg
+#	#echo t > /dev/rdr	- default
+#	cp /dev/rdr /sdcard/$RDNAME.txt
+#	echo d > /dev/rdr
+#	cp /dev/rdr /sdcard/$RDNAME.gz
+#	result=$?
+#fi
+
+if [ 1 ]; then
+	echo ...Upload to TFTP $FTP_SERV_IP > /dev/kmsg
+	loop=0
+	#wait for enough time to prepare the PC server
+	#the timeout is for weekend time(3 days)
+	while [ $loop -le 259200 ]
+	do
+		echo t > /dev/rdr
+
+		if [ -n "$iscpdump" ]; then
+			tftp -p -l /dev/rdr -r $COMDDRNAME.bin $FTP_SERV_IP
+		else
+			tftp -p -l /dev/rdr -r $RDNAME.txt $FTP_SERV_IP
+		fi
+
+		result=$?
+		if [ $result -eq 0 ]; then
+			echo "======dump text ok" > /dev/kmsg
+			echo d > /dev/rdr
+			if [ -n "$iscpdump" ]; then
+				busybox tftp -p -l /dev/rdr -r $DSPDDRNAME.bin $FTP_SERV_IP
+			else
+				busybox tftp -p -l /dev/rdr -r $RDNAME.gz $FTP_SERV_IP
+			fi
+			result=$?
+		fi
+
+		if [ $result -eq 0 ]; then
+			# Uploaded with ok. Exit loop
+			echo "======dump gz ok" > /dev/kmsg
+			if [ -n "$iscpdump" ]; then
+				if [ ! -e /log/cp_dump.tar.gz ]; then
+					echo ================= cpdump image does not exsit > /dev/kmsg
+					loop=400000
+				else
+					tftp -p -l /log/cp_dump.tar.gz -r $CPDUMPNAME.tar.gz $FTP_SERV_IP
+					result=$?
+					if [ $result -eq 0 ]; then
+						# Uploaded with ok. Exit loop
+						echo "======cp dump transfer ok" > /dev/kmsg
+						loop=400000
+					else
+						# No answer from server or error. Try again
+						loop=$((loop+1))
+						echo TFTP uploading cpdump retry ... > /dev/kmsg
+						sleep 2
+					fi
+				fi
+			else
+				echo "======no cp assert dump done" > /dev/kmsg
+				loop=400000
+			fi
+		else
+			# No answer from server or error. Try again
+			loop=$((loop+1))
+			echo TFTP uploading RDP retry ... > /dev/kmsg
+			sleep 2
+		fi
+	done
+fi
+
+if [ -n "$iscpdump" ]; then
+	if [ ! -e /sys/kernel/debug/bm/buffer ]; then
+		echo ================= no bm_buffer to be dump > /dev/kmsg
+	else
+		tftp -p -l /sys/kernel/debug/bm/buffer -r $BMBUFFNAME.bin $FTP_SERV_IP
+		result=$?
+		if [ $result -eq 0 ]; then
+			# Uploaded with ok. Exit loop
+			echo "======bm buffer dump ok" > /dev/kmsg
+		else
+			#try again
+			echo "======retry to dump bm buffer" > /dev/kmsg
+			tftp -p -l /sys/kernel/debug/bm/buffer -r $BMBUFFNAME.bin $FTP_SERV_IP
+			result=$?
+			if [ $result -eq 0 ]; then
+				# Uploaded with ok. Exit loop
+				echo "======bm buffer dump ok" > /dev/kmsg
+			else
+				echo "======bm buffer dump failed" > /dev/kmsg
+			fi
+		fi
+	fi
+fi
+
+#dump ADSP bins
+if [ -n "$iscpdump" ]; then
+	if [ ! -e /sys/kernel/debug/adsp/adsp_shm ]; then
+		echo ================= no adsp_shm to dump > /dev/kmsg
+	else
+		tftp -p -l /sys/kernel/debug/adsp/adsp_shm -r $ADSPSHMNAME.bin $FTP_SERV_IP
+		result=$?
+		if [ $result -eq 0 ]; then
+			# Uploaded with ok. Exit loop
+			echo "======adsp_shm dump ok" > /dev/kmsg
+		else
+			#try again
+			echo "======retry to dump adsp_shm" > /dev/kmsg
+			tftp -p -l /sys/kernel/debug/adsp/adsp_shm -r $ADSPSHMNAME.bin $FTP_SERV_IP
+			result=$?
+			if [ $result -eq 0 ]; then
+				# Uploaded with ok. Exit loop
+				echo "======adsp_shm dump ok" > /dev/kmsg
+			else
+				echo "======dump adsp_shm failed" > /dev/kmsg
+			fi
+		fi
+	fi
+
+	if [ ! -e /sys/kernel/debug/adsp/adsp_dtcm ]; then
+		echo ================= no adsp_dtcm to dump > /dev/kmsg
+	else
+		tftp -p -l /sys/kernel/debug/adsp/adsp_dtcm -r $ADSPDTCMNAME.bin $FTP_SERV_IP
+		result=$?
+		if [ $result -eq 0 ]; then
+			# Uploaded with ok. Exit loop
+			echo "======adsp_dtcm dump ok" > /dev/kmsg
+		else
+			#try again
+			echo "======retry to dump adsp_dtcm" > /dev/kmsg
+			tftp -p -l /sys/kernel/debug/adsp/adsp_dtcm -r $ADSPDTCMNAME.bin $FTP_SERV_IP
+			result=$?
+			if [ $result -eq 0 ]; then
+				# Uploaded with ok. Exit loop
+				echo "======adsp_dtcm dump ok" > /dev/kmsg
+			else
+				echo "======dump adsp_dtcm failed" > /dev/kmsg
+			fi
+		fi
+	fi
+
+	if [ ! -e /sys/kernel/debug/adsp/adsp_ddr ]; then
+		echo ================= no adsp_ddr to dump > /dev/kmsg
+	else
+		tftp -p -l /sys/kernel/debug/adsp/adsp_ddr -r $ADSPDDRNAME.bin $FTP_SERV_IP
+		result=$?
+		if [ $result -eq 0 ]; then
+			# Uploaded with ok. Exit loop
+			echo "======adsp_ddr dump ok" > /dev/kmsg
+		else
+			#try again
+			echo "======retry to dump adsp_ddr" > /dev/kmsg
+			tftp -p -l /sys/kernel/debug/adsp/adsp_ddr -r $ADSPDDRNAME.bin $FTP_SERV_IP
+			result=$?
+			if [ $result -eq 0 ]; then
+				# Uploaded with ok. Exit loop
+				echo "======adsp_ddr dump ok" > /dev/kmsg
+			else
+				echo "======dump adsp_ddr failed" > /dev/kmsg
+			fi
+		fi
+	fi
+
+	if [ ! -e /sys/kernel/debug/adsp/adsp_squ ]; then
+		echo ================= no adsp_squ to dump > /dev/kmsg
+	else
+		tftp -p -l /sys/kernel/debug/adsp/adsp_squ -r $ADSPSQUNAME.bin $FTP_SERV_IP
+		result=$?
+		if [ $result -eq 0 ]; then
+			# Uploaded with ok. Exit loop
+			echo "======adsp_squ dump ok" > /dev/kmsg
+		else
+			#try again
+			echo "======retry to dump adsp_squ" > /dev/kmsg
+			tftp -p -l /sys/kernel/debug/adsp/adsp_squ -r $ADSPSQUNAME.bin $FTP_SERV_IP
+			result=$?
+			if [ $result -eq 0 ]; then
+				# Uploaded with ok. Exit loop
+				echo "======adsp_squ dump ok" > /dev/kmsg
+			else
+				echo "======dump adsp_squ failed" > /dev/kmsg
+			fi
+		fi
+	fi
+fi
+
+if [ $loop -ne 400000 ]; then
+	echo "!!!!!!!!!!!!!!!!!ramdump failed, please check tftp server or firewall" > /dev/kmsg
+	exit 0
+fi
+
+echo RAMDUMP upload finished with $result ----- Re-Start ---- > /dev/kmsg
+# Clear ramdump descriptor before restart
+echo c > /dev/rdr
+
+echo "sending rdp_ok.txt to server" > /dev/kmsg
+echo "rdp_ok" > /tmp/rdp_ok.txt
+tftp -p -l /tmp/rdp_ok.txt -r rdp_ok.txt $FTP_SERV_IP
+
+echo "sleep 15s for auto test" > /dev/kmsg
+sleep 15
+
+ifconfig usbnet0 down
+echo 0 > /sys/class/android_usb/android0/enable
+
+reboot
+