msm: camera: isp: Add new WM port for SFE880

Add output port - HDR_STATS for SFE880 and update all mappings
associated with the port.

CRs-Fixed: 3175256
Change-Id: I1a856f3c705d651a486e0aba5a77ca73f0deb5a5
Signed-off-by: sokchetra eung <quic_eung@quicinc.com>
Цей коміт міститься в:
sokchetra eung
2022-04-14 22:33:50 -07:00
зафіксовано Camera Software Integration
джерело b7af81340a
коміт 323d00e1c1
4 змінених файлів з 28 додано та 4 видалено

Переглянути файл

@@ -1056,6 +1056,7 @@ static char *__cam_isp_ife_sfe_resource_handle_id_to_type(
case CAM_ISP_SFE_OUT_BAYER_RS_STATS_0: return "SFE_RS_STATS_0";
case CAM_ISP_SFE_OUT_BAYER_RS_STATS_1: return "SFE_RS_STATS_1";
case CAM_ISP_SFE_OUT_BAYER_RS_STATS_2: return "SFE_RS_STATS_2";
case CAM_ISP_SFE_OUT_HDR_STATS: return "HDR_STATS";
/* SFE input ports */
case CAM_ISP_SFE_IN_RD_0: return "SFE_RD_0";
case CAM_ISP_SFE_IN_RD_1: return "SFE_RD_1";

Переглянути файл

@@ -241,6 +241,7 @@ static bool cam_sfe_bus_can_be_secure(uint32_t out_type)
case CAM_SFE_BUS_SFE_OUT_BAYER_RS_0:
case CAM_SFE_BUS_SFE_OUT_BAYER_RS_1:
case CAM_SFE_BUS_SFE_OUT_BAYER_RS_2:
case CAM_SFE_BUS_SFE_OUT_HDR_STATS:
default:
return false;
}
@@ -284,6 +285,8 @@ static enum cam_sfe_bus_sfe_out_type
return CAM_SFE_BUS_SFE_OUT_BAYER_RS_1;
case CAM_ISP_SFE_OUT_BAYER_RS_STATS_2:
return CAM_SFE_BUS_SFE_OUT_BAYER_RS_2;
case CAM_ISP_SFE_OUT_HDR_STATS:
return CAM_SFE_BUS_SFE_OUT_HDR_STATS;
default:
return CAM_SFE_BUS_SFE_OUT_MAX;
}
@@ -345,6 +348,9 @@ static int cam_sfe_bus_get_comp_sfe_out_res_id_list(
if (comp_mask & (BIT(CAM_SFE_BUS_SFE_OUT_BAYER_RS_2)))
out_list[count++] = CAM_ISP_SFE_OUT_BAYER_RS_STATS_2;
if (comp_mask & (BIT(CAM_SFE_BUS_SFE_OUT_HDR_STATS)))
out_list[count++] = CAM_ISP_SFE_OUT_HDR_STATS;
*num_out = count;
return 0;
}
@@ -789,7 +795,6 @@ static int cam_sfe_bus_acquire_wm(
rsrc_data->height = 0;
rsrc_data->stride = 1;
rsrc_data->en_cfg = (0x1 << 16) | 0x1;
} else if (sfe_out_res_id == CAM_SFE_BUS_SFE_OUT_LCR) {
switch (rsrc_data->format) {
case CAM_FORMAT_PLAIN16_10:
@@ -807,6 +812,21 @@ static int cam_sfe_bus_acquire_wm(
rsrc_data->format, sfe_out_res_id);
return -EINVAL;
}
} else if (sfe_out_res_id == CAM_SFE_BUS_SFE_OUT_HDR_STATS) {
rsrc_data->en_cfg = 0x1;
rsrc_data->stride = rsrc_data->width;
switch (rsrc_data->format) {
case CAM_FORMAT_PLAIN16_10:
case CAM_FORMAT_PLAIN16_12:
case CAM_FORMAT_PLAIN16_14:
case CAM_FORMAT_PLAIN16_16:
/* LSB aligned */
rsrc_data->pack_fmt |=
(1 << bus_priv->common_data.pack_align_shift);
break;
default:
break;
}
} else {
CAM_ERR(CAM_SFE, "Invalid out_type:%d requested",
sfe_out_res_id);

Переглянути файл

@@ -10,9 +10,9 @@
#include "cam_sfe_bus.h"
#define CAM_SFE_BUS_WR_MAX_CLIENTS 16
#define CAM_SFE_BUS_WR_MAX_SUB_GRPS 6
#define CAM_SFE_BUS_CONS_ERR_MAX 32
#define CAM_SFE_BUS_WR_MAX_CLIENTS 17
#define CAM_SFE_BUS_WR_MAX_SUB_GRPS 6
#define CAM_SFE_BUS_CONS_ERR_MAX 32
enum cam_sfe_bus_wr_src_grp {
CAM_SFE_BUS_WR_SRC_GRP_0,
@@ -35,6 +35,7 @@ enum cam_sfe_bus_wr_comp_grp_type {
CAM_SFE_BUS_WR_COMP_GRP_7,
CAM_SFE_BUS_WR_COMP_GRP_8,
CAM_SFE_BUS_WR_COMP_GRP_9,
CAM_SFE_BUS_WR_COMP_GRP_10,
CAM_SFE_BUS_WR_COMP_GRP_MAX,
};
@@ -56,6 +57,7 @@ enum cam_sfe_bus_sfe_out_type {
CAM_SFE_BUS_SFE_OUT_BAYER_RS_1,
CAM_SFE_BUS_SFE_OUT_BAYER_RS_2,
CAM_SFE_BUS_SFE_OUT_IR,
CAM_SFE_BUS_SFE_OUT_HDR_STATS,
CAM_SFE_BUS_SFE_OUT_MAX,
};

Переглянути файл

@@ -27,6 +27,7 @@
#define CAM_ISP_SFE_OUT_BAYER_RS_STATS_0 (CAM_ISP_SFE_OUT_RES_BASE + 14)
#define CAM_ISP_SFE_OUT_BAYER_RS_STATS_1 (CAM_ISP_SFE_OUT_RES_BASE + 15)
#define CAM_ISP_SFE_OUT_BAYER_RS_STATS_2 (CAM_ISP_SFE_OUT_RES_BASE + 16)
#define CAM_ISP_SFE_OUT_HDR_STATS (CAM_ISP_SFE_OUT_RES_BASE + 17)
/* This Macro is deprecated and shall not be used */
#define CAM_ISP_SFE_OUT_RES_MAX (CAM_ISP_SFE_OUT_RES_BASE + 17)