[ARM] tegra: Olympus: i2c board file updated for touch.
authorMakarand Karvekar <makarand.karvekar@motorola.com>
Thu, 20 May 2010 22:45:34 +0000 (17:45 -0500)
committerColin Cross <ccross@android.com>
Wed, 6 Oct 2010 23:32:58 +0000 (16:32 -0700)
Touch platform data updated for newer touch firmware and
new object elements.

Change-Id: Ib5b6d4d495e0f94c21fbb236ed0526a9819b1683
Signed-off-by: Makarand Karvekar <makarand.karvekar@motorola.com>
arch/arm/mach-tegra/board-olympus-i2c.c

index aadc11a3e952c82d0c64933f4366e57783dce603..50939e8ec3da66acab11b2803e9d92244d942c99 100644 (file)
 #include "board-olympus.h"
 #include "gpio-names.h"
 
+#define XMEGAT_BL_I2C_ADDR             0x24
 #define OLYMPUS_TOUCH_IRQ_GPIO TEGRA_GPIO_PF5
+#define OLYMPUS_TOUCH_RESET_GPIO TEGRA_GPIO_PF4
 #define OLYMPUS_COMPASS_IRQ_GPIO TEGRA_GPIO_PE2
 
-static int sholes_touch_reset(void)
+
+static int olympus_touch_reset(void)
 {
+       gpio_set_value(OLYMPUS_TOUCH_RESET_GPIO, 0);
+       msleep(10);
+       gpio_set_value(OLYMPUS_TOUCH_RESET_GPIO, 1);
+       msleep(100);
+
        return 0;
 }
 
@@ -82,83 +90,120 @@ static struct qtm_touch_keyarray_cfg sholes_key_array_data[] = {
        },
 };
 
-static struct qtouch_ts_platform_data sholes_ts_platform_data = {
-       .irqflags       = IRQF_TRIGGER_LOW,
+struct qtouch_ts_platform_data olympus_touch_data = {
+
        .flags          = (QTOUCH_SWAP_XY |
-                          QTOUCH_FLIP_X |
                           QTOUCH_USE_MULTITOUCH |
                           QTOUCH_CFG_BACKUPNV |
                           QTOUCH_EEPROM_CHECKSUM),
-       .abs_min_x      = 0,
-       .abs_max_x      = 1024,
-       .abs_min_y      = 0,
-       .abs_max_y      = 1024,
-       .abs_min_p      = 0,
-       .abs_max_p      = 255,
-       .abs_min_w      = 0,
-       .abs_max_w      = 15,
-       .x_delta        = 400,
-       .y_delta        = 250,
-       .nv_checksum    = 0xfaf5,
-       .fuzz_x         = 0,
-       .fuzz_y         = 0,
-       .fuzz_p         = 2,
-       .fuzz_w         = 2,
-       .hw_reset       = sholes_touch_reset,
+       .irqflags               = (IRQF_TRIGGER_LOW),
+       .abs_min_x              = 0,
+       .abs_max_x              = 1023,
+       .abs_min_y              = 0,
+       .abs_max_y              = 1023,
+       .abs_min_p              = 0,
+       .abs_max_p              = 255,
+       .abs_min_w              = 0,
+       .abs_max_w              = 15,
+       .x_delta                = 400,
+       .y_delta                = 250,
+       .nv_checksum            = 0xc240,
+       .fuzz_x                 = 0,
+       .fuzz_y                 = 0,
+       .fuzz_p                 = 2,
+       .fuzz_w                 = 2,
+       .boot_i2c_addr  = XMEGAT_BL_I2C_ADDR,
+       .hw_reset               = olympus_touch_reset,
+       .key_array = {
+               .cfg            = NULL,
+               .keys           = NULL,
+               .num_keys       = 0,
+       },
        .power_cfg      = {
                .idle_acq_int   = 0xff,
                .active_acq_int = 0xff,
                .active_idle_to = 0x01,
        },
        .acquire_cfg    = {
-               .charge_time    = 12,
-               .atouch_drift   = 5,
-               .touch_drift    = 20,
-               .drift_susp     = 20,
-               .touch_autocal  = 0x96,
+               .charge_time    = 0x06,
+               .atouch_drift   = 0x00,
+               .touch_drift    = 0x0a,
+               .drift_susp     = 0x05,
+               .touch_autocal  = 0x00,
                .sync           = 0,
+               .atch_cal_suspend_time  = 0,
+               .atch_cal_suspend_thres = 0,
        },
        .multi_touch_cfg        = {
                .ctrl           = 0x0b,
                .x_origin       = 0,
                .y_origin       = 0,
-               .x_size         = 19,
-               .y_size         = 11,
+               .x_size         = 0x13,
+               .y_size         = 0x0b,
                .aks_cfg        = 0,
-               .burst_len      = 0x40,
-               .tch_det_thr    = 0x12,
+               .burst_len      = 0x41,
+               .tch_det_thr    = 0x14,
                .tch_det_int    = 0x2,
-               .mov_hyst_init  = 0xe,
-               .mov_hyst_next  = 0xe,
-               .mov_filter     = 0x9,
-               .num_touch      = 2,
-               .merge_hyst     = 0,
-               .merge_thresh   = 3,
-               .amp_hyst = 2,
-                .x_res = 0x0000,
-                .y_res = 0x0000,
-                .x_low_clip = 0x00,
-                .x_high_clip = 0x00,
-                .y_low_clip = 0x00,
-                .y_high_clip = 0x00,
-       },
-    .linear_tbl_cfg = {
-                 .ctrl = 0x01,
-                 .x_offset = 0x0000,
-                 .x_segment = {
-                         0x48, 0x3f, 0x3c, 0x3E,
-                         0x3f, 0x3e, 0x3e, 0x3e,
-                         0x3f, 0x42, 0x41, 0x3f,
-                         0x41, 0x40, 0x41, 0x46
-                 },
-                 .y_offset = 0x0000,
-                 .y_segment = {
-                         0x44, 0x38, 0x37, 0x3e,
-                         0x3e, 0x41, 0x41, 0x3f,
-                         0x42, 0x41, 0x42, 0x42,
-                         0x41, 0x3f, 0x41, 0x45
-                 },
-         },
+               .orient         = 4,
+               .mrg_to         = 0x19,
+               .mov_hyst_init  = 0x05,
+               .mov_hyst_next  = 0x05,
+               .mov_filter     = 0,
+               .num_touch      = 0x02,
+               .merge_hyst     = 0x05,
+               .merge_thresh   = 0x05,
+               .amp_hyst       = 0,
+               .x_res          = 0x0000,
+               .y_res          = 0x0000,
+               .x_low_clip     = 0x00,
+               .x_high_clip    = 0x00,
+               .y_low_clip     = 0x00,
+               .y_high_clip    = 0x00,
+               .x_edge_ctrl    = 0,
+               .x_edge_dist    = 0,
+               .y_edge_ctrl    = 0,
+               .y_edge_dist    = 0,
+               .jump_limit     = 0,
+       },
+       .linear_tbl_cfg = {
+               .ctrl           = 0x00,
+               .x_offset       = 0x0000,
+               .x_segment = {
+                       0x00, 0x00, 0x00, 0x00,
+                       0x00, 0x00, 0x00, 0x00,
+                       0x00, 0x00, 0x00, 0x00,
+                       0x00, 0x00, 0x00, 0x00
+               },
+               .y_offset = 0x0000,
+               .y_segment = {
+                       0x00, 0x00, 0x00, 0x00,
+                       0x00, 0x00, 0x00, 0x00,
+                       0x00, 0x00, 0x00, 0x00,
+                       0x00, 0x00, 0x00, 0x00
+               },
+       },
+       .comms_config_cfg = {
+               .ctrl           = 0,
+               .command        = 0,
+       },
+       .gpio_pwm_cfg = {
+               .ctrl                   = 0,
+               .report_mask            = 0,
+               .pin_direction          = 0,
+               .internal_pullup        = 0,
+               .output_value           = 0,
+               .wake_on_change         = 0,
+               .pwm_enable             = 0,
+               .pwm_period             = 0,
+               .duty_cycle_0           = 0,
+               .duty_cycle_1           = 0,
+               .duty_cycle_2           = 0,
+               .duty_cycle_3           = 0,
+               .trigger_0              = 0,
+               .trigger_1              = 0,
+               .trigger_2              = 0,
+               .trigger_3              = 0,
+       },
        .grip_suppression_cfg = {
                .ctrl           = 0x00,
                .xlogrip        = 0x00,
@@ -166,33 +211,136 @@ static struct qtouch_ts_platform_data sholes_ts_platform_data = {
                .ylogrip        = 0x00,
                .yhigrip        = 0x00,
                .maxtchs        = 0x00,
-               .reserve0   = 0x00,
-               .szthr1 = 0x00,
-               .szthr2 = 0x00,
+               .reserve0       = 0x00,
+               .szthr1         = 0x00,
+               .szthr2         = 0x00,
                .shpthr1        = 0x00,
                .shpthr2        = 0x00,
+               .supextto       = 0x00,
        },
-       .noise1_suppression_cfg = {
-               .ctrl = 0x01,
-               .reserved = 0x01,
-               .atchthr = 0x64,
-               .duty_cycle = 0x08,
+       .noise_suppression_cfg = {
+               .ctrl                   = 0,
+               .outlier_filter_len     = 0,
+               .reserve0               = 0,
+               .gcaf_upper_limit       = 0,
+               .gcaf_lower_limit       = 0,
+               .gcaf_low_count         = 0,
+               .noise_threshold        = 0,
+               .reserve1               = 0,
+               .freq_hop_scale         = 0,
+               .burst_freq_0           = 0,
+               .burst_freq_1           = 0,
+               .burst_freq_2           = 0,
+               .burst_freq_3           = 0,
+               .burst_freq_4           = 0,
+               .idle_gcaf_valid        = 0,
+       },
+       .touch_proximity_cfg = {
+               .ctrl                   = 0,
+               .x_origin               = 0,
+               .y_origin               = 0,
+               .x_size                 = 0,
+               .y_size                 = 0,
+               .reserve0               = 0,
+               .blen                   = 0,
+               .tch_thresh             = 0,
+               .tch_detect_int         = 0,
+               .average                = 0,
+               .move_null_rate         = 0,
+               .move_det_tresh         = 0,
+       },
+       .one_touch_gesture_proc_cfg = {
+               .ctrl                   = 0,
+               .reserve0               = 0,
+               .gesture_enable         = 0,
+               .pres_proc              = 0,
+               .tap_time_out           = 0,
+               .flick_time_out         = 0,
+               .drag_time_out          = 0,
+               .short_press_time_out   = 0,
+               .long_press_time_out    = 0,
+               .repeat_press_time_out  = 0,
+               .flick_threshold        = 0,
+               .drag_threshold         = 0,
+               .tap_threshold          = 0,
+               .throw_threshold        = 0,
+       },
+       .self_test_cfg = {
+               .ctrl                   = 0,
+               .command                = 0,
+               .high_signal_limit_0    = 0,
+               .low_signal_limit_0     = 0,
+               .high_signal_limit_1    = 0,
+               .low_signal_limit_1     = 0,
+               .high_signal_limit_2    = 0,
+               .low_signal_limit_2     = 0,
+       },
+       .two_touch_gesture_proc_cfg = {
+               .ctrl                   = 0,
+               .reserved0              = 0,
+               .reserved1              = 0,
+               .gesture_enable         = 0,
+               .rotate_threshold       = 0,
+               .zoom_threshold         = 0,
        },
-       .key_array      = {
-               .cfg            = sholes_key_array_data,
-               .num_keys   = ARRAY_SIZE(sholes_key_array_data),
+       .cte_config_cfg = {
+               .ctrl                   = 1,
+               .command                = 0,
+               .mode                   = 3,
+               .idle_gcaf_depth        = 4,
+               .active_gcaf_depth      = 8,
+               .voltage                = 0,
+       },
+       .noise1_suppression_cfg = {
+               .ctrl           = 0x01,
+               .version        = 0x01,
+               .atch_thr       = 0x64,
+               .duty_cycle     = 0x08,
+               .drift_thr      = 0x00,
+               .clamp_thr      = 0x00,
+               .diff_thr       = 0x00,
+               .adjustment     = 0x00,
+               .average        = 0x0000,
+               .temp           = 0x00,
+               .offset = {
+                       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, 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, 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, 0x00, 0x00, 0x00
+               },
+               .bad_chan = {
+                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                       0x00, 0x00, 0x00
+               },
+               .x_short        = 0x00,
        },
        .vkeys                  = {
-               .keys           = sholes_touch_vkeys,
-               .count          = ARRAY_SIZE(sholes_touch_vkeys),
-               .start          = 961,
+               .count          = 0,
+               .keys           = NULL,
        },
 };
 
 static struct i2c_board_info __initdata sholes_i2c_bus1_board_info[] = {
        {
                I2C_BOARD_INFO(QTOUCH_TS_NAME, 0x4a),
-               .platform_data = &sholes_ts_platform_data,
+               .platform_data = &olympus_touch_data,
                .irq = TEGRA_GPIO_TO_IRQ(OLYMPUS_TOUCH_IRQ_GPIO),
        },
 };
@@ -210,6 +358,11 @@ void __init olympus_i2c_init(void)
        gpio_request(OLYMPUS_TOUCH_IRQ_GPIO, "touch_irq");
        gpio_direction_input(OLYMPUS_TOUCH_IRQ_GPIO);
 
+       tegra_gpio_enable(OLYMPUS_TOUCH_RESET_GPIO);
+       gpio_request(OLYMPUS_TOUCH_RESET_GPIO, "touch_reset");
+       gpio_direction_output(OLYMPUS_TOUCH_RESET_GPIO, 1);
+
+
        i2c_register_board_info(0, sholes_i2c_bus1_board_info, 1);
 
        i2c_register_board_info(3, olympus_i2c_bus4_board_info, 1);