From 70c486722f5c2d4da67147b458281aaf21da1997 Mon Sep 17 00:00:00 2001 From: Mukund Madhusudan Atre Date: Fri, 13 Sep 2019 15:52:38 -0700 Subject: [PATCH] msm: camera: common: Fix cpas register for custom hw The client handle is obtained by providing client identifier to cpas. Add identifier in custom hw registration for cpas to recognize client. Also, improve identifier string validation in cpas register client. CRs-Fixed: 2528679 Change-Id: I924f5c98a8affa26753710fa542c1bb651d0af13 Signed-off-by: Mukund Madhusudan Atre --- drivers/cam_cpas/cam_cpas_hw.c | 6 ++++++ .../cam_custom_hw1/cam_custom_sub_mod_soc.c | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/cam_cpas/cam_cpas_hw.c b/drivers/cam_cpas/cam_cpas_hw.c index c6dddff25e2c..dc7435516875 100644 --- a/drivers/cam_cpas/cam_cpas_hw.c +++ b/drivers/cam_cpas/cam_cpas_hw.c @@ -1369,6 +1369,12 @@ static int cam_cpas_hw_register_client(struct cam_hw_info *cpas_hw, struct cam_cpas_private_soc *soc_private = (struct cam_cpas_private_soc *) cpas_hw->soc_info.soc_private; + if ((!register_params) || + (strlen(register_params->identifier) < 1)) { + CAM_ERR(CAM_CPAS, "Invalid cpas client identifier"); + return -EINVAL; + } + CAM_DBG(CAM_CPAS, "Register params : identifier=%s, cell_index=%d", register_params->identifier, register_params->cell_index); diff --git a/drivers/cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_soc.c b/drivers/cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_soc.c index 0b517b93c6c0..9011ac9d5291 100644 --- a/drivers/cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_soc.c +++ b/drivers/cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_soc.c @@ -41,17 +41,20 @@ int cam_custom_hw_sub_mod_init_soc_resources(struct cam_hw_soc_info *soc_info, memset(&cpas_register_param, 0, sizeof(cpas_register_param)); + strlcpy(cpas_register_param.identifier, "custom", + CAM_HW_IDENTIFIER_LENGTH); cpas_register_param.cell_index = soc_info->index; cpas_register_param.dev = soc_info->dev; cpas_register_param.cam_cpas_client_cb = NULL; cpas_register_param.userdata = soc_info; - soc_private->cpas_handle = - cpas_register_param.client_handle; rc = cam_cpas_register_client(&cpas_register_param); if (rc < 0) goto release_soc; + soc_private->cpas_handle = + cpas_register_param.client_handle; + return rc; release_soc: