static int TestPreparation(struct synaptics_ts_data *ts) { u8 data = 0; ReadChCount(ts); /*Turn off CBC.*/ touch_i2c_read(ts->client, ANALOG_CONTROL_REG, 1, &data); data = data & 0xDF; touch_i2c_write(ts->client, ANALOG_CONTROL_REG, 1, &data); /*Apply ForceUpdate.*/ touch_i2c_read(ts->client, ANALOG_COMMAND_REG, 1, &data); data = data | 0x04; touch_i2c_write(ts->client, ANALOG_COMMAND_REG, 1, &data); msleep(WAIT_TIME); /*Apply ForceCal.*/ touch_i2c_read(ts->client, ANALOG_COMMAND_REG, 1, &data); data = data | 0x02; touch_i2c_write(ts->client, ANALOG_COMMAND_REG, 1, &data); msleep(WAIT_TIME); return NO_ERROR; }
// Main entry point for the application int F54TestHandle(struct synaptics_ts_data *ts, int input, int mode, char *buf) { int ret = LGTC_FAIL; u8 data; rst_size = 0; memset(f54_wlog_buf, 0x00, sizeof(f54_wlog_buf)); data = 0x00; touch_i2c_write(ts->client, REPORT_LSB_REG, 1, &data); touch_i2c_write(ts->client, REPORT_MSB_REG, 1, &data); 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; }
int Write8BitRegisters(unsigned short regAddr, unsigned char *data, int length) { // I2C write int rst = 0; rst = touch_i2c_write(ds4_i2c_client, regAddr, length, data); return rst; }
void device_I2C_write(unsigned char add, unsigned char *value, unsigned short len) { // I2C write if(ds4_i2c_client == NULL) { printk("[Touch] ds4_i2c_client is NULL\n"); return; } else { if(touch_i2c_write(ds4_i2c_client, add, len, value) < 0) return; } }
// 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) { u8 data; TestPreparation(ts); LGTC_DBG("[Touch][%s] raw capacitance mode!\n", __FUNCTION__); data = 0x14; //raw capacitance mode touch_i2c_write(ts->client, REPORT_TYPE_REG, 1, &data); //Set the GetReport bit to run the AutoScan data = 0x01; touch_i2c_write(ts->client, ANALOG_COMMAND_REG, 1, &data); msleep(WAIT_TIME); if (ReadRawData(ts)) //rawdata store mode return LGTC_FAIL; return LGTC_SUCCESS; }
int touch_bus_write(struct device *dev, struct touch_bus_msg *msg) { struct touch_core_data *ts = to_touch_core(dev); int ret = 0; if (ts->bus_type == HWIF_I2C) ret = touch_i2c_write(to_i2c_client(dev), msg); else if (ts->bus_type == HWIF_SPI) ret = touch_spi_write(to_spi_device(dev), msg); return ret; }
static int HighResistanceTest(struct synaptics_ts_data *ts) { u8 data; TestPreparation(ts); /*Assign report type for High Resistance report*/ data = 0x04; touch_i2c_write(ts->client, REPORT_TYPE_REG, 1, &data); if (ReadHighResistance(ts)) return LGTC_FAIL; return LGTC_SUCCESS; }
static int TRexShortTest(struct synaptics_ts_data *ts) { u8 data; TestPreparation(ts); /*Assign report type for TRex Short Test*/ data = 0x1A; touch_i2c_write(ts->client, REPORT_TYPE_REG, 1, &data); if (ReadTRexShort(ts)) return LGTC_FAIL; return LGTC_SUCCESS; }
//[*]--------------------------------------------------------------------------------------------------[*] static ssize_t store_idle (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct touch *ts = dev_get_drvdata(dev); unsigned long val = 0; unsigned char idle = 0; int err; if ((err = strict_strtoul(buf, 10, &val))) return err; if (val > 255 && val < 0) idle = 0; else { idle = (unsigned char)val; if(!err_mask(ts->fw_status) && !(ts->fw_status & STATUS_BOOT_MODE)) { touch_disable(ts); touch_wake_control(ts); touch_i2c_write(ts->client, REG_TS_IDLE_WR, 1, &idle); touch_enable(ts); } } return count; }
static int writeRMI(struct i2c_client *client, u8 uRmiAddress, u8 *data, unsigned int length) { return touch_i2c_write(client, uRmiAddress, length, data); }
int Write8BitRegisters(unsigned short regAddr, unsigned char *data, int length) { return touch_i2c_write(ds4_i2c_client, regAddr, length, data); }