summaryrefslogtreecommitdiffstats
path: root/drivers/input/touchscreen/rm31080a_ctrl.c
diff options
context:
space:
mode:
authorXiaohui Tao <xtao@nvidia.com>2012-10-17 14:35:32 -0400
committerDavid Pu <dpu@nvidia.com>2017-07-27 19:09:19 -0400
commite91aa9199ba92bdc3925778272f050a19623d6a9 (patch)
tree89d7435e5088528fd99605a855dcd813b313187b /drivers/input/touchscreen/rm31080a_ctrl.c
parentbdb133feba7db62627a26195f08f0a443ce07633 (diff)
input: touch: raydium: updates for RM31100 chip
Raydium code drop. Add support for the new Raydium chip; Working for both the old chip and new one Bug 1162178 Signed-off-by: Xiaohui Tao <xtao@nvidia.com> Reviewed-on: http://git-master/r/145319 (cherry picked from commit df26903f2f776b20a4b70eb0a16e9cf65b2a216c) Signed-off-by: David Jung <djung@nvidia.com> Change-Id: Ibbb0e8dc92241753799b91fd2f37263a28404dc1 Reviewed-on: http://git-master/r/146047 Reviewed-by: Thomas Cherry <tcherry@nvidia.com> Rebase-Id: Rdb927e43c13350627e071f61f5847918311da3da
Diffstat (limited to 'drivers/input/touchscreen/rm31080a_ctrl.c')
-rw-r--r--drivers/input/touchscreen/rm31080a_ctrl.c410
1 files changed, 207 insertions, 203 deletions
diff --git a/drivers/input/touchscreen/rm31080a_ctrl.c b/drivers/input/touchscreen/rm31080a_ctrl.c
index 516d2bd78..e1f1f8f73 100644
--- a/drivers/input/touchscreen/rm31080a_ctrl.c
+++ b/drivers/input/touchscreen/rm31080a_ctrl.c
@@ -24,7 +24,7 @@
24//DEFINITIONS 24//DEFINITIONS
25//============================================================================= 25//=============================================================================
26#define RM31080_RAW_DATA_LENGTH 2048 26#define RM31080_RAW_DATA_LENGTH 2048
27#define MAX_AVERAGE_TIMES 128 27#define MAX_AVERAGE_TIMES 128
28//============================================================================= 28//=============================================================================
29//STRUCTURE DECLARATION 29//STRUCTURE DECLARATION
30//============================================================================= 30//=============================================================================
@@ -60,7 +60,7 @@ unsigned char bfSign[60];
60 60
61//============================================================================= 61//=============================================================================
62// Description: 62// Description:
63// Control functions for Touch IC 63// Control functions for Touch IC
64// Input: 64// Input:
65// 65//
66// Output: 66// Output:
@@ -71,7 +71,7 @@ int rm31080_ctrl_clear_int(void)
71{ 71{
72 u8 flag; 72 u8 flag;
73#if ENABLE_T007B1_SETTING 73#if ENABLE_T007B1_SETTING
74 if (g_stCtrl.bICVersion == T007_VERSION_B) 74 if (g_stCtrl.bICVersion != T007A6)
75 return rm31080_spi_byte_read(RM31080B1_REG_BANK0_02H, &flag); 75 return rm31080_spi_byte_read(RM31080B1_REG_BANK0_02H, &flag);
76 else 76 else
77#endif 77#endif
@@ -101,9 +101,9 @@ void rm31080_ctrl_wait_for_scan_finish(void)
101// Description: 101// Description:
102// 102//
103// Input: 103// Input:
104// N/A 104// N/A
105// Output: 105// Output:
106// N/A 106// N/A
107//============================================================================= 107//=============================================================================
108//Marty added 108//Marty added
109int rm31080_soft_average(signed char *pSource) 109int rm31080_soft_average(signed char *pSource)
@@ -269,7 +269,7 @@ int rm31080_soft_average(signed char *pSource)
269 bResult1 = (s16Sum / g_bMFCounter[bMaxBlockId]); 269 bResult1 = (s16Sum / g_bMFCounter[bMaxBlockId]);
270 //if (g_stCtrl.bfNoiseDetector) 270 //if (g_stCtrl.bfNoiseDetector)
271 //{ 271 //{
272 // bResult1 = (s16)bResult1 * 4 / 5; 272 // bResult1 = (s16)bResult1 * 4 / 5;
273 //} 273 //}
274 } 274 }
275 } 275 }
@@ -286,7 +286,7 @@ int rm31080_soft_average(signed char *pSource)
286 bResult2 = (bMax + bMin) / 2; 286 bResult2 = (bMax + bMin) / 2;
287 //if (g_stCtrl.bfNoiseDetector) 287 //if (g_stCtrl.bfNoiseDetector)
288 //{ 288 //{
289 // bResult2 = (s16)bResult2 * 4 / 5; 289 // bResult2 = (s16)bResult2 * 4 / 5;
290 //} 290 //}
291 291
292 } 292 }
@@ -315,7 +315,7 @@ int rm31080_soft_average(signed char *pSource)
315 bResult0 = (s16Sum / g_stCtrl.bNoiseRepeatTimes); // + 0x80; 315 bResult0 = (s16Sum / g_stCtrl.bNoiseRepeatTimes); // + 0x80;
316 //if (g_stCtrl.bfNoiseDetector) 316 //if (g_stCtrl.bfNoiseDetector)
317 //{ 317 //{
318 // bResult0 = (s16)bResult0 * 4 / 5; 318 // bResult0 = (s16)bResult0 * 4 / 5;
319 //} 319 //}
320 320
321 if (g_stCtrl.bfMediumFilter & 0x01) { 321 if (g_stCtrl.bfMediumFilter & 0x01) {
@@ -378,33 +378,33 @@ int rm31080_soft_average(signed char *pSource)
378// Description: 378// Description:
379// 379//
380// Input: 380// Input:
381// N/A 381// N/A
382// Output: 382// Output:
383// N/A 383// N/A
384//============================================================================= 384//=============================================================================
385void rm_set_repeat_times(u8 u8Times) 385void rm_set_repeat_times(u8 u8Times)
386{ 386{
387 u8 bReg1_1Fh = 0x00; 387 u8 bReg1_1Fh = 0x00;
388 u8 u8Reg = 0x00; 388 u8 u8Reg = 0x00;
389#if ENABLE_T007B1_SETTING 389#if ENABLE_T007B1_SETTING
390 if (g_stCtrl.bICVersion == T007_VERSION_B) 390 if (g_stCtrl.bICVersion != T007A6)
391 { 391 {
392 u8Reg = g_stCtrl.bSenseNumber - 1; 392 u8Reg = g_stCtrl.bSenseNumber - 1;
393 rm31080_spi_byte_write(0x0A, u8Reg&0x0F); 393 rm31080_spi_byte_write(0x0A, u8Reg&0x0F);
394 rm31080_spi_byte_write(0x0E, u8Times&0x1F); 394 rm31080_spi_byte_write(0x0E, u8Times&0x1F);
395 if (g_stCtrl.bfADFC) 395 if ((g_stCtrl.bfADFC) && (g_stCtrl.bICVersion != T007_VERSION_C))
396 bReg1_1Fh |= ADFC; 396 bReg1_1Fh |= ADFC;
397 397
398 if (g_stCtrl.bfTHMode) 398 if (g_stCtrl.bfTHMode)
399 bReg1_1Fh |= FILTER_THRESHOLD_MODE; 399 bReg1_1Fh |= FILTER_THRESHOLD_MODE;
400 else 400 else
401 bReg1_1Fh &= ~FILTER_NONTHRESHOLD_MODE; 401 bReg1_1Fh &= ~FILTER_NONTHRESHOLD_MODE;
402 //bReg1_1Fh |= FILTER_NONTHRESHOLD_MODE; 402 //bReg1_1Fh |= FILTER_NONTHRESHOLD_MODE;
403 403
404 if (u8Times != REPEAT_1) 404 if (u8Times != REPEAT_1)
405 bReg1_1Fh |= 0x44; //Marty 20120820 405 bReg1_1Fh |= 0x44; //Marty 20120820
406 406
407 rm31080_spi_byte_write(RM31080_REG_1F, bReg1_1Fh); 407 rm31080_spi_byte_write(RM31080_REG_1F, bReg1_1Fh);
408 } 408 }
409 else 409 else
410#endif 410#endif
@@ -432,9 +432,9 @@ void rm_set_repeat_times(u8 u8Times)
432// Description: 432// Description:
433// 433//
434// Input: 434// Input:
435// N/A 435// N/A
436// Output: 436// Output:
437// N/A 437// N/A
438//============================================================================= 438//=============================================================================
439NOISE_DETECTOR_RET_t rm_noise_detect(signed char *pSource) 439NOISE_DETECTOR_RET_t rm_noise_detect(signed char *pSource)
440{ 440{
@@ -451,7 +451,7 @@ NOISE_DETECTOR_RET_t rm_noise_detect(signed char *pSource)
451 451
452 452
453#if ENABLE_T007B1_SETTING 453#if ENABLE_T007B1_SETTING
454 if (g_stCtrl.bICVersion == T007_VERSION_B) 454 if (g_stCtrl.bICVersion != T007A6)
455 { 455 {
456 wSENum = 0; 456 wSENum = 0;
457 return ND_DETECTOR_OFF; 457 return ND_DETECTOR_OFF;
@@ -481,9 +481,10 @@ NOISE_DETECTOR_RET_t rm_noise_detect(signed char *pSource)
481 for (i = 0; i < XNum; i++) { 481 for (i = 0; i < XNum; i++) {
482 if (g_stCtrl.bADCNumber) { 482 if (g_stCtrl.bADCNumber) {
483 if ((i == g_stCtrl.bDummyChannel[0]) 483 if ((i == g_stCtrl.bDummyChannel[0])
484 || (i == g_stCtrl.bDummyChannel[1]) 484 || (i == g_stCtrl.bDummyChannel[1])
485 || (i == g_stCtrl.bDummyChannel[2]) 485 || (i == g_stCtrl.bDummyChannel[2])
486 || (i == g_stCtrl.bDummyChannel[3])) { 486 || (i == g_stCtrl.bDummyChannel[3]))
487 {
487 continue; 488 continue;
488 } 489 }
489 } else { 490 } else {
@@ -670,7 +671,7 @@ int rm_noise_main(signed char *pSource)
670 iRet = 0; 671 iRet = 0;
671 672
672#if ENABLE_T007B1_SETTING 673#if ENABLE_T007B1_SETTING
673 if (g_stCtrl.bICVersion != T007_VERSION_B) 674 if (g_stCtrl.bICVersion == T007A6)
674#endif 675#endif
675 { 676 {
676#if ENABLE_NEW_NOISE_MODE 677#if ENABLE_NEW_NOISE_MODE
@@ -688,9 +689,9 @@ int rm_noise_main(signed char *pSource)
688// Description: 689// Description:
689// 690//
690// Input: 691// Input:
691// N/A 692// N/A
692// Output: 693// Output:
693// N/A 694// N/A
694//============================================================================= 695//=============================================================================
695void rm31080_ctrl_set_baseline(void *arg) 696void rm31080_ctrl_set_baseline(void *arg)
696{ 697{
@@ -708,9 +709,9 @@ void rm31080_ctrl_set_baseline(void *arg)
708// Description: 709// Description:
709// 710//
710// Input: 711// Input:
711// N/A 712// N/A
712// Output: 713// Output:
713// N/A 714// N/A
714//============================================================================= 715//=============================================================================
715void rm31080_ctrl_set_analog_baseline(void *arg) 716void rm31080_ctrl_set_analog_baseline(void *arg)
716{ 717{
@@ -727,9 +728,9 @@ void rm31080_ctrl_set_analog_baseline(void *arg)
727// Description: 728// Description:
728// 729//
729// Input: 730// Input:
730// N/A 731// N/A
731// Output: 732// Output:
732// N/A 733// N/A
733//============================================================================= 734//=============================================================================
734void rm31080_ctrl_init(void) 735void rm31080_ctrl_init(void)
735{ 736{
@@ -747,6 +748,7 @@ void rm31080_ctrl_init(void)
747 g_stCtrl.bfNoisePreHold = 0; 748 g_stCtrl.bfNoisePreHold = 0;
748 g_stCtrl.bfTouched = 0; 749 g_stCtrl.bfTouched = 0;
749 g_stCtrl.bfExitNoiseMode = 0; 750 g_stCtrl.bfExitNoiseMode = 0;
751 g_stCtrl.bDummyRunCycle = 1;
750 752
751 g_stCtrl.u16DataLength = RM31080_RAW_DATA_LENGTH; 753 g_stCtrl.u16DataLength = RM31080_RAW_DATA_LENGTH;
752 g_bfFirstAverage = 0; 754 g_bfFirstAverage = 0;
@@ -763,9 +765,9 @@ void rm31080_ctrl_init(void)
763// Description: 765// Description:
764// 766//
765// Input: 767// Input:
766// N/A 768// N/A
767// Output: 769// Output:
768// N/A 770// N/A
769//============================================================================= 771//=============================================================================
770unsigned char rm31080_ctrl_get_noise_mode(u8 * p) 772unsigned char rm31080_ctrl_get_noise_mode(u8 * p)
771{ 773{
@@ -793,9 +795,9 @@ void rm31080b_sw_reset(void)
793// Description: Set T007B analog filter repeat 795// Description: Set T007B analog filter repeat
794// 796//
795// Input: 797// Input:
796// Analog average tap number 798// Analog average tap number
797// Output: 799// Output:
798// none 800// none
799//============================================================================= 801//=============================================================================
800void rm31080b_analog_filter_config(unsigned char u8Amount) 802void rm31080b_analog_filter_config(unsigned char u8Amount)
801{ 803{
@@ -814,9 +816,9 @@ void rm31080b_analog_filter_config(unsigned char u8Amount)
814// Description: Set T007B digital filter repeat 816// Description: Set T007B digital filter repeat
815// 817//
816// Input: 818// Input:
817// Digital average tap number 819// Digital average tap number
818// Output: 820// Output:
819// none 821// none
820//============================================================================= 822//=============================================================================
821void rm31080b_digital_filter_config(unsigned char u8Amount) 823void rm31080b_digital_filter_config(unsigned char u8Amount)
822{ 824{
@@ -835,22 +837,22 @@ void rm31080b_digital_filter_config(unsigned char u8Amount)
835// Description: 837// Description:
836// 838//
837// Input: 839// Input:
838// N/A 840// N/A
839// Output: 841// Output:
840// N/A 842// N/A
841//============================================================================= 843//=============================================================================
842 844
843#if ENABLE_FILTER_SWITCH 845#if ENABLE_FILTER_SWITCH
844void rm31080_analog_filter_config(u8 bRepeatTimes) 846void rm31080_analog_filter_config(u8 bRepeatTimes)
845{ 847{
846#if ENABLE_T007B1_SETTING 848#if ENABLE_T007B1_SETTING
847 if (g_stCtrl.bICVersion != T007_VERSION_B) 849 if (g_stCtrl.bICVersion == T007A6)
848#endif 850#endif
849 { 851 {
850 //u8 bReg0_1Fh = 0x00; 852 //u8 bReg0_1Fh = 0x00;
851 853
852 //InitChargePump(); 854 //InitChargePump();
853 rm31080_spi_byte_write(0x7F, 0x01); // Switch to 0x01 855 rm31080_spi_byte_write(0x7F, 0x01); // Switch to 0x01
854 856
855 rm31080_spi_byte_write(0x09, g_stCtrl.bReg1_09h[1]); 857 rm31080_spi_byte_write(0x09, g_stCtrl.bReg1_09h[1]);
856 rm31080_spi_byte_write(0x43, g_stCtrl.bReg1_43h[1]); 858 rm31080_spi_byte_write(0x43, g_stCtrl.bReg1_43h[1]);
@@ -859,7 +861,7 @@ void rm31080_analog_filter_config(u8 bRepeatTimes)
859 rm31080_spi_byte_write(0x4A, g_stCtrl.bReg1_4Ah[1]); 861 rm31080_spi_byte_write(0x4A, g_stCtrl.bReg1_4Ah[1]);
860 rm31080_spi_byte_write(0x4B, g_stCtrl.bReg1_4Bh[1]); 862 rm31080_spi_byte_write(0x4B, g_stCtrl.bReg1_4Bh[1]);
861 863
862 rm31080_spi_byte_write(0x7F, 0x00); // Switch to BANK0 864 rm31080_spi_byte_write(0x7F, 0x00); // Switch to BANK0
863 865
864 #if 0 866 #if 0
865 rm31080_spi_byte_write(0x0E, ( 0x38 | 0x00)); //bSenseNumber = 8, REPEAT_1 867 rm31080_spi_byte_write(0x0E, ( 0x38 | 0x00)); //bSenseNumber = 8, REPEAT_1
@@ -907,118 +909,118 @@ void rm31080_analog_filter_config(u8 bRepeatTimes)
907void rm31080_digital_filter_config(void) 909void rm31080_digital_filter_config(void)
908{ 910{
909#if ENABLE_T007B1_SETTING 911#if ENABLE_T007B1_SETTING
910 if (g_stCtrl.bICVersion != T007_VERSION_B) 912 if (g_stCtrl.bICVersion == T007A6)
911#endif 913#endif
912 { 914 {
913 //u8 bReg0_1Fh = 0x00; 915 //u8 bReg0_1Fh = 0x00;
914 916
915 //InitChargePump(); 917 //InitChargePump();
916 rm31080_spi_byte_write(0x7F, 0x01); // Switch to BANK1 918 rm31080_spi_byte_write(0x7F, 0x01); // Switch to BANK1
917 919
918 rm31080_spi_byte_write(0x09, g_stCtrl.bReg1_09h[0]); 920 rm31080_spi_byte_write(0x09, g_stCtrl.bReg1_09h[0]);
919 rm31080_spi_byte_write(0x43, g_stCtrl.bReg1_43h[0]); 921 rm31080_spi_byte_write(0x43, g_stCtrl.bReg1_43h[0]);
920 rm31080_spi_byte_write(0x48, g_stCtrl.bReg1_48h[0]); 922 rm31080_spi_byte_write(0x48, g_stCtrl.bReg1_48h[0]);
921 rm31080_spi_byte_write(0x49, g_stCtrl.bReg1_49h[0]); 923 rm31080_spi_byte_write(0x49, g_stCtrl.bReg1_49h[0]);
922 rm31080_spi_byte_write(0x4A, g_stCtrl.bReg1_4Ah[0]); 924 rm31080_spi_byte_write(0x4A, g_stCtrl.bReg1_4Ah[0]);
923 rm31080_spi_byte_write(0x4B, g_stCtrl.bReg1_4Bh[0]); 925 rm31080_spi_byte_write(0x4B, g_stCtrl.bReg1_4Bh[0]);
924 926
925 rm31080_spi_byte_write(0x7F, 0x00); // Switch to 0x00 927 rm31080_spi_byte_write(0x7F, 0x00); // Switch to 0x00
926 928
927 #if 0 929 #if 0
928 rm31080_spi_byte_write(0x0E, ( 0x38 | 0x04)); //bSenseNumber = 8, REPEAT_5 930 rm31080_spi_byte_write(0x0E, ( 0x38 | 0x04)); //bSenseNumber = 8, REPEAT_5
929 931
930 rm31080_spi_byte_read(0x1F, &bReg0_1Fh); 932 rm31080_spi_byte_read(0x1F, &bReg0_1Fh);
931 bReg0_1Fh = bReg0_1Fh & 0xF8; 933 bReg0_1Fh = bReg0_1Fh & 0xF8;
932 bReg0_1Fh = bReg0_1Fh | 0x07;//REPEAT_5 934 bReg0_1Fh = bReg0_1Fh | 0x07;//REPEAT_5
933 935
934 rm31080_spi_byte_write(0x1F, bReg0_1Fh); 936 rm31080_spi_byte_write(0x1F, bReg0_1Fh);
935 #endif 937 #endif
936 rm_set_repeat_times(g_stCtrl.bRepeatTimes[0]); 938 rm_set_repeat_times(g_stCtrl.bRepeatTimes[0]);
937 939
938// -------- Set Driving / Sensing Control Mode -------- 940 // -------- Set Driving / Sensing Control Mode --------
939 if(!g_stCtrl.bfAnalogFilter) 941 if(!g_stCtrl.bfAnalogFilter)
940 { 942 {
941 rm31080_spi_byte_write(RM31080_REG_10, 0x10 |0x40); //ACC | DDSC 943 rm31080_spi_byte_write(RM31080_REG_10, 0x10 |0x40); //ACC | DDSC
942 } 944 }
943 945
944// -------- Set PGA/DAC -------- 946 // -------- Set PGA/DAC --------
945 rm31080_spi_byte_write(0x6B, 0x04); //EN_C0 947 rm31080_spi_byte_write(0x6B, 0x04); //EN_C0
946 948
947// -------- Scan Time Setting -------- 949 // -------- Scan Time Setting --------
948 rm31080_spi_byte_write(RM31080_REG_42, g_stCtrl.bReg0_42h[g_stCtrl.bfAnalogFilter]); //LACTIVE 950 rm31080_spi_byte_write(RM31080_REG_42, g_stCtrl.bReg0_42h[g_stCtrl.bfAnalogFilter]); //LACTIVE
949 rm31080_spi_byte_write(RM31080_REG_43, g_stCtrl.bReg0_43h[g_stCtrl.bfAnalogFilter]); //LACTIVE 951 rm31080_spi_byte_write(RM31080_REG_43, g_stCtrl.bReg0_43h[g_stCtrl.bfAnalogFilter]); //LACTIVE
950 952
951 rm31080_spi_byte_write(0x20, g_stCtrl.bReg0_20h[g_stCtrl.bfAnalogFilter]); 953 rm31080_spi_byte_write(0x20, g_stCtrl.bReg0_20h[g_stCtrl.bfAnalogFilter]);
952 rm31080_spi_byte_write(0x21, g_stCtrl.bReg0_21h[g_stCtrl.bfAnalogFilter]); 954 rm31080_spi_byte_write(0x21, g_stCtrl.bReg0_21h[g_stCtrl.bfAnalogFilter]);
953 rm31080_spi_byte_write(0x22, g_stCtrl.bReg0_22h[g_stCtrl.bfAnalogFilter]); 955 rm31080_spi_byte_write(0x22, g_stCtrl.bReg0_22h[g_stCtrl.bfAnalogFilter]);
954 rm31080_spi_byte_write(0x23, g_stCtrl.bReg0_23h[g_stCtrl.bfAnalogFilter]); 956 rm31080_spi_byte_write(0x23, g_stCtrl.bReg0_23h[g_stCtrl.bfAnalogFilter]);
955 rm31080_spi_byte_write(0x24, g_stCtrl.bReg0_24h[g_stCtrl.bfAnalogFilter]); 957 rm31080_spi_byte_write(0x24, g_stCtrl.bReg0_24h[g_stCtrl.bfAnalogFilter]);
956 rm31080_spi_byte_write(0x25, g_stCtrl.bReg0_25h[g_stCtrl.bfAnalogFilter]); 958 rm31080_spi_byte_write(0x25, g_stCtrl.bReg0_25h[g_stCtrl.bfAnalogFilter]);
957 rm31080_spi_byte_write(0x26, g_stCtrl.bReg0_26h[g_stCtrl.bfAnalogFilter]); 959 rm31080_spi_byte_write(0x26, g_stCtrl.bReg0_26h[g_stCtrl.bfAnalogFilter]);
958 rm31080_spi_byte_write(0x27, g_stCtrl.bReg0_27h[g_stCtrl.bfAnalogFilter]); 960 rm31080_spi_byte_write(0x27, g_stCtrl.bReg0_27h[g_stCtrl.bfAnalogFilter]);
959 rm31080_spi_byte_write(0x28, g_stCtrl.bReg0_28h[g_stCtrl.bfAnalogFilter]); 961 rm31080_spi_byte_write(0x28, g_stCtrl.bReg0_28h[g_stCtrl.bfAnalogFilter]);
960 rm31080_spi_byte_write(0x29, g_stCtrl.bReg0_29h[g_stCtrl.bfAnalogFilter]); 962 rm31080_spi_byte_write(0x29, g_stCtrl.bReg0_29h[g_stCtrl.bfAnalogFilter]);
961 rm31080_spi_byte_write(0x2A, g_stCtrl.bReg0_2Ah[g_stCtrl.bfAnalogFilter]); 963 rm31080_spi_byte_write(0x2A, g_stCtrl.bReg0_2Ah[g_stCtrl.bfAnalogFilter]);
962 rm31080_spi_byte_write(0x2B, g_stCtrl.bReg0_2Bh[g_stCtrl.bfAnalogFilter]); 964 rm31080_spi_byte_write(0x2B, g_stCtrl.bReg0_2Bh[g_stCtrl.bfAnalogFilter]);
963 rm31080_spi_byte_write(0x2C, g_stCtrl.bReg0_2Ch[g_stCtrl.bfAnalogFilter]); 965 rm31080_spi_byte_write(0x2C, g_stCtrl.bReg0_2Ch[g_stCtrl.bfAnalogFilter]);
964 rm31080_spi_byte_write(0x2D, g_stCtrl.bReg0_2Dh[g_stCtrl.bfAnalogFilter]); 966 rm31080_spi_byte_write(0x2D, g_stCtrl.bReg0_2Dh[g_stCtrl.bfAnalogFilter]);
965 rm31080_spi_byte_write(0x2E, g_stCtrl.bReg0_2Eh[g_stCtrl.bfAnalogFilter]); 967 rm31080_spi_byte_write(0x2E, g_stCtrl.bReg0_2Eh[g_stCtrl.bfAnalogFilter]);
966 rm31080_spi_byte_write(0x2F, g_stCtrl.bReg0_2Fh[g_stCtrl.bfAnalogFilter]); 968 rm31080_spi_byte_write(0x2F, g_stCtrl.bReg0_2Fh[g_stCtrl.bfAnalogFilter]);
967 rm31080_spi_byte_write(0x30, g_stCtrl.bReg0_30h[g_stCtrl.bfAnalogFilter]); 969 rm31080_spi_byte_write(0x30, g_stCtrl.bReg0_30h[g_stCtrl.bfAnalogFilter]);
968 rm31080_spi_byte_write(0x31, g_stCtrl.bReg0_31h[g_stCtrl.bfAnalogFilter]); 970 rm31080_spi_byte_write(0x31, g_stCtrl.bReg0_31h[g_stCtrl.bfAnalogFilter]);
969 rm31080_spi_byte_write(0x32, g_stCtrl.bReg0_32h[g_stCtrl.bfAnalogFilter]); 971 rm31080_spi_byte_write(0x32, g_stCtrl.bReg0_32h[g_stCtrl.bfAnalogFilter]);
970 rm31080_spi_byte_write(0x33, g_stCtrl.bReg0_33h[g_stCtrl.bfAnalogFilter]); 972 rm31080_spi_byte_write(0x33, g_stCtrl.bReg0_33h[g_stCtrl.bfAnalogFilter]);
971 } 973 }
972} 974}
973 975
974void rm31080_filter_config(void) 976void rm31080_filter_config(void)
975{ 977{
976#if ENABLE_FILTER_SWITCH 978#if ENABLE_FILTER_SWITCH
977#if ENABLE_T007B1_SETTING 979#if ENABLE_T007B1_SETTING
978 if (g_stCtrl.bICVersion != T007_VERSION_B) 980 if (g_stCtrl.bICVersion == T007A6)
979#endif 981#endif
980 {
981 if (g_stCtrl.bfAnalogFilter)
982 { 982 {
983#if ENABLE_NEW_NOISE_MODE 983 if (g_stCtrl.bfAnalogFilter)
984 if ((g_stCtrl.bfNoiseMode & 0x02) && g_stCtrl.bfNoiseDetector)
985 { 984 {
986 if (g_stCtrl.bfNoiseModeDetector) 985#if ENABLE_NEW_NOISE_MODE
986 if ((g_stCtrl.bfNoiseMode & 0x02) && g_stCtrl.bfNoiseDetector)
987 { 987 {
988 rm_set_repeat_times(g_stCtrl.bNewNoiseRepeatTimes); 988 if (g_stCtrl.bfNoiseModeDetector)
989 {
990 rm_set_repeat_times(g_stCtrl.bNewNoiseRepeatTimes);
991 }
992 else
993 {
994 rm_set_repeat_times(g_stCtrl.bRepeatTimes[1]);
995 }
989 } 996 }
990 else 997 else
991 {
992 rm_set_repeat_times(g_stCtrl.bRepeatTimes[1]); 998 rm_set_repeat_times(g_stCtrl.bRepeatTimes[1]);
993 }
994 }
995 else
996 rm_set_repeat_times(g_stCtrl.bRepeatTimes[1]);
997#else 999#else
998 rm31080_analog_filter_config(g_stCtrl.bRepeatTimes[1]); 1000 rm31080_analog_filter_config(g_stCtrl.bRepeatTimes[1]);
999#endif 1001#endif
1000 //rm_printk("Analog Setting with %d Repeat Times \n", (g_stCtrl.bRepeatTimes[1] + 1)); 1002 //rm_printk("Analog Setting with %d Repeat Times \n", (g_stCtrl.bRepeatTimes[1] + 1));
1001 } 1003 }
1002 else 1004 else
1003 {
1004#if ENABLE_NEW_NOISE_MODE
1005 if ((g_stCtrl.bfNoiseMode & 0x02) && g_stCtrl.bfNoiseDetector)
1006 { 1005 {
1007 if (g_stCtrl.bfNoiseModeDetector) 1006#if ENABLE_NEW_NOISE_MODE
1007 if ((g_stCtrl.bfNoiseMode & 0x02) && g_stCtrl.bfNoiseDetector)
1008 { 1008 {
1009 rm_set_repeat_times(g_stCtrl.bNewNoiseRepeatTimes); 1009 if (g_stCtrl.bfNoiseModeDetector)
1010 {
1011 rm_set_repeat_times(g_stCtrl.bNewNoiseRepeatTimes);
1012 }
1013 else
1014 {
1015 rm31080_digital_filter_config();
1016 }
1010 } 1017 }
1011 else 1018 else
1012 {
1013 rm31080_digital_filter_config();
1014 }
1015 }
1016 else
1017#endif 1019#endif
1018 rm31080_digital_filter_config(); 1020 rm31080_digital_filter_config();
1019 //rm_printk("Digital Setting with %d Repeat Times \n", (g_stCtrl.bRepeatTimes[0])); 1021 //rm_printk("Digital Setting with %d Repeat Times \n", (g_stCtrl.bRepeatTimes[0]));
1020 } 1022 }
1021 //rm_printk("Disable Analog Filter\n"); 1023 } //rm_printk("Disable Analog Filter\n");
1022#endif 1024#endif
1023} 1025}
1024 1026
@@ -1027,9 +1029,9 @@ void rm31080_filter_config(void)
1027// Description: 1029// Description:
1028// 1030//
1029// Input: 1031// Input:
1030// N/A 1032// N/A
1031// Output: 1033// Output:
1032// N/A 1034// N/A
1033//============================================================================= 1035//=============================================================================
1034void rm31080_ctrl_get_parameter(void *arg) 1036void rm31080_ctrl_get_parameter(void *arg)
1035{ 1037{
@@ -1070,7 +1072,7 @@ void rm31080_ctrl_get_parameter(void *arg)
1070 g_stCtrl.bMFBlockNumber = pPara[PARA_BASIC_LEN + PARA_HARDWARE_LEN + 26]; // Noise_Detector 1072 g_stCtrl.bMFBlockNumber = pPara[PARA_BASIC_LEN + PARA_HARDWARE_LEN + 26]; // Noise_Detector
1071 g_stCtrl.bRepeatTimes[0] = pPara[PARA_BASIC_LEN + PARA_HARDWARE_LEN + 4]; // Noise_Detector 1073 g_stCtrl.bRepeatTimes[0] = pPara[PARA_BASIC_LEN + PARA_HARDWARE_LEN + 4]; // Noise_Detector
1072 g_stCtrl.bRepeatTimes[1] = pPara[PARA_BASIC_LEN + PARA_HARDWARE_LEN + 5]; // Noise_Detector 1074 g_stCtrl.bRepeatTimes[1] = pPara[PARA_BASIC_LEN + PARA_HARDWARE_LEN + 5]; // Noise_Detector
1073 g_stCtrl.bIdleRepeatTimes[0] = pPara[PARA_BASIC_LEN + PARA_HARDWARE_LEN + 6]; 1075 g_stCtrl.bIdleRepeatTimes[0] = pPara[PARA_BASIC_LEN + PARA_HARDWARE_LEN + 6];
1074 g_stCtrl.bSenseNumber = pPara[PARA_BASIC_LEN + 11]; // Noise_Detector 1076 g_stCtrl.bSenseNumber = pPara[PARA_BASIC_LEN + 11]; // Noise_Detector
1075 g_stCtrl.bfADFC = pPara[PARA_BASIC_LEN + 4]; // Noise_Detector 1077 g_stCtrl.bfADFC = pPara[PARA_BASIC_LEN + 4]; // Noise_Detector
1076 g_stCtrl.bfTHMode = pPara[PARA_BASIC_LEN + PARA_HARDWARE_LEN + 10]; // Noise_Detector 1078 g_stCtrl.bfTHMode = pPara[PARA_BASIC_LEN + PARA_HARDWARE_LEN + 10]; // Noise_Detector
@@ -1086,6 +1088,8 @@ void rm31080_ctrl_get_parameter(void *arg)
1086 g_stCtrl.bMTTouchThreshold = pPara[192]; 1088 g_stCtrl.bMTTouchThreshold = pPara[192];
1087 g_stCtrl.bTime2Idle = pPara[194]; 1089 g_stCtrl.bTime2Idle = pPara[194];
1088 g_stCtrl.bfPowerMode= pPara[195]; 1090 g_stCtrl.bfPowerMode= pPara[195];
1091 g_stCtrl.bfIdleMessage = pPara[207];
1092 g_stCtrl.bDummyRunCycle = pPara[31];
1089 // 1093 //
1090 // Store dummy channel to skip it, data sequence: 1094 // Store dummy channel to skip it, data sequence:
1091 // Dummy[0](single end) | raw_data | dummy[1](single end) dummy[2](single end) | raw_data | dummy[3](single end) 1095 // Dummy[0](single end) | raw_data | dummy[1](single end) dummy[2](single end) | raw_data | dummy[3](single end)
@@ -1142,8 +1146,8 @@ void rm31080_ctrl_get_parameter(void *arg)
1142#if ENABLE_RESOLUTION_SWITCH 1146#if ENABLE_RESOLUTION_SWITCH
1143 g_stCtrl.u16ResolutionX = ((u16) pPara[PARA_BASIC_LEN + 13]) << 8 | ((u16)pPara[PARA_BASIC_LEN + 12]); 1147 g_stCtrl.u16ResolutionX = ((u16) pPara[PARA_BASIC_LEN + 13]) << 8 | ((u16)pPara[PARA_BASIC_LEN + 12]);
1144 g_stCtrl.u16ResolutionY = ((u16) pPara[PARA_BASIC_LEN + 15]) << 8 | ((u16)pPara[PARA_BASIC_LEN + 14]); 1148 g_stCtrl.u16ResolutionY = ((u16) pPara[PARA_BASIC_LEN + 15]) << 8 | ((u16)pPara[PARA_BASIC_LEN + 14]);
1145// printk("g_stCtrl.u16ResolutionX=%d", g_stCtrl.u16ResolutionX); 1149 //printk("===========================================================================================>g_stCtrl.u16ResolutionX=%d\n", g_stCtrl.u16ResolutionX);
1146// printk("g_stCtrl.u16ResolutionY=%d", g_stCtrl.u16ResolutionY); 1150 //printk("===========================================================================================>g_stCtrl.u16ResolutionY=%d\n", g_stCtrl.u16ResolutionY);
1147 if ((g_stCtrl.u16ResolutionX == 0) || (g_stCtrl.u16ResolutionY == 0)) { 1151 if ((g_stCtrl.u16ResolutionX == 0) || (g_stCtrl.u16ResolutionY == 0)) {
1148 g_stCtrl.u16ResolutionX = RM_INPUT_RESOLUTION_X; 1152 g_stCtrl.u16ResolutionX = RM_INPUT_RESOLUTION_X;
1149 g_stCtrl.u16ResolutionY = RM_INPUT_RESOLUTION_Y; 1153 g_stCtrl.u16ResolutionY = RM_INPUT_RESOLUTION_Y;
@@ -1152,73 +1156,73 @@ void rm31080_ctrl_get_parameter(void *arg)
1152 1156
1153#if ENABLE_FILTER_SWITCH 1157#if ENABLE_FILTER_SWITCH
1154#if ENABLE_T007B1_SETTING 1158#if ENABLE_T007B1_SETTING
1155 if (g_stCtrl.bICVersion != T007_VERSION_B) 1159 if (g_stCtrl.bICVersion == T007A6)
1156#endif 1160#endif
1157 { 1161 {
1158 g_stCtrl.bReg1_09h[0] = pPara[327]; // Addr. 0327 1162 g_stCtrl.bReg1_09h[0] = pPara[327]; // Addr. 0327
1159 g_stCtrl.bReg1_09h[1] = pPara[328]; // Addr. 0328 1163 g_stCtrl.bReg1_09h[1] = pPara[328]; // Addr. 0328
1160 g_stCtrl.bReg1_43h[0] = pPara[337]; // Addr. 0337 1164 g_stCtrl.bReg1_43h[0] = pPara[337]; // Addr. 0337
1161 g_stCtrl.bReg1_43h[1] = pPara[338]; // Addr. 0338 1165 g_stCtrl.bReg1_43h[1] = pPara[338]; // Addr. 0338
1162 g_stCtrl.bReg1_48h[0] = pPara[339]; // Addr. 0339 1166 g_stCtrl.bReg1_48h[0] = pPara[339]; // Addr. 0339
1163 g_stCtrl.bReg1_48h[1] = pPara[340]; // Addr. 0340 1167 g_stCtrl.bReg1_48h[1] = pPara[340]; // Addr. 0340
1164 g_stCtrl.bReg1_49h[0] = pPara[341]; // Addr. 0341 1168 g_stCtrl.bReg1_49h[0] = pPara[341]; // Addr. 0341
1165 g_stCtrl.bReg1_49h[1] = pPara[342]; // Addr. 0342 1169 g_stCtrl.bReg1_49h[1] = pPara[342]; // Addr. 0342
1166 g_stCtrl.bReg1_4Ah[0] = pPara[343]; // Addr. 0343 1170 g_stCtrl.bReg1_4Ah[0] = pPara[343]; // Addr. 0343
1167 g_stCtrl.bReg1_4Ah[1] = pPara[344]; // Addr. 0344 1171 g_stCtrl.bReg1_4Ah[1] = pPara[344]; // Addr. 0344
1168 g_stCtrl.bReg1_4Bh[0] = pPara[345]; // Addr. 0345 1172 g_stCtrl.bReg1_4Bh[0] = pPara[345]; // Addr. 0345
1169 g_stCtrl.bReg1_4Bh[1] = pPara[346]; // Addr. 0346 1173 g_stCtrl.bReg1_4Bh[1] = pPara[346]; // Addr. 0346
1170 1174
1171 g_stCtrl.bReg0_40h[0] = pPara[258]; 1175 g_stCtrl.bReg0_40h[0] = pPara[258];
1172 g_stCtrl.bReg0_40h[1] = pPara[259]; 1176 g_stCtrl.bReg0_40h[1] = pPara[259];
1173 g_stCtrl.bReg0_41h[0] = pPara[260]; 1177 g_stCtrl.bReg0_41h[0] = pPara[260];
1174 g_stCtrl.bReg0_41h[1] = pPara[261]; 1178 g_stCtrl.bReg0_41h[1] = pPara[261];
1175 g_stCtrl.bReg0_42h[0] = pPara[262]; // Addr. 0262 1179 g_stCtrl.bReg0_42h[0] = pPara[262]; // Addr. 0262
1176 g_stCtrl.bReg0_42h[1] = pPara[263]; // Addr. 0263 1180 g_stCtrl.bReg0_42h[1] = pPara[263]; // Addr. 0263
1177 g_stCtrl.bReg0_43h[0] = pPara[264]; // Addr. 0264 1181 g_stCtrl.bReg0_43h[0] = pPara[264]; // Addr. 0264
1178 g_stCtrl.bReg0_43h[1] = pPara[265]; // Addr. 0265 1182 g_stCtrl.bReg0_43h[1] = pPara[265]; // Addr. 0265
1179 1183
1180// time chart 1184 // time chart
1181 g_stCtrl.bReg0_20h[0] = pPara[213]; // Addr. 0213 1185 g_stCtrl.bReg0_20h[0] = pPara[213]; // Addr. 0213
1182 g_stCtrl.bReg0_20h[1] = pPara[214]; // Addr. 0214 1186 g_stCtrl.bReg0_20h[1] = pPara[214]; // Addr. 0214
1183 g_stCtrl.bReg0_21h[0] = pPara[215]; // Addr. 0215 1187 g_stCtrl.bReg0_21h[0] = pPara[215]; // Addr. 0215
1184 g_stCtrl.bReg0_21h[1] = pPara[216]; // Addr. 0216 1188 g_stCtrl.bReg0_21h[1] = pPara[216]; // Addr. 0216
1185 g_stCtrl.bReg0_22h[0] = pPara[217]; // Addr. 0217 1189 g_stCtrl.bReg0_22h[0] = pPara[217]; // Addr. 0217
1186 g_stCtrl.bReg0_22h[1] = pPara[218]; // Addr. 0218 1190 g_stCtrl.bReg0_22h[1] = pPara[218]; // Addr. 0218
1187 g_stCtrl.bReg0_23h[0] = pPara[219]; // Addr. 0219 1191 g_stCtrl.bReg0_23h[0] = pPara[219]; // Addr. 0219
1188 g_stCtrl.bReg0_23h[1] = pPara[220]; // Addr. 0220 1192 g_stCtrl.bReg0_23h[1] = pPara[220]; // Addr. 0220
1189 g_stCtrl.bReg0_24h[0] = pPara[221]; // Addr. 0221 1193 g_stCtrl.bReg0_24h[0] = pPara[221]; // Addr. 0221
1190 g_stCtrl.bReg0_24h[1] = pPara[222]; // Addr. 0222 1194 g_stCtrl.bReg0_24h[1] = pPara[222]; // Addr. 0222
1191 g_stCtrl.bReg0_25h[0] = pPara[223]; // Addr. 0223 1195 g_stCtrl.bReg0_25h[0] = pPara[223]; // Addr. 0223
1192 g_stCtrl.bReg0_25h[1] = pPara[224]; // Addr. 0224 1196 g_stCtrl.bReg0_25h[1] = pPara[224]; // Addr. 0224
1193 g_stCtrl.bReg0_26h[0] = pPara[225]; // Addr. 0225 1197 g_stCtrl.bReg0_26h[0] = pPara[225]; // Addr. 0225
1194 g_stCtrl.bReg0_26h[1] = pPara[226]; // Addr. 0226 1198 g_stCtrl.bReg0_26h[1] = pPara[226]; // Addr. 0226
1195 g_stCtrl.bReg0_27h[0] = pPara[227]; // Addr. 0227 1199 g_stCtrl.bReg0_27h[0] = pPara[227]; // Addr. 0227
1196 g_stCtrl.bReg0_27h[1] = pPara[228]; // Addr. 0228 1200 g_stCtrl.bReg0_27h[1] = pPara[228]; // Addr. 0228
1197 g_stCtrl.bReg0_28h[0] = pPara[229]; // Addr. 0229 1201 g_stCtrl.bReg0_28h[0] = pPara[229]; // Addr. 0229
1198 g_stCtrl.bReg0_28h[1] = pPara[230]; // Addr. 0230 1202 g_stCtrl.bReg0_28h[1] = pPara[230]; // Addr. 0230
1199 g_stCtrl.bReg0_29h[0] = pPara[231]; // Addr. 0231 1203 g_stCtrl.bReg0_29h[0] = pPara[231]; // Addr. 0231
1200 g_stCtrl.bReg0_29h[1] = pPara[232]; // Addr. 0232 1204 g_stCtrl.bReg0_29h[1] = pPara[232]; // Addr. 0232
1201 g_stCtrl.bReg0_2Ah[0] = pPara[233]; // Addr. 0233 1205 g_stCtrl.bReg0_2Ah[0] = pPara[233]; // Addr. 0233
1202 g_stCtrl.bReg0_2Ah[1] = pPara[234]; // Addr. 0234 1206 g_stCtrl.bReg0_2Ah[1] = pPara[234]; // Addr. 0234
1203 g_stCtrl.bReg0_2Bh[0] = pPara[235]; // Addr. 0235 1207 g_stCtrl.bReg0_2Bh[0] = pPara[235]; // Addr. 0235
1204 g_stCtrl.bReg0_2Bh[1] = pPara[236]; // Addr. 0236 1208 g_stCtrl.bReg0_2Bh[1] = pPara[236]; // Addr. 0236
1205 g_stCtrl.bReg0_2Ch[0] = pPara[237]; // Addr. 0237 1209 g_stCtrl.bReg0_2Ch[0] = pPara[237]; // Addr. 0237
1206 g_stCtrl.bReg0_2Ch[1] = pPara[238]; // Addr. 0238 1210 g_stCtrl.bReg0_2Ch[1] = pPara[238]; // Addr. 0238
1207 g_stCtrl.bReg0_2Dh[0] = pPara[239]; // Addr. 0239 1211 g_stCtrl.bReg0_2Dh[0] = pPara[239]; // Addr. 0239
1208 g_stCtrl.bReg0_2Dh[1] = pPara[240]; // Addr. 0240 1212 g_stCtrl.bReg0_2Dh[1] = pPara[240]; // Addr. 0240
1209 g_stCtrl.bReg0_2Eh[0] = pPara[241]; // Addr. 0241 1213 g_stCtrl.bReg0_2Eh[0] = pPara[241]; // Addr. 0241
1210 g_stCtrl.bReg0_2Eh[1] = pPara[242]; // Addr. 0242 1214 g_stCtrl.bReg0_2Eh[1] = pPara[242]; // Addr. 0242
1211 g_stCtrl.bReg0_2Fh[0] = pPara[243]; // Addr. 0243 1215 g_stCtrl.bReg0_2Fh[0] = pPara[243]; // Addr. 0243
1212 g_stCtrl.bReg0_2Fh[1] = pPara[244]; // Addr. 0244 1216 g_stCtrl.bReg0_2Fh[1] = pPara[244]; // Addr. 0244
1213 g_stCtrl.bReg0_30h[0] = pPara[245]; // Addr. 0245 1217 g_stCtrl.bReg0_30h[0] = pPara[245]; // Addr. 0245
1214 g_stCtrl.bReg0_30h[1] = pPara[246]; // Addr. 0246 1218 g_stCtrl.bReg0_30h[1] = pPara[246]; // Addr. 0246
1215 g_stCtrl.bReg0_31h[0] = pPara[247]; // Addr. 0247 1219 g_stCtrl.bReg0_31h[0] = pPara[247]; // Addr. 0247
1216 g_stCtrl.bReg0_31h[1] = pPara[248]; // Addr. 0248 1220 g_stCtrl.bReg0_31h[1] = pPara[248]; // Addr. 0248
1217 g_stCtrl.bReg0_32h[0] = pPara[249]; // Addr. 0249 1221 g_stCtrl.bReg0_32h[0] = pPara[249]; // Addr. 0249
1218 g_stCtrl.bReg0_32h[1] = pPara[250]; // Addr. 0250 1222 g_stCtrl.bReg0_32h[1] = pPara[250]; // Addr. 0250
1219 g_stCtrl.bReg0_33h[0] = pPara[251]; // Addr. 0251 1223 g_stCtrl.bReg0_33h[0] = pPara[251]; // Addr. 0251
1220 g_stCtrl.bReg0_33h[1] = pPara[252]; // Addr. 0252 1224 g_stCtrl.bReg0_33h[1] = pPara[252]; // Addr. 0252
1221 } 1225 }
1222#endif 1226#endif
1223} 1227}
1224 1228