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