Example #1
0
static int fimc_isp_subdev_init(struct fimc_dev *fimc, int index)
{
	struct s3c_fimc_isp_info *isp_info;
	int ret;

	ret = fimc_subdev_attach(fimc, index);
	if (ret)
		return ret;

	isp_info = fimc->pdata->isp_info[fimc->vid_cap.input_index];
	ret = fimc_hw_set_camera_polarity(fimc, isp_info);
	if (!ret) {
		ret = v4l2_subdev_call(fimc->vid_cap.sd, core,
				       s_power, 1);
		if (!ret)
			return ret;
	}

	fimc_subdev_unregister(fimc);
	err("ISP initialization failed: %d", ret);
	return ret;
}
Example #2
0
static int fimc_isp_subdev_init(struct fimc_dev *fimc, unsigned int index)
{
    struct s5p_fimc_isp_info *isp_info;
    struct s5p_platform_fimc *pdata = fimc->pdata;
    int ret;

    if (index >= pdata->num_clients)
        return -EINVAL;

    isp_info = &pdata->isp_info[index];

    if (isp_info->clk_frequency)
        clk_set_rate(fimc->clock[CLK_CAM], isp_info->clk_frequency);

    ret = clk_enable(fimc->clock[CLK_CAM]);
    if (ret)
        return ret;

    ret = fimc_subdev_attach(fimc, index);
    if (ret)
        return ret;

    ret = fimc_hw_set_camera_polarity(fimc, isp_info);
    if (ret)
        return ret;

    ret = v4l2_subdev_call(fimc->vid_cap.sd, core, s_power, 1);
    if (!ret)
        return ret;

    /* enabling power failed so unregister subdev */
    fimc_subdev_unregister(fimc);

    v4l2_err(&fimc->vid_cap.v4l2_dev, "ISP initialization failed: %d\n",
             ret);

    return ret;
}