All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin McNeely <kev@cypress.com>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: David Brown <davidb@codeaurora.org>,
	Trilok Soni <tsoni@codeaurora.org>,
	Kevin McNeely <kev@cypress.com>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	Samuel Ortiz <sameo@linux.intel.com>,
	Luotao Fu <l.fu@pengutronix.de>,
	Henrik Rydberg <rydberg@euromail.se>,
	linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [v2] 3/3 spi: Cypress TTSP G3 MTDEV SPI Device Driver
Date: Fri,  3 Dec 2010 18:06:23 -0800	[thread overview]
Message-ID: <1291428384-26364-3-git-send-email-kev@cypress.com> (raw)
In-Reply-To: <Kevin McNeely <kev@cypress.com>

Amended version of Cypress TTSP Gen3 SPI Device Driver.
Provides spi communications modules for the Cypress
TTSP Gen3 MTDEV Core Driver.
Amendments include changes recommended by reviewers of
initial version.

Signed-off-by: Kevin McNeely <kev@cypress.com>
---
 drivers/input/touchscreen/Makefile     |    4 +-
 drivers/input/touchscreen/cyttsp_spi.c |   84 +++++++++++++++++--------------
 2 files changed, 48 insertions(+), 40 deletions(-)

diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
index 89557f2..c52c0f5 100644
--- a/drivers/input/touchscreen/Makefile
+++ b/drivers/input/touchscreen/Makefile
@@ -16,8 +16,8 @@ obj-$(CONFIG_TOUCHSCREEN_ATMEL_TSADCC)	+= atmel_tsadcc.o
 obj-$(CONFIG_TOUCHSCREEN_BITSY)		+= h3600_ts_input.o
 obj-$(CONFIG_TOUCHSCREEN_BU21013)       += bu21013_ts.o
 obj-$(CONFIG_TOUCHSCREEN_CY8CTMG110)	+= cy8ctmg110_ts.o
-obj-$(CONFIG_TOUCHSCREEN_CYTTSP_CORE)	+= cyttsp_core.o
-obj-$(CONFIG_TOUCHSCREEN_CYTTSP_SPI)	+= cyttsp_spi.o
+obj-$(CONFIG_TOUCHSCREEN_CYTTSP_CORE)   += cyttsp_core.o
+obj-$(CONFIG_TOUCHSCREEN_CYTTSP_SPI)    += cyttsp_spi.o
 obj-$(CONFIG_TOUCHSCREEN_DA9034)	+= da9034-ts.o
 obj-$(CONFIG_TOUCHSCREEN_DYNAPRO)	+= dynapro.o
 obj-$(CONFIG_TOUCHSCREEN_HAMPSHIRE)	+= hampshire.o
diff --git a/drivers/input/touchscreen/cyttsp_spi.c b/drivers/input/touchscreen/cyttsp_spi.c
index 9f05de4..27b8347 100644
--- a/drivers/input/touchscreen/cyttsp_spi.c
+++ b/drivers/input/touchscreen/cyttsp_spi.c
@@ -33,7 +33,7 @@
 #define CY_SPI_WR_OP      0x00 /* r/~w */
 #define CY_SPI_RD_OP      0x01
 #define CY_SPI_CMD_BYTES  4
-#define CY_SPI_SYNC_BYTES 2
+#define CY_SPI_SYNC_BYTE  2
 #define CY_SPI_SYNC_ACK1  0x62 /* from protocol v.2 */
 #define CY_SPI_SYNC_ACK2  0x9D /* from protocol v.2 */
 #define CY_SPI_DATA_SIZE  128
