fix tp and codec bug in newton board
author蔡枫 <cf@rock-chips.com>
Sat, 25 Jun 2011 14:42:23 +0000 (22:42 +0800)
committer蔡枫 <cf@rock-chips.com>
Sat, 25 Jun 2011 14:42:23 +0000 (22:42 +0800)
arch/arm/configs/rk29_newton_defconfig
arch/arm/mach-rk29/Kconfig [changed mode: 0644->0755]
arch/arm/mach-rk29/Makefile [changed mode: 0644->0755]
arch/arm/mach-rk29/board-rk29-newton.c
arch/arm/mach-rk29/include/mach/board.h
drivers/input/touchscreen/ft5406_ts.c
drivers/input/touchscreen/ft5406_ts.h
sound/soc/codecs/cs42l52.c

index ef33ff53ffab37bae5f38a30d1a88da0d996e246..d98afca37bab4f7d4910563a015cfdd5528c5437 100644 (file)
@@ -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
old mode 100644 (file)
new mode 100755 (executable)
index 248bdb3..3ebe363
@@ -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
old mode 100644 (file)
new mode 100755 (executable)
index de1f7a6..46309dd
@@ -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
+
index 1147594f246042e4661861e69a0127da8092b0d0..18277814e3361ec28b03e6e471a3d92b00bb94e7 100755 (executable)
@@ -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)
     {
index 02230c5d60ecbcc72c4e8a22867f07a78c279e8c..7f66850eb05d243ffd792652e5ccedbc6cf5ccf1 100755 (executable)
@@ -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];
index d10b744e90f8b69dc6f6adf22d0bb60c107abf01..3ac24cd313f2965aeae9c74532d979be03ae2362 100755 (executable)
@@ -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->y1<BACK_KEY_MAX))                             // M6 10  - 90
-                               { 
-                                       input_report_key(data->input_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->y1<HOME_KEY_MAX))                 //M6 110 - 190
-                               {
-                                       input_report_key(data->input_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->y1<MENU_KEY_MAX))                                 // M6 210 -290
-                               {
-                                       input_report_key(data->input_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) {
index c9435c5846fcca611b0dc3136e63a305a66bb9f9..b1f1cd2ff1dec5e59cab1c968fcdea18b45418ab 100755 (executable)
@@ -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"// 
index 77d5d7d828c12caf49c3f0bcd0a4137936597dd8..d4b33f78ec0c03e09ebe96ee5a298890ca7d35a0 100755 (executable)
@@ -36,6 +36,7 @@
 #include       <linux/device.h>
 #include       <asm/io.h>
 #include "cs42l52.h"
+#include <mach/board.h>
 //#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) //