/* This function is called by open() function, so we need to init HW*/ static int msm_isp_open(struct v4l2_subdev *sd, struct v4l2_subdev *sd_vpe, struct msm_sync *sync) { /* init vfe and senor, register sync callbacks for init*/ int rc = 0; D("%s\n", __func__); if (!sync) { pr_err("%s: param is NULL", __func__); return -EINVAL; } rc = msm_vfe_subdev_init(sd, sync, sync->pdev); if (rc < 0) { pr_err("%s: vfe_init failed at %d\n", __func__, rc); } D("%s: init vpe subdev", __func__); rc = msm_vpe_subdev_init(sd_vpe, sync, sync->pdev); if (rc < 0) { pr_err("%s: vpe_init failed at %d\n", __func__, rc); } return rc; }
static int msm_isp_open(struct v4l2_subdev *sd, struct msm_cam_media_controller *mctl) { int rc = 0; D("%s\n", __func__); if (!mctl) { pr_err("%s: param is NULL", __func__); return -EINVAL; } rc = msm_iommu_map_contig_buffer( (unsigned long)IMEM_Y_PING_OFFSET, CAMERA_DOMAIN, GEN_POOL, ((IMEM_Y_SIZE + IMEM_CBCR_SIZE + 4095) & (~4095)), SZ_4K, IOMMU_WRITE | IOMMU_READ, (unsigned long *)&mctl->ping_imem_y); mctl->ping_imem_cbcr = mctl->ping_imem_y + IMEM_Y_SIZE; if (rc < 0) { pr_err("%s: ping iommu mapping returned error %d\n", __func__, rc); mctl->ping_imem_y = 0; mctl->ping_imem_cbcr = 0; } msm_iommu_map_contig_buffer( (unsigned long)IMEM_Y_PONG_OFFSET, CAMERA_DOMAIN, GEN_POOL, ((IMEM_Y_SIZE + IMEM_CBCR_SIZE + 4095) & (~4095)), SZ_4K, IOMMU_WRITE | IOMMU_READ, (unsigned long *)&mctl->pong_imem_y); mctl->pong_imem_cbcr = mctl->pong_imem_y + IMEM_Y_SIZE; if (rc < 0) { pr_err("%s: pong iommu mapping returned error %d\n", __func__, rc); mctl->pong_imem_y = 0; mctl->pong_imem_cbcr = 0; } rc = msm_vfe_subdev_init(sd, mctl); if (rc < 0) { pr_err("%s: vfe_init failed at %d\n", __func__, rc); } return rc; }