From: hjc Date: Thu, 15 Aug 2013 08:46:15 +0000 (+0800) Subject: rk3026_86v: fix camera gsensor backlight error X-Git-Tag: firefly_0821_release~6726^2~1 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=266cc161560f4461972a54e3cee2256f5d72b6c1;p=firefly-linux-kernel-4.4.55.git rk3026_86v: fix camera gsensor backlight error --- diff --git a/arch/arm/configs/rk3026_86v_defconfig b/arch/arm/configs/rk3026_86v_defconfig index 21ab06e4d06d..91ee116dfb4b 100644 --- a/arch/arm/configs/rk3026_86v_defconfig +++ b/arch/arm/configs/rk3026_86v_defconfig @@ -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 diff --git a/arch/arm/mach-rk3026/board-rk3026-86v-camera.c b/arch/arm/mach-rk3026/board-rk3026-86v-camera.c index 572e53b69ec0..113b08ac5d70 100755 --- a/arch/arm/mach-rk3026/board-rk3026-86v-camera.c +++ b/arch/arm/mach-rk3026/board-rk3026-86v-camera.c @@ -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; diff --git a/arch/arm/mach-rk3026/board-rk3026-86v.c b/arch/arm/mach-rk3026/board-rk3026-86v.c index 7cec856c0edb..fe058638bc6c 100755 --- a/arch/arm/mach-rk3026/board-rk3026-86v.c +++ b/arch/arm/mach-rk3026/board-rk3026-86v.c @@ -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(); } diff --git a/arch/arm/mach-rk3026/board-rk3028a-86v-camera.c b/arch/arm/mach-rk3026/board-rk3028a-86v-camera.c index 538b86f4e812..67d8316ff646 100755 --- a/arch/arm/mach-rk3026/board-rk3028a-86v-camera.c +++ b/arch/arm/mach-rk3026/board-rk3028a-86v-camera.c @@ -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; diff --git a/arch/arm/mach-rk3026/board-rk3028a-86v.c b/arch/arm/mach-rk3026/board-rk3028a-86v.c index 1b02dbacf796..2c473a421057 100755 --- a/arch/arm/mach-rk3026/board-rk3028a-86v.c +++ b/arch/arm/mach-rk3026/board-rk3028a-86v.c @@ -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 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