mfd: Add support for stmpe variant 610
authorViresh Kumar <viresh.kumar@st.com>
Thu, 17 Nov 2011 05:32:22 +0000 (11:02 +0530)
committerSamuel Ortiz <sameo@linux.intel.com>
Sun, 8 Jan 2012 23:37:43 +0000 (00:37 +0100)
STMPE610 is very much like STMPE811, except the number of gpio pins, which is 8
in 811 and 6 in 610. This patch adds support for variant 610. STMPE610 will
share most of the code with STMPE811.

Signed-off-by: Viresh Kumar <viresh.kumar@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/stmpe-i2c.c
drivers/mfd/stmpe-spi.c
drivers/mfd/stmpe.c
include/linux/mfd/stmpe.h

index 0a43659..b11d33b 100644 (file)
@@ -71,6 +71,7 @@ static int __devexit stmpe_i2c_remove(struct i2c_client *i2c)
 }
 
 static const struct i2c_device_id stmpe_i2c_id[] = {
+       { "stmpe610", STMPE610 },
        { "stmpe811", STMPE811 },
        { "stmpe1601", STMPE1601 },
        { "stmpe2401", STMPE2401 },
index 53efce4..46963a5 100644 (file)
@@ -109,6 +109,7 @@ static int __devexit stmpe_spi_remove(struct spi_device *spi)
 }
 
 static const struct spi_device_id stmpe_spi_id[] = {
+       { "stmpe610", STMPE610 },
        { "stmpe811", STMPE811 },
        { "stmpe1601", STMPE1601 },
        { "stmpe2401", STMPE2401 },
index 83bacde..67ff3dc 100644 (file)
@@ -321,7 +321,7 @@ static struct mfd_cell stmpe_keypad_cell = {
 };
 
 /*
- * Touchscreen (STMPE811)
+ * Touchscreen (STMPE811 or STMPE610)
  */
 
 static struct resource stmpe_ts_resources[] = {
@@ -346,7 +346,7 @@ static struct mfd_cell stmpe_ts_cell = {
 };
 
 /*
- * STMPE811
+ * STMPE811 or STMPE610
  */
 
 static const u8 stmpe811_regs[] = {
@@ -417,6 +417,21 @@ static struct stmpe_variant_info stmpe811 = {
        .get_altfunc    = stmpe811_get_altfunc,
 };
 
+/* Similar to 811, except number of gpios */
+static struct stmpe_variant_info stmpe610 = {
+       .name           = "stmpe610",
+       .id_val         = 0x0811,
+       .id_mask        = 0xffff,
+       .num_gpios      = 6,
+       .af_bits        = 1,
+       .regs           = stmpe811_regs,
+       .blocks         = stmpe811_blocks,
+       .num_blocks     = ARRAY_SIZE(stmpe811_blocks),
+       .num_irqs       = STMPE811_NR_INTERNAL_IRQS,
+       .enable         = stmpe811_enable,
+       .get_altfunc    = stmpe811_get_altfunc,
+};
+
 /*
  * STMPE1601
  */
@@ -651,6 +666,7 @@ static struct stmpe_variant_info stmpe2403 = {
 };
 
 static struct stmpe_variant_info *stmpe_variant_info[] = {
+       [STMPE610]      = &stmpe610,
        [STMPE811]      = &stmpe811,
        [STMPE1601]     = &stmpe1601,
        [STMPE2401]     = &stmpe2401,
index babc6b2..342005a 100644 (file)
@@ -20,6 +20,7 @@ enum stmpe_block {
 };
 
 enum stmpe_partnum {
+       STMPE610,
        STMPE811,
        STMPE1601,
        STMPE2401,