Index: output/eeprom.dat
===================================================================
--- /YC1308AF/branch/mouse/FD_Project/USB_16M/output/eeprom.dat	(revision 3811)
+++ /YC1308AF/branch/mouse/FD_Project/USB_16M/output/eeprom.dat	(working copy)
@@ -2,8 +2,8 @@
 02
 aa
 55
-ae
-00
+be
+01
 c2
 84
 00
@@ -11,7 +11,7 @@
 c0
 41
 80
-08
+4c
 c0
 45
 12
@@ -19,23 +19,295 @@
 c0
 45
 80
-0d
+51
 20
 20
 13
 7e
 c0
+15
+00
+3f
+c0
 47
 00
-15
+59
 c0
 49
 80
-25
+69
+c0
+73
+00
+0a
+20
+20
+13
+7e
+6f
+e0
+c8
+c3
+c1
+80
+80
+00
+20
+40
+23
+4b
+20
+40
+00
+0f
+20
+20
+24
+a1
+20
+40
+23
+fa
+20
+40
+21
+87
+24
+37
+a3
+fa
+20
+40
+23
+67
+20
+40
+00
+17
+20
+40
+23
+d6
+20
+40
+00
+1f
+20
+20
+23
+60
+6f
+e0
+c7
+a7
+67
+e0
+c8
+39
+20
+40
+22
+74
+20
+40
+23
+e3
+24
+37
+a1
+f1
+20
+40
+22
+47
+20
+40
+21
+f8
+20
+20
+21
+f1
+6f
+e0
+c0
+9a
+c1
+82
+00
+00
+6f
+e0
+c9
+3e
+20
+7a
+00
+00
+70
+09
+64
+00
+70
+48
+f5
+5a
+20
+40
+00
+2e
+20
+40
+36
+d0
+6f
+e0
+89
+64
+1f
+e0
+fe
+01
+67
+e0
+89
+64
+c0
+7f
+de
+29
+6f
+e0
+c8
+f5
+c0
+ad
+00
+24
 20
 20
+5e
+29
+df
+20
+00
+01
+da
+20
+48
+f5
+d8
+40
+00
+2a
+20
+20
+00
+32
+20
+40
+00
+34
+20
+20
+5f
 13
+20
+40
+5f
+2a
+70
+80
+47
+80
+6f
+f0
+8a
+0b
+79
+3f
+fe
+05
+79
+20
 7e
+03
+67
+f0
+8a
+0b
+20
+00
+00
+18
+79
+20
+7e
+04
+67
+f0
+8a
+0b
+20
+00
+01
+f4
+20
+60
+00
+00
+6f
+f0
+8a
+0b
+79
+3f
+fe
+05
+79
+3f
+fe
+04
+79
+3f
+fe
+00
+67
+f0
+8a
+0b
+20
+00
+00
+18
+79
+3f
+fe
+03
+67
+f0
+8a
+0b
+20
+00
+00
+c8
+6f
+f0
+8a
+0a
+79
+3f
+fe
+01
+67
+f0
+8a
+0a
+20
+20
+5f
+27
 70
 89
 00
@@ -103,7 +375,7 @@
 c0
 00
 00
-1a
+5e
 20
 20
 7a
@@ -127,7 +399,7 @@
 c0
 00
 80
-20
+64
 20
 20
 7a
@@ -139,7 +411,7 @@
 c0
 04
 80
-23
+67
 20
 20
 7a
@@ -176,8 +448,8 @@
 20
 7c
 cc
-09
-84
+8f
+ec
 aa
 55
 01
@@ -227,5 +499,11 @@
 7b
 41
 10
-96
-c8
+55
+aa
+aa
+55
+cf
+0b
+1f
+f8
Index: output/program.lis
===================================================================
--- /YC1308AF/branch/mouse/FD_Project/USB_16M/output/program.lis	(revision 3811)
+++ /YC1308AF/branch/mouse/FD_Project/USB_16M/output/program.lis	(working copy)
@@ -1,64 +1,150 @@
               include "bt_format "
               org 0x0000
 0000 c2840005 bbit1 8 ,pf_patch_ext 
-0001 c0418008 beq patch10_3 ,p_set_sync_on 
+0001 c041804c beq patch10_3 ,p_set_sync_on 
 0002 c0451237 beq patch11_2 ,set_tx_power_10db 
-0003 c045800d beq patch11_3 ,p_initialize_radio_cont 
+0003 c0458051 beq patch11_3 ,p_initialize_radio_cont 
 0004 2020137e branch loop 
 
 pf_patch_ext:
-0005 c0470015 beq patch31_6 ,p_usb_class_type 
-0006 c0498025 beq patch32_3 ,p_usb_tx 
-0007 2020137e branch loop 
+0005 c015003f beq patch25_2 ,p_efuse_vdd_off 
+0006 c0470059 beq patch31_6 ,p_usb_class_type 
+0007 c0498069 beq patch32_3 ,p_usb_tx 
+0008 c073000a beq patch3c_6 ,p_g24_bind_mode_auto 
+0009 2020137e branch loop 
+
+p_g24_bind_mode_auto:
+000a 6fe0c8c3 fetch 1 ,mem_24g_work_mode 
+000b c1808000 rtnne dongle_bind 
+000c 2040234b call g24_bind_init 
+000d 2040000f call p_g24_bind_data_process 
+000e 202024a1 branch g24_bind_mode_auto + 5 
+
+p_g24_bind_data_process:
+000f 204023fa call g24_rx_interrupt_clear 
+0010 20402187 call g24_receive_packet 
+0011 2437a3fa nbranch g24_rx_interrupt_clear ,user3 
+0012 20402367 call g24_bind_data_parse 
+0013 20400017 call p_g24_bind_transmit_ack 
+0014 204023d6 call g24_bind_device_status_check 
+0015 2040001f call p_dongle_kb_bind_soft_reset 
+0016 20202360 branch g24_bind_data_process + 7 
+
+p_g24_bind_transmit_ack:
+0017 6fe0c7a7 fetch 1 ,mem_24g_rxbuf 
+0018 67e0c839 store 1 ,mem_24g_data_type 
+0019 20402274 call g24_read_len_pid_crc 
+001a 204023e3 call g24_ackpayload_prep 
+001b 2437a1f1 nbranch g24_end_of_packet ,user3 
+001c 20402247 call g24_transmit_prep 
+001d 204021f8 call g24_transmit 
+001e 202021f1 branch g24_end_of_packet 
+
+p_dongle_kb_bind_soft_reset:
+001f 6fe0c09a fetch 1 ,mem_device_option 
+0020 c1820000 rtnne dvc_op_dongle 
+0021 6fe0c93e fetch 1 ,mem_dg_kb_bind_success 
+0022 207a0000 rtn blank 
+0023 70096400 jam 0 ,mem_temp 
+
+p_dongle_wirte_efuse_bind_status:
+0024 7048f55a jam dongle_kb_bind_success ,mem_dg_kb_bind_flag 
+0025 2040002e call p_dongle_write_kb_bind_status 
+0026 204036d0 call dongle_read_kb_bind_status 
+0027 6fe08964 fetch 1 ,mem_temp 
+0028 1fe0fe01 increase 1 ,pdata 
+0029 67e08964 store 1 ,mem_temp 
+002a c07fde29 beq 0xff ,soft_reset_chip 
+002b 6fe0c8f5 fetch 1 ,mem_dg_kb_bind_flag 
+002c c0ad0024 bne dongle_kb_bind_success ,p_dongle_wirte_efuse_bind_status 
+002d 20205e29 branch soft_reset_chip 
+
+p_dongle_write_kb_bind_status:
+002e df200001 arg 1 ,loopcnt 
+002f da2048f5 arg mem_dg_kb_bind_flag ,rega 
+0030 d840002a arg dongle_kb_bind_efuse_offect ,temp 
+0031 20200032 branch p_efuse_program 
+
+p_efuse_program:
+0032 20400034 call p_efuse_vdd_fsource_on 
+0033 20205f13 branch efuse_program + 1 
+
+p_efuse_vdd_fsource_on:
+0034 20405f2a call efuse_lna_pa_ldo_on 
+0035 70804780 jam 0x80 ,core_efuse_ctrl 
+0036 6ff08a0b fetch 1 ,core_rf_ldo_en1 
+0037 793ffe05 set0 5 ,pdata 
+0038 79207e03 set1 3 ,pdata 
+0039 67f08a0b store 1 ,core_rf_ldo_en1 
+003a 20000018 nop 24 
+003b 79207e04 set1 4 ,pdata 
+003c 67f08a0b store 1 ,core_rf_ldo_en1 
+003d 200001f4 nop 500 
+003e 20600000 rtn 
+
+p_efuse_vdd_off:
+003f 6ff08a0b fetch 1 ,core_rf_ldo_en1 
+0040 793ffe05 set0 5 ,pdata 
+0041 793ffe04 set0 4 ,pdata 
+0042 793ffe00 set0 0 ,pdata 
+0043 67f08a0b store 1 ,core_rf_ldo_en1 
+0044 20000018 nop 24 
+0045 793ffe03 set0 3 ,pdata 
+0046 67f08a0b store 1 ,core_rf_ldo_en1 
+0047 200000c8 nop 200 
+0048 6ff08a0a fetch 1 ,core_rf_ldo_en0 
+0049 793ffe01 set0 1 ,pdata 
+004a 67f08a0a store 1 ,core_rf_ldo_en0 
+004b 20205f27 branch efuse_pa_vdd_recover 
 
 p_set_sync_on:
-0008 70890005 jam 0x5 ,modem_en 
-0009 20000002 nop 2 
-000a 70890000 jam 0x0 ,modem_en 
-000b 708a8729 jam 0x29 ,core_syn_afc_cfg1 
-000c 20201161 branch set_sync_on + 4 
+004c 70890005 jam 0x5 ,modem_en 
+004d 20000002 nop 2 
+004e 70890000 jam 0x0 ,modem_en 
+004f 708a8729 jam 0x29 ,core_syn_afc_cfg1 
+0050 20201161 branch set_sync_on + 4 
 
 p_initialize_radio_cont:
-000d 7041eaff jam 0xff ,mem_gain_fix 
-000e 708a8500 jam 0x00 ,core_syn_loopdiv_dsm_cfg 
-000f 70892140 jam 0x40 ,0x8921 
-0010 70486702 jam 0x02 ,mem_24g_rx_phy 
-0011 70486802 jam 0x02 ,mem_24g_tx_phy 
-0012 7048bc1e jam 0x1e ,mem_24g_hop_interval 
-0013 7048d701 jam 1 ,mem_24g_b_s_mode_switch_disable 
-0014 20201252 branch initialize_radio_cont + 1 
+0051 7041eaff jam 0xff ,mem_gain_fix 
+0052 708a8500 jam 0x00 ,core_syn_loopdiv_dsm_cfg 
+0053 70892140 jam 0x40 ,0x8921 
+0054 70486702 jam 0x02 ,mem_24g_rx_phy 
+0055 70486802 jam 0x02 ,mem_24g_tx_phy 
+0056 7048bc1e jam 0x1e ,mem_24g_hop_interval 
+0057 7048d701 jam 1 ,mem_24g_b_s_mode_switch_disable 
+0058 20201252 branch initialize_radio_cont + 1 
 
 p_usb_class_type:
-0015 793f8023 set0 mark_isstr ,mark 
-0016 6fe08b59 fetch 1 ,mem_usb_setup_bmrequesttype 
-0017 1fe17e80 and_into 0x80 ,pdata 
-0018 c000001a beq out_device ,p_usb_out_device 
-0019 20207aa1 branch usb_class_type + 4 
+0059 793f8023 set0 mark_isstr ,mark 
+005a 6fe08b59 fetch 1 ,mem_usb_setup_bmrequesttype 
+005b 1fe17e80 and_into 0x80 ,pdata 
+005c c000005e beq out_device ,p_usb_out_device 
+005d 20207aa1 branch usb_class_type + 4 
 
 p_usb_out_device:
-001a 6fe08b59 fetch 1 ,mem_usb_setup_bmrequesttype 
-001b 1ff1fe00 rshift4 pdata ,pdata 
-001c 1fe37e00 rshift pdata ,pdata 
-001d 1fe17e03 and_into 0x03 ,pdata 
-001e c0008020 beq class_req ,p_usb_out_class_req 
-001f 20207ab4 branch usb_out_device + 4 
+005e 6fe08b59 fetch 1 ,mem_usb_setup_bmrequesttype 
+005f 1ff1fe00 rshift4 pdata ,pdata 
+0060 1fe37e00 rshift pdata ,pdata 
+0061 1fe17e03 and_into 0x03 ,pdata 
+0062 c0008064 beq class_req ,p_usb_out_class_req 
+0063 20207ab4 branch usb_out_device + 4 
 
 p_usb_out_class_req:
-0020 6fe08b5a fetch 1 ,mem_usb_setup_brequest 
-0021 c0048023 beq set_report ,p_usb_set_report 
-0022 20207acd branch usb_out_class_req + 1 
+0064 6fe08b5a fetch 1 ,mem_usb_setup_brequest 
+0065 c0048067 beq set_report ,p_usb_set_report 
+0066 20207acd branch usb_out_class_req + 1 
 
 p_usb_set_report:
-0023 20003a98 nop 15000 
-0024 20207c4a branch usb_set_report 
+0067 20003a98 nop 15000 
+0068 20207c4a branch usb_set_report 
 
 p_usb_tx:
-0025 6fe08bf9 fetch 1 ,mem_usb_tx_enable 
-0026 207a0000 rtn blank 
-0027 6ff08c24 fetch 1 ,core_usb_txbusy 
-0028 1fe17e0f and_into 0x0f ,pdata 
-0029 243a7d17 nbranch usb_inwake_state_tx_dispose ,blank 
-002a 20207ccc branch usb_tx + 3 
+0069 6fe08bf9 fetch 1 ,mem_usb_tx_enable 
+006a 207a0000 rtn blank 
+006b 6ff08c24 fetch 1 ,core_usb_txbusy 
+006c 1fe17e0f and_into 0x0f ,pdata 
+006d 243a7d17 nbranch usb_inwake_state_tx_dispose ,blank 
+006e 20207ccc branch usb_tx + 3 
               org 0x800
 
 start:
Index: program/patch.prog
===================================================================
--- /YC1308AF/branch/mouse/FD_Project/USB_16M/program/patch.prog	(revision 3811)
+++ /YC1308AF/branch/mouse/FD_Project/USB_16M/program/patch.prog	(working copy)
@@ -6,10 +6,99 @@
 	branch loop
 
 pf_patch_ext:
+	beq patch25_2,p_efuse_vdd_off
 	beq patch31_6,p_usb_class_type
 	beq patch32_3,p_usb_tx
+	beq patch3c_6,p_g24_bind_mode_auto
 	branch loop
 
+/************************keyboard blank patch start**********/
+p_g24_bind_mode_auto:
+	fetch 1,mem_24g_work_mode
+	rtnne DONGLE_BIND
+	call g24_bind_init
+	call p_g24_bind_data_process
+	branch g24_bind_mode_auto+5
+
+p_g24_bind_data_process:
+	call g24_rx_interrupt_clear
+	call g24_receive_packet
+	nbranch g24_rx_interrupt_clear,user3
+	call g24_bind_data_parse
+	call p_g24_bind_transmit_ack
+	call g24_bind_device_status_check
+	call p_dongle_kb_bind_soft_reset
+	branch g24_bind_data_process+7
+
+p_g24_bind_transmit_ack:
+	fetch 1,mem_24g_rxbuf
+	store 1,mem_24g_data_type
+	call g24_read_len_pid_crc
+	call g24_ackpayload_prep
+	nbranch g24_end_of_packet,user3
+	call g24_transmit_prep
+	call g24_transmit
+	branch g24_end_of_packet
+
+p_dongle_kb_bind_soft_reset:
+	fetch 1,mem_device_option
+	rtnne dvc_op_dongle
+	fetch 1,mem_dg_kb_bind_success
+	rtn blank
+	jam 0,mem_temp
+p_dongle_wirte_efuse_bind_status:	
+	jam DONGLE_KB_BIND_SUCCESS,mem_dg_kb_bind_flag
+	call p_dongle_write_kb_bind_status
+	call dongle_read_kb_bind_status
+	fetch 1,mem_temp
+	increase 1,pdata
+	store 1,mem_temp
+	beq 0xff,soft_reset_chip
+	fetch 1,mem_dg_kb_bind_flag
+	bne DONGLE_KB_BIND_SUCCESS,p_dongle_wirte_efuse_bind_status
+	branch soft_reset_chip
+
+p_dongle_write_kb_bind_status:
+	arg 1,loopcnt
+	arg mem_dg_kb_bind_flag,rega
+	arg DONGLE_KB_BIND_EFUSE_OFFECT,temp
+	branch p_efuse_program
+
+p_efuse_program:
+	call p_efuse_vdd_fsource_on
+	branch efuse_program+1
+
+p_efuse_vdd_fsource_on:
+	call efuse_lna_pa_ldo_on
+	jam 0x80,core_efuse_ctrl
+	fetch 1,core_rf_ldo_en1
+	set0 5,pdata
+//	set1 4,pdata
+	set1 3,pdata
+	store 1,core_rf_ldo_en1
+	nop 24
+	set1 4,pdata
+	store 1,core_rf_ldo_en1
+	nop 500
+	rtn
+
+p_efuse_vdd_off:
+	fetch 1,core_rf_ldo_en1
+	set0 5,pdata
+	set0 4,pdata
+	set0 0,pdata
+	store 1,core_rf_ldo_en1
+	nop 24
+	set0 3,pdata
+	store 1,core_rf_ldo_en1
+	nop 200
+	fetch 1,core_rf_ldo_en0
+	set0 1,pdata
+	store 1,core_rf_ldo_en0
+	branch efuse_pa_vdd_recover
+
+
+
 p_set_sync_on:
 	jam 0x5,modem_en
 	nop 2
