msm: camera: isp: Handle QCFA bin eanbled case for MP limit fuse
When QCFA binning is enabled adjust MP limit fuse checking to check actual proessing width for IFE. CRs-Fixed: 2808086 Change-Id: I22af38ba36ad84372699a177c203c1acbae76cb9 Signed-off-by: Wyes Karny <wkarny@codeaurora.org>
This commit is contained in:
@@ -1143,6 +1143,7 @@ int cam_ife_csid_path_reserve(struct cam_ife_csid_hw *csid_hw,
|
|||||||
struct cam_ife_csid_path_cfg *path_data;
|
struct cam_ife_csid_path_cfg *path_data;
|
||||||
struct cam_isp_resource_node *res;
|
struct cam_isp_resource_node *res;
|
||||||
bool is_rdi = false;
|
bool is_rdi = false;
|
||||||
|
uint32_t width = 0;
|
||||||
|
|
||||||
/* CSID CSI2 v2.0 supports 31 vc */
|
/* CSID CSI2 v2.0 supports 31 vc */
|
||||||
if (reserve->sync_mode >= CAM_ISP_HW_SYNC_MAX) {
|
if (reserve->sync_mode >= CAM_ISP_HW_SYNC_MAX) {
|
||||||
@@ -1313,10 +1314,13 @@ int cam_ife_csid_path_reserve(struct cam_ife_csid_hw *csid_hw,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (reserve->sync_mode == CAM_ISP_HW_SYNC_MASTER) {
|
if (reserve->sync_mode == CAM_ISP_HW_SYNC_MASTER) {
|
||||||
|
width = reserve->in_port->left_stop -
|
||||||
|
reserve->in_port->left_start + 1;
|
||||||
|
if (path_data->horizontal_bin || path_data->qcfa_bin)
|
||||||
|
width /= 2;
|
||||||
if ((reserve->res_id == CAM_IFE_PIX_PATH_RES_IPP) &&
|
if ((reserve->res_id == CAM_IFE_PIX_PATH_RES_IPP) &&
|
||||||
!(cam_ife_csid_is_resolution_supported(csid_hw,
|
!(cam_ife_csid_is_resolution_supported(csid_hw,
|
||||||
reserve->in_port->left_stop -
|
width))) {
|
||||||
reserve->in_port->left_start + 1))) {
|
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
@@ -1339,10 +1343,13 @@ int cam_ife_csid_path_reserve(struct cam_ife_csid_hw *csid_hw,
|
|||||||
csid_hw->hw_intf->hw_idx, reserve->res_id,
|
csid_hw->hw_intf->hw_idx, reserve->res_id,
|
||||||
path_data->start_line, path_data->end_line);
|
path_data->start_line, path_data->end_line);
|
||||||
} else if (reserve->sync_mode == CAM_ISP_HW_SYNC_SLAVE) {
|
} else if (reserve->sync_mode == CAM_ISP_HW_SYNC_SLAVE) {
|
||||||
|
width = reserve->in_port->right_stop -
|
||||||
|
reserve->in_port->right_start + 1;
|
||||||
|
if (path_data->horizontal_bin || path_data->qcfa_bin)
|
||||||
|
width /= 2;
|
||||||
if ((reserve->res_id == CAM_IFE_PIX_PATH_RES_IPP) &&
|
if ((reserve->res_id == CAM_IFE_PIX_PATH_RES_IPP) &&
|
||||||
!(cam_ife_csid_is_resolution_supported(csid_hw,
|
!(cam_ife_csid_is_resolution_supported(csid_hw,
|
||||||
reserve->in_port->right_stop -
|
width))) {
|
||||||
reserve->in_port->right_start + 1))) {
|
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
@@ -1362,10 +1369,13 @@ int cam_ife_csid_path_reserve(struct cam_ife_csid_hw *csid_hw,
|
|||||||
csid_hw->hw_intf->hw_idx, reserve->res_id,
|
csid_hw->hw_intf->hw_idx, reserve->res_id,
|
||||||
path_data->start_line, path_data->end_line);
|
path_data->start_line, path_data->end_line);
|
||||||
} else {
|
} else {
|
||||||
|
width = reserve->in_port->left_stop -
|
||||||
|
reserve->in_port->left_start + 1;
|
||||||
|
if (path_data->horizontal_bin || path_data->qcfa_bin)
|
||||||
|
width /= 2;
|
||||||
if ((reserve->res_id == CAM_IFE_PIX_PATH_RES_IPP) &&
|
if ((reserve->res_id == CAM_IFE_PIX_PATH_RES_IPP) &&
|
||||||
!(cam_ife_csid_is_resolution_supported(csid_hw,
|
!(cam_ife_csid_is_resolution_supported(csid_hw,
|
||||||
reserve->in_port->left_stop -
|
width))) {
|
||||||
reserve->in_port->left_start + 1))) {
|
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user