Androidカメラov 2655駆動登録

3573 ワード

Androidカメラov 2655駆動登録
#ifdef CONFIG_VIDEO_OV2655
// CAM_PWR:GPF3_4
#define  CAM_PWR    S5PV210_GPJ4(1)
#define  CAM_RESET  S5PV210_GPE1(4)

#define CAM_PWR_ENABLE()                gpio_direction_output(CAM_PWR, 0);
#define CAM_PWR_DISABLE()               gpio_direction_output(CAM_PWR, 1);
#define CAM_RESET_HIGH()                gpio_direction_output(CAM_RESET, 1);
#define CAM_RESET_LOW()                 gpio_direction_output(CAM_RESET, 0);

static int smdkv210_ov2655_power(int onoff)
{
        int err;

        //printk("Open OV2655 camema sensor 
"); #if 0 //! ov2655 tvp514x switch gpio_request(S5PV210_GPH2(7), "GPH2"); s3c_gpio_setpull(S5PV210_GPH2(7), S3C_GPIO_PULL_UP); s3c_gpio_cfgpin(S5PV210_GPH2(2), S3C_GPIO_SFN(1)); gpio_direction_output(S5PV210_GPH2(7), 1); gpio_free(S5PV210_GPH2(2)); #endif err = gpio_request(CAM_PWR, "GPF34"); if (err){ printk(KERN_ERR "#### failed to request GPF34 for cam_pwr
"); } err = gpio_request(CAM_RESET, "GPE14"); if (err){ printk(KERN_ERR "#### failed to request GPE14 for cam_reset
"); } if(onoff){ CAM_PWR_DISABLE(); msleep(20); CAM_PWR_ENABLE(); msleep(20); CAM_RESET_LOW(); msleep(50); CAM_RESET_HIGH(); msleep(15); } else{ CAM_PWR_DISABLE(); CAM_RESET_LOW(); } gpio_free(CAM_PWR); gpio_free(CAM_RESET); return 0; } static struct ov2655_platform_data ov2655_plat = { .default_width = 800, .default_height = 600, .pixelformat = V4L2_PIX_FMT_UYVY, .freq = 24000000, .is_mipi = 0, }; static struct i2c_board_info ov2655_i2c_info = { I2C_BOARD_INFO("ov2655", 0x30), //7 i2c .platform_data = &ov2655_plat, }; static struct s3c_platform_camera ov2655 = { #ifdef CAM_ITU_CH_A .id = CAMERA_PAR_A, #else .id = CAMERA_PAR_B, #endif .type = CAM_TYPE_ITU, .fmt = ITU_601_YCBCR422_8BIT, .order422 = CAM_ORDER422_8BIT_CBYCRY, .i2c_busnum = 1, .info = &ov2655_i2c_info, .pixelformat = V4L2_PIX_FMT_UYVY, .srclk_name = "mout_mpll", .clk_name = "sclk_cam0", .clk_rate = 24000000, .line_length = 1920, .width = 800, .height = 600, .window = { .left = 0, .top = 0, .width = 800, .height = 600, }, /* Polarity */ .inv_pclk = 0, .inv_vsync = 1, .inv_href = 0, .inv_hsync = 0, .initialized = 0, .cam_power = smdkv210_ov2655_power, }; #endif static struct s3c_platform_fimc fimc_plat_lsi = { .srclk_name = "mout_mpll", .clk_name = "sclk_fimc", .lclk_name = "fimc", .clk_rate = 166750000, #if defined(CONFIG_VIDEO_S5K4EA) .default_cam = CAMERA_CSI_C, #else #ifdef CAM_ITU_CH_A .default_cam = CAMERA_PAR_A, #else .default_cam = CAMERA_PAR_B, #endif #endif .camera = { #ifdef CONFIG_VIDEO_S5K4ECGX &s5k4ecgx, #endif #ifdef CONFIG_VIDEO_S5KA3DFX &s5ka3dfx, #endif #ifdef CONFIG_VIDEO_S5K4BA &s5k4ba, #endif #ifdef CONFIG_VIDEO_S5K4EA &s5k4ea, #endif #ifdef CONFIG_VIDEO_TVP514X &tvp514x_cam, #endif #ifdef CONFIG_VIDEO_OV9650 &ov9650, #endif #ifdef CONFIG_VIDEO_OV2655 &ov2655, // #endif }, .hw_ver = 0x43, };