From: 蔡枫 Date: Sat, 25 Jun 2011 14:42:23 +0000 (+0800) Subject: fix tp and codec bug in newton board X-Git-Tag: firefly_0821_release~10170 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=184fcf661515771bc5fc9e4209ee46693195e0d5;p=firefly-linux-kernel-4.4.55.git fix tp and codec bug in newton board --- diff --git a/arch/arm/configs/rk29_newton_defconfig b/arch/arm/configs/rk29_newton_defconfig index ef33ff53ffab..d98afca37bab 100644 --- a/arch/arm/configs/rk29_newton_defconfig +++ b/arch/arm/configs/rk29_newton_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.32.27 -# Fri Jun 24 22:35:28 2011 +# Sat Jun 25 21:45:29 2011 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -196,13 +196,14 @@ CONFIG_MMU=y CONFIG_ARCH_RK29=y CONFIG_WIFI_CONTROL_FUNC=y # CONFIG_MACH_RK29SDK is not set -CONFIG_MACH_RK29SDK_DDR3=y +# CONFIG_MACH_RK29SDK_DDR3 is not set # CONFIG_MACH_RK29WINACCORD is not set # CONFIG_MACH_RK29FIH is not set # CONFIG_MACH_RK29_MALATA is not set # CONFIG_MACH_RK29_PHONESDK is not set # CONFIG_MACH_RK29_A22 is not set # CONFIG_MACH_RK29_PHONEPADSDK is not set +CONFIG_MACH_RK29_newton=y # CONFIG_DDR_TYPE_DDRII is not set # CONFIG_DDR_TYPE_LPDDR is not set # CONFIG_DDR_TYPE_DDR3_800D is not set @@ -900,7 +901,10 @@ CONFIG_INPUT_MISC=y CONFIG_INPUT_UINPUT=y # CONFIG_INPUT_GPIO is not set # CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set -# CONFIG_MAG_SENSORS is not set +CONFIG_MAG_SENSORS=y +CONFIG_COMPASS_AK8975=y +# CONFIG_COMPASS_AK8973 is not set +# CONFIG_COMPASS_MMC328X is not set CONFIG_G_SENSOR_DEVICE=y # CONFIG_GS_MMA7660 is not set CONFIG_GS_MMA8452=y @@ -1154,13 +1158,11 @@ CONFIG_SOC_CAMERA=y # CONFIG_SOC_CAMERA_OV772X is not set # CONFIG_SOC_CAMERA_OV7675 is not set # CONFIG_SOC_CAMERA_OV2655 is not set -CONFIG_SOC_CAMERA_OV2659=y -# CONFIG_SOC_CAMERA_OV9650 is not set +# CONFIG_SOC_CAMERA_OV2659 is not set +CONFIG_SOC_CAMERA_OV9650=y # CONFIG_SOC_CAMERA_OV2640 is not set # CONFIG_SOC_CAMERA_OV3640 is not set -CONFIG_SOC_CAMERA_OV5642=y -CONFIG_OV5642_AUTOFOCUS=y -# CONFIG_OV5642_FIXEDFOCUS is not set +# CONFIG_SOC_CAMERA_OV5642 is not set # CONFIG_SOC_CAMERA_OV5640 is not set # CONFIG_SOC_CAMERA_S5K6AA is not set # CONFIG_SOC_CAMERA_GT2005 is not set diff --git a/arch/arm/mach-rk29/Kconfig b/arch/arm/mach-rk29/Kconfig old mode 100644 new mode 100755 index 248bdb3e0a0c..3ebe36311d86 --- a/arch/arm/mach-rk29/Kconfig +++ b/arch/arm/mach-rk29/Kconfig @@ -53,6 +53,11 @@ config MACH_RK29_PHONEPADSDK help Support for the ROCKCHIP Board For Rk29 Phone Pad Sdk. +config MACH_RK29_newton + depends on ARCH_RK29 + bool "ROCKCHIP Board Rk29 For project newton" + help + Support for the ROCKCHIP Board For project newton. endchoice choice DDR_TYPE diff --git a/arch/arm/mach-rk29/Makefile b/arch/arm/mach-rk29/Makefile old mode 100644 new mode 100755 index de1f7a67de24..46309ddb0002 --- a/arch/arm/mach-rk29/Makefile +++ b/arch/arm/mach-rk29/Makefile @@ -19,3 +19,5 @@ obj-$(CONFIG_MACH_RK29_PHONESDK) += board-rk29-phonesdk.o board-rk29-phonesdk-ke obj-$(CONFIG_MACH_RK29FIH) += board-rk29-fih.o board-rk29-fih-key.o board-rk29sdk-rfkill.o board-rk29sdk-power.o obj-$(CONFIG_MACH_RK29_A22) += board-rk29-a22.o board-rk29-a22-key.o board-rk29-a22-rfkill.o obj-$(CONFIG_MACH_RK29_PHONEPADSDK) += board-rk29phonepadsdk.o board-rk29phonepadsdk-key.o board-rk29phonepadsdk-rfkill.o board-rk29phonepadsdk-power.o +obj-$(CONFIG_MACH_RK29_newton) += board-rk29-newton.o board-rk29sdk-key.o board-rk29sdk-rfkill.o board-rk29sdk-power.o + diff --git a/arch/arm/mach-rk29/board-rk29-newton.c b/arch/arm/mach-rk29/board-rk29-newton.c index 1147594f2460..18277814e336 100755 --- a/arch/arm/mach-rk29/board-rk29-newton.c +++ b/arch/arm/mach-rk29/board-rk29-newton.c @@ -528,7 +528,25 @@ struct ft5406_platform_data ft5406_info = { }; #endif +#if defined (CONFIG_SND_SOC_CS42L52) +void cs42l52_init_platform_hw() +{ + printk("cs42l52_init_platform_hw\n"); + if(gpio_request(RK29_PIN6_PB6,NULL) != 0){ + gpio_free(RK29_PIN6_PB6); + printk("cs42l52_init_platform_hw gpio_request error\n"); + return; + } + gpio_direction_output(RK29_PIN6_PB6, 0); + gpio_set_value(RK29_PIN6_PB6,GPIO_HIGH); +} +struct cs42l52_platform_data cs42l52_info = { + + .init_platform_hw= cs42l52_init_platform_hw, + +}; +#endif /*MMA8452 gsensor*/ #if defined (CONFIG_GS_MMA8452) @@ -744,6 +762,7 @@ static struct i2c_board_info __initdata board_i2c0_devices[] = { .type = "cs42l52", .addr = 0x4A, .flags = 0, + .platform_data = &cs42l52_info, }, #endif #if defined (CONFIG_BATTERY_STC3100) @@ -770,12 +789,12 @@ static struct i2c_board_info __initdata board_i2c0_devices[] = { }, #endif #if defined (CONFIG_RTC_M41T66) -{ -.type = "rtc-M41T62", -.addr = 0xd0>>1, -.flags = 0, -.irq = RK29_PIN0_PA1, -}, + { + .type = "rtc-M41T62", + .addr = 0xd0>>1, + .flags = 0, + .irq = RK29_PIN0_PA1, + }, #endif #if defined (CONFIG_GS_MMA8452) { diff --git a/arch/arm/mach-rk29/include/mach/board.h b/arch/arm/mach-rk29/include/mach/board.h index 02230c5d60ec..7f66850eb05d 100755 --- a/arch/arm/mach-rk29/include/mach/board.h +++ b/arch/arm/mach-rk29/include/mach/board.h @@ -222,6 +222,15 @@ struct ft5406_platform_data { void (*exit_platform_hw)(void); }; +struct cs42l52_platform_data { + int (*get_pendown_state)(void); + int (*init_platform_hw)(void); + int (*platform_sleep)(void); + int (*platform_wakeup)(void); + void (*exit_platform_hw)(void); +}; + + struct akm8975_platform_data { char layouts[3][3]; char project_name[64]; diff --git a/drivers/input/touchscreen/ft5406_ts.c b/drivers/input/touchscreen/ft5406_ts.c index d10b744e90f8..3ac24cd313f2 100755 --- a/drivers/input/touchscreen/ft5406_ts.c +++ b/drivers/input/touchscreen/ft5406_ts.c @@ -88,40 +88,7 @@ static struct i2c_client *this_client; -#define CONFIG_FT5X0X_MULTITOUCH 1 - -#define CONFIG_TOUCH_PANEL_KEY 1 //harry 2011.03.15 - -#define M8_TP_KEY 0 // 1 - - -#if 0// M8_TP_KEY -#define HOME_KEY_MIN 260 -#define HOME_KEY_MAX 330 - -#define MENU_KEY_MIN 380 -#define MENU_KEY_MAX 460 - -#define BACK_KEY_MIN 130 -#define BACK_KEY_MAX 210 - -#else -#define HOME_KEY_MIN 115 -#define HOME_KEY_MAX 185 - -#define MENU_KEY_MIN 215 -#define MENU_KEY_MAX 295 - -#define BACK_KEY_MIN 10 -#define BACK_KEY_MAX 85 - - -#endif -#define CONFIG_TOUCH_PANEL_LED 1 - #if CONFIG_TOUCH_PANEL_LED -#define RK29SDK_PANEL_LED_GPIO_SITCH RK29_PIN6_PB4 - #endif - +#define CONFIG_FT5X0X_MULTITOUCH 0 #define TOUCH_RESET_PIN RK29_PIN6_PC3 struct ts_event { @@ -452,12 +419,6 @@ static void ft5x0x_report_value(struct ft5x0x_ts_data *data ) //struct ft5x0x_ts_data *data = i2c_get_clientdata(&ft5x0x_client); struct ts_event *event = &data->event; - #if CONFIG_TOUCH_PANEL_KEY - u8 key_flag=0; - // static u16 point_data=0; - #endif - - #if CONFIG_FT5X0X_MULTITOUCH //#ifdef switch(event->touch_point) { if (MAX_POINT == 5){ @@ -508,92 +469,6 @@ static void ft5x0x_report_value(struct ft5x0x_ts_data *data ) } // printk("===x2 = %d,y2 = %d ====\n",event->x2,event->y2); case 1: -#if CONFIG_TOUCH_PANEL_KEY - if(event->status==0) - { - key_flag=1; - } - - if(event->x1 >1024) - { - // printk("point 1 key1\n"); - // printk("===x1 = %d,y1 = %d ====\n",event->x1,event->y1); - if(key_flag) - { - if((event->y1>BACK_KEY_MIN)&&(event->y1input_dev,KEY_BACK,1); //158 //MENU - input_sync(data->input_dev); - input_report_key(data->input_dev,KEY_BACK,0); //158 //MENU - input_sync(data->input_dev); -#if CONFIG_TOUCH_PANEL_LED //#ifdef - // if(gpio_request(RK29SDK_PANEL_LED_GPIO_SITCH,NULL) != 0){ - // gpio_free(RK29SDK_PANEL_LED_GPIO_SITCH); - // printk("panel Key LED error\n"); - // return -EIO; - // } - gpio_direction_output(RK29SDK_PANEL_LED_GPIO_SITCH, 0); - gpio_set_value(RK29SDK_PANEL_LED_GPIO_SITCH,GPIO_HIGH); -#endif - // printk("point 1 key2\n"); - } - else if((event->y1>HOME_KEY_MIN)&&(event->y1input_dev,KEY_HOME,1); //102 //Home - input_sync(data->input_dev); - input_report_key(data->input_dev,KEY_HOME,0); //102 //Home - input_sync(data->input_dev); -#if CONFIG_TOUCH_PANEL_LED // #ifdef - // if(gpio_request(RK29SDK_PANEL_LED_GPIO_SITCH,NULL) != 0){ - // gpio_free(RK29SDK_PANEL_LED_GPIO_SITCH); - // printk("panel Key LED error\n"); - // return -EIO; - // } - gpio_direction_output(RK29SDK_PANEL_LED_GPIO_SITCH, 0); - gpio_set_value(RK29SDK_PANEL_LED_GPIO_SITCH,GPIO_HIGH); -#endif - // printk("point 1 key3\n"); - } - else if((event->y1>MENU_KEY_MIN)&&(event->y1input_dev,KEY_MENU,1); //59 //esc - input_sync(data->input_dev); - input_report_key(data->input_dev,KEY_MENU,0); //59 //esc - input_sync(data->input_dev); -#if CONFIG_TOUCH_PANEL_LED // #ifdef - // if(gpio_request(RK29SDK_PANEL_LED_GPIO_SITCH,NULL) != 0){ - // gpio_free(RK29SDK_PANEL_LED_GPIO_SITCH); - // printk("panel Key LED error\n"); - // return -EIO; - // } - gpio_direction_output(RK29SDK_PANEL_LED_GPIO_SITCH, 0); - gpio_set_value(RK29SDK_PANEL_LED_GPIO_SITCH,GPIO_HIGH); -#endif - // printk("point 1 key4\n"); - } - else - { - ft5x0x_ts_release(data); - } - - } - else - { - ft5x0x_ts_release(data); - } - - } - else - { - input_report_abs(data->input_dev, ABS_MT_TRACKING_ID, event->touch_ID1); - input_report_abs(data->input_dev, ABS_MT_TOUCH_MAJOR, event->pressure); - input_report_abs(data->input_dev, ABS_MT_POSITION_X, event->x1); - input_report_abs(data->input_dev, ABS_MT_POSITION_Y, event->y1); - input_report_abs(data->input_dev, ABS_MT_WIDTH_MAJOR, 1); - input_mt_sync(data->input_dev); - // printk("===x1 = %d,y1 = %d ====\n",event->x1,event->y1); - } -#else input_report_abs(data->input_dev, ABS_MT_TRACKING_ID, event->touch_ID1); input_report_abs(data->input_dev, ABS_MT_TOUCH_MAJOR, event->pressure); input_report_abs(data->input_dev, ABS_MT_POSITION_X, event->x1); @@ -601,7 +476,6 @@ static void ft5x0x_report_value(struct ft5x0x_ts_data *data ) input_report_abs(data->input_dev, ABS_MT_WIDTH_MAJOR, 1); input_mt_sync(data->input_dev); // printk("===x1 = %d,y1 = %d ====\n",event->x1,event->y1); -#endif default: // printk("==touch_point default =\n"); // printk("read status0= %d\n",event->status); @@ -609,17 +483,15 @@ static void ft5x0x_report_value(struct ft5x0x_ts_data *data ) // printk("point 0 release!\n"); // ft5x0x_ts_release(data); // } -#if CONFIG_TOUCH_PANEL_KEY - key_flag=0; -#endif break; } #else /* CONFIG_FT5X0X_MULTITOUCH*/ - if (event->touch_point == 1) { + //if (event->touch_point == 1) { input_report_abs(data->input_dev, ABS_X, event->x1); input_report_abs(data->input_dev, ABS_Y, event->y1); input_report_abs(data->input_dev, ABS_PRESSURE, event->pressure); - } + //} + //printk("x = %d,y = %d\n",event->x1,event->y1); input_report_key(data->input_dev, BTN_TOUCH, 1); #endif /* CONFIG_FT5X0X_MULTITOUCH*/ input_sync(data->input_dev); @@ -748,16 +620,6 @@ int err = 0; #endif - #if CONFIG_TOUCH_PANEL_LED - // if(gpio_request(RK29SDK_PANEL_LED_GPIO_SITCH,NULL) != 0){ - // gpio_free(RK29SDK_PANEL_LED_GPIO_SITCH); - // printk("panel Key LED error\n"); - // return -EIO; - // } - gpio_direction_output(RK29SDK_PANEL_LED_GPIO_SITCH, 0); - gpio_set_value(RK29SDK_PANEL_LED_GPIO_SITCH,GPIO_LOW); - // printk("suspend led 2\n"); - #endif return 0; @@ -902,10 +764,6 @@ static int ft5406_probe(struct i2c_client *client ,const struct i2c_device_id * set_bit(EV_ABS, input_dev->evbit); set_bit(EV_KEY, input_dev->evbit); - #if CONFIG_TOUCH_PANEL_KEY - set_bit(EV_SYN, input_dev->evbit); //harry 03.21 - #endif - input_dev->name = FT5X0X_NAME; //dev_name(&client->dev) err = input_register_device(input_dev); if (err) { diff --git a/drivers/input/touchscreen/ft5406_ts.h b/drivers/input/touchscreen/ft5406_ts.h index c9435c5846fc..b1f1cd2ff1de 100755 --- a/drivers/input/touchscreen/ft5406_ts.h +++ b/drivers/input/touchscreen/ft5406_ts.h @@ -1,8 +1,8 @@ #ifndef __LINUX_FT5X0X_TS_H__ #define __LINUX_FT5X0X_TS_H__ -#define SCREEN_MAX_X 1024 //800 -#define SCREEN_MAX_Y 768 //480 +#define SCREEN_MAX_X 800 +#define SCREEN_MAX_Y 480 #define PRESS_MAX 255 #define FT5X0X_NAME "ft5x0x_ts"//"synaptics_i2c_rmi"//"synaptics-rmi-ts"// diff --git a/sound/soc/codecs/cs42l52.c b/sound/soc/codecs/cs42l52.c index 77d5d7d828c1..d4b33f78ec0c 100755 --- a/sound/soc/codecs/cs42l52.c +++ b/sound/soc/codecs/cs42l52.c @@ -36,6 +36,7 @@ #include #include #include "cs42l52.h" +#include //#include "cs42L52_control.h" #define DEBUG #ifdef DEBUG @@ -789,6 +790,7 @@ static int cs42l52_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id { struct snd_soc_codec *soc_codec; struct soc_codec_cs42l52 * info; + struct cs42l52_platform_data *pdata = i2c->dev.platform_data; unsigned int reg; int i, ret = 0; printk(KERN_INFO"cs42l52_i2c_probe\n"); @@ -840,6 +842,8 @@ static int cs42l52_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id ret = -ENOMEM; goto err; } + if (pdata->init_platform_hw) + pdata->init_platform_hw(); /*initialize codec*/ for(i = 0; i < soc_codec->num_dai; i++) //while(1) //