mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 12:57:06 +09:00
rk3026_86v: fix camera gsensor backlight error
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user