All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Input: ads7846 - correct the value get from SPI
@ 2015-05-22  7:02 Haibo Chen
  2015-06-10  8:53 ` Chen Bough
  2015-07-21 11:52 ` Igor Grinberg
  0 siblings, 2 replies; 6+ messages in thread
From: Haibo Chen @ 2015-05-22  7:02 UTC (permalink / raw)
  To: dmitry.torokhov; +Cc: jg1.han, pramod.gurav, linux-input, haibo.chen

According to the touch controller SPEC, SPI return a 16 bit value,
only 12 bits are valid, they are bit[14-3].

The value of MISO and MOSI can be configed when SPI in idle mode.
Currently this touch driver consider the SPI bus set the MOSI and
MISO in low level when SPI bus in idle mode. So the bit[15] of the
value get from SPI bus is always 0. But when SPI bus congfig the
MOSI and MISO in high level when SPI in idle mode, the bit[15] of
the value get from SPI is always 1, if not mask this bit[15], we may
get the wrong value.

This patch mask the invalid bit, and make sure to return the correct
value nomatter how SPI bus configed.

Signed-off-by: Haibo Chen <haibo.chen@freescale.com>
---
 drivers/input/touchscreen/ads7846.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index e4eb8a6..91b335f 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -678,7 +678,7 @@ static int ads7846_get_value(struct ads7846 *ts, struct spi_message *m)
 		 * adjust:  on-wire is a must-ignore bit, a BE12 value, then
 		 * padding; built from two 8 bit values written msb-first.
 		 */
-		return be16_to_cpup((__be16 *)t->rx_buf) >> 3;
+		return (be16_to_cpup((__be16 *)t->rx_buf) & 0x7ff8) >> 3;
 	}
 }
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [PATCH] Input: ads7846 - correct the value get from SPI
@ 2015-05-22  6:36 Haibo Chen
  0 siblings, 0 replies; 6+ messages in thread
From: Haibo Chen @ 2015-05-22  6:36 UTC (permalink / raw)
  To: dmitry.torokhov; +Cc: jg1.han, pramod.gurav, linux-input

According to the touch controller SPEC, SPI return a 16 bit value,
only 12 bits are valid, they are bit[14-3].

The value of MISO and MOSI can be configed when SPI in idle mode.
Currently this touch driver consider the SPI bus set the MOSI and
MISO in low level when SPI bus in idle mode. So the bit[15] of the
value get from SPI bus is always 0. But when SPI bus congfig the
MOSI and MISO in high level when SPI in idle mode, the bit[15] of
the value get from SPI is always 1, if not mask this bit[15], we may
get the wrong value.

This patch mask the invalid bit, and make sure to return the correct
value nomatter how SPI bus configed.

Signed-off-by: Haibo Chen <haibo.chen@freescale.com>
---
 drivers/input/touchscreen/ads7846.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index e4eb8a6..91b335f 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -678,7 +678,7 @@ static int ads7846_get_value(struct ads7846 *ts, struct spi_message *m)
 		 * adjust:  on-wire is a must-ignore bit, a BE12 value, then
 		 * padding; built from two 8 bit values written msb-first.
 		 */
-		return be16_to_cpup((__be16 *)t->rx_buf) >> 3;
+		return (be16_to_cpup((__be16 *)t->rx_buf) & 0x7ff8) >> 3;
 	}
 }
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-07-23  8:28 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-22  7:02 [PATCH] Input: ads7846 - correct the value get from SPI Haibo Chen
2015-06-10  8:53 ` Chen Bough
2015-07-21  2:31   ` Chen Bough
2015-07-21 11:52 ` Igor Grinberg
2015-07-23  8:28   ` Chen Bough
  -- strict thread matches above, loose matches on Subject: below --
2015-05-22  6:36 Haibo Chen

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.