rk3026_86v: fix camera gsensor backlight error

This commit is contained in:
hjc
2013-08-15 16:46:15 +08:00
parent 671e118169
commit 266cc16156
5 changed files with 331 additions and 203 deletions

View 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

View File

@@ -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)
{
//<2F><><EFBFBD><EFBFBD>Ϊpmu<6D><75><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ţ<EFBFBD>"ov5642_front_1" <20><><EFBFBD><EFBFBD> sensor<6F><72><EFBFBD><EFBFBD> <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD> <20><> sensor<6F><72><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>
//<2F><><EFBFBD><EFBFBD>pmu<6D><75><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲο<C9B2><CEBF>ļ<EFBFBD>ĩβ<C4A9>IJο<C4B2><CEBF><EFBFBD><EFBFBD><EFBFBD>
printk("%s.............pwm power\n",__FUNCTION__);
//printk("\n\n%s.............pwm power,on=%d\n",__FUNCTION__,on);
rk_cif_powerdowen(on);
}else{ //gpio<69><6F><EFBFBD>ƵIJ<C6B5><C4B2><EFBFBD>
// int camera_powerdown = res->gpio_powerdown;

View File

@@ -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,7 +922,100 @@ 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();
}

View File

@@ -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;

View File

@@ -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