@@ -77,19 +77,19 @@ static int cyttsp_spi_xfer_(u8 op, struct cyttsp_spi *ts,
 			    u8 reg, u8 *buf, int length)
 {
 	struct spi_message msg;
-	struct spi_transfer xfer = { 0 };
+	struct spi_transfer xfer[2];
 	u8 *wr_buf = ts->wr_buf;
 	u8 *rd_buf = ts->rd_buf;
 	int retval;
-	int i;
 
 	if (length > CY_SPI_DATA_SIZE) {
 		dev_dbg(ts->ops.dev, "%s: length %d is too big.\n",
 			__func__, length);
 		return -EINVAL;
 	}
-	dev_dbg(ts->ops.dev, "%s: OP=%s length=%d\n", __func__,
-		   op == CY_SPI_RD_OP ? "Read" : "Write", length);
+
+	memset(wr_buf, 0, CY_SPI_DATA_BUF_SIZE);
+	memset(rd_buf, 0, CY_SPI_DATA_BUF_SIZE);
 
 	wr_buf[0] = 0x00; /* header byte 0 */
 	wr_buf[1] = 0xFF; /* header byte 1 */
@@ -98,35 +98,45 @@ static int cyttsp_spi_xfer_(u8 op, struct cyttsp_spi *ts,
 	if (op == CY_SPI_WR_OP)
 		memcpy(wr_buf + CY_SPI_CMD_BYTES, buf, length);
 
-	xfer.tx_buf = wr_buf;
-	xfer.rx_buf = rd_buf;
-	xfer.len = length + CY_SPI_CMD_BYTES;
-
-	if ((op == CY_SPI_RD_OP) && (xfer.len < 32))
-		xfer.len += 1;
-
+	memset((void *)xfer, 0, sizeof(xfer));
 	spi_message_init(&msg);
-	spi_message_add_tail(&xfer, &msg);
+	xfer[0].tx_buf = wr_buf;
+	xfer[0].rx_buf = rd_buf;
+	if (op == CY_SPI_WR_OP) {
+		xfer[0].len = length + CY_SPI_CMD_BYTES;
+		spi_message_add_tail(&xfer[0], &msg);
+	} else if (op == CY_SPI_RD_OP) {
+		xfer[0].len = CY_SPI_CMD_BYTES;
+		spi_message_add_tail(&xfer[0], &msg);
+
+		xfer[1].rx_buf = buf;
+		xfer[1].len = length;
+		spi_message_add_tail(&xfer[1], &msg);
+	}
+
 	retval = spi_sync_tmo(ts, &msg);
 	if (retval < 0) {
-		dev_dbg(ts->ops.dev, "%s: spi_sync_tmo() error %d\n",
-			__func__, retval);
+		dev_dbg(ts->ops.dev, "%s: spi sync error %d, len=%d, op=%d\n",
+			__func__, retval, xfer[1].len, op);
 		retval = 0;
 	}
+
 	if (op == CY_SPI_RD_OP) {
-		for (i = 0; i < (length + CY_SPI_CMD_BYTES - 1); i++) {
-			if ((rd_buf[i] != CY_SPI_SYNC_ACK1) ||
-				(rd_buf[i + 1] != CY_SPI_SYNC_ACK2)) {
-				continue;
-			}
-			if (i <= (CY_SPI_CMD_BYTES - 1)) {
-				memcpy(buf, (rd_buf + i + CY_SPI_SYNC_BYTES),
-					length);
-				return 0;
-			}
+		if ((rd_buf[CY_SPI_SYNC_BYTE] == CY_SPI_SYNC_ACK1) &&
+			(rd_buf[CY_SPI_SYNC_BYTE+1] == CY_SPI_SYNC_ACK2))
+			retval = 0;
+		else {
+			int i;
+			for (i = 0; i < (CY_SPI_CMD_BYTES); i++)
+				dev_dbg(ts->ops.dev,
+					"%s: test rd_buf[%d]:0x%02x\n",
+					__func__, i, rd_buf[i]);
+			for (i = 0; i < (length); i++)
+				dev_dbg(ts->ops.dev,
+					"%s: test buf[%d]:0x%02x\n",
+					__func__, i, buf[i]);
+			retval = 1;
 		}
-		dev_dbg(ts->ops.dev, "%s: byte sync error\n", __func__);
-		retval = 1;
 	}
 	return retval;
 }
@@ -223,11 +233,11 @@ static int __devinit cyttsp_spi_probe(struct spi_device *spi)
 	}
 
 	ts = kzalloc(sizeof(*ts), GFP_KERNEL);
-	if (ts == NULL) {
+	if (!ts) {
 		dev_dbg(&spi->dev, "%s: Error, kzalloc\n", __func__);
-		retval = -ENOMEM;
-		goto error_alloc_data_failed;
+		return -ENOMEM;
 	}
+
 	ts->spi_client = spi;
 	dev_set_drvdata(&spi->dev, ts);
 	ts->ops.write = ttsp_spi_write_block_data;
@@ -235,18 +245,16 @@ static int __devinit cyttsp_spi_probe(struct spi_device *spi)
 	ts->ops.ext = ttsp_spi_tch_ext;
 	ts->ops.dev = &spi->dev;
 
-	retval = cyttsp_core_init(&ts->ops, &spi->dev,  &ts->ttsp_client);
-	if (retval)
-		goto ttsp_core_err;
+	ts->ttsp_client = cyttsp_core_init(&ts->ops, &spi->dev);
+	if (IS_ERR(ts->ttsp_client)) {
+		int retval = PTR_ERR(ts->ttsp_client);
+		kfree(ts);
+		return retval;
+	}
 
 	dev_dbg(ts->ops.dev, "%s: Registration complete\n", __func__);
 
 	return 0;
-
-ttsp_core_err:
-	kfree(ts);
-error_alloc_data_failed:
-	return retval;
 }
 
 static int __devexit cyttsp_spi_remove(struct spi_device *spi)
-- 
1.7.2.1


---------------------------------------------------------------
This message and any attachments may contain Cypress (or its
subsidiaries) confidential information. If it has been received
in error, please advise the sender and immediately delete this
message.
---------------------------------------------------------------


WARNING: multiple messages have this Message-ID (diff)
From: Kevin McNeely <kev@cypress.com>
Cc: David Brown <davidb@codeaurora.org>,
	Trilok Soni <tsoni@codeaurora.org>,
	Kevin McNeely <kev@cypress.com>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	Samuel Ortiz <sameo@linux.intel.com>,
	Luotao Fu <l.fu@pengutronix.de>,
	Henrik Rydberg <rydberg@euromail.se>,
	linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [v2] 3/3 spi: Cypress TTSP G3 MTDEV SPI Device Driver
Date: Fri,  3 Dec 2010 18:06:23 -0800	[thread overview]
Message-ID: <1291428384-26364-3-git-send-email-kev@cypress.com> (raw)
In-Reply-To: <Kevin McNeely <kev@cypress.com>

Amended version of Cypress TTSP Gen3 SPI Device Driver.
Provides spi communications modules for the Cypress
TTSP Gen3 MTDEV Core Driver.
Amendments include changes recommended by reviewers of
initial version.

Signed-off-by: Kevin McNeely <kev@cypress.com>
---
 drivers/input/touchscreen/Makefile     |    4 +-
 drivers/input/touchscreen/cyttsp_spi.c |   84 +++++++++++++++++--------------
 2 files changed, 48 insertions(+), 40 deletions(-)

diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
index 89557f2..c52c0f5 100644
--- a/drivers/input/touchscreen/Makefile
+++ b/drivers/input/touchscreen/Makefile
@@ -16,8 +16,8 @@ obj-$(CONFIG_TOUCHSCREEN_ATMEL_TSADCC)	+= atmel_tsadcc.o
 obj-$(CONFIG_TOUCHSCREEN_BITSY)		+= h3600_ts_input.o
 obj-$(CONFIG_TOUCHSCREEN_BU21013)       += bu21013_ts.o
 obj-$(CONFIG_TOUCHSCREEN_CY8CTMG110)	+= cy8ctmg110_ts.o
-obj-$(CONFIG_TOUCHSCREEN_CYTTSP_CORE)	+= cyttsp_core.o
-obj-$(CONFIG_TOUCHSCREEN_CYTTSP_SPI)	+= cyttsp_spi.o
+obj-$(CONFIG_TOUCHSCREEN_CYTTSP_CORE)   += cyttsp_core.o
+obj-$(CONFIG_TOUCHSCREEN_CYTTSP_SPI)    += cyttsp_spi.o
 obj-$(CONFIG_TOUCHSCREEN_DA9034)	+= da9034-ts.o
 obj-$(CONFIG_TOUCHSCREEN_DYNAPRO)	+= dynapro.o
 obj-$(CONFIG_TOUCHSCREEN_HAMPSHIRE)	+= hampshire.o
diff --git a/drivers/input/touchscreen/cyttsp_spi.c b/drivers/input/touchscreen/cyttsp_spi.c
index 9f05de4..27b8347 100644
--- a/drivers/input/touchscreen/cyttsp_spi.c
+++ b/drivers/input/touchscreen/cyttsp_spi.c
@@ -33,7 +33,7 @@
 #define CY_SPI_WR_OP      0x00 /* r/~w */
 #define CY_SPI_RD_OP      0x01
 #define CY_SPI_CMD_BYTES  4
-#define CY_SPI_SYNC_BYTES 2
+#define CY_SPI_SYNC_BYTE  2
 #define CY_SPI_SYNC_ACK1  0x62 /* from protocol v.2 */
 #define CY_SPI_SYNC_ACK2  0x9D /* from protocol v.2 */
 #define CY_SPI_DATA_SIZE  128
@@ -77,19 +77,19 @@ static int cyttsp_spi_xfer_(u8 op, struct cyttsp_spi *ts,
 			    u8 reg, u8 *buf, int length)
 {
 	struct spi_message msg;
-	struct spi_transfer xfer = { 0 };
+	struct spi_transfer xfer[2];
 	u8 *wr_buf = ts->wr_buf;
 	u8 *rd_buf = ts->rd_buf;
 	int retval;
-	int i;
 
 	if (length > CY_SPI_DATA_SIZE) {
 		dev_dbg(ts->ops.dev, "%s: length %d is too big.\n",
 			__func__, length);
 		return -EINVAL;
 	}
-	dev_dbg(ts->ops.dev, "%s: OP=%s length=%d\n", __func__,
-		   op == CY_SPI_RD_OP ? "Read" : "Write", length);
+
+	memset(wr_buf, 0, CY_SPI_DATA_BUF_SIZE);
+	memset(rd_buf, 0, CY_SPI_DATA_BUF_SIZE);
 
 	wr_buf[0] = 0x00; /* header byte 0 */
 	wr_buf[1] = 0xFF; /* header byte 1 */
@@ -98,35 +98,45 @@ static int cyttsp_spi_xfer_(u8 op, struct cyttsp_spi *ts,
 	if (op == CY_SPI_WR_OP)
 		memcpy(wr_buf + CY_SPI_CMD_BYTES, buf, length);
 
-	xfer.tx_buf = wr_buf;
-	xfer.rx_buf = rd_buf;
-	xfer.len = length + CY_SPI_CMD_BYTES;
-
-	if ((op == CY_SPI_RD_OP) && (xfer.len < 32))
-		xfer.len += 1;
-
+	memset((void *)xfer, 0, sizeof(xfer));
 	spi_message_init(&msg);
-	spi_message_add_tail(&xfer, &msg);
+	xfer[0].tx_buf = wr_buf;
+	xfer[0].rx_buf = rd_buf;
+	if (op == CY_SPI_WR_OP) {
+		xfer[0].len = length + CY_SPI_CMD_BYTES;
+		spi_message_add_tail(&xfer[0], &msg);
+	} else if (op == CY_SPI_RD_OP) {
+		xfer[0].len = CY_SPI_CMD_BYTES;
+		spi_message_add_tail(&xfer[0], &msg);
+
+		xfer[1].rx_buf = buf;
+		xfer[1].len = length;
+		spi_message_add_tail(&xfer[1], &msg);
+	}
+
 	retval = spi_sync_tmo(ts, &msg);
 	if (retval < 0) {
-		dev_dbg(ts->ops.dev, "%s: spi_sync_tmo() error %d\n",
-			__func__, retval);
+		dev_dbg(ts->ops.dev, "%s: spi sync error %d, len=%d, op=%d\n",
+			__func__, retval, xfer[1].len, op);
 		retval = 0;
 	}
+
 	if (op == CY_SPI_RD_OP) {
-		for (i = 0; i < (length + CY_SPI_CMD_BYTES - 1); i++) {
-			if ((rd_buf[i] != CY_SPI_SYNC_ACK1) ||
-				(rd_buf[i + 1] != CY_SPI_SYNC_ACK2)) {
-				continue;
-			}
-			if (i <= (CY_SPI_CMD_BYTES - 1)) {
-				memcpy(buf, (rd_buf + i + CY_SPI_SYNC_BYTES),
-					length);
-				return 0;
-			}
+		if ((rd_buf[CY_SPI_SYNC_BYTE] == CY_SPI_SYNC_ACK1) &&
+			(rd_buf[CY_SPI_SYNC_BYTE+1] == CY_SPI_SYNC_ACK2))
+			retval = 0;
+		else {
+			int i;
+			for (i = 0; i < (CY_SPI_CMD_BYTES); i++)
+				dev_dbg(ts->ops.dev,
+					"%s: test rd_buf[%d]:0x%02x\n",
+					__func__, i, rd_buf[i]);
+			for (i = 0; i < (length); i++)
+				dev_dbg(ts->ops.dev,
+					"%s: test buf[%d]:0x%02x\n",
+					__func__, i, buf[i]);
+			retval = 1;
 		}
-		dev_dbg(ts->ops.dev, "%s: byte sync error\n", __func__);
-		retval = 1;
 	}
 	return retval;
 }
@@ -223,11 +233,11 @@ static int __devinit cyttsp_spi_probe(struct spi_device *spi)
 	}
 
 	ts = kzalloc(sizeof(*ts), GFP_KERNEL);
-	if (ts == NULL) {
+	if (!ts) {
 		dev_dbg(&spi->dev, "%s: Error, kzalloc\n", __func__);
-		retval = -ENOMEM;
-		goto error_alloc_data_failed;
+		return -ENOMEM;
 	}
+
 	ts->spi_client = spi;
 	dev_set_drvdata(&spi->dev, ts);
 	ts->ops.write = ttsp_spi_write_block_data;
@@ -235,18 +245,16 @@ static int __devinit cyttsp_spi_probe(struct spi_device *spi)
 	ts->ops.ext = ttsp_spi_tch_ext;
 	ts->ops.dev = &spi->dev;
 
-	retval = cyttsp_core_init(&ts->ops, &spi->dev,  &ts->ttsp_client);
-	if (retval)
-		goto ttsp_core_err;
+	ts->ttsp_client = cyttsp_core_init(&ts->ops, &spi->dev);
+	if (IS_ERR(ts->ttsp_client)) {
+		int retval = PTR_ERR(ts->ttsp_client);
+		kfree(ts);
+		return retval;
+	}
 
 	dev_dbg(ts->ops.dev, "%s: Registration complete\n", __func__);
 
 	return 0;
-
-ttsp_core_err:
-	kfree(ts);
-error_alloc_data_failed:
-	return retval;
 }
 
 static int __devexit cyttsp_spi_remove(struct spi_device *spi)
-- 
1.7.2.1


---------------------------------------------------------------
This message and any attachments may contain Cypress (or its
subsidiaries) confidential information. If it has been received
in error, please advise the sender and immediately delete this
message.
---------------------------------------------------------------

  parent reply	other threads:[~2010-12-04  2:06 UTC|newest]

Thread overview: 111+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <Kevin McNeely <kev@cypress.com>
2010-07-12 20:56 ` [PATCH] i2c: cyttsp i2c touchscreen driver init submit Kevin McNeely
2010-07-12 20:56   ` Kevin McNeely
2010-07-13  2:34   ` Christoph Fritz
2010-08-04 16:30     ` Kevin McNeely
2010-08-04 16:30       ` Kevin McNeely
2010-07-13  6:48   ` Henrik Rydberg
2010-08-04 16:38     ` Kevin McNeely
2010-08-04 16:38       ` Kevin McNeely
2010-07-13  7:31   ` Trilok Soni
2010-07-13  7:55     ` Dmitry Torokhov
2010-07-13  8:42       ` Trilok Soni
2010-07-22 10:33         ` Trilok Soni
2010-07-27 15:20           ` Kevin McNeely
2010-07-27 15:20             ` Kevin McNeely
2010-07-27 15:20             ` Kevin McNeely
2010-08-04 17:27       ` Kevin McNeely
2010-08-04 17:27         ` Kevin McNeely
2010-08-04 17:27         ` Kevin McNeely
2010-07-19  9:28     ` Jean Delvare
2010-07-19  9:28       ` Jean Delvare
2010-08-04 17:22     ` Kevin McNeely
2010-08-04 17:22       ` Kevin McNeely
2010-08-05 18:12 ` [PATCH] i2c: cyttsp i2c and spi " Kevin McNeely
2010-08-05 18:12   ` Kevin McNeely
2010-08-05 20:45   ` Trilok Soni
2010-08-05 21:07     ` Dmitry Torokhov
2010-08-07  0:39       ` Kevin McNeely
2010-08-07  0:39         ` Kevin McNeely
2010-08-07  0:52     ` Kevin McNeely
2010-08-07  0:52       ` Kevin McNeely
2010-08-05 23:06   ` Henrik Rydberg
2010-08-07  0:32     ` Kevin McNeely
2010-08-07  0:32       ` Kevin McNeely
2010-08-07  0:49       ` Henrik Rydberg
2010-08-10  0:51         ` Kevin McNeely
2010-08-10  0:51           ` Kevin McNeely
2010-08-06  9:06   ` Trilok Soni
2010-08-10  0:49     ` Kevin McNeely
2010-08-10  0:49       ` Kevin McNeely
2010-11-09 18:25 ` [PATCH] touchscreen: Cypress TTSP G3 MTDEV Core Driver Kevin McNeely
2010-11-09 18:25   ` Kevin McNeely
2010-11-15 16:46   ` Henrik Rydberg
2010-11-19 17:39     ` Kevin McNeely
2010-11-19 17:39       ` Kevin McNeely
2010-12-01  7:22       ` Trilok Soni
2010-12-01 14:38         ` Henrik Rydberg
2010-12-01 23:59           ` Kevin McNeely
2010-12-01 23:59             ` Kevin McNeely
2010-12-02  0:01             ` Henrik Rydberg
2010-12-02  0:34   ` Dmitry Torokhov
2010-11-09 18:25 ` [PATCH] i2c: Cypress TTSP G3 MTDEV I2C Device Driver Kevin McNeely
2010-11-09 18:25   ` Kevin McNeely
2010-11-09 18:25 ` [PATCH] spi: Cypress TTSP G3 MTDEV SPI " Kevin McNeely
2010-11-09 18:25   ` Kevin McNeely
2010-12-04  2:06 ` [v2] touchscreen Cypress TTSP G3 MTDEV Core Driver Kevin McNeely
2010-12-04  2:06   ` Kevin McNeely
2010-12-05  9:11   ` Henrik Rydberg
2010-12-04  2:06 ` [v2] 2/3 i2c: Cypress TTSP G3 MTDEV I2C Device Driver Kevin McNeely
2010-12-04  2:06   ` Kevin McNeely
2010-12-04  2:06 ` Kevin McNeely [this message]
2010-12-04  2:06   ` [v2] 3/3 spi: Cypress TTSP G3 MTDEV SPI " Kevin McNeely
2010-12-29 19:17 ` [v3 1/3] 1/3 Touchscreen: Cypress TTSP G3 MTDEV Core Driver Kevin McNeely
2010-12-29 19:17   ` Kevin McNeely
2010-12-30  6:04   ` Shubhrajyoti Datta
2011-01-05  0:45     ` Kevin McNeely
2011-01-05  0:45       ` Kevin McNeely
2010-12-31 11:53   ` Henrik Rydberg
2010-12-31 12:55     ` Trilok Soni
2010-12-31 13:58       ` Henrik Rydberg
2011-01-03  9:44         ` Trilok Soni
2011-01-03 17:03     ` Kevin McNeely
2011-01-03 17:03       ` Kevin McNeely
2011-01-03 18:45       ` Henrik Rydberg
2011-01-03 20:50         ` Kevin McNeely
2011-01-03 20:50           ` Kevin McNeely
2011-01-04  1:50   ` Hong Liu
2011-01-05  0:38     ` Kevin McNeely
2011-01-05  0:38       ` Kevin McNeely
2010-12-29 19:17 ` [v3 2/3] 2/3 i2c: Cypress TTSP G3 MTDEV I2C Device Driver Kevin McNeely
2010-12-29 19:17   ` Kevin McNeely
2011-01-04  1:45   ` Hong Liu
2011-01-05  0:37     ` Kevin McNeely
2011-01-05  0:37       ` Kevin McNeely
2010-12-29 19:17 ` [v3 3/3] 3/3 spi: Cypress TTSP G3 MTDEV SPI " Kevin McNeely
2010-12-29 19:17   ` Kevin McNeely
2011-01-05  0:54 ` [v4 1/3] 1/3 Touchscreen: Cypress TTSP G3 Core Driver Kevin McNeely
2011-01-05  0:54   ` Kevin McNeely
2011-01-05  8:59   ` Henrik Rydberg
2011-01-05 17:07     ` Kevin McNeely
2011-01-05 17:07       ` Kevin McNeely
2011-01-05 17:34       ` Henrik Rydberg
2011-01-10 19:27         ` Kevin McNeely
2011-01-10 19:27           ` Kevin McNeely
2011-01-10 21:11           ` Dmitry Torokhov
2011-01-10 21:17             ` Kevin McNeely
2011-01-10 21:17               ` Kevin McNeely
2011-02-24 18:31         ` Kevin McNeely
2011-02-24 18:31           ` Kevin McNeely
2011-02-27 12:34           ` Henrik Rydberg
2011-04-28  8:17   ` Srinidhi KASAGAR
2011-01-05  0:54 ` [v4 2/3] 2/3 i2c: Cypress TTSP G3 I2C Device Driver Kevin McNeely
2011-01-05  0:54   ` Kevin McNeely
2011-01-05  0:54 ` [v4 3/3] 3/3 spi: Cypress TTSP G3 SPI " Kevin McNeely
2011-01-05  0:54   ` Kevin McNeely
2011-01-12 18:45   ` Dmitry Torokhov
2011-01-12 19:02     ` Kevin McNeely
2011-01-12 19:02       ` Kevin McNeely
2011-01-20 11:10       ` Trilok Soni
2011-01-21  9:27         ` Dmitry Torokhov
2011-01-21 22:14           ` Kevin McNeely
2011-01-21 22:14             ` Kevin McNeely

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1291428384-26364-3-git-send-email-kev@cypress.com \
    --to=kev@cypress.com \
    --cc=davidb@codeaurora.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=l.fu@pengutronix.de \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rydberg@euromail.se \
    --cc=sameo@linux.intel.com \
    --cc=tsoni@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.