[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:
zhangh12 2020-10-14 16:17:22 +08:00 • committed by Hong Zhang
commit e222b9be7f
2 changed files with 181 additions and 11 deletions

View file

@ -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);
}
}

View file

@ -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;