Thread (21 messages) 21 messages, 3 authors, 2016-05-27

Re: [PATCH] driver: input :touchscreen : add Raydium I2C touch driver

From: jeffrey.lin <hidden>
Date: 2016-05-24 09:31:58
Also in: linux-input, lkml

Hi Dmitry:
BUILD_BUG_ON((RM_FW_PAGE_SIZE % RM_BL_WRT_PKG_SIZE) != 0);

for (i = 0; i < RM_FW_PAGE_SIZE / RM_BL_WRT_PKG_SIZE; i++) {
	buf[BL_HEADER] = RM_CMD_BOOT_PAGE_WRT;
	buf[BL_PAGE_STR] = i ? 0xff : 0;
Change to buf[BL_PAGE_STR] = page_idx ? 0xff : 0;
	buf[BL_PKG_IDX] = i;

	xfer_len = min_t(size_t, len, RM_BL_WRT_PKG_SIZE);
	memcpy(&buf[BL_DATA_STR], data, xfer_len);
	if (len < RM_BL_WRT_PKG_SIZE)
		memset(&buf[BL_DATA_STR + xfer_len], 0xff,
			RM_BL_WRT_PKG_SIZE - xfer_len);

	error = raydium_i2c_write_object(client, buf, RM_BL_WRT_LEN,
					 RAYDIUM_WAIT_READY);
	if (error) {
		dev_err(&client->dev,
			"page write command failed for page %d, chunk %d: %d\n",
			page_idx, pkg_idx, error);
		return error;
	}

	data += xfer_len;
	len -= xfer_len;
}
This work on my hand chromebook.
static int raydium_i2c_read_message(struct i2c_client *client,
				    u32 addr, void *data, size_t len)
{
	__le32 le_addr;
	size_t xfer_len;
	int error;

	while (len) {
		xfer_len = min_t(size_t, len, RM_MAX_READ_SIZE);

		le_addr = cpu_to_le32(addr);

		error = raydium_i2c_send(client, RM_CMD_BANK_SWITCH,
					 &le_addr, sizeof(le_addr));
		if (!error)/*read from last byte addr.*/
			error = raydium_i2c_read(client, le_addr & 0xff,
						 data, xfer_len)
Change as
			error = raydium_i2c_read(client, addr & 0xff,
						 data, xfer_len);

I've fixed this issues and submit new patch to upstream. Please help check that.

Thanks.

Jeffrey
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help