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.cb/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