diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_isp40.c b/drivers/media/platform/msm/camera_v2/isp/msm_isp40.c index 37fea517f01e..fb360501f42a 100644 --- a/drivers/media/platform/msm/camera_v2/isp/msm_isp40.c +++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp40.c @@ -1383,7 +1383,20 @@ static void msm_vfe40_cfg_camif(struct vfe_device *vfe_dev, if (vfe_dev->is_camif_raw_crop_supported) { /* Pdaf output will be sent in PLAIN16 format*/ val = msm_camera_io_r(vfe_dev->vfe_base + 0x54); - val |= 5 << 9; + switch (subsample_cfg->output_format) { + case CAMIF_PLAIN_8: + val |= 4 << 9; + break; + case CAMIF_PLAIN_16: + val |= 5 << 9; + break; + case CAMIF_MIPI_RAW: + val |= 1 << 9; + break; + case CAMIF_QCOM_RAW: + default: + break; + } msm_camera_io_w(val, vfe_dev->vfe_base + 0x54); if (subsample_cfg->first_pixel || subsample_cfg->last_pixel || diff --git a/include/media/msmb_isp.h b/include/media/msmb_isp.h index a9f08941374a..628f41ab4d5d 100644 --- a/include/media/msmb_isp.h +++ b/include/media/msmb_isp.h @@ -162,6 +162,14 @@ struct msm_vfe_fetch_engine_cfg { uint32_t buf_stride; }; +enum msm_vfe_camif_output_format { + CAMIF_QCOM_RAW, + CAMIF_MIPI_RAW, + CAMIF_PLAIN_8, + CAMIF_PLAIN_16, + CAMIF_MAX_FORMAT, +}; + /* * Camif output general configuration */ @@ -175,6 +183,7 @@ struct msm_vfe_camif_subsample_cfg { uint32_t last_line; uint32_t first_pixel; uint32_t last_pixel; + enum msm_vfe_camif_output_format output_format; }; /*