From: yanfei Date: Tue, 6 Nov 2018 07:12:27 +0000 (+0800) Subject: (CR):[kane]:[kernel]: modify for capsensor Channel X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=13f72daa941337cf5a881622d871c1ed33f76670;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git (CR):[kane]:[kernel]: modify for capsensor Channel Modify for capsensor Channel Change-Id: Ide02383e7694e9373af6f8e3b422244eb16c2903 Signed-off-by: yanfei --- diff --git a/arch/arm64/boot/dts/exynos/wing-sensor.dtsi b/arch/arm64/boot/dts/exynos/wing-sensor.dtsi index 0ca6cf9f0482..27b4bfc06f1a 100755 --- a/arch/arm64/boot/dts/exynos/wing-sensor.dtsi +++ b/arch/arm64/boot/dts/exynos/wing-sensor.dtsi @@ -27,31 +27,9 @@ Semtech,nirq-gpio = <&gpa2 6 0>; /* IRQ */ pinctrl-names = "default"; pinctrl-0 = <&cap_int_status>; - Semtech,button-flag = <0x15>; - Semtech,reg-num = <23>; - Semtech,reg-init = <0x8020 0x1F0000 - 0x8024 0x300008d7 /*again 6.6pf*/ - 0x8028 0x24928000 - 0x802C 0x300010d7 - 0x8030 0x24960000 - 0x8034 0x300010d7 - 0x8038 0x24B20000 - 0x803C 0x300004D4 - 0x8040 0x25920000 - 0x8044 0x300004D4 - 0x8048 0x2C920000 - 0x8054 0x02103010 /*ph0*/ - 0x8058 0x20600C00 - 0x805c 0x0 - 0x8064 0x00900000 /*5mm th*/ - 0x8070 0x0 - 0x8074 0x02103110 /*ph1*/ - 0x8084 0x00BB0000 /*5mm th*/ - 0x8094 0x02103810 /*ph2*/ - 0x80A4 0x00C60000 /*5mm th*/ - 0x80B4 0x0010FF00 - 0x80D4 0x00105A00 - 0x4004 0x67 >; + Semtech,button-flag = <0x0b>; + Semtech,reg-num = <1>; + Semtech,reg-init = < 0x4004 0x7C >; }; diff --git a/drivers/input/misc/sx933x.h b/drivers/input/misc/sx933x.h index 750e818c6ea2..be30c21a0b0f 100755 --- a/drivers/input/misc/sx933x.h +++ b/drivers/input/misc/sx933x.h @@ -247,19 +247,19 @@ #define SX933X_STAT0_BODYSTAT_PH0_FLAG 0x00000100 /* Chip ID */ -#define SX933X_WHOAMI_VALUE 0x00003114 +#define SX933X_WHOAMI_VALUE 0x00003113 +#define SX933X_WHOAMI_VALUE_ALL 0x00003100 + /*command*/ #define SX933X_PHASE_CONTROL 0x0000000F #define SX933X_COMPENSATION_CONTROL 0x0000000E #define SX933X_ENTER_CONTROL 0x0000000D #define SX933X_EXIT_CONTROL 0x0000000C - #define SX933X_HARDWARE_CHECK_SUCCESS 1 #define SX933X_HARDWARE_CHECK_FAIL 0 - /************************************** * define platform data * @@ -307,345 +307,434 @@ typedef struct totalButtonInformation *pbuttonInformation_t; * default */ /*define the value without Phase enable settings for easy changes in driver*/ +#if 0 static const struct smtc_reg_data sx933x_i2c_reg_setup[] = { - // + //ocean disable clock spreading { - .reg = SX933X_AFECTRL_REG, + .reg = SX933X_AFECTRL_REG, //0x4054 .val = 0x00000400, }, // { - .reg = SX933X_CLKGEN_REG, + .reg = SX933X_CLKGEN_REG, //0x4200 .val = 0x00000008, }, // { - .reg = SX933X_PINCFG_REG, + .reg = SX933X_PINCFG_REG, //0x42C0 .val = 0x08000000, }, { - .reg = SX933X_PINDOUT_REG, + .reg = SX933X_PINDOUT_REG, //0x42C4 .val = 0x0000003F, }, // { - .reg = SX933X_IRQCFG0_REG, + .reg = SX933X_IRQCFG0_REG, //0x800C .val = 0x00000000, }, { - .reg = SX933X_IRQCFG1_REG, + .reg = SX933X_IRQCFG1_REG, //0x8010 .val = 0x00000000, }, { - .reg = SX933X_IRQCFG2_REG, + .reg = SX933X_IRQCFG2_REG, //0x8014 .val = 0x00000000, }, { - .reg = SX933X_IRQCFG3_REG, + .reg = SX933X_IRQCFG3_REG, //0x8018 .val = 0x00000000, }, // { - .reg = SX933X_SCANPERIOD_REG, + .reg = SX933X_SCANPERIOD_REG, //0x801C .val = 0x00000032, }, { - .reg = SX933X_GNRLCTRL2_REG, + .reg = SX933X_GNRLCTRL2_REG, //0x8020 .val = 0x3F001F, //enable phase0~phase4 0x00FF0001, }, { - .reg = SX933X_AFEPARAMSPH0_REG, - .val = 0x00010001, + .reg = SX933X_AFEPARAMSPH0_REG, //0x8024 + .val = 0x300008d7, }, { - .reg = SX933X_AFEPHPH0_REG, + .reg = SX933X_AFEPHPH0_REG, //0x8028 .val = 0x00A00BE3, }, { - .reg = SX933X_AFEPARAMSPH1_REG, + .reg = SX933X_AFEPARAMSPH1_REG, //0x802C .val = 0x300004D4, }, { - .reg = SX933X_AFEPHPH1_REG, + .reg = SX933X_AFEPHPH1_REG, //0x8030 .val = 0x00, }, { - .reg = SX933X_AFEPARAMSPH2_REG, + .reg = SX933X_AFEPARAMSPH2_REG, //0x8034 .val = 0x300004D4,//0x44F,//AFE setting for phase2 3.85pf }, { - .reg = SX933X_AFEPHPH2_REG, + .reg = SX933X_AFEPHPH2_REG, //0x8038 .val = 0x00,//Configure for phase2 }, { - .reg = SX933X_AFEPARAMSPH3_REG, + .reg = SX933X_AFEPARAMSPH3_REG, //0x803C .val = 0x300004D4,//0x44F,//AFE setting for phase3 3.3pf }, { - .reg = SX933X_AFEPHPH3_REG, + .reg = SX933X_AFEPHPH3_REG, //0x8040 .val = 0x00,//Configure for phase3 }, { - .reg = SX933X_AFEPARAMSPH4_REG, + .reg = SX933X_AFEPARAMSPH4_REG, //0x8044 .val = 0x300004D4,//0x44F,//AFE setting for phase4 9.9pf }, { - .reg = SX933X_AFEPHPH4_REG, + .reg = SX933X_AFEPHPH4_REG, //0x8048 .val = 0x00,//Configure for phase4 }, { - .reg = SX933X_AFEPARAMSPH5_REG, + .reg = SX933X_AFEPARAMSPH5_REG, //0x804c .val = 0x300004D4, }, { - .reg = SX933X_AFEPHPH5_REG, + .reg = SX933X_AFEPHPH5_REG, //0x8050 .val = 0x00000000, }, { - .reg = SX933X_ADCFILTPH0_REG, + .reg = SX933X_ADCFILTPH0_REG, //0x8054 .val = 0x10162000, }, { - .reg = SX933X_AVGBFILTPH0_REG, + .reg = SX933X_AVGBFILTPH0_REG, //0x8058 .val = 0x20400017, }, { - .reg = SX933X_AVGAFILTPH0_REG, + .reg = SX933X_AVGAFILTPH0_REG, //0x805C .val = 0x31CF9110, }, { - .reg = SX933X_ADVDIG0PH0_REG, + .reg = SX933X_ADVDIG0PH0_REG, //0x8060 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG1PH0_REG, + .reg = SX933X_ADVDIG1PH0_REG, //0x8064 .val = 0x00, }, { - .reg = SX933X_ADVDIG2PH0_REG, + .reg = SX933X_ADVDIG2PH0_REG, //0x8068 .val = 0x00, }, { - .reg = SX933X_ADVDIG3PH0_REG , + .reg = SX933X_ADVDIG3PH0_REG , //0x806C .val = 0x00000000, }, { - .reg = SX933X_ADVDIG4PH0_REG, + .reg = SX933X_ADVDIG4PH0_REG, //0x8070 .val = 0x10000, }, { - .reg = SX933X_ADCFILTPH1_REG, + .reg = SX933X_ADCFILTPH1_REG, //0x8074 .val = 0x100000, }, { - .reg = SX933X_AVGBFILTPH1_REG, + .reg = SX933X_AVGBFILTPH1_REG, //0x8078 .val = 0x20600C00, }, { - .reg = SX933X_AVGAFILTPH1_REG, + .reg = SX933X_AVGAFILTPH1_REG, //0x807C .val = 0x00000000, }, { - .reg = SX933X_ADVDIG0PH1_REG, + .reg = SX933X_ADVDIG0PH1_REG, //0x8080 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG1PH1_REG, + .reg = SX933X_ADVDIG1PH1_REG, //0x8084 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG2PH1_REG, + .reg = SX933X_ADVDIG2PH1_REG, //0x8088 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG3PH1_REG , + .reg = SX933X_ADVDIG3PH1_REG , //0x808C .val = 0x00000000, }, { - .reg = SX933X_ADVDIG4PH1_REG, + .reg = SX933X_ADVDIG4PH1_REG, //0x8090 .val = 0x00000000, }, { - .reg = SX933X_ADCFILTPH2_REG, + .reg = SX933X_ADCFILTPH2_REG, //0x8094 .val = 0x100000, }, { - .reg = SX933X_AVGBFILTPH2_REG, + .reg = SX933X_AVGBFILTPH2_REG, //0x8098 .val = 0x20600C00, }, { - .reg = SX933X_AVGAFILTPH2_REG, + .reg = SX933X_AVGAFILTPH2_REG, //0x809C .val = 0x00000000, }, { - .reg = SX933X_ADVDIG0PH2_REG, + .reg = SX933X_ADVDIG0PH2_REG, //0x80A0 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG1PH2_REG, + .reg = SX933X_ADVDIG1PH2_REG, //0x80A4 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG2PH2_REG, + .reg = SX933X_ADVDIG2PH2_REG, //0x80A8 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG3PH2_REG , + .reg = SX933X_ADVDIG3PH2_REG , //0x80AC .val = 0x00000000, }, { - .reg = SX933X_ADVDIG4PH2_REG, + .reg = SX933X_ADVDIG4PH2_REG, //0x80B0 .val = 0x00000000, }, { - .reg = SX933X_ADCFILTPH3_REG, + .reg = SX933X_ADCFILTPH3_REG, //0x80B4 .val = 0x100000, }, { - .reg = SX933X_AVGBFILTPH3_REG, + .reg = SX933X_AVGBFILTPH3_REG, //0x80B8 .val = 0x20600C00, }, { - .reg = SX933X_AVGAFILTPH3_REG, + .reg = SX933X_AVGAFILTPH3_REG, //0x80BC .val = 0x00000000, }, { - .reg = SX933X_ADVDIG0PH3_REG, + .reg = SX933X_ADVDIG0PH3_REG, //0x80C0 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG1PH3_REG, + .reg = SX933X_ADVDIG1PH3_REG, //0x80C4 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG2PH3_REG, + .reg = SX933X_ADVDIG2PH3_REG, //0x80C8 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG3PH3_REG , + .reg = SX933X_ADVDIG3PH3_REG , //0x80CC .val = 0x00000000, }, { - .reg = SX933X_ADVDIG4PH3_REG, + .reg = SX933X_ADVDIG4PH3_REG, //0x80D0 .val = 0x00000000, }, { - .reg = SX933X_ADCFILTPH4_REG, + .reg = SX933X_ADCFILTPH4_REG, //0x80D4 .val = 0x100000, }, { - .reg = SX933X_AVGBFILTPH4_REG, + .reg = SX933X_AVGBFILTPH4_REG, //0x80D8 .val = 0x20600C00, }, { - .reg = SX933X_AVGAFILTPH4_REG, + .reg = SX933X_AVGAFILTPH4_REG, //0x80DC .val = 0x00000000, }, { - .reg = SX933X_ADVDIG0PH4_REG, + .reg = SX933X_ADVDIG0PH4_REG, //0x80E0 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG1PH4_REG, + .reg = SX933X_ADVDIG1PH4_REG, //0x80E4 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG2PH4_REG, + .reg = SX933X_ADVDIG2PH4_REG, //0x80E8 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG3PH4_REG , + .reg = SX933X_ADVDIG3PH4_REG , //0x80EC .val = 0x00000000, }, { - .reg = SX933X_ADVDIG4PH4_REG, + .reg = SX933X_ADVDIG4PH4_REG, //0x80F0 .val = 0x00000000, }, { - .reg = SX933X_ADCFILTPH5_REG, + .reg = SX933X_ADCFILTPH5_REG, //0x80F4 .val = 0x100000, }, { - .reg = SX933X_AVGBFILTPH5_REG, + .reg = SX933X_AVGBFILTPH5_REG, //0x80F8 .val = 0x20600C00, }, { - .reg = SX933X_AVGAFILTPH5_REG, + .reg = SX933X_AVGAFILTPH5_REG, //0x80FC .val = 0x00000000, }, { - .reg = SX933X_ADVDIG0PH5_REG, + .reg = SX933X_ADVDIG0PH5_REG, //0x8100 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG1PH5_REG, + .reg = SX933X_ADVDIG1PH5_REG, //0x8104 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG2PH5_REG, + .reg = SX933X_ADVDIG2PH5_REG, //0x8108 .val = 0x00000000, }, { - .reg = SX933X_ADVDIG3PH5_REG , + .reg = SX933X_ADVDIG3PH5_REG , //0x810C .val = 0x00000000, }, { - .reg = SX933X_ADVDIG4PH5_REG, + .reg = SX933X_ADVDIG4PH5_REG, //0x8110 .val = 0x00000000, }, { - .reg = SX933X_REFCORRA_REG, + .reg = SX933X_REFCORRA_REG, //0x8124 .val = 0x7B13B10, }, { - .reg = SX933X_REFCORRB_REG, + .reg = SX933X_REFCORRB_REG, //0x8128 .val = 0x4000000, }, { - .reg = SX933X_SMARTSAR0A_REG, + .reg = SX933X_SMARTSAR0A_REG, //0x812C .val = 0x00000000, }, { - .reg = SX933X_SMARTSAR1A_REG, + .reg = SX933X_SMARTSAR1A_REG, //0x8130 .val = 0x00000000, }, { - .reg = SX933X_SMARTSAR2A_REG, + .reg = SX933X_SMARTSAR2A_REG, //0x8134 .val = 0x00000000, }, { - .reg = SX933X_SMARTSAR0B_REG, + .reg = SX933X_SMARTSAR0B_REG, //0x8138 .val = 0x00000000, }, { - .reg = SX933X_SMARTSAR1B_REG, + .reg = SX933X_SMARTSAR1B_REG, //0x813C .val = 0x00000000, }, { - .reg = SX933X_SMARTSAR2B_REG, + .reg = SX933X_SMARTSAR2B_REG, //0x8140 .val = 0x00000000, }, // { - .reg = SX933X_AUTOFREQ0_REG, + .reg = SX933X_AUTOFREQ0_REG, //0x8154 .val = 0x00000000, }, { - .reg = SX933X_AUTOFREQ1_REG, + .reg = SX933X_AUTOFREQ1_REG, //0x8158 .val = 0x00000000, }, // { - .reg = SX933X_HOSTIRQMSK_REG, + .reg = SX933X_HOSTIRQMSK_REG, //0x4004 .val = 0x00000078, }, { - .reg = SX933X_HOSTIRQCTRL_REG, + .reg = SX933X_HOSTIRQCTRL_REG, //0x4008 .val = 0x00, } }; +#else +static const struct smtc_reg_data sx933x_i2c_reg_setup[] = +{ + {0x4004,0x7C}, + {0x4008,0x00}, + {0x4054,0x400}, + {0x42C0,0x8000000}, + {0x42C4,0x3F}, + {0x800C,0x00}, + {0x8010,0x00}, + {0x8014,0x00}, + {0x8018,0x00}, + {0x801C,0x31}, + {0x8020,0x1F001F}, + {0x8024,0x100088F}, + {0x8028,0x3FFE86DE}, + {0x802C,0x100088F}, + {0x8030,0x3FF782CF}, + {0x8034,0x100088F}, + {0x8038,0x3FBF82E9}, + {0x803C,0x100088F}, + {0x8040,0x3DFF82C8}, + {0x8044,0x100088F}, + {0x8048,0x2FFF82D1}, + {0x804C,0x88E}, + {0x8050,0x80001EE6}, + {0x8054,0x10162815}, + {0x8058,0x60600C31}, + {0x805C,0x54AC4300}, + {0x8060,0x00}, + {0x8064,0x00}, + {0x8068,0x00}, + {0x806C,0x00}, + {0x8070,0x00}, + {0x8074,0x10162815}, + {0x8078,0x60600C31}, + {0x807C,0x54AC4300}, + {0x8080,0x00}, + {0x8084,0x00}, + {0x8088,0x00}, + {0x808C,0x00}, + {0x8090,0x00}, + {0x8094,0x10166400}, + {0x8098,0x60400031}, + {0x809C,0x54AC4300}, + {0x80A0,0x00}, + {0x80A4,0x00}, + {0x80A8,0x00}, + {0x80AC,0x00}, + {0x80B0,0x00}, + {0x80B4,0x10125F15}, + {0x80B8,0x60600B31}, + {0x80BC,0x54AC4300}, + {0x80C0,0x00}, + {0x80C4,0x00}, + {0x80C8,0x00}, + {0x80CC,0x00}, + {0x80D0,0x00}, + {0x80D4,0x10166400}, + {0x80D8,0x60400031}, + {0x80DC,0x54AC4300}, + {0x80E0,0x00}, + {0x80E4,0x00}, + {0x80E8,0x00}, + {0x80EC,0x00}, + {0x80F0,0x00}, + {0x80F4,0x10162800}, + {0x80F8,0x20400031}, + {0x80FC,0x54AC5300}, + {0x8100,0x00}, + {0x8104,0x00}, + {0x8108,0x00}, + {0x810C,0x00}, + {0x8110,0x00}, + {0x8124,0x400000A}, + {0x8128,0x400000C}, + {0x812C,0x00}, + {0x8130,0x00}, + {0x8134,0x00}, + {0x8138,0x00}, + {0x813C,0x00}, + {0x8140,0x00}, + {0x8144,0x00}, + {0x8148,0x00}, + {0x814C,0x00}, + {0x81A4,0x1C40019}, +}; +#endif static struct _buttonInfo psmtcButtons[] = { { diff --git a/drivers/input/misc/sx933x_sar.c b/drivers/input/misc/sx933x_sar.c index 7a3b112915e0..e28eeab7fa30 100755 --- a/drivers/input/misc/sx933x_sar.c +++ b/drivers/input/misc/sx933x_sar.c @@ -54,6 +54,7 @@ #define MAIN_SENSOR 1 //CS1 /* Failer Index */ +#define SX933x_ID_SUCCESS 0 #define SX933x_ID_ERROR 1 #define SX933x_NIRQ_ERROR 2 #define SX933x_CONN_ERROR 3 @@ -208,7 +209,7 @@ static int sx933x_Hardware_Check(psx93XX_t this) this->failStatusCode = SX933x_I2C_ERROR; } - if(idCode!= SX933X_WHOAMI_VALUE) + if((idCode&0x00003100) != SX933X_WHOAMI_VALUE_ALL) { this->failStatusCode = SX933x_ID_ERROR; } @@ -301,7 +302,6 @@ static ssize_t manual_offset_calibration_store(struct device *dev, return count; } - /****************************************************************************/ static ssize_t sx933x_register_write_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) @@ -316,7 +316,6 @@ static ssize_t sx933x_register_write_store(struct device *dev, } sx933x_i2c_write_16bit(this, reg_address, val); - LOG_DBG("%s - Register(0x%x) data(0x%x)\n",__func__, reg_address, val); return count; } @@ -341,6 +340,52 @@ static ssize_t sx933x_register_read_store(struct device *dev, LOG_DBG("%s - Register(0x%2x) data(0x%4x) nirq_state(%d)\n",__func__, regist, val, nirq_state); return count; } +static void read_dbg_raw(psx93XX_t this) +{ + u32 uData; + s32 ref_raw, ant_raw; + + sx933x_i2c_read_16bit(this, 0x81A4, &uData); + + //MANT_MLB + uData &= ~(0x7 << 3); //PH0 + sx933x_i2c_write_16bit(this, 0x81A4, uData); + sx933x_i2c_read_16bit(this, 0x81B0, &uData); + ant_raw = (s32)uData>>10; + + //MANT_REF + uData &= ~(0x7 << 3); + uData |= 4 << 3; //PH4 + sx933x_i2c_write_16bit(this, 0x81A4, uData); + sx933x_i2c_read_16bit(this, 0x81B0, &uData); + ref_raw = (s32)uData>>10; + LOG_DBG("MANT_MLB = %d REF = %d \n", ant_raw, ref_raw); + + //MANT__HB + uData &= ~(0x7 << 3); + uData |= 1 << 3; //PH1 + sx933x_i2c_write_16bit(this, 0x81A4, uData); + sx933x_i2c_read_16bit(this, 0x81B0, &uData); + ant_raw = (s32)uData>>10; + LOG_DBG("MANT__HB = %d REF = %d \n", ant_raw, ref_raw); + + //DIV_ANT + uData &= ~(0x7 << 3); + uData |= 3 << 3; //PH3 + sx933x_i2c_write_16bit(this, 0x81A4, uData); + sx933x_i2c_read_16bit(this, 0x81B0, &uData); + ant_raw = (s32)uData>>10; + + //DIV_REF + uData &= ~(0x7 << 3); + uData |= 2 << 3; //PH2 + sx933x_i2c_write_16bit(this, 0x81A4, uData); + sx933x_i2c_read_16bit(this, 0x81B0, &uData); + ref_raw = (s32)uData>>10; + + LOG_DBG("DIV_ANT = %d DIV_REF = %d \n", ant_raw, ref_raw); + +} static void read_rawData(psx93XX_t this) { @@ -350,7 +395,7 @@ static void read_rawData(psx93XX_t this) s32 diff; u32 uData; u16 offset; - //s32 state = 0; + s32 state = 0; if(this) { @@ -365,13 +410,30 @@ static void read_rawData(psx93XX_t this) diff = (s32)uData>>10; sx933x_i2c_read_16bit(this, SX933X_OFFSETPH0_REG + index*2, &uData); offset = (u16)(uData & 0x7FFF); - //state = psmtcButtons[csx].state; - LOG_DBG("[PH: %d] Useful = %d Average = %d, DIFF = %d Offset = %d \n", - csx,useful,average,diff,offset); + state = psmtcButtons[csx].state; + LOG_DBG("[PH: %d] Useful = %d Average = %d, DIFF = %d Offset = %d state = %d \n", + csx,useful,average,diff,offset, state); } } -} + read_dbg_raw(this); +} +static ssize_t sx933x_all_reg_data_show(struct device *dev, struct device_attribute *attr, char *buf) +{ + u32 val=0; + u16 regist = 0; + char *p = buf; + int i; + psx93XX_t this = dev_get_drvdata(dev); + for (i = 0; i < ARRAY_SIZE(sx933x_i2c_reg_setup); i++) + { + regist = (u16)(sx933x_i2c_reg_setup[i].reg); + sx933x_i2c_read_16bit(this, regist, &val); + p += snprintf(p, PAGE_SIZE, "reg=(0x%04x) value=0x%04x\n", + regist,val); + } + return (p-buf); +} static ssize_t sx933x_raw_data_show(struct device *dev, struct device_attribute *attr, char *buf) { char *p = buf; @@ -390,7 +452,7 @@ static ssize_t sx933x_raw_data_show(struct device *dev, struct device_attribute diff = (s32)uData>>10; sx933x_i2c_read_16bit(this, SX933X_OFFSETPH0_REG + csx*8, &uData); offset = (u16)(uData & 0x7FFF); - p += snprintf(p, PAGE_SIZE, "[PH: %d] Useful = %d, Average = %d, DIFF = %d Offset = %d \n", + p += snprintf(p, PAGE_SIZE, "[PH: %d] Useful = %d, Average = %d, DIFF = %d Offset = %d\n", csx,useful,average,diff,offset); } } @@ -418,7 +480,7 @@ static ssize_t sx933x_hardware_id_show(struct device *dev, struct device_attribu int ret; u32 idCode; u8 loop = 0; - int result = 0; + int result = 1; psx93XX_t this = dev_get_drvdata(dev); this->failStatusCode = 0; @@ -441,9 +503,9 @@ static ssize_t sx933x_hardware_id_show(struct device *dev, struct device_attribu result = SX933x_I2C_ERROR; } - if(idCode!= SX933X_WHOAMI_VALUE) + if((idCode&0x00003100)== SX933X_WHOAMI_VALUE_ALL) { - result = SX933x_ID_ERROR; + result = SX933x_ID_SUCCESS; } if(result == 0) result = SX933X_HARDWARE_CHECK_SUCCESS; @@ -458,6 +520,7 @@ static DEVICE_ATTR(register_read,0664, NULL,sx933x_register_read_store); static DEVICE_ATTR(raw_data,0664,sx933x_raw_data_show,NULL); static DEVICE_ATTR(diff_data,0664,sx933x_diff_data_show,NULL); static DEVICE_ATTR(hardware_id,0664,sx933x_hardware_id_show,NULL); +static DEVICE_ATTR(all_reg_value,0664,sx933x_all_reg_data_show,NULL); static struct attribute *sx933x_attributes[] = { @@ -468,6 +531,7 @@ static struct attribute *sx933x_attributes[] = &dev_attr_raw_data.attr, &dev_attr_diff_data.attr, &dev_attr_hardware_id.attr, + &dev_attr_all_reg_value.attr, NULL, }; static struct attribute_group sx933x_attr_group = @@ -638,7 +702,9 @@ static void touchProcess(psx93XX_t this) } } else if (touchFlag == pCurrentButton->ProxMask) { if (pCurrentButton->state == PROXACTIVE) + { LOG_DBG(" %s already PROXACTIVE\n", pCurrentButton->name); + } else { input_report_abs(input, ABS_DISTANCE, 1); input_sync(input); @@ -773,7 +839,6 @@ static int capsensor_set_enable(struct sensors_classdev *sensors_cdev, bool disableFlag = true; int i = 0; u32 temp = 0x0; - for (i = 0; i < ARRAY_SIZE(psmtcButtons); i++) { if (strcmp(sensors_cdev->name, psmtcButtons[i].name) == 0) { if (enable == 1) {