void s3c_fimc_register_camera(struct s3c_fimc_camera *cam) { int i; //static int once=0; //printk("[CAM]s3c_fimc_register_camera,cam->id=%d\n",cam->id); s3c_fimc.camera[cam->id] = cam; for (i = 0; i < S3C_FIMC_MAX_CTRLS; i++) { s3c_fimc.ctrl[i].in_cam = s3c_fimc.camera[cam->id]; } clk_disable(s3c_fimc.cam_clock); clk_set_rate(s3c_fimc.cam_clock, cam->clockrate); clk_enable(s3c_fimc.cam_clock); s3c_fimc_reset_camera();//comment by ur better //printk("[CAM]Reset and init reg!1cam->client=%x\n",cam->client); /*printk("[CAM]Reset and init reg!1\n"); if((once==0)&&(cam->client!=0)) { printk("[CAM]Reset and init reg!2\n"); //s3c_fimc_reset_camera(); for (i = 0; i < S3C_FIMC_MAX_CTRLS; i++) { s3c_fimc_init_camera(&s3c_fimc.ctrl[i]); } once = 1; } printk("[CAM]Reset and init reg!3\n"); */ }
static void __init universal_machine_init(void) { int err; tl2796_gpio_setup(); universal_i2c_gpio_init(); s3c_i2c0_set_platdata(NULL); s3c_i2c1_set_platdata(NULL); i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0)); i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1)); i2c_register_board_info(I2C_GPIO_26V_BUS, i2c_gpio_26v_devs, ARRAY_SIZE(i2c_gpio_26v_devs)); i2c_register_board_info(I2C_GPIO_HDMI_BUS, i2c_gpio_hdmi_devs, ARRAY_SIZE(i2c_gpio_hdmi_devs)); i2c_register_board_info(I2C_GPIO_28V_BUS, i2c_gpio_28v_devs, ARRAY_SIZE(i2c_gpio_28v_devs)); spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info)); s3cfb_set_platdata(&fb_data); err = camera_pin_request(); if (err) printk(KERN_INFO "CAMERA PIN REQUEST FAILED\n"); /* Registering external camera to platform data */ /*fimc_setting.camera[0] = &camera_a;*/ fimc_setting.camera[0] = &camera_c; s3c_fimc0_set_platdata(&fimc_setting); s3c_fimc1_set_platdata(&fimc_setting); s3c_fimc2_set_platdata(&fimc_setting); /* testing MIPI */ /* CSI-2 */ s3c_csis_set_platdata(NULL); s3c_fimc_reset_camera(); platform_add_devices(universal_devices, ARRAY_SIZE(universal_devices)); }