Example #1
0
int swan_ts_write_data_fd(int fd, const void *buff, size_t size)
{
	struct swan_ts_i2c_request req =
	{
		.offset = 0,
		.size = size,
		.data = (void *) buff
	};

	return ioctl(fd, SWAN_TS_IOCTL_WRITE_DATA, &req);
}

int swan_ts_write_data(const char *devpath, const void *buff, size_t size)
{
	int fd;
	int ret;

	fd = swan_ts_open_misc_device(devpath, 0);
	if (fd < 0)
	{
		return fd;
	}

	ret = swan_ts_write_data_fd(fd, buff, size);

	close(fd);

	return ret;
}
Example #2
0
int swan_ts_write_registers_fd(int fd, u16 addr, const void *buff, size_t size)
{
	struct swan_ts_i2c_request req =
	{
		.offset = addr,
		.size = size,
		.data = (void *) buff
	};

	return ioctl(fd, SWAN_TS_IOCTL_WRITE_REGISTERS, &req);
}

int swan_ts_write_registers(const char *devpath, u16 addr, const void *buff, size_t size)
{
	int fd;
	int ret;

	fd = swan_ts_open_misc_device(devpath, 0);
	if (fd < 0)
	{
		return fd;
	}

	ret = swan_ts_write_registers_fd(fd, addr, buff, size);

	close(fd);

	return ret;
}
Example #3
0
static int swan_ts_poll_registers_main(int argc, char *argv[])
{
	int ret;
	u16 offset;
	u16 count;
	u32 timeout;
	int fd;
	char *buff;
	const char *devpath;

	assert(argc > 2);

	offset = text2value_unsigned(argv[1], NULL, 10);
	count = text2value_unsigned(argv[2], NULL, 10);
	timeout = argc > 3 ? text2value_unsigned(argv[3], NULL, 10) : 200;
	devpath = argc > 4 ? argv[4] : SWAN_TS_DEFAULT_DEVICE;

	println("offset = %d, count = %d, timeout = %d, devpath = %s", offset, count, timeout, devpath);

	buff = malloc(count);
	if (buff == NULL)
	{
		pr_red_info("malloc");
		return -ENOMEM;
	}

	fd = swan_ts_open_misc_device(devpath, 0);
	if (fd < 0)
	{
		pr_red_info("swan_ts_open_misc_device");
		ret = fd;
		goto out_free_buff;
	}

	while (1)
	{
		msleep(timeout);

		ret = swan_ts_read_registers_fd(fd, offset, buff, count);
		if (ret < 0)
		{
			continue;
		}

		print_mem((u8 *) buff, count);
	}

	close(fd);

out_free_buff:
	free(buff);

	return ret;
}
Example #4
0
int swan_ts_set_client_address(const char *devpath, u16 addr)
{
	int fd;

	fd = swan_ts_open_misc_device(devpath, 0);
	if (fd < 0) {
		return fd;
	}

	return swan_ts_set_client_address_fd(fd, addr);
}
Example #5
0
int ft5406_firmware_upgrade(const char *devpath, const char *cfgpath)
{
	int dev_fd;
	int ret;

	dev_fd = swan_ts_open_misc_device(devpath, O_WRONLY);
	if (dev_fd < 0) {
		return dev_fd;
	}

	ret = ft5406_firmware_upgrade_fd(dev_fd, cfgpath);

	close(dev_fd);

	return ret;
}
Example #6
0
int swan_ts_test_client(const char *devpath, u16 addr)
{
	int ret;
	int fd;

	fd = swan_ts_open_misc_device(devpath, 0);
	if (fd < 0) {
		return fd;
	}

	ret = swan_ts_test_client_fd(fd, addr);

	close(fd);

	return ret;
}
Example #7
0
int swan_ts_detect_clients(const char *devpath, u16 start, u16 end)
{
	int ret;
	int fd;

	fd = swan_ts_open_misc_device(devpath, 0);
	if (fd < 0) {
		return fd;
	}

	ret = swan_ts_detect_clients_fd(fd, start, end);

	close(fd);

	return ret;
}
Example #8
0
int swan_ts_read_registers(const char *devpath, u16 addr, void *buff, size_t size)
{
	int fd;
	int ret;

	fd = swan_ts_open_misc_device(devpath, 0);
	if (fd < 0) {
		return fd;
	}

	ret = swan_ts_read_registers_fd(fd, addr, buff, size);

	close(fd);

	return ret;
}
Example #9
0
int swan_ts_calibration(const char *devpath)
{
	int fd;
	int ret;

	fd = swan_ts_open_misc_device(devpath, 0);
	if (fd < 0) {
		pr_bold_info("Retry use input calibration");
		return swan_ts_input_calibration(devpath);
	}

	ret = ioctl(fd, SWAN_TS_IOCTL_CALIBRATION);

	close(fd);

	return ret;
}