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;
}
Example #9
0
//[*]--------------------------------------------------------------------------------------------------[*]
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);
}