Index: program/patch.prog
===================================================================
--- /branch/keyboard/1307_FX0010_keyboard_sdk/program/patch.prog	(revision 1944)
+++ /branch/keyboard/1307_FX0010_keyboard_sdk/program/patch.prog	(working copy)
@@ -102,7 +102,7 @@
 	fetch 1,mem_tx_power
 	beq TX_POWER_F20DB,p_set_tx_power_f20db
 	beq TX_POWER_F25DB,p_set_tx_power_f25db
-	branch txon_next+2
+	branch txon+20
 
 p_set_tx_power_f20db:
 	jam 0x10,core_tx_pwr_ctrl0
@@ -1224,7 +1224,8 @@
 	copy regb,pdata
 	isub regd,pdata
 	branch p_keyboard_load_otp_info_check_page_loop
-p_keyboard_load_otp_info_check_first_time:
	
+p_keyboard_load_otp_info_check_first_time:
+	
 	sub regc,0,null
 	branch p_keyboard_load_otp_info_check_first_time_process,zero
 p_keyboard_load_otp_info_check_first_time_loop_init:
@@ -1412,13 +1413,14 @@
 	call p_mouse_device_poweron_timer
 	fetch MOUSE_FLAG_LEN,mem_mouse_flag
 	bbit0 MOUSE_ENABLE_ADC,p_keyboard_start_work_next
-	call enable_adc
-	call vdd_calculate_by_mode
-	store 2,mem_mouse_vdd_now_vol
-	fetcht 2,mem_2v_adc_vinlpm_data
-	fetch 2,mem_adc_current_value
+	call mouse_adc_gpio_set
+	call mouse_adc_read_start
+	fetch 2,mem_mouse_vdd_empty_vol
+	div pdata,2
+	call get_div_result
+	fetcht 2,mem_mouse_vdd_now_vol
 	isub temp,null
-	branch p_keyboard_start_work+1,positive
+	branch p_keyboard_start_work,positive // now vol < empty vol/2  check again
 	arg mem_mouse_vdd_calculate_set,rega
 	call mouse_adc_bat_percent_lowpower_out
 	fetch 1,mem_adc_power_flag
@@ -1460,7 +1462,15 @@
 p_mouse_setgpio_hibernate:
 	call clear_wake
 	call p_mouse_device_led_off
-	branch mouse_setgpio_hibernate+3
+	call mouse_setgpio_hibernate+3
+p_keyboard_adc_gpio_set_before_hibernate:	
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_ADC
+	fetch 1,mem_adc_config_flag_init
+	rtnne ADC_CONFIG_GPIO
+	fetch 1,mem_adc_channel_gpio	
+	arg gpcfg_no_ie,temp
+ 	branch gpio_config_function_int
 
 p_mouse_lpm_before_common:
 	call clear_wake
