From: ddl Date: Wed, 1 Dec 2010 11:12:06 +0000 (+0800) Subject: camera:add support deal camera X-Git-Tag: firefly_0821_release~11011 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=27748f7d64ae7b937c593f416aab285239ffefc1;p=firefly-linux-kernel-4.4.55.git camera:add support deal camera --- diff --git a/arch/arm/mach-rk29/board-rk29sdk.c b/arch/arm/mach-rk29/board-rk29sdk.c index 5e4919dfdabd..bf92632420ce 100755 --- a/arch/arm/mach-rk29/board-rk29sdk.c +++ b/arch/arm/mach-rk29/board-rk29sdk.c @@ -368,7 +368,7 @@ static int rk29_i2c3_io_init(void) return 0; } -struct rk29_i2c_platform_data default_i2c0_data = { +struct rk29_i2c_platform_data default_i2c0_data = { .bus_num = 0, .flags = 0, .slave_addr = 0xff, @@ -377,7 +377,7 @@ struct rk29_i2c_platform_data default_i2c0_data = { .io_init = rk29_i2c0_io_init, }; -struct rk29_i2c_platform_data default_i2c1_data = { +struct rk29_i2c_platform_data default_i2c1_data = { .bus_num = 1, .flags = 0, .slave_addr = 0xff, @@ -386,7 +386,7 @@ struct rk29_i2c_platform_data default_i2c1_data = { .io_init = rk29_i2c1_io_init, }; -struct rk29_i2c_platform_data default_i2c2_data = { +struct rk29_i2c_platform_data default_i2c2_data = { .bus_num = 2, .flags = 0, .slave_addr = 0xff, @@ -395,7 +395,7 @@ struct rk29_i2c_platform_data default_i2c2_data = { .io_init = rk29_i2c2_io_init, }; -struct rk29_i2c_platform_data default_i2c3_data = { +struct rk29_i2c_platform_data default_i2c3_data = { .bus_num = 3, .flags = 0, .slave_addr = 0xff, @@ -480,7 +480,7 @@ static struct i2c_board_info __initdata board_i2c3_devices[] = { * author: ddl@rock-chips.com *****************************************************************************************/ #ifdef CONFIG_VIDEO_RK29 -#define SENSOR_NAME_0 RK29_CAM_SENSOR_NAME_OV2655 +#define SENSOR_NAME_0 RK29_CAM_SENSOR_NAME_OV2655 /* back camera sensor */ #define SENSOR_IIC_ADDR_0 0x60 #define SENSOR_IIC_ADAPTER_ID_0 1 #define SENSOR_POWER_PIN_0 INVALID_GPIO @@ -489,9 +489,9 @@ static struct i2c_board_info __initdata board_i2c3_devices[] = { #define SENSOR_RESETACTIVE_LEVEL_0 RK29_CAM_RESETACTIVE_L -#define SENSOR_NAME_1 NULL -#define SENSOR_IIC_ADDR_1 0x00 -#define SENSOR_IIC_ADAPTER_ID_1 0xff +#define SENSOR_NAME_1 RK29_CAM_SENSOR_NAME_OV2659 /* front camera sensor */ +#define SENSOR_IIC_ADDR_1 0x60 +#define SENSOR_IIC_ADAPTER_ID_1 1 #define SENSOR_POWER_PIN_1 INVALID_GPIO #define SENSOR_RESET_PIN_1 INVALID_GPIO #define SENSOR_POWERACTIVE_LEVEL_1 RK29_CAM_POWERACTIVE_L @@ -626,30 +626,55 @@ static int rk29_sensor_power(struct device *dev, int on) return 0; } -static struct i2c_board_info rk29_i2c_cam_info[] = { +static struct i2c_board_info rk29_i2c_cam_info_0[] = { { I2C_BOARD_INFO(SENSOR_NAME_0, SENSOR_IIC_ADDR_0>>1) }, }; -struct soc_camera_link rk29_iclink = { +struct soc_camera_link rk29_iclink_0 = { .bus_id = RK29_CAM_PLATFORM_DEV_ID, .power = rk29_sensor_power, - .board_info = &rk29_i2c_cam_info[0], + .board_info = &rk29_i2c_cam_info_0[0], .i2c_adapter_id = SENSOR_IIC_ADAPTER_ID_0, .module_name = SENSOR_NAME_0, }; /*platform_device : soc-camera need */ -struct platform_device rk29_soc_camera_pdrv = { +struct platform_device rk29_soc_camera_pdrv_0 = { .name = "soc-camera-pdrv", - .id = -1, + .id = 0, .dev = { .init_name = SENSOR_NAME_0, - .platform_data = &rk29_iclink, + .platform_data = &rk29_iclink_0, }, }; +static struct i2c_board_info rk29_i2c_cam_info_1[] = { + { + I2C_BOARD_INFO(SENSOR_NAME_1, SENSOR_IIC_ADDR_1>>1) + }, +}; + +struct soc_camera_link rk29_iclink_1 = { + .bus_id = RK29_CAM_PLATFORM_DEV_ID, + .power = rk29_sensor_power, + .board_info = &rk29_i2c_cam_info_1[0], + .i2c_adapter_id = SENSOR_IIC_ADAPTER_ID_1, + .module_name = SENSOR_NAME_1, +}; + +/*platform_device : soc-camera need */ +struct platform_device rk29_soc_camera_pdrv_1 = { + .name = "soc-camera-pdrv", + .id = 1, + .dev = { + .init_name = SENSOR_NAME_1, + .platform_data = &rk29_iclink_1, + }, +}; + + extern struct platform_device rk29_device_camera; #endif /***************************************************************************************** @@ -663,8 +688,8 @@ extern struct platform_device rk29_device_camera; GPIO2A3_SDMMC0WRITEPRT_PWM2_NAME, GPIO2L_PWM2 GPIO1A5_EMMCPWREN_PWM3_NAME, GPIO1L_PWM3 */ - -#define PWM_ID 0 + +#define PWM_ID 0 #define PWM_MUX_NAME GPIO1B5_PWM0_NAME #define PWM_MUX_MODE GPIO1L_PWM0 #define PWM_MUX_MODE_GPIO GPIO1L_GPIO1B5 @@ -682,17 +707,17 @@ extern struct platform_device rk29_device_camera; static int rk29_backlight_io_init(void) { int ret = 0; - + rk29_mux_api_set(PWM_MUX_NAME, PWM_MUX_MODE); #ifdef LCD_DISP_ON_PIN - rk29_mux_api_set(BL_EN_MUX_NAME, BL_EN_MUX_MODE); - - ret = gpio_request(BL_EN_PIN, NULL); + rk29_mux_api_set(BL_EN_MUX_NAME, BL_EN_MUX_MODE); + + ret = gpio_request(BL_EN_PIN, NULL); if(ret != 0) { - gpio_free(BL_EN_PIN); + gpio_free(BL_EN_PIN); } - + gpio_direction_output(BL_EN_PIN, 0); gpio_set_value(BL_EN_PIN, BL_EN_VALUE); #endif @@ -712,7 +737,7 @@ struct rk29_bl_info rk29_bl_info = { .pwm_id = PWM_ID, .bl_ref = PWM_EFFECT_VALUE, .io_init = rk29_backlight_io_init, - .io_deinit = rk29_backlight_io_deinit, + .io_deinit = rk29_backlight_io_deinit, }; #endif /***************************************************************************************** @@ -805,7 +830,7 @@ struct platform_device rk29_device_gpu = { }; #endif #ifdef CONFIG_KEYS_RK29 -extern struct rk29_keys_platform_data rk29_keys_pdata; +extern struct rk29_keys_platform_data rk29_keys_pdata; static struct platform_device rk29_device_keys = { .name = "rk29-keys", .id = -1, @@ -850,7 +875,7 @@ static void __init rk29_board_iomux_init(void) static struct platform_device *devices[] __initdata = { #ifdef CONFIG_UART1_RK29 &rk29_device_uart1, -#endif +#endif #ifdef CONFIG_SPIM0_RK29 &rk29xx_device_spi0m, #endif @@ -883,7 +908,7 @@ static struct platform_device *devices[] __initdata = { #ifdef CONFIG_KEYS_RK29 &rk29_device_keys, #endif -#ifdef CONFIG_SDMMC0_RK29 +#ifdef CONFIG_SDMMC0_RK29 &rk29_device_sdmmc0, #endif #ifdef CONFIG_SDMMC1_RK29 @@ -904,8 +929,9 @@ static struct platform_device *devices[] __initdata = { #endif #ifdef CONFIG_VIDEO_RK29 &rk29_device_camera, /* ddl@rock-chips.com : camera support */ - &rk29_soc_camera_pdrv, - #endif + &rk29_soc_camera_pdrv_0, + &rk29_soc_camera_pdrv_1, +#endif &android_pmem_device, &rk29_vpu_mem_device, }; @@ -944,10 +970,10 @@ struct spi_cs_gpio rk29xx_spi1_cs_gpios[SPI_CHIPSELECT_NUM] = { }; static int spi_io_init(struct spi_cs_gpio *cs_gpios, int cs_num) -{ +{ #if 0 int i,j,ret; - + //cs if (cs_gpios) { for (i=0; i