[PATCH 3/3] TSC-40: Improve EEPROM error handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>From 30b11594207afd8a3075d3115678cd7013d380d8 Mon Sep 17 00:00:00 2001
From: Christian Gmeiner <christian.gmeiner@xxxxxxxxx>
Date: Wed, 7 Sep 2011 14:29:10 +0200
Subject: [PATCH 3/3] TSC40: Improve EEPROM error handling

It could happen that the internal EEPROM does not contain any
calibration data and as a result of this the driver will fail.
With this patch we simply ignore an empty EEPROM, as the touch
controller runs in 'Coordinate data mode' (raw data).

Signed-off-by: Christian Gmeiner <christian.gmeiner@xxxxxxxxx>
---
drivers/input/touchscreen/tsc40.c |   21 +++++++++++++++++----
1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/drivers/input/touchscreen/tsc40.c
b/drivers/input/touchscreen/tsc40.c
index b73ef2f..d914522 100644
--- a/drivers/input/touchscreen/tsc40.c
+++ b/drivers/input/touchscreen/tsc40.c
@@ -49,7 +49,6 @@ struct tsc_ser {

 #define RESPONSE_ACK   0x06
#define RESPONSE_NAK    0x15
-#define NACK_DETAIL_NT (1 << 3)

 #define ID_EPROM_UNUSED        (1 << 7)

@@ -96,11 +95,25 @@ static void handle_reset(struct serio *serio,
unsigned char data)

       /* NAK + EEPROM available */
       if (ptsc->idx == 1) {
-               if (!(data & NACK_DETAIL_NT)) {
+               if (data & (1 << 0)) {
+                       dev_warn(&serio->dev, "EEPROM data empty\n");
+                       state_after_reset(ptsc, 1);
+                       return;
+               } else if (data & (1 << 1)) {
+                       dev_warn(&serio->dev, "EEPROM data abnormal\n");
                       state_after_reset(ptsc, 0);
                       return;
-               }
-               state_after_reset(ptsc, 0);
+               } else if (data & (1 << 2)) {
+                       dev_warn(&serio->dev, "EEPROM write error\n");
+                       state_after_reset(ptsc, 0);
+                       return;
+               } else if (data & (1 << 3)) {
+                       dev_warn(&serio->dev, "Touch screen not connected\n");
+                       state_after_reset(ptsc, 0);
+                       return;
+               } else
+                       BUG_ON(1);
+
               return;
       }

--
1.7.4.1
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux