rk3026_86v: fix camera gsensor backlight error
authorhjc <hjc@rock-chips.com>
Thu, 15 Aug 2013 08:46:15 +0000 (16:46 +0800)
committerhjc <hjc@rock-chips.com>
Thu, 15 Aug 2013 08:46:35 +0000 (16:46 +0800)
arch/arm/configs/rk3026_86v_defconfig
arch/arm/mach-rk3026/board-rk3026-86v-camera.c
arch/arm/mach-rk3026/board-rk3026-86v.c
arch/arm/mach-rk3026/board-rk3028a-86v-camera.c
arch/arm/mach-rk3026/board-rk3028a-86v.c

index 21ab06e4d06dcffd29e792d17b9cffbb10751837..91ee116dfb4bbda8d6837787c5d127720f8ae887 100644 (file)
@@ -24,6 +24,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
 CONFIG_ARCH_RK3026=y
 CONFIG_DDR_FREQ=y
 # CONFIG_DDR_TEST is not set
+CONFIG_RK_CLOCK_PROC=y
 CONFIG_RK_USB_UART=y
 CONFIG_MACH_RK3026_86V=y
 CONFIG_ARM_ERRATA_761320=y
@@ -291,7 +292,6 @@ CONFIG_SOC_CAMERA=y
 # CONFIG_SOC_CAMERA_OV5642 is not set
 # CONFIG_SOC_CAMERA_OV5640 is not set
 CONFIG_SOC_CAMERA_GC0308=y
-CONFIG_SOC_CAMERA_GC2035=y
 CONFIG_VIDEO_RK29=y
 CONFIG_VIDEO_RK29_CAMMEM_ION=y
 CONFIG_ION=y
index 572e53b69ec0ab38d5a3606dd4dd21ead3592ef0..113b08ac5d70c4adcff71014e8f1e6b27ecb3bb8 100755 (executable)
@@ -34,20 +34,30 @@ Comprehensive camera device registration:
                           
 */
 static struct rkcamera_platform_data new_camera[] = { 
-    new_camera_device(RK29_CAM_SENSOR_GC2035,
-                        back,
+
+ /*   new_camera_device(RK29_CAM_SENSOR_OV2659,
+                        front,
+                        RK30_PIN3_PB3,
+                        0,
+                        0,
+                        1,
+                        0),*/
+   new_camera_device(RK29_CAM_SENSOR_GC0308,
+                        front,
                         RK30_PIN3_PB3,
                         0,
                         0,
                         1,
                         0),
+                        
     new_camera_device(RK29_CAM_SENSOR_GC0308,
-                        front,
+                        back,
                         RK30_PIN3_PD7,
                         0,
                         0,
                         1,
                         0), 
+                        
     new_camera_device_end
 };
 /*---------------- Camera Sensor Macro Define Begin  ------------------------*/
@@ -208,7 +218,7 @@ static struct rkcamera_platform_data new_camera[] = {
 #define CONFIG_SENSOR_POWERDOWN_IOCTL_USR         0
 #define CONFIG_SENSOR_FLASH_IOCTL_USR     0
 #else
-#define CAMERA_NAME                        "gc0308_front_4"
+#define CAMERA_NAME                        "gc0308_back_4"
 #define CONFIG_SENSOR_POWER_IOCTL_USR     1 //define this refer to your board layout
 #define CONFIG_SENSOR_RESET_IOCTL_USR     0
 #define CONFIG_SENSOR_POWERDOWN_IOCTL_USR  1       
@@ -320,6 +330,7 @@ static void rk_cif_powerdowen(int on)
                    regulator_enable(ldo_28);
                    printk(" %s set  vpll vcc28_cif=%dmV end\n", __func__, regulator_get_voltage(ldo_28));
                    regulator_put(ldo_28);
+                 
             }else{//disable camera
                    if(regulator_is_enabled(ldo_28)>0){
                        printk("%s[%d]\n",__func__,__LINE__);
@@ -354,12 +365,12 @@ int camera_powerdown = res->gpio_powerdown;
 
     #if 1 //defined(CONFIG_MACH_RK2926_V86)
     int ret = 0; 
-    printk("hjc:%s,%s\n\n\n",__func__,res->dev_name);
+    printk("hjc:%s,%s,on=%d\n\n\n",__func__,res->dev_name,on);
     if(strcmp(res->dev_name,CAMERA_NAME)==0)//"gc0308_front_3") == 0)
     { 
         //Èç¹ûΪpmu¿ØÖƵÄÒý½Å£¬"ov5642_front_1" ¸ù¾Ý sensorÃû×Ö £¬Ç°ºóÖ࣬ sensorÐòºÅÈ·¶¨ 
         //¾ßÌåpmu¿ØÖƲÙ×÷£¬¿É²Î¿¼ÎļþĩβµÄ²Î¿¼´úÂë 
-        printk("%s.............pwm power\n",__FUNCTION__);
+        //printk("\n\n%s.............pwm power,on=%d\n",__FUNCTION__,on);
         rk_cif_powerdowen(on);
     }else{ //gpio¿ØÖƵIJÙ×÷
          //   int camera_powerdown = res->gpio_powerdown;
index 7cec856c0edba70ed4ae34ab218d93aa6b20ff55..fe058638bc6c6a92213e26162cc7e1b26219898a 100755 (executable)
@@ -59,6 +59,9 @@
         #include "../../../drivers/video/rockchip/hdmi/rk_hdmi.h"
 #endif
 
+#if defined(CONFIG_GPS_RK)
+#include "../../../drivers/misc/gps/rk_gps/rk_gps.h"
+#endif
 #include "board-rk3026-86v-camera.c"
 
 /***********************************************************
@@ -220,6 +223,7 @@ static int rk29_backlight_io_init(void)
 
        iomux_set(pwm_mode[BL_PWM]);
        //ret = rk_gpio_request(RK30_PIN0_PD2, GPIOF_DIR_OUT, GPIO_LOW, "PWM");
+       msleep(50);
 #ifdef  LCD_DISP_ON_PIN
        ret = rk_gpio_request(BL_EN_PIN, GPIOF_DIR_OUT, BL_EN_VALUE, "bl_en");
        if(ret < 0)
@@ -516,16 +520,8 @@ static struct sensor_platform_data mma7660_info = {
        .type = SENSOR_TYPE_ACCEL,
        .irq_enable = 1,
        .poll_delay_ms = 30,
-    .init_platform_hw = mma7660_init_platform_hw,
-#ifndef CONFIG_MFD_RK616
-       #ifdef CONFIG_TOUCHSCREEN_GSLX680_RK3168
-       .orientation = {-1, 0, 0, 0, -1, 0, 0, 0, 1},
-       #else
-    .orientation = {0, -1, 0, -1, 0, 0, 0, 0, -1},
-    #endif  
-#else
-       .orientation = {1, 0, 0, 0, -1, 0, 0, 0, -1},
-#endif 
+        .init_platform_hw = mma7660_init_platform_hw,
+       .orientation = {0, 1, 0, 1, 0, 0, 0, 0, -1},
 };
 #endif
 
@@ -543,7 +539,7 @@ static struct sensor_platform_data mxc6225_info = {
         .irq_enable = 0,
         .poll_delay_ms = 30,
         .init_platform_hw = mxc6225_init_platform_hw,
-        .orientation = { 0, -1, 0, 1, 0, 0, 0, 0, 0},
+        .orientation = { 1, 0, 0, 0, 1, 0, 0, 0, 0},
 };
 #endif
 #if defined (CONFIG_GS_LIS3DH)
@@ -687,90 +683,37 @@ static struct rk29_keys_button key_button[] = {
  * rk30xx mainbord key's supply voltage is 2.5V and
  * rk31xx mainbord key's supply voltage is 1.8V.
  */
-#if 0 
-#ifdef RK31XX_MAINBOARD_V1
-        {
-                .desc   = "vol-",
-                .code   = KEY_VOLUMEDOWN,
-               .adc_value      = 744,
-                .gpio   = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
-        {
-                .desc   = "play",
-                .code   = KEY_POWER,
-                .gpio   = PLAY_ON_PIN,
-                .active_low = PRESS_LEV_LOW,
-                .wakeup = 1,
-        },
-        {
-                .desc   = "vol+",
-                .code   = KEY_VOLUMEUP,
-                .adc_value      = 558,
-                .gpio = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
        {
-                .desc   = "menu",
-                .code   = EV_MENU,
-                .adc_value      = 1,
-                .gpio = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
-        {
-                .desc   = "home",
-                .code   = KEY_HOME,
-                .adc_value      = 354,
-                .gpio = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
-        {
-                .desc   = "esc",
-                .code   = KEY_BACK,
-                .adc_value      = 169,
+               .desc   = "vol+",
+               .code   = KEY_VOLUMEUP,
                .gpio = INVALID_GPIO,
+               .adc_value      = 1,
                .active_low = PRESS_LEV_LOW,
        },
-#else
-        {
-                .desc   = "vol-",
-                .code   = KEY_VOLUMEDOWN,
-               .adc_value      = 900,
-                .gpio   = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
-        {
-                .desc   = "play",
-                .code   = KEY_POWER,
-                .gpio   = PLAY_ON_PIN,
-                .active_low = PRESS_LEV_LOW,
-                .wakeup = 1,
-        },
-        {
-                .desc   = "vol+",
-                .code   = KEY_VOLUMEUP,
-                .adc_value      = 1,
-                .gpio = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
        {
-                .desc   = "menu",
-                .code   = EV_MENU,
-                .adc_value      = 133,
-                .gpio = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
-        {
-                .desc   = "home",
-                .code   = KEY_HOME,
-                .adc_value      = 550,
-                .gpio = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
-        {
-                .desc   = "esc",
-                .code   = KEY_BACK,
-                .adc_value      = 333,
+               .desc   = "vol-",
+               .code   = KEY_VOLUMEDOWN,
+               .gpio = INVALID_GPIO,
+               .adc_value      = 512,
+               .active_low = PRESS_LEV_LOW,
+       },
+       /*{
+        .desc   = "menu",
+        .code   = EV_MENU,
+        .adc_value      = 133,
+        .gpio = INVALID_GPIO,
+        .active_low = PRESS_LEV_LOW,
+    },
+    {
+         .code   = KEY_HOME,
+         .adc_value      = 550,
+         .gpio = INVALID_GPIO,
+         .active_low = PRESS_LEV_LOW,
+    },
+    {
+         .desc   = "esc",
+         .code   = KEY_BACK,
+         .adc_value      = 333,
                .gpio = INVALID_GPIO,
                .active_low = PRESS_LEV_LOW,
        },
@@ -780,15 +723,14 @@ static struct rk29_keys_button key_button[] = {
                .adc_value      = 742,
                .gpio = INVALID_GPIO,
                .active_low = PRESS_LEV_LOW,
-       },
-#endif
-#endif
+       },*/
+
 };
 
 struct rk29_keys_platform_data rk29_keys_pdata = {
        .buttons        = key_button,
        .nbuttons       = ARRAY_SIZE(key_button),
-       .chn    = 1,  //chn: 0-7, if do not use ADC,set 'chn' -1
+       .chn    = 3,  //chn: 0-7, if do not use ADC,set 'chn' -1
 };
 /***********************************************************
 *      usb wifi
@@ -980,8 +922,101 @@ struct rk29_sdmmc_platform_data default_sdmmc1_data = {
 };
 #endif //endif--#ifdef CONFIG_SDMMC1_RK29
 
+#ifdef CONFIG_BATTERY_RK30_ADC_FAC
+static struct rk30_adc_battery_platform_data rk30_adc_battery_platdata = {
+        .dc_det_pin      = RK30_PIN1_PA5,
+        .batt_low_pin    = INVALID_GPIO, 
+        .charge_set_pin  = INVALID_GPIO,
+        .charge_ok_pin   = RK30_PIN1_PA0,
+        .usb_det_pin = INVALID_GPIO,
+        .dc_det_level    = GPIO_LOW,
+        .charge_ok_level = GPIO_HIGH,
+
+       .reference_voltage = 3300, // the rK2928 is 3300;RK3066 and rk29 are 2500;rk3066B is 1800;
+       .pull_up_res = 200,     //divider resistance ,  pull-up resistor
+       .pull_down_res = 120, //divider resistance , pull-down resistor
+
+       .is_reboot_charging = 1,
+        .save_capacity   = 1 ,
+        .low_voltage_protection = 3600,    
+};
+
+static struct platform_device rk30_device_adc_battery = {
+        .name   = "rk30-battery",
+        .id     = -1,
+        .dev = {
+                .platform_data = &rk30_adc_battery_platdata,
+        },
+};
+#endif
 
 
+/***********************************************************
+*      rfkill
+************************************************************/
+#ifdef CONFIG_RFKILL_RK
+// bluetooth rfkill device, its driver in net/rfkill/rfkill-rk.c
+static struct rfkill_rk_platform_data rfkill_rk_platdata = {
+       .type               = RFKILL_TYPE_BLUETOOTH,
+
+       .poweron_gpio       = { // BT_REG_ON
+               .io             = INVALID_GPIO, //RK30_PIN3_PC7,
+               .enable         = GPIO_HIGH,
+               .iomux          = {
+                       .name       = "bt_poweron",
+                       //.fgpio      = GPIO3_C7,
+               },
+       },
+
+       .reset_gpio         = { // BT_RST
+               .io             = RK30_PIN1_PB3, // set io to INVALID_GPIO for disable it
+               .enable         = GPIO_LOW,
+               .iomux          = {
+                       .name       = "bt_reset",
+                       .fgpio      = GPIO1_B3,
+               },
+       }, 
+
+       .wake_gpio          = { // BT_WAKE, use to control bt's sleep and wakeup
+               .io             = RK30_PIN1_PB2, // set io to INVALID_GPIO for disable it
+               .enable         = GPIO_HIGH,
+               .iomux          = {
+                       .name       = "bt_wake",
+                       .fgpio      = GPIO1_B2,
+               },
+       },
+
+       .wake_host_irq      = { // BT_HOST_WAKE, for bt wakeup host when it is in deep sleep
+               .gpio           = {
+                       .io         = RK30_PIN0_PA4, // set io to INVALID_GPIO for disable it
+                       .enable     = GPIO_LOW,      // set GPIO_LOW for falling, set 0 for rising
+                       .iomux      = {
+                               .name   = "bt_wake_host",
+                               //.fgpio  = GPIO0_A4,  
+                       },
+               },
+       },
+
+       .rts_gpio           = { // UART_RTS, enable or disable BT's data coming
+               .io             = RK30_PIN1_PA3, // set io to INVALID_GPIO for disable it
+               .enable         = GPIO_LOW,
+               .iomux          = {
+                       .name       = "bt_rts",
+                       .fgpio      = GPIO1_A3,
+                       .fmux       = UART0_RTSN,
+               },
+       }
+};
+
+static struct platform_device device_rfkill_rk = {
+    .name   = "rfkill_rk",
+    .id     = -1,
+    .dev    = {
+        .platform_data = &rfkill_rk_platdata,
+    },
+};
+#endif
+
 /***********************************************************
 *      ion
 ************************************************************/
@@ -1155,7 +1190,7 @@ static struct pmu_info tps65910_ldo_info[] = {
 
        {
                .name          = "vpll",   //vcc25
-               .min_uv          = 1000000,
+               .min_uv          = 2500000,
                .max_uv         = 2500000,
        },
 
@@ -1239,6 +1274,109 @@ static struct platform_device rk3026_codec = {
     }
 };
 #endif
+#if defined(CONFIG_GPS_RK)
+#define GPS_OSCEN_PIN  RK2928_PIN1_PB0
+#define GPS_RXEN_PIN   RK2928_PIN1_PB0
+
+static int rk_gps_io_init(void)
+{
+       printk("%s \n", __FUNCTION__);
+       
+       gpio_request(GPS_OSCEN_PIN, NULL);
+       gpio_direction_output(GPS_OSCEN_PIN, GPIO_LOW); 
+       
+       iomux_set(GPS_CLK);//GPS_CLK
+       iomux_set(GPS_MAG);//GPS_MAG
+       iomux_set(GPS_SIGN);//GPS_SIGN
+#if 0
+       gpio_request(RK30_PIN1_PA6, NULL);
+       gpio_direction_output(RK30_PIN1_PA6, GPIO_LOW);
+
+       gpio_request(RK30_PIN1_PA5, NULL);
+       gpio_direction_output(RK30_PIN1_PA5, GPIO_LOW); 
+
+       gpio_request(RK30_PIN1_PA7, NULL);
+       gpio_direction_output(RK30_PIN1_PA7, GPIO_LOW);         
+#endif 
+       return 0;
+}
+static int rk_gps_power_up(void)
+{
+       printk("%s \n", __FUNCTION__);
+
+       return 0;
+}
+
+static int rk_gps_power_down(void)
+{
+       printk("%s \n", __FUNCTION__);
+
+       return 0;
+}
+
+static int rk_gps_reset_set(int level)
+{
+       return 0;
+}
+static int rk_enable_hclk_gps(void)
+{
+       struct clk *gps_aclk = NULL;
+       gps_aclk = clk_get(NULL, "aclk_gps");
+       if(gps_aclk) {
+               clk_enable(gps_aclk);
+               clk_put(gps_aclk);
+               printk("%s \n", __FUNCTION__);
+       }
+       else
+               printk("get gps aclk fail\n");
+       return 0;
+}
+static int rk_disable_hclk_gps(void)
+{
+       struct clk *gps_aclk = NULL;
+       gps_aclk = clk_get(NULL, "aclk_gps");
+       if(gps_aclk) {
+               //TO wait long enough until GPS ISR is finished.
+               msleep(5);
+               clk_disable(gps_aclk);
+               clk_put(gps_aclk);
+               printk("%s \n", __FUNCTION__);
+       }       
+       else
+               printk("get gps aclk fail\n");
+       return 0;
+}
+static struct rk_gps_data rk_gps_info = {
+       .io_init = rk_gps_io_init,
+       .power_up = rk_gps_power_up,
+       .power_down = rk_gps_power_down,
+       .reset = rk_gps_reset_set,
+       .enable_hclk_gps = rk_enable_hclk_gps,
+       .disable_hclk_gps = rk_disable_hclk_gps,
+       .GpsSign = RK2928_PIN1_PA5,
+       .GpsMag = RK2928_PIN1_PA4,        //GPIO index
+       .GpsClk = RK2928_PIN1_PA2,        //GPIO index
+       .GpsVCCEn = GPS_OSCEN_PIN,     //GPIO index
+#if 0  
+       .GpsSpi_CSO = RK30_PIN1_PA4,    //GPIO index
+       .GpsSpiClk = RK30_PIN1_PA5,     //GPIO index
+       .GpsSpiMOSI = RK30_PIN1_PA7,      //GPIO index
+#endif 
+       .GpsIrq = IRQ_GPS,
+       .GpsSpiEn = 0,
+       .GpsAdcCh = 2,
+       .u32GpsPhyAddr = RK2928_GPS_PHYS,
+       .u32GpsPhySize = RK2928_GPS_SIZE,
+};
+
+static struct platform_device rk_device_gps = {
+       .name = "gps_hv5820b",
+       .id = -1,
+       .dev            = {
+       .platform_data = &rk_gps_info,
+               }
+       };
+#endif
 /***********************************************************
 *      i2c
 ************************************************************/
@@ -1415,8 +1553,17 @@ static struct platform_device *devices[] __initdata = {
 #ifdef CONFIG_WIFI_CONTROL_FUNC
        &rk29sdk_wifi_device,
 #endif
+#ifdef CONFIG_RFKILL_RK
+       &device_rfkill_rk,
+#endif
+#ifdef CONFIG_BATTERY_RK30_ADC_FAC
+       &rk30_device_adc_battery,
+#endif
 #ifdef CONFIG_SND_SOC_RK3026
-       &rk3026_codec,
+       &rk3026_codec,
+#endif
+#ifdef CONFIG_GPS_RK
+       &rk_device_gps,
 #endif
 };
 
@@ -1470,6 +1617,10 @@ static void __init rk30_reserve(void)
 #endif
 #ifdef CONFIG_VIDEO_RK29
        rk30_camera_request_reserve_mem();
+#endif
+#ifdef CONFIG_GPS_RK
+       //it must be more than 8MB
+       rk_gps_info.u32MemoryPhyAddr = board_mem_reserve_add("gps", SZ_8M);
 #endif
        board_mem_reserved();
 }
index 538b86f4e812c07d661874d699de2c80da0f8c2b..67d8316ff6468219a5ff0e2c343bd434ee34662d 100755 (executable)
@@ -36,14 +36,14 @@ Comprehensive camera device registration:
 static struct rkcamera_platform_data new_camera[] = { 
     new_camera_device(RK29_CAM_SENSOR_GC2035,
                         back,
-                        RK30_PIN0_PB3,
+                        RK30_PIN3_PB3,
                         0,
                         0,
                         1,
                         0),
     new_camera_device(RK29_CAM_SENSOR_GC0308,
                         front,
-                        RK30_PIN0_PB2,
+                        RK30_PIN3_PD7,
                         0,
                         0,
                         1,
@@ -210,8 +210,13 @@ static struct rkcamera_platform_data new_camera[] = {
 static void rk_cif_power(int on)
 {
     struct regulator *ldo_18,*ldo_28;
+    #if defined(CONFIG_MACH_RK3028A_86V)
        ldo_28 = regulator_get(NULL, "ldo7");   // vcc28_cif
        ldo_18 = regulator_get(NULL, "ldo1");   // vcc18_cif
+    #else
+        ldo_28 = regulator_get(NULL, "vaux1");   // vcc28_cif
+       ldo_18 = regulator_get(NULL, "vdig1");   // vcc18_cif
+    #endif
        if (ldo_28 == NULL || IS_ERR(ldo_28) || ldo_18 == NULL || IS_ERR(ldo_18)){
         printk("get cif ldo failed!\n");
                return;
index 1b02dbacf796ed8156f62becef81230af187e4ec..2c473a4210579b50bd58665df733491facd6864c 100755 (executable)
@@ -210,6 +210,7 @@ static int rk29_backlight_io_init(void)
        int ret = 0;
 
        iomux_set(pwm_mode[BL_PWM]);
+       msleep(50);
 #ifdef  LCD_DISP_ON_PIN
        ret = rk_gpio_request(BL_EN_PIN, GPIOF_DIR_OUT, BL_EN_VALUE, "bl_en");
        if(ret < 0)
@@ -665,14 +666,6 @@ static struct sensor_platform_data cm3217_info = {
 #include <plat/key.h>
 
 static struct rk29_keys_button key_button[] = {
-#ifdef RK31XX_MAINBOARD_V1
-        {
-                .desc   = "vol-",
-                .code   = KEY_VOLUMEDOWN,
-               .adc_value      = 744,
-                .gpio   = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
         {
                 .desc   = "play",
                 .code   = KEY_POWER,
@@ -680,74 +673,43 @@ static struct rk29_keys_button key_button[] = {
                 .active_low = PRESS_LEV_LOW,
                 .wakeup = 1,
         },
-        {
-                .desc   = "vol+",
-                .code   = KEY_VOLUMEUP,
-                .adc_value      = 558,
-                .gpio = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
+/* disable adc keyboard,
+ * because rk280a adc reference voltage is 3.3V, but
+ * rk30xx mainbord key's supply voltage is 2.5V and
+ * rk31xx mainbord key's supply voltage is 1.8V.
+ */
+ /*
        {
-                .desc   = "menu",
-                .code   = EV_MENU,
-                .adc_value      = 1,
-                .gpio = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
-        {
-                .desc   = "home",
-                .code   = KEY_HOME,
-                .adc_value      = 354,
-                .gpio = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
-        {
-                .desc   = "esc",
-                .code   = KEY_BACK,
-                .adc_value      = 169,
+               .desc   = "vol+",
+               .code   = KEY_VOLUMEUP,
                .gpio = INVALID_GPIO,
+               .adc_value      = 1,
                .active_low = PRESS_LEV_LOW,
        },
-#else
-        {
-                .desc   = "vol-",
-                .code   = KEY_VOLUMEDOWN,
-               .adc_value      = 900,
-                .gpio   = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
-        {
-                .desc   = "play",
-                .code   = KEY_POWER,
-                .gpio   = PLAY_ON_PIN,
-                .active_low = PRESS_LEV_LOW,
-                .wakeup = 1,
-        },
-        {
-                .desc   = "vol+",
-                .code   = KEY_VOLUMEUP,
-                .adc_value      = 1,
-                .gpio = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
        {
-                .desc   = "menu",
-                .code   = EV_MENU,
-                .adc_value      = 133,
-                .gpio = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
-        {
-                .desc   = "home",
-                .code   = KEY_HOME,
-                .adc_value      = 550,
-                .gpio = INVALID_GPIO,
-                .active_low = PRESS_LEV_LOW,
-        },
-        {
-                .desc   = "esc",
-                .code   = KEY_BACK,
-                .adc_value      = 333,
+               .desc   = "vol-",
+               .code   = KEY_VOLUMEDOWN,
+               .gpio = INVALID_GPIO,
+               .adc_value      = 512,
+               .active_low = PRESS_LEV_LOW,
+       },
+       {
+        .desc   = "menu",
+        .code   = EV_MENU,
+        .adc_value      = 133,
+        .gpio = INVALID_GPIO,
+        .active_low = PRESS_LEV_LOW,
+    },
+    {
+         .code   = KEY_HOME,
+         .adc_value      = 550,
+         .gpio = INVALID_GPIO,
+         .active_low = PRESS_LEV_LOW,
+    },
+    {
+         .desc   = "esc",
+         .code   = KEY_BACK,
+         .adc_value      = 333,
                .gpio = INVALID_GPIO,
                .active_low = PRESS_LEV_LOW,
        },
@@ -757,14 +719,14 @@ static struct rk29_keys_button key_button[] = {
                .adc_value      = 742,
                .gpio = INVALID_GPIO,
                .active_low = PRESS_LEV_LOW,
-       },
-#endif
+       },*/
+
 };
 
 struct rk29_keys_platform_data rk29_keys_pdata = {
        .buttons        = key_button,
        .nbuttons       = ARRAY_SIZE(key_button),
-       .chn    = 1,  //chn: 0-7, if do not use ADC,set 'chn' -1
+       .chn    = 3,  //chn: 0-7, if do not use ADC,set 'chn' -1
 };
 
 /***********************************************************
@@ -1036,30 +998,6 @@ static struct platform_device device_ion = {
 };
 #endif
 
-#ifdef CONFIG_SND_SOC_RK3026
-struct rk3026_codec_pdata rk3026_codec_pdata_info={
-           .spk_ctl_gpio = RK2928_PIN3_PD4,
-           .hp_ctl_gpio = RK2928_PIN3_PD4,
-       };
-
-static struct resource resources_acodec[] = {
-       {
-               .start  = RK2928_ACODEC_PHYS,
-               .end    = RK2928_ACODEC_PHYS + RK2928_ACODEC_SIZE - 1,
-               .flags  = IORESOURCE_MEM,
-       },
-};
-
-static struct platform_device rk3026_codec = {
-       .name   = "rk3026-codec",
-       .id     = -1,
-       .resource = resources_acodec,
-       .dev = {
-              .platform_data = &rk3026_codec_pdata_info,
-                   }
-       };
-#endif
-
 /***********************************************************
 *      pwm regulator
 ************************************************************/
@@ -1265,6 +1203,29 @@ void __sramfunc board_pmu_resume(void)
        #endif
 }
 
+#ifdef CONFIG_SND_SOC_RK3026
+struct rk3026_codec_pdata rk3026_codec_pdata_info={
+    .spk_ctl_gpio = RK2928_PIN3_PD4,
+    .hp_ctl_gpio = RK2928_PIN3_PD4,
+};
+
+static struct resource resources_acodec[] = {
+       {
+               .start  = RK2928_ACODEC_PHYS,
+               .end    = RK2928_ACODEC_PHYS + RK2928_ACODEC_SIZE - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct platform_device rk3026_codec = {
+       .name   = "rk3026-codec",
+       .id             = -1,
+       .resource = resources_acodec,
+       .dev = {
+               .platform_data = &rk3026_codec_pdata_info,
+    }
+};
+#endif
 #if defined(CONFIG_GPS_RK)
 #define GPS_OSCEN_PIN  RK2928_PIN1_PB0
 #define GPS_RXEN_PIN   RK2928_PIN1_PB0