From 0201b92726eac509cf933a68ecfc30ac6842de1b Mon Sep 17 00:00:00 2001 From: hhb <hhb@rock-chips.com> Date: Wed, 30 Mar 2011 21:13:46 +0800 Subject: [PATCH] rk29_phone:fix touch screen driver --- arch/arm/mach-rk29/board-rk29-phonesdk.c | 21 +++++++++++++-------- drivers/input/touchscreen/gt801_ts.c | 19 ++++++++----------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/arch/arm/mach-rk29/board-rk29-phonesdk.c b/arch/arm/mach-rk29/board-rk29-phonesdk.c index 4a4317eeb8ea..e1502c77c731 100644 --- a/arch/arm/mach-rk29/board-rk29-phonesdk.c +++ b/arch/arm/mach-rk29/board-rk29-phonesdk.c @@ -391,7 +391,7 @@ static struct gt801_platform_data gt801_info = { .y_min = 0, .y_max = 800, .gpio_reset = GT801_GPIO_RESET, - .gpio_reset_active_low = 1, + .gpio_reset_active_low = 0, .gpio_pendown = GT801_GPIO_INT, .pendown_iomux_name = GPIO4D5_CPUTRACECTL_NAME, .resetpin_iomux_name = NULL, @@ -1348,13 +1348,13 @@ struct wm8994_pdata wm8994_platdata = { .ldo = { { .enable = 0, - //TCA6424_P11 - .supply = "wm8994-ldo1", + //RK29_PIN5_PA1 + .supply = NULL, .init_data = ®ulator_init_data_ldo1, }, { .enable = 0, - .supply = "wm8994-ldo2", + .supply = NULL, .init_data = ®ulator_init_data_ldo2, } }, @@ -1433,7 +1433,7 @@ struct rk29_i2c_platform_data default_i2c2_data = { .bus_num = 2, .flags = 0, .slave_addr = 0xff, - .scl_rate = 400*1000, + .scl_rate = 200*1000, .mode = I2C_MODE_IRQ, .io_init = rk29_i2c2_io_init, }; @@ -1473,7 +1473,7 @@ static struct i2c_board_info __initdata board_i2c0_devices[] = { #if defined (CONFIG_SND_SOC_WM8994) { .type = "wm8994", - .addr = 0x34, + .addr = 0x1a, .flags = 0, .platform_data = &wm8994_platdata, }, @@ -1562,7 +1562,7 @@ static struct i2c_board_info __initdata board_i2c2_devices[] = { #if defined (CONFIG_TOUCHSCREEN_GT801_IIC) { .type = "gt801_ts", - .addr = 0xAA, + .addr = 0x55, .flags = 0, .irq = RK29_PIN4_PD5, .platform_data = >801_info, @@ -2836,7 +2836,7 @@ static struct spi_board_info board_spi_devices[] = { { .modalias = "wm8310", .chip_select = 1, - .max_speed_hz = 2*1000*1000, + .max_speed_hz = 1*1000*1000, .bus_num = 1, .irq = RK29_PIN4_PD0, .platform_data = &wm831x_platdata, @@ -2875,6 +2875,11 @@ static void __init machine_rk29_board_init(void) gpio_direction_output(POWER_ON_PIN, GPIO_HIGH); pm_power_off = rk29_pm_power_off; +// codec + gpio_request(RK29_PIN5_PA1, NULL); + gpio_direction_output(RK29_PIN5_PA1,GPIO_HIGH); + gpio_free(RK29_PIN5_PA1); + #ifdef CONFIG_WIFI_CONTROL_FUNC rk29sdk_wifi_bt_gpio_control_init(); #endif diff --git a/drivers/input/touchscreen/gt801_ts.c b/drivers/input/touchscreen/gt801_ts.c index d7a46b25fc71..c40fe26a50e2 100755 --- a/drivers/input/touchscreen/gt801_ts.c +++ b/drivers/input/touchscreen/gt801_ts.c @@ -43,7 +43,7 @@ #define TOUCH_NUMBER 2 #endif -#define TOUCH_REG_NUM 5 //ÿ×é×ø±êÐèÒªµÄ¼Ä´æÆ÷ÊýÄ¿ +#define TOUCH_REG_NUM 5 //ÿ�������Ҫ�ļĴ�����Ŀ const unsigned char GT801_RegData[GT801_REGS_NUM]={ 0x19,0x05,0x06,0x28,0x02,0x14,0x14,0x10,0x40,0xB0,0x01,0xE0,0x03,0x4C,0x78,0x9A,0xBC,0xDE,0x65,0x43,0x20,0x11,0x00,0x00,0x00,0x00,0x05,0xCF,0x20,0x0B,0x0D,0x8D,0x32,0x3C,0x1E,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01 @@ -109,6 +109,7 @@ static int gt801_read_regs(struct i2c_client *client, u8 reg, u8 buf[], unsigned static int gt801_write_regs(struct i2c_client *client, u8 reg, u8 const buf[], unsigned short len) { int ret; + int i = len; ret = i2c_master_reg8_send(client,reg, buf, len, 200*1000); if (ret < 0) { printk("gt801_ts_work_func:i2c_transfer fail =%d\n",ret); @@ -205,13 +206,14 @@ static void gt801_ts_work_func(struct work_struct *work) } else{ x = ((( ((unsigned short)buf[i+ptxh] )<< 8) ) | buf[i+ptxl]); - y= (((((unsigned short)buf[i+ptyh] )<< 8) )| buf[i+ptyl]); - + y = (((((unsigned short)buf[i+ptyh] )<< 8) )| buf[i+ptyl]); + x = 480-x; + y = 800-y; if (ts->swap_xy) swap(x, y); if (verify_coord(ts,&x,&y)) - ;//goto out; + ;//goto out; gt801printk("input_report_abs--%d-%d-(%d/%d)\n", i,touch_state_index, x, y); input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, 1); //Finger Size @@ -284,8 +286,6 @@ static int __devinit setup_resetPin(struct i2c_client *client, struct gt801_ts_d return err; } - gpio_set_value(ts->gpio_reset, ts->gpio_reset_active_low? GPIO_LOW:GPIO_HIGH); - err = gpio_direction_output(ts->gpio_reset, ts->gpio_reset_active_low? GPIO_LOW:GPIO_HIGH); if (err) { dev_err(&client->dev, "failed to pulldown resetPin GPIO%d,err%d\n", @@ -293,13 +293,10 @@ static int __devinit setup_resetPin(struct i2c_client *client, struct gt801_ts_d gpio_free(ts->gpio_reset); return err; } - - mdelay(100); - + mdelay(100); gpio_set_value(ts->gpio_reset, ts->gpio_reset_active_low? GPIO_HIGH:GPIO_LOW); - mdelay(100); - + return 0; } static int __devinit setup_pendown(struct i2c_client *client, struct gt801_ts_data *ts) -- 2.34.1