Thread (2 messages) flat view 2 messages, 2 authors, 2011-09-13

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

From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: 2011-09-13 08:50:33

* Christian Gmeiner | 2011-09-13 10:18:41 [+0200]:
quoted hunk ↗ jump to hunk
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);
+
That BUG() isn't really nice. Since you in probe at this time, couldn't
you print something and abort loading the driver?

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