diff --git a/drivers/cam_cdm/cam_cdm_soc.c b/drivers/cam_cdm/cam_cdm_soc.c index ec8a9e096a7b..ba4ff1ac6e33 100644 --- a/drivers/cam_cdm/cam_cdm_soc.c +++ b/drivers/cam_cdm/cam_cdm_soc.c @@ -78,51 +78,52 @@ permission_error: } int cam_cdm_soc_load_dt_private(struct platform_device *pdev, - struct cam_cdm_private_dt_data *ptr) + struct cam_cdm_private_dt_data *cdm_pvt_data) { - int i, rc = -EINVAL, num_fifo_entries = 0; + int i, rc = -EINVAL, num_fifo_entries = 0, num_clients = 0; - ptr->dt_num_supported_clients = of_property_count_strings( - pdev->dev.of_node, - "cdm-client-names"); - CAM_DBG(CAM_CDM, "Num supported cdm_client = %d", - ptr->dt_num_supported_clients); - if (ptr->dt_num_supported_clients > - CAM_PER_CDM_MAX_REGISTERED_CLIENTS) { + num_clients = of_property_count_strings( + pdev->dev.of_node, "cdm-client-names"); + if ((num_clients <= 0) || + (num_clients > CAM_PER_CDM_MAX_REGISTERED_CLIENTS)) { CAM_ERR(CAM_CDM, "Invalid count of client names count=%d", - ptr->dt_num_supported_clients); + num_clients); + rc = -EINVAL; goto end; } - if (ptr->dt_num_supported_clients < 0) { - CAM_DBG(CAM_CDM, "No cdm client names found"); - ptr->dt_num_supported_clients = 0; - ptr->dt_cdm_shared = false; - } else { - ptr->dt_cdm_shared = true; - } - for (i = 0; i < ptr->dt_num_supported_clients; i++) { + + cdm_pvt_data->dt_num_supported_clients = (uint32_t)num_clients; + CAM_DBG(CAM_CDM, "Num supported cdm_client = %u", + cdm_pvt_data->dt_num_supported_clients); + + cdm_pvt_data->dt_cdm_shared = true; + + for (i = 0; i < cdm_pvt_data->dt_num_supported_clients; i++) { rc = of_property_read_string_index(pdev->dev.of_node, - "cdm-client-names", i, &(ptr->dt_cdm_client_name[i])); - CAM_DBG(CAM_CDM, "cdm-client-names[%d] = %s", i, - ptr->dt_cdm_client_name[i]); + "cdm-client-names", i, + &(cdm_pvt_data->dt_cdm_client_name[i])); + CAM_DBG(CAM_CDM, "cdm-client-names[%d] = %s", i, + cdm_pvt_data->dt_cdm_client_name[i]); if (rc < 0) { - CAM_ERR(CAM_CDM, "Reading cdm-client-names failed"); + CAM_ERR(CAM_CDM, + "Reading cdm-client-names failed for client: %d", + i); goto end; } } rc = of_property_read_u8(pdev->dev.of_node, "cdm-priority-group", - &ptr->priority_group); + &cdm_pvt_data->priority_group); if (rc < 0) { - ptr->priority_group = 0; + cdm_pvt_data->priority_group = 0; rc = 0; } - ptr->config_fifo = of_property_read_bool(pdev->dev.of_node, + cdm_pvt_data->config_fifo = of_property_read_bool(pdev->dev.of_node, "config-fifo"); - if (ptr->config_fifo) { + if (cdm_pvt_data->config_fifo) { num_fifo_entries = of_property_count_u32_elems( pdev->dev.of_node, "fifo-depths"); @@ -135,7 +136,7 @@ int cam_cdm_soc_load_dt_private(struct platform_device *pdev, } for (i = 0; i < num_fifo_entries; i++) { rc = of_property_read_u32_index(pdev->dev.of_node, - "fifo-depths", i, &ptr->fifo_depth[i]); + "fifo-depths", i, &cdm_pvt_data->fifo_depth[i]); if (rc < 0) { CAM_ERR(CAM_CDM, "Unable to read fifo-depth rc %d", @@ -143,13 +144,14 @@ int cam_cdm_soc_load_dt_private(struct platform_device *pdev, goto end; } CAM_DBG(CAM_CDM, "FIFO%d depth is %d", - i, ptr->fifo_depth[i]); + i, cdm_pvt_data->fifo_depth[i]); } } else { for (i = 0; i < CAM_CDM_BL_FIFO_MAX; i++) { - ptr->fifo_depth[i] = CAM_CDM_BL_FIFO_LENGTH_MAX_DEFAULT; + cdm_pvt_data->fifo_depth[i] = + CAM_CDM_BL_FIFO_LENGTH_MAX_DEFAULT; CAM_DBG(CAM_CDM, "FIFO%d depth is %d", - i, ptr->fifo_depth[i]); + i, cdm_pvt_data->fifo_depth[i]); } } end: