Input: touch: atmel_mxt_ts, board files for new Atmel touch driver.
Robert Collins [Tue, 11 Sep 2012 21:11:28 +0000 (14:11 -0700)]
Change-Id: I2e31fecd8ef76c6543a85b3f595a3e18245a4645
Signed-off-by: Robert Collins <rcollins@nvidia.com>
Reviewed-on: http://git-master/r/131491
Reviewed-by: Simone Willett <swillett@nvidia.com>
Tested-by: Simone Willett <swillett@nvidia.com>

arch/arm/mach-tegra/board-cardhu.c
arch/arm/mach-tegra/board-enterprise.c
arch/arm/mach-tegra/board-ventana.c
include/linux/i2c/atmel_mxt_ts.h

index ee83814..8e09c5e 100644 (file)
@@ -759,125 +759,32 @@ static struct platform_device *cardhu_devices[] __initdata = {
 #endif
 };
 
-#define E1506_MXT_CONFIG_CRC 0x62F903
-static const u8 e1506_config[] = {
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0xFF, 0xFF, 0x32, 0x0A, 0x00, 0x05, 0x01, 0x00,
-       0x00, 0x1E, 0x0A, 0x8B, 0x00, 0x00, 0x13, 0x0B,
-       0x00, 0x10, 0x32, 0x03, 0x03, 0x00, 0x03, 0x01,
-       0x00, 0x0A, 0x0A, 0x0A, 0x0A, 0xBF, 0x03, 0x1B,
-       0x02, 0x00, 0x00, 0x37, 0x37, 0x00, 0x00, 0x00,
-       0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0xA9, 0x7F, 0x9A, 0x0E, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x03, 0x23, 0x00, 0x00, 0x00, 0x0A,
-       0x0F, 0x14, 0x19, 0x03, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x08, 0x10,
-       0x00
-};
-
-#define MXT_CONFIG_CRC  0xD62DE8
-static const u8 config[] = {
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0xFF, 0xFF, 0x32, 0x0A, 0x00, 0x14, 0x14, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00,
-       0x1B, 0x2A, 0x00, 0x20, 0x3C, 0x04, 0x05, 0x00,
-       0x02, 0x01, 0x00, 0x0A, 0x0A, 0x0A, 0x0A, 0xFF,
-       0x02, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x64, 0x02, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23,
-       0x00, 0x00, 0x00, 0x05, 0x0A, 0x15, 0x1E, 0x00,
-       0x00, 0x04, 0xFF, 0x03, 0x3F, 0x64, 0x64, 0x01,
-       0x0A, 0x14, 0x28, 0x4B, 0x00, 0x02, 0x00, 0x64,
-       0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x08, 0x10, 0x3C, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
+static u8 read_chg(void)
+{
+       return gpio_get_value(TEGRA_GPIO_PH4);
+}
 
-#define MXT_CONFIG_CRC_SKU2000  0xA24D9A
-static const u8 config_sku2000[] = {
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0xFF, 0xFF, 0x32, 0x0A, 0x00, 0x14, 0x14, 0x19,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00,
-       0x1B, 0x2A, 0x00, 0x20, 0x3A, 0x04, 0x05, 0x00,  //23=thr  2 di
-       0x04, 0x04, 0x41, 0x0A, 0x0A, 0x0A, 0x0A, 0xFF,
-       0x02, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,  //0A=limit
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23,
-       0x00, 0x00, 0x00, 0x05, 0x0A, 0x15, 0x1E, 0x00,
-       0x00, 0x04, 0x00, 0x03, 0x3F, 0x64, 0x64, 0x01,
-       0x0A, 0x14, 0x28, 0x4B, 0x00, 0x02, 0x00, 0x64,
-       0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x08, 0x10, 0x3C, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
+#define MXT_CFG_NAME            "Android_Cardhu_2012-01-31.cfg"
 
 static struct mxt_platform_data atmel_mxt_info = {
-       .x_line         = 27,
-       .y_line         = 42,
-       .x_size         = 768,
-       .y_size         = 1366,
-       .blen           = 0x20,
-       .threshold      = 0x3C,
-       .voltage        = 3300000,              /* 3.3V */
-       .orient         = 5,
-       .config         = config,
-       .config_length  = 157,
-       .config_crc     = MXT_CONFIG_CRC,
        .irqflags       = IRQF_TRIGGER_FALLING,
-/*     .read_chg       = &read_chg, */
-       .read_chg       = NULL,
-};
-
-static struct mxt_platform_data e1506_atmel_mxt_info = {
-       .x_line         = 19,
-       .y_line         = 11,
-       .x_size         = 960,
-       .y_size         = 540,
-       .blen           = 0x10,
-       .threshold      = 0x32,
-       .voltage        = 3300000,              /* 3.3V */
-       .orient         = 3,
-       .config         = e1506_config,
-       .config_length  = 168,
-       .config_crc     = E1506_MXT_CONFIG_CRC,
-       .irqflags       = IRQF_TRIGGER_FALLING,
-/*     .read_chg       = &read_chg, */
-       .read_chg       = NULL,
+       .read_chg       = &read_chg,
+       .mxt_cfg_name   = MXT_CFG_NAME,
 };
 
 static struct i2c_board_info __initdata atmel_i2c_info[] = {
        {
-               I2C_BOARD_INFO("atmel_mxt_ts", 0x5A),
+               I2C_BOARD_INFO("atmel_mxt_ts", MXT1386_I2C_ADDR3),
+               .flags = I2C_CLIENT_WAKE,
                .platform_data = &atmel_mxt_info,
        }
 };
 
 static struct i2c_board_info __initdata e1506_atmel_i2c_info[] = {
        {
-               I2C_BOARD_INFO("atmel_mxt_ts", 0x4A),
-               .platform_data = &e1506_atmel_mxt_info,
+               I2C_BOARD_INFO("atmel_mxt_ts", MXT224_I2C_ADDR1),
+               .flags = I2C_CLIENT_WAKE,
+               .platform_data = &atmel_mxt_info,
        }
 };
 
@@ -957,12 +864,16 @@ static int __init cardhu_touch_init(void)
                gpio_set_value(TEGRA_GPIO_PH6, 1);
                msleep(100);
 
-               if ((BoardInfo.sku & SKU_TOUCH_MASK) == SKU_TOUCH_2000) {
-                       atmel_mxt_info.config = config_sku2000;
-                       atmel_mxt_info.config_crc = MXT_CONFIG_CRC_SKU2000;
-               }
+               tegra_get_board_info(&BoardInfo);
+               if ((BoardInfo.sku & SKU_TOUCH_MASK) == SKU_TOUCH_2000)
+                       strncpy(atmel_mxt_info.mxt_cfg_name,
+                               "Android_Cardhu_SKU2000_2012-01-31.cfg",
+                               CFG_NAME_SIZE);
 
                if (DisplayBoardInfo.board_id == BOARD_DISPLAY_E1506) {
+                       strncpy(atmel_mxt_info.mxt_cfg_name,
+                       "Android_Cardhu_Verbier_E1506_2012-06-06.cfg",
+                       CFG_NAME_SIZE);
                        e1506_atmel_i2c_info[0].irq = gpio_to_irq(TEGRA_GPIO_PH4);
                        i2c_register_board_info(1, e1506_atmel_i2c_info, 1);
                } else {
index e999dff..a7f423e 100644 (file)
@@ -695,69 +695,22 @@ static struct platform_device *enterprise_devices[] __initdata = {
 #endif
 };
 
-#define MXT_CONFIG_CRC 0x62F903
-/*
- * Config converted from memory-mapped cfg-file with
- * following version information:
- *
- *
- *
- *      FAMILY_ID=128
- *      VARIANT=1
- *      VERSION=32
- *      BUILD=170
- *      VENDOR_ID=255
- *      PRODUCT_ID=TBD
- *      CHECKSUM=0xC189B6
- *
- *
- */
-
-static const u8 config[] = {
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0xFF, 0xFF, 0x32, 0x0A, 0x00, 0x05, 0x01, 0x00,
-        0x00, 0x1E, 0x0A, 0x8B, 0x00, 0x00, 0x13, 0x0B,
-        0x00, 0x10, 0x32, 0x03, 0x03, 0x00, 0x03, 0x01,
-        0x00, 0x0A, 0x0A, 0x0A, 0x0A, 0xBF, 0x03, 0x1B,
-        0x02, 0x00, 0x00, 0x37, 0x37, 0x00, 0x00, 0x00,
-        0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0xA9, 0x7F, 0x9A, 0x0E, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x03, 0x23, 0x00, 0x00, 0x00, 0x0A,
-        0x0F, 0x14, 0x19, 0x03, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x08, 0x10,
-        0x00
-};
+#define MXT_CFG_NAME            "Android_Enterprise_2012-01-31.cfg"
+static u8 read_chg(void)
+{
+       return gpio_get_value(TEGRA_GPIO_PH6);
+}
 
 static struct mxt_platform_data atmel_mxt_info = {
-        .x_line         = 19,
-        .y_line         = 11,
-        .x_size         = 960,
-        .y_size         = 540,
-        .blen           = 0x10,
-        .threshold      = 0x32,
-        .voltage        = 3300000,              /* 3.3V */
-        .orient         = 3,
-        .config         = config,
-        .config_length  = 168,
-        .config_crc     = MXT_CONFIG_CRC,
-        .irqflags       = IRQF_TRIGGER_FALLING,
-/*      .read_chg       = &read_chg, */
-        .read_chg       = NULL,
+       .irqflags       = IRQF_TRIGGER_FALLING,
+       .read_chg       = &read_chg,
+       .mxt_cfg_name   = MXT_CFG_NAME,
 };
 
 static struct i2c_board_info __initdata atmel_i2c_info[] = {
        {
                I2C_BOARD_INFO("atmel_mxt_ts", MXT224_I2C_ADDR1),
+               .flags = I2C_CLIENT_WAKE,
                .platform_data = &atmel_mxt_info,
        }
 };
index 8461b12..689e9e3 100644 (file)
@@ -408,21 +408,21 @@ static struct platform_device *ventana_devices[] __initdata = {
 };
 
 
+#define MXT_CFG_NAME            "Android_Ventana_2012-01-31.cfg"
+static u8 read_chg(void)
+{
+       return gpio_get_value(TEGRA_GPIO_PH4);
+}
+
 static struct mxt_platform_data atmel_mxt_info = {
-       .x_line         = 27,
-       .y_line         = 42,
-       .x_size         = 768,
-       .y_size         = 1366,
-       .blen           = 0x20,
-       .threshold      = 0x3C,
-       .voltage        = 3300000,
-       .orient         = MXT_ROTATED_90,
-       .irqflags       = IRQF_TRIGGER_FALLING,
+       .irqflags       = IRQF_TRIGGER_FALLING,
+       .read_chg       = &read_chg,
+       .mxt_cfg_name   = MXT_CFG_NAME,
 };
 
 static struct i2c_board_info __initdata i2c_info[] = {
        {
-        I2C_BOARD_INFO("atmel_mxt_ts", 0x5A),
+        I2C_BOARD_INFO("atmel_mxt_ts", MXT1386_I2C_ADDR3),
         .platform_data = &atmel_mxt_info,
         },
 };
index c3938b9..c4704f6 100644 (file)
 
 #include <linux/types.h>
 
+#define MXT224_I2C_ADDR1        0x4A
+#define MXT224_I2C_ADDR2        0x4B
+#define MXT1386_I2C_ADDR1       0x4C
+#define MXT1386_I2C_ADDR2       0x4D
+#define MXT1386_I2C_ADDR3       0x5A
+#define MXT1386_I2C_ADDR4       0x5B
+
 /* Orient */
 #define MXT_NORMAL             0x0
 #define MXT_DIAGONAL           0x1