// Main entry point for the application int F54TestHandle(struct synaptics_ts_data *ts, int input, int mode, char *buf) { int ret = TOUCH_FAIL; u8 data; rst_size = 0; memset(f54_wlog_buf, 0x00, sizeof(f54_wlog_buf)); data = 0x00; ret = Touch_I2C_Write(ts->client, REPORT_LSB_REG, &data, 1); ret = Touch_I2C_Write(ts->client, REPORT_MSB_REG, &data, 1); switch(input) { case F54_FULL_RAW_CAP: ret = FullRawTest(ts, mode); break; case F54_HIGH_RESISTANCE: ret = HighResistanceTest(ts); break; case F54_TRX_TO_TRX: ret = TRexShortTest(ts); break; default: break; } msleep(100); return ret; }
static int TestPreparation(struct synaptics_ts_data *ts) { int ret = 0; u8 data = 0; ReadChCount(ts); /*Turn off CBC.*/ ret = Touch_I2C_Read(ts->client, ANALOG_CONTROL_REG, &data, 1); data = data & 0xDF; ret = Touch_I2C_Write(ts->client, ANALOG_CONTROL_REG, &data, 1); /*Apply ForceUpdate.*/ ret = Touch_I2C_Read(ts->client, ANALOG_COMMAND_REG, &data, 1); data = data | 0x04; ret = Touch_I2C_Write(ts->client, ANALOG_COMMAND_REG, &data, 1); msleep(WAIT_TIME); /*Apply ForceCal.*/ ret = Touch_I2C_Read(ts->client, ANALOG_COMMAND_REG, &data, 1); data = data | 0x02; ret = Touch_I2C_Write(ts->client, ANALOG_COMMAND_REG, &data, 1); msleep(WAIT_TIME); return TOUCH_SUCCESS; }
// The following funtion illustrates the steps in getting a full raw image report (report #20) by Function $54. static int FullRawTest(struct synaptics_ts_data *ts, int mode) { int ret = 0; u8 data; TestPreparation(ts); TOUCH_DBG("[Touch][%s] raw capacitance mode!\n", __FUNCTION__); data = 0x14; //raw capacitance mode ret = Touch_I2C_Write(ts->client, REPORT_TYPE_REG, &data, 1); //Set the GetReport bit to run the AutoScan data = 0x01; ret = Touch_I2C_Write(ts->client, ANALOG_COMMAND_REG, &data, 1); msleep(WAIT_TIME); if (ReadRawData(ts)) //rawdata store mode return TOUCH_FAIL; return TOUCH_SUCCESS; }
static int HighResistanceTest(struct synaptics_ts_data *ts) { int ret = 0; u8 data; TestPreparation(ts); /*Assign report type for High Resistance report*/ data = 0x04; ret = Touch_I2C_Write(ts->client, REPORT_TYPE_REG, &data, 1); if (ReadHighResistance(ts)) return TOUCH_FAIL; return TOUCH_SUCCESS; }
static int TRexShortTest(struct synaptics_ts_data *ts) { int ret = 0; u8 data; TestPreparation(ts); /*Assign report type for TRex Short Test*/ data = 0x1A; ret = Touch_I2C_Write(ts->client, REPORT_TYPE_REG, &data, 1); if (ReadTRexShort(ts)) return TOUCH_FAIL; return TOUCH_SUCCESS; }
static int writeRMI(struct i2c_client *client, u8 uRmiAddress, u8 *data, unsigned int length) { return Touch_I2C_Write(client, uRmiAddress, data, length); }