Index: program/patch.prog
===================================================================
--- /branch/mouse_project/YFK/1059_3mode/PM8/program/patch.prog	(revision 1863)
+++ /branch/mouse_project/YFK/1059_3mode/PM8/program/patch.prog	(working copy)
@@ -164,6 +164,7 @@
 endif
 	beq patch31_4,p_twspi_reset
 	beq patch31_5,p_spid_init
+	beq patch34_0,p_vdd_calculate_by_mode
 	beq patch3f_2,p_check_51cmd_once_continue
 ifdef DEBUGLOG
 	beq patch2f_6,p_parse_lmp_opcode
@@ -2202,6 +2203,36 @@
 	jam ADC_CONFIG_VINLPM,mem_adc_config_flag
 	rtn
 
+p_vdd_calculate_by_mode:
+	fetch 1,mem_adc_config_flag
+	beq ADC_CONFIG_GPIO,p_vdd_calculate_io
+	branch vdd_calculate_by_mode+2
+
+p_vdd_calculate_io:
+	fetch 2,mem_1v_adc_io_data
+	fetcht 2,mem_0_5_adc_io_data
+	arg 50,regc
+	branch p_vdd_calculate
+
+p_vdd_calculate:
+	isub temp,rega
+	fetch 2,mem_adc_current_value
+	isub temp,pdata
+	nbranch p_vdd_calculate1,positive
+	branch vdd_calculate+4
+
+p_vdd_calculate1:
+	copy temp,pdata
+	fetcht 2,mem_adc_current_value
+	isub temp,pdata
+	isub rega,null
+	call p_vdd_calculate2,positive
+	branch vdd_calculate1+3
+
+//  mem_adc_current_value - mem_0_5_adc_io_data >= mem_1v_adc_io_data - mem_0_5_adc_io_data
+p_vdd_calculate2:	
+	copy rega,pdata
+	rtn
 
 
 p_mouse_adc_no_low_voltage:
Index: sched/mouse.dat
===================================================================
--- /branch/mouse_project/YFK/1059_3mode/PM8/sched/mouse.dat	(revision 1863)
+++ /branch/mouse_project/YFK/1059_3mode/PM8/sched/mouse.dat	(working copy)
@@ -24,6 +24,7 @@
 mem_patch2e:80
 mem_patch30:05
 mem_patch31:31
+mem_patch34:01
 mem_patch3f:04
 
 
