Input: ad714x - add support for the AD7143/8/7A parts
authorBarry Song <barry.song@analog.com>
Mon, 22 Mar 2010 06:23:29 +0000 (23:23 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 14 Apr 2010 06:27:22 +0000 (23:27 -0700)
Signed-off-by: Barry Song <barry.song@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/misc/Kconfig
drivers/input/misc/ad714x-i2c.c
drivers/input/misc/ad714x.c

index a4b9dc5cf456b4a18f9e216bb50989b1e7e308b6..48cdabec372a0b8e6344749deebef3bb7876db44 100644 (file)
@@ -25,7 +25,7 @@ config INPUT_88PM860X_ONKEY
 config INPUT_AD714X
        tristate "Analog Devices AD714x Capacitance Touch Sensor"
        help
-         Say Y here if you want to support an AD7142/AD7147 touch sensor.
+         Say Y here if you want to support an AD7142/3/7/8/7A touch sensor.
 
          You should select a bus connection too.
 
index a2cb6b426dc77287ea0a4b5eaadd99845ea6a6b4..e9adbe49f6a49fe0a01e74648747985cb517061d 100644 (file)
@@ -104,7 +104,10 @@ static int __devexit ad714x_i2c_remove(struct i2c_client *client)
 
 static const struct i2c_device_id ad714x_id[] = {
        { "ad7142_captouch", 0 },
+       { "ad7143_captouch", 0 },
        { "ad7147_captouch", 0 },
+       { "ad7147a_captouch", 0 },
+       { "ad7148_captouch", 0 },
        { }
 };
 MODULE_DEVICE_TABLE(i2c, ad714x_id);
index 691b1d37331fb33469ce6b31e064e4b22d5480ea..0fe27baf5e723038110cafaa56e69646bcc27526 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * AD714X CapTouch Programmable Controller driver
+ * AD714X CapTouch Programmable Controller driver supporting AD7142/3/7/8/7A
  *
  * Copyright 2009 Analog Devices Inc.
  *
 #define AD714X_STG_CAL_EN_REG     0x1
 #define AD714X_AMB_COMP_CTRL0_REG 0x2
 #define AD714X_PARTID_REG         0x17
-#define AD7147_PARTID             0x1470
 #define AD7142_PARTID             0xE620
+#define AD7143_PARTID             0xE630
+#define AD7147_PARTID             0x1470
+#define AD7148_PARTID             0x1480
 #define AD714X_STAGECFG_REG       0x80
 #define AD714X_SYSCFG_REG         0x0
 
@@ -962,17 +964,31 @@ static int ad714x_hw_detect(struct ad714x_chip *ad714x)
 
        ad714x->read(ad714x->dev, AD714X_PARTID_REG, &data);
        switch (data & 0xFFF0) {
+       case AD7142_PARTID:
+               ad714x->product = 0x7142;
+               ad714x->version = data & 0xF;
+               dev_info(ad714x->dev, "found AD7142 captouch, rev:%d\n",
+                               ad714x->version);
+               return 0;
+
+       case AD7143_PARTID:
+               ad714x->product = 0x7143;
+               ad714x->version = data & 0xF;
+               dev_info(ad714x->dev, "found AD7143 captouch, rev:%d\n",
+                               ad714x->version);
+               return 0;
+
        case AD7147_PARTID:
                ad714x->product = 0x7147;
                ad714x->version = data & 0xF;
-               dev_info(ad714x->dev, "found AD7147 captouch, rev:%d\n",
+               dev_info(ad714x->dev, "found AD7147(A) captouch, rev:%d\n",
                                ad714x->version);
                return 0;
 
-       case AD7142_PARTID:
-               ad714x->product = 0x7142;
+       case AD7148_PARTID:
+               ad714x->product = 0x7148;
                ad714x->version = data & 0xF;
-               dev_info(ad714x->dev, "found AD7142 captouch, rev:%d\n",
+               dev_info(ad714x->dev, "found AD7148 captouch, rev:%d\n",
                                ad714x->version);
                return 0;