diff --git a/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_common.c b/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_common.c index 66fb028e3b..fec03b0c35 100644 --- a/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_common.c +++ b/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_common.c @@ -21,6 +21,7 @@ #include "cam_ife_csid_common.h" #include "cam_ife_csid_hw_ver1.h" #include "cam_ife_csid_hw_ver2.h" +#include "cam_cdm_intf_api.h" const uint8_t *cam_ife_csid_irq_reg_tag[CAM_IFE_CSID_IRQ_REG_MAX] = { "TOP", @@ -642,10 +643,12 @@ int cam_ife_csid_get_base(struct cam_hw_soc_info *soc_info, return -EINVAL; } - mem_base = CAM_SOC_GET_REG_MAP_CAM_BASE( - soc_info, base_id); - CAM_DBG(CAM_ISP, "core %d mem_base 0x%x", - soc_info->index, mem_base); + mem_base = CAM_SOC_GET_REG_MAP_CAM_BASE(soc_info, base_id); + if (cdm_args->cdm_id == CAM_CDM_RT) + mem_base -= CAM_SOC_GET_REG_MAP_CAM_BASE(soc_info, RT_BASE_IDX); + + CAM_DBG(CAM_ISP, "core %d mem_base 0x%x, cdm_id:%u", + soc_info->index, mem_base, cdm_args->cdm_id); cdm_util_ops->cdm_write_changebase( cdm_args->cmd.cmd_buf_addr, mem_base); diff --git a/drivers/cam_isp/isp_hw_mgr/isp_hw/include/cam_ife_csid_hw_intf.h b/drivers/cam_isp/isp_hw_mgr/isp_hw/include/cam_ife_csid_hw_intf.h index 5303f9853e..a6b444a231 100644 --- a/drivers/cam_isp/isp_hw_mgr/isp_hw/include/cam_ife_csid_hw_intf.h +++ b/drivers/cam_isp/isp_hw_mgr/isp_hw/include/cam_ife_csid_hw_intf.h @@ -12,6 +12,7 @@ /* MAX IFE CSID instance */ #define CAM_IFE_CSID_HW_NUM_MAX 7 #define CAM_IFE_CSID_UDI_MAX 3 +#define RT_BASE_IDX 2 /** * enum cam_ife_csid_input_core_type - Specify the csid input core diff --git a/drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top_ver4.c b/drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top_ver4.c index 6bd57634b5..c1f47cba63 100644 --- a/drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top_ver4.c +++ b/drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top_ver4.c @@ -15,6 +15,7 @@ #include "cam_isp_hw_mgr_intf.h" #include "cam_irq_controller.h" #include "cam_tasklet_util.h" +#include "cam_cdm_intf_api.h" #define CAM_VFE_HW_RESET_HW_AND_REG_VAL 0x00000001 #define CAM_VFE_HW_RESET_HW_VAL 0x00010000 @@ -121,8 +122,13 @@ static int cam_vfe_top_ver4_mux_get_base(struct cam_vfe_top_ver4_priv *top_priv, mem_base = CAM_SOC_GET_REG_MAP_CAM_BASE( top_priv->common_data.soc_info, VFE_CORE_BASE_IDX); - CAM_DBG(CAM_ISP, "core %d mem_base 0x%x", - top_priv->common_data.soc_info->index, mem_base); + if (cdm_args->cdm_id == CAM_CDM_RT) + mem_base -= CAM_SOC_GET_REG_MAP_CAM_BASE( + top_priv->common_data.soc_info, RT_BASE_IDX); + + CAM_DBG(CAM_ISP, "core %d mem_base 0x%x, cdm_id: %u", + top_priv->common_data.soc_info->index, mem_base, + cdm_args->cdm_id); cdm_util_ops->cdm_write_changebase( cdm_args->cmd.cmd_buf_addr, mem_base);