Title: [9015] trunk/drivers/input/touchscreen/ad7160.c: [#6066] AD7160 Linux Driver Support
Revision
9015
Author
hennerich
Date
2010-07-27 04:36:49 -0400 (Tue, 27 Jul 2010)

Log Message

[#6066] AD7160 Linux Driver Support
Print INTERFACE_REV_ID
Warn if device INTERFACE_REV_ID > AD7160_DRIVER_INTERFACE_ID
Remove unused defines

Modified Paths

Diff

Modified: trunk/drivers/input/touchscreen/ad7160.c (9014 => 9015)


--- trunk/drivers/input/touchscreen/ad7160.c	2010-07-26 11:08:27 UTC (rev 9014)
+++ trunk/drivers/input/touchscreen/ad7160.c	2010-07-27 08:36:49 UTC (rev 9015)
@@ -19,9 +19,8 @@
 #include <linux/input/ad7160.h>
 #include "ad7160.h"
 
-#define AD7160_FORCE_CALIBRATION	0x800
-#define AD7160_IIR_FILTER_ENABLE	0x2000
 #define AD7160_SIL_ID			0x7160
+#define AD7160_DRIVER_INTERFACE_ID	0x800
 
 /*
  * Bit definition
@@ -52,6 +51,13 @@
 #define AD7160_MTL_OFFS_ADJUST_BUSY		(1 << 30)
 #define AD7160_SLF_OFFS_ADJUST_BUSY		(1 << 31)
 
+
+/* REV_ID */
+#define AD7160_INTERFACE_REV_ID_SHIFT		0
+#define AD7160_SILICON_REV_ID_SHIFT		16
+#define AD7160_INTERFACE_REV_ID_MASK		0xFFFF
+#define AD7160_SILICON_REV_ID_MASK		0xFFFF
+
 #define AD7160_STAT_X_OFFS			0
 #define AD7160_STAT_X_MASK			0xFFF
 #define AD7160_STAT_Y_OFFS			12
@@ -381,7 +387,7 @@
 	struct input_dev *input_dev;
 	struct ad7160_platform_data *pdata = dev->platform_data;
 	int err;
-	u32 revid;
+	u32 revid, fw_revid;
 	struct ad7160 *ts;
 
 	if (!bdata->irq) {
@@ -487,9 +493,12 @@
 		goto err_free_mem;
 	}
 
-	input_dev->id.version = ad7160_read(ts, AD7160_REG_REV_ID) >> 16;
-	revid = ad7160_read(ts, AD7160_REG_FW_REV);
+	fw_revid = ad7160_read(ts, AD7160_REG_FW_REV);
+	revid = ad7160_read(ts, AD7160_REG_REV_ID);
 
+	input_dev->id.version = (revid >> AD7160_INTERFACE_REV_ID_SHIFT) &
+				AD7160_INTERFACE_REV_ID_MASK;
+
 	ad7160_setup(ts);
 
 	err = request_irq(ts->bdata.irq, ad7160_irq, IRQF_TRIGGER_FALLING,
@@ -507,10 +516,18 @@
 	if (err)
 		goto err_remove_attr;
 
-	dev_info(dev, "Rev.%d touchscreen, irq %d Firmware REV %d.%d.%d.%d\n",
-		 input_dev->id.version, ts->bdata.irq, revid >> 12,
-		 (revid >> 8) & 0xF, (revid >> 4) & 0xF, revid & 0xF);
+	if (input_dev->id.version > AD7160_DRIVER_INTERFACE_ID)
+		dev_warn(dev, "Driver implements Interface REV %x, "
+		"device probed implements %x!\n", AD7160_DRIVER_INTERFACE_ID,
+		input_dev->id.version);
 
+	dev_info(dev, "Rev.%d touchscreen, irq %d, Interface REV %x, "
+		 "Firmware REV %d.%d.%d.%d\n",
+		 (revid >> AD7160_SILICON_REV_ID_SHIFT) &
+		 AD7160_SILICON_REV_ID_MASK,
+		 ts->bdata.irq, input_dev->id.version, fw_revid >> 12,
+		 (fw_revid >> 8) & 0xF, (fw_revid >> 4) & 0xF, fw_revid & 0xF);
+
 	return 0;
 
 err_remove_attr:
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to