From 14b75bff2def91798302812e89971c5ce1c3ba7d Mon Sep 17 00:00:00 2001 From: Gaurav Jindal Date: Mon, 16 Dec 2019 13:57:57 +0530 Subject: [PATCH] msm: camera: isp: Add support for IFE2 Add support for IFE2 hardware in ife hw manager, bus files. CRs-Fixed: 2571273 Change-Id: I6193b70707b15282b8d819e8dda5eb2e5fc4c345 Signed-off-by: Gaurav Jindal --- drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c | 10 ++++++++++ .../isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.c | 15 +++++++++++++++ .../isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.h | 3 ++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c b/drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c index 70da17532160..a652bc1e6069 100644 --- a/drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c +++ b/drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c @@ -1439,6 +1439,16 @@ static int cam_convert_hw_idx_to_ife_hw_num(int hw_idx) else if (hw_idx == 4) return CAM_ISP_IFE1_LITE_HW; break; + case CAM_CPAS_TITAN_170_V200: + if (hw_idx == 0) + return CAM_ISP_IFE0_HW; + else if (hw_idx == 1) + return CAM_ISP_IFE1_HW; + else if (hw_idx == 2) + return CAM_ISP_IFE2_HW; + else if (hw_idx == 3) + return CAM_ISP_IFE0_LITE_HW; + break; default: CAM_ERR(CAM_ISP, "Invalid hw_version: 0x%X", hw_version); diff --git a/drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.c b/drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.c index 9c72e88c6f84..401b49b6f073 100644 --- a/drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.c +++ b/drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.c @@ -319,6 +319,7 @@ static int cam_vfe_bus_ver2_get_intra_client_mask( case CAM_VFE_BUS_VER2_VFE_CORE_0: switch (dual_slave_core) { case CAM_VFE_BUS_VER2_VFE_CORE_1: + case CAM_VFE_BUS_VER2_VFE_CORE_2: *intra_client_mask = version_based_intra_client_mask; break; default: @@ -331,6 +332,20 @@ static int cam_vfe_bus_ver2_get_intra_client_mask( case CAM_VFE_BUS_VER2_VFE_CORE_1: switch (dual_slave_core) { case CAM_VFE_BUS_VER2_VFE_CORE_0: + case CAM_VFE_BUS_VER2_VFE_CORE_2: + *intra_client_mask = version_based_intra_client_mask; + break; + default: + CAM_ERR(CAM_ISP, "Invalid value for slave core %u", + dual_slave_core); + rc = -EINVAL; + break; + } + break; + case CAM_VFE_BUS_VER2_VFE_CORE_2: + switch (dual_slave_core) { + case CAM_VFE_BUS_VER2_VFE_CORE_0: + case CAM_VFE_BUS_VER2_VFE_CORE_1: *intra_client_mask = version_based_intra_client_mask; break; default: diff --git a/drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.h b/drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.h index cac3adf65a93..fc1608315330 100644 --- a/drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.h +++ b/drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* - * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. + * Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. */ #ifndef _CAM_VFE_BUS_VER2_H_ @@ -14,6 +14,7 @@ enum cam_vfe_bus_ver2_vfe_core_id { CAM_VFE_BUS_VER2_VFE_CORE_0, CAM_VFE_BUS_VER2_VFE_CORE_1, + CAM_VFE_BUS_VER2_VFE_CORE_2, CAM_VFE_BUS_VER2_VFE_CORE_MAX, };