From 79707beff7985fe843530d73b931cac9ce90f1bc Mon Sep 17 00:00:00 2001 From: zhengxing Date: Sat, 20 Oct 2012 15:18:19 +0800 Subject: [PATCH] m701 - tp: improve tp can't work when low power startup. --- arch/arm/mach-rk30/board-rk3066b-m701.c | 4 ++- drivers/input/touchscreen/ft5306_ts_av.c | 38 +++++++++++++++--------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/arch/arm/mach-rk30/board-rk3066b-m701.c b/arch/arm/mach-rk30/board-rk3066b-m701.c index f52c0bc1d31d..a07b5df42fec 100755 --- a/arch/arm/mach-rk30/board-rk3066b-m701.c +++ b/arch/arm/mach-rk30/board-rk3066b-m701.c @@ -158,7 +158,9 @@ static int ft5306_init_platform_hw(void) return -EIO; } - gpio_direction_output(TOUCH_RESET_PIN, 0); + gpio_direction_output(TOUCH_RESET_PIN, 1); + gpio_set_value(TOUCH_RESET_PIN,GPIO_HIGH); + mdelay(50); gpio_set_value(TOUCH_RESET_PIN,GPIO_LOW); mdelay(50); gpio_direction_input(TOUCH_INT_PIN); diff --git a/drivers/input/touchscreen/ft5306_ts_av.c b/drivers/input/touchscreen/ft5306_ts_av.c index 7b27bb249488..769efcbfe2f1 100644 --- a/drivers/input/touchscreen/ft5306_ts_av.c +++ b/drivers/input/touchscreen/ft5306_ts_av.c @@ -851,23 +851,33 @@ static int ft5306_probe(struct i2c_client *client ,const struct i2c_device_id * return -ENOMEM; } - while(retry < 5) - { - ret=ft5306_set_regs(client,FT5X0X_REG_PMODE, buf_test,1); - if(ret > 0)break; - retry++; - } - if(ret <= 0) - { - FTprintk("FT5306 I2C TEST ERROR!\n"); - err = -ENODEV; - goto exit_i2c_test_fail; - } + while(retry < 5) + { + ret = ft5306_set_regs(client,FT5X0X_REG_PMODE, buf_test, 1); + if(ret > 0) + break; + retry++; + + printk("FT5306 I2C TEST FAILED, retry = %d, ret = %d, will again...\n", retry, ret); + + if (pdata->exit_platform_hw) + pdata->exit_platform_hw(); + if (pdata->init_platform_hw) + pdata->init_platform_hw(); + } + printk("FT5306 I2C TEST OK, retry = %d, ret = %d\n", retry, ret); + + if(ret <= 0) + { + printk("FT5306 I2C TEST ERROR! retry = %d, ret = %d\n", retry, ret); + err = -ENODEV; + goto exit_i2c_test_fail; + } input_dev = input_allocate_device(); if (!input_dev) { err = -ENOMEM; - FTprintk("failed to allocate input device\n"); + printk("failed to allocate input device\n"); goto exit_input_dev_alloc_failed; } ft5x0x_ts->client = this_client = client; @@ -903,7 +913,7 @@ static int ft5306_probe(struct i2c_client *client ,const struct i2c_device_id * input_dev->name = "ft5x0x_ts-touchscreen"; //dev_name(&client->dev) err = input_register_device(input_dev); if (err) { - FTprintk("ft5306_ts_probe: failed to register input device: \n"); + printk("ft5306_ts_probe: failed to register input device: \n"); goto exit_input_register_device_failed; } -- 2.34.1