mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-12 07:37:31 -04:00
[capsensor] add debug info for read_rawdata
venor provide a new driver for adding some debug messages on read_rawdata(). cmd: adb shell "logcat -b kernel | grep SMTC_D" Change-Id: I0e0ebc09d48b1d34d40d581f9a3cdf43dcd7cf97 Signed-off-by: zhangh12 <zhangh12@motorola.com> Reviewed-on: https://gerrit.mot.com/1773854 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Wen Xie <xiewen3@motorola.com> Reviewed-by: Xiangpo Zhao <zhaoxp3@motorola.com> Submit-Approved: Jira Key Reviewed-by: Jiyue Cui <cuijy2@lenovo.com>
This commit is contained in:
parent
650168f62c
commit
e222b9be7f
2 changed files with 181 additions and 11 deletions
|
|
@ -245,22 +245,158 @@ static int manual_offset_calibration(psx93XX_t this)
|
|||
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/*! \brief sysfs show function for manual calibration which currently just
|
||||
* returns register value.
|
||||
*/
|
||||
static void read_dbg_raw(psx93XX_t this)
|
||||
{
|
||||
int ph, state;
|
||||
u32 uData, ph_sel;
|
||||
s32 ant_use, ant_raw;
|
||||
s32 avg, diff;
|
||||
u16 off;
|
||||
s32 adc_min, adc_max, use_flt_dlt_var;
|
||||
s32 ref_a_use=0, ref_b_use=0;
|
||||
int ref_ph_a, ref_ph_b;
|
||||
|
||||
psx933x_t pDevice = NULL;
|
||||
psx933x_platform_data_t pdata = NULL;
|
||||
|
||||
pDevice = this->pDevice;
|
||||
pdata = pDevice->hw;
|
||||
ref_ph_a = pdata->ref_phase_a;
|
||||
ref_ph_b = pdata->ref_phase_b;
|
||||
LOG_DBG("[SX933x] ref_ph_a= %d ref_ph_b= %d\n", ref_ph_a, ref_ph_b);
|
||||
|
||||
sx933x_i2c_read_16bit(this, SX933X_STAT0_REG, &uData);
|
||||
LOG_DBG("SX933X_STAT0_REG= 0x%X\n", uData);
|
||||
|
||||
if(ref_ph_a != 0xFF)
|
||||
{
|
||||
sx933x_i2c_read_16bit(this, SX933X_USEPH0_REG + ref_ph_a*4, &uData);
|
||||
ref_a_use = (s32)uData >> 10;
|
||||
}
|
||||
if(ref_ph_b != 0xFF)
|
||||
{
|
||||
sx933x_i2c_read_16bit(this, SX933X_USEPH0_REG + ref_ph_b*4, &uData);
|
||||
ref_b_use = (s32)uData >> 10;
|
||||
}
|
||||
|
||||
sx933x_i2c_read_16bit(this, SX933X_REG_DBG_PHASE_SEL, &ph_sel);
|
||||
|
||||
sx933x_i2c_read_16bit(this, SX933X_REG_PROX_ADC_MIN, &uData);
|
||||
adc_min = (s32)uData>>10;
|
||||
sx933x_i2c_read_16bit(this, SX933X_REG_PROX_ADC_MAX, &uData);
|
||||
adc_max = (s32)uData>>10;
|
||||
sx933x_i2c_read_16bit(this, SX933X_REG_PROX_RAW, &uData);
|
||||
ant_raw = (s32)uData>>10;
|
||||
sx933x_i2c_read_16bit(this, SX933X_REG_DLT_VAR, &uData);
|
||||
use_flt_dlt_var = (s32)uData>>3;
|
||||
|
||||
if (((ph_sel >> 3) & 0x7) == 0)
|
||||
{
|
||||
sx933x_i2c_read_16bit(this, SX933X_USEPH0_REG, &uData);
|
||||
ant_use = (s32)uData>>10;
|
||||
ph = 0;
|
||||
}
|
||||
else if (((ph_sel >> 3) & 0x7) == 1)
|
||||
{
|
||||
sx933x_i2c_read_16bit(this, SX933X_USEPH1_REG, &uData);
|
||||
ant_use = (s32)uData>>10;
|
||||
ph = 1;
|
||||
}
|
||||
else if (((ph_sel >> 3) & 0x7) == 2)
|
||||
{
|
||||
sx933x_i2c_read_16bit(this, SX933X_USEPH2_REG, &uData);
|
||||
ant_use = (s32)uData>>10;
|
||||
ph = 2;
|
||||
}
|
||||
else if (((ph_sel >> 3) & 0x7) == 3)
|
||||
{
|
||||
sx933x_i2c_read_16bit(this, SX933X_USEPH3_REG, &uData);
|
||||
ant_use = (s32)uData>>10;
|
||||
ph = 3;
|
||||
}
|
||||
else if (((ph_sel >> 3) & 0x7) == 4)
|
||||
{
|
||||
sx933x_i2c_read_16bit(this, SX933X_USEPH4_REG, &uData);
|
||||
ant_use = (s32)uData>>10;
|
||||
ph = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_DBG("read_dbg_raw(): invalid reg_val= 0x%X\n", ph_sel);
|
||||
ph = -1;
|
||||
}
|
||||
|
||||
if(ph != -1)
|
||||
{
|
||||
sx933x_i2c_read_16bit(this, SX933X_AVGPH0_REG + ph*4, &uData);
|
||||
avg = (s32)uData>>10;
|
||||
sx933x_i2c_read_16bit(this, SX933X_DIFFPH0_REG + ph*4, &uData);
|
||||
diff = (s32)uData>>10;
|
||||
sx933x_i2c_read_16bit(this, SX933X_OFFSETPH0_REG + ph*4*2, &uData);
|
||||
off = (u16)(uData & 0x7FFF);
|
||||
state = psmtcButtons[ph].state;
|
||||
|
||||
if(ref_ph_a != 0xFF && ref_ph_b != 0xFF)
|
||||
{
|
||||
LOG_DBG(
|
||||
"SMTC_DBG PH= %d USE= %d RAW= %d PH%d_USE= %d PH%d_USE= %d STATE= %d AVG= %d DIFF= %d OFF= %d ADC_MIN= %d ADC_MAX= %d DLT= %d SMTC_END\n",
|
||||
ph, ant_use, ant_raw, ref_ph_a, ref_a_use, ref_ph_b, ref_b_use, state, avg, diff, off, adc_min, adc_max, use_flt_dlt_var);
|
||||
}
|
||||
else if(ref_ph_a != 0xFF)
|
||||
{
|
||||
LOG_DBG(
|
||||
"SMTC_DBG PH= %d USE= %d RAW= %d PH%d_USE= %d STATE= %d AVG= %d DIFF= %d OFF= %d ADC_MIN= %d ADC_MAX= %d DLT= %d SMTC_END\n",
|
||||
ph, ant_use, ant_raw, ref_ph_a, ref_a_use, state, avg, diff, off, adc_min, adc_max, use_flt_dlt_var);
|
||||
}
|
||||
else if(ref_ph_b != 0xFF)
|
||||
{
|
||||
LOG_DBG(
|
||||
"SMTC_DBG PH= %d USE= %d RAW= %d PH%d_USE= %d STATE= %d AVG= %d DIFF= %d OFF= %d ADC_MIN= %d ADC_MAX= %d DLT= %d SMTC_END\n",
|
||||
ph, ant_use, ant_raw, ref_ph_b, ref_b_use, state, avg, diff, off, adc_min, adc_max, use_flt_dlt_var);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_DBG(
|
||||
"SMTC_DBG PH= %d USE= %d RAW= %d STATE= %d AVG= %d DIFF= %d OFF= %d ADC_MIN= %d ADC_MAX= %d DLT= %d SMTC_END\n",
|
||||
ph, ant_use, ant_raw, state, avg, diff, off, adc_min, adc_max, use_flt_dlt_var);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void read_rawData(psx93XX_t this)
|
||||
{
|
||||
u8 csx, index;
|
||||
s32 useful;
|
||||
s32 average;
|
||||
s32 diff;
|
||||
s32 useful, average, diff;
|
||||
s32 ref_a_use=0, ref_b_use=0;
|
||||
u32 uData;
|
||||
u16 offset;
|
||||
//s32 state = 0;
|
||||
int state;
|
||||
psx933x_t pDevice = NULL;
|
||||
psx933x_platform_data_t pdata = NULL;
|
||||
int ref_ph_a, ref_ph_b;
|
||||
|
||||
if(this)
|
||||
{
|
||||
pDevice = this->pDevice;
|
||||
pdata = pDevice->hw;
|
||||
ref_ph_a = pdata->ref_phase_a;
|
||||
ref_ph_b = pdata->ref_phase_b;
|
||||
LOG_DBG("[SX933x] ref_ph_a= %d ref_ph_b= %d\n", ref_ph_a, ref_ph_b);
|
||||
|
||||
sx933x_i2c_read_16bit(this, SX933X_STAT0_REG, &uData);
|
||||
LOG_DBG("SX933X_STAT0_REG= 0x%X\n", uData);
|
||||
|
||||
if(ref_ph_a != 0xFF)
|
||||
{
|
||||
sx933x_i2c_read_16bit(this, SX933X_USEPH0_REG + ref_ph_a*4, &uData);
|
||||
ref_a_use = (s32)uData >> 10;
|
||||
}
|
||||
if(ref_ph_b != 0xFF)
|
||||
{
|
||||
sx933x_i2c_read_16bit(this, SX933X_USEPH0_REG + ref_ph_b*4, &uData);
|
||||
ref_b_use = (s32)uData >> 10;
|
||||
}
|
||||
|
||||
for(csx =0; csx<5; csx++)
|
||||
{
|
||||
index = csx*4;
|
||||
|
|
@ -272,10 +408,36 @@ 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;
|
||||
|
||||
if(ref_ph_a != 0xFF && ref_ph_b != 0xFF)
|
||||
{
|
||||
LOG_DBG(
|
||||
"SMTC_DAT PH= %d DIFF= %d USE= %d PH%d_USE= %d PH%d_USE= %d STATE= %d OFF= %d AVG= %d SMTC_END\n",
|
||||
csx, diff, useful, ref_ph_a, ref_a_use, ref_ph_b, ref_b_use, state, offset, average);
|
||||
}
|
||||
else if(ref_ph_a != 0xFF)
|
||||
{
|
||||
LOG_DBG(
|
||||
"SMTC_DAT PH= %d DIFF= %d USE= %d PH%d_USE= %d STATE= %d OFF= %d AVG= %d SMTC_END\n",
|
||||
csx, diff, useful, ref_ph_a, ref_a_use, state, offset, average);
|
||||
}
|
||||
else if(ref_ph_b != 0xFF)
|
||||
{
|
||||
LOG_DBG(
|
||||
"SMTC_DAT PH= %d DIFF= %d USE= %d PH%d_USE= %d STATE= %d OFF= %d AVG= %d SMTC_END\n",
|
||||
csx, diff, useful, ref_ph_b, ref_b_use, state, offset, average);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_DBG(
|
||||
"SMTC_DAT PH= %d DIFF= %d USE= %d STATE= %d OFF= %d AVG= %d SMTC_END\n",
|
||||
csx, diff, useful, state, offset, average);
|
||||
}
|
||||
}
|
||||
|
||||
read_dbg_raw(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -156,6 +156,12 @@
|
|||
#define SX933X_OFFSETPH4_REG SX933X_AFEPHPH4_REG//bit14:0
|
||||
#define SX933X_OFFSETPH5_REG SX933X_AFEPHPH5_REG//bit14:0
|
||||
|
||||
#define SX933X_REG_DBG_PHASE_SEL 0x81A4
|
||||
#define SX933X_REG_PROX_ADC_MIN 0x81A8
|
||||
#define SX933X_REG_PROX_ADC_MAX 0x81AC
|
||||
#define SX933X_REG_PROX_RAW 0x81B0
|
||||
#define SX933X_REG_DLT_VAR 0X81B4
|
||||
|
||||
//i2c register bit mask
|
||||
#define MSK_IRQSTAT_RESET 0x00000080
|
||||
#define MSK_IRQSTAT_TOUCH 0x00000040
|
||||
|
|
@ -706,6 +712,8 @@ struct sx933x_platform_data
|
|||
bool cap_vdd_en;
|
||||
struct smtc_reg_data *pi2c_reg;
|
||||
int irq_gpio;
|
||||
int ref_phase_a;
|
||||
int ref_phase_b;
|
||||
int eldo_gpio;
|
||||
bool eldo_vdd_en;
|
||||
sx933x_power_supply_type_t power_supply_type;
|
||||
|
|
|
|||
Loading…
Reference in a new issue