Merge "msm: camera: isp: Add SOF Retiming Disable Support" into camera-kernel.lnx.5.0
This commit is contained in:

committato da
Gerrit - the friendly Code Review server

commit
0e9693d40b
@@ -420,10 +420,12 @@ static struct cam_ife_csid_ver2_path_reg_info
|
||||
/* configurations */
|
||||
.resume_frame_boundary = 1,
|
||||
.binning_supported = 0x7,
|
||||
.capabilities = CAM_IFE_CSID_CAP_SOF_RETIME_DIS,
|
||||
.start_mode_internal = 0x0,
|
||||
.start_mode_global = 0x1,
|
||||
.start_mode_master = 0x2,
|
||||
.start_mode_slave = 0x3,
|
||||
.sof_retiming_dis_shift = 5,
|
||||
.start_mode_shift = 2,
|
||||
.start_master_sel_val = 0,
|
||||
.start_master_sel_shift = 4,
|
||||
@@ -525,6 +527,7 @@ static struct cam_ife_csid_ver2_path_reg_info
|
||||
.epoch0_cfg_batch_id5_addr = 0xBF4,
|
||||
.epoch1_cfg_batch_id5_addr = 0xBF8,
|
||||
/* configurations */
|
||||
.capabilities = CAM_IFE_CSID_CAP_SOF_RETIME_DIS,
|
||||
.resume_frame_boundary = 1,
|
||||
.start_mode_shift = 2,
|
||||
.start_mode_internal = 0x0,
|
||||
@@ -554,6 +557,7 @@ static struct cam_ife_csid_ver2_path_reg_info
|
||||
.top_irq_mask = 0x10,
|
||||
.epoch0_shift_val = 16,
|
||||
.epoch1_shift_val = 0,
|
||||
.sof_retiming_dis_shift = 5,
|
||||
};
|
||||
|
||||
static struct cam_ife_csid_ver2_path_reg_info
|
||||
@@ -629,7 +633,8 @@ static struct cam_ife_csid_ver2_path_reg_info
|
||||
CAM_IFE_CSID_CAP_MIPI10_UNPACK |
|
||||
CAM_IFE_CSID_CAP_MIPI12_UNPACK |
|
||||
CAM_IFE_CSID_CAP_MIPI14_UNPACK |
|
||||
CAM_IFE_CSID_CAP_LINE_SMOOTHING_IN_RDI,
|
||||
CAM_IFE_CSID_CAP_LINE_SMOOTHING_IN_RDI |
|
||||
CAM_IFE_CSID_CAP_SOF_RETIME_DIS,
|
||||
.overflow_ctrl_mode_val = 0x8,
|
||||
.offline_mode_supported = 1,
|
||||
.mipi_pack_supported = 1,
|
||||
@@ -654,6 +659,7 @@ static struct cam_ife_csid_ver2_path_reg_info
|
||||
.epoch0_shift_val = 16,
|
||||
.epoch1_shift_val = 0,
|
||||
.pix_store_en_shift_val = 10,
|
||||
.sof_retiming_dis_shift = 5,
|
||||
};
|
||||
|
||||
static struct cam_ife_csid_ver2_path_reg_info
|
||||
@@ -729,7 +735,8 @@ static struct cam_ife_csid_ver2_path_reg_info
|
||||
CAM_IFE_CSID_CAP_MIPI10_UNPACK |
|
||||
CAM_IFE_CSID_CAP_MIPI12_UNPACK |
|
||||
CAM_IFE_CSID_CAP_MIPI14_UNPACK |
|
||||
CAM_IFE_CSID_CAP_LINE_SMOOTHING_IN_RDI,
|
||||
CAM_IFE_CSID_CAP_LINE_SMOOTHING_IN_RDI |
|
||||
CAM_IFE_CSID_CAP_SOF_RETIME_DIS,
|
||||
.overflow_ctrl_mode_val = 0x8,
|
||||
.mipi_pack_supported = 1,
|
||||
.offline_mode_supported = 1,
|
||||
@@ -754,6 +761,7 @@ static struct cam_ife_csid_ver2_path_reg_info
|
||||
.epoch0_shift_val = 16,
|
||||
.epoch1_shift_val = 0,
|
||||
.pix_store_en_shift_val = 10,
|
||||
.sof_retiming_dis_shift = 5,
|
||||
};
|
||||
|
||||
static struct cam_ife_csid_ver2_path_reg_info
|
||||
@@ -829,7 +837,8 @@ static struct cam_ife_csid_ver2_path_reg_info
|
||||
CAM_IFE_CSID_CAP_MIPI10_UNPACK |
|
||||
CAM_IFE_CSID_CAP_MIPI12_UNPACK |
|
||||
CAM_IFE_CSID_CAP_MIPI14_UNPACK |
|
||||
CAM_IFE_CSID_CAP_LINE_SMOOTHING_IN_RDI,
|
||||
CAM_IFE_CSID_CAP_LINE_SMOOTHING_IN_RDI |
|
||||
CAM_IFE_CSID_CAP_SOF_RETIME_DIS,
|
||||
.overflow_ctrl_mode_val = 0x8,
|
||||
.mipi_pack_supported = 1,
|
||||
.offline_mode_supported = 1,
|
||||
@@ -854,6 +863,7 @@ static struct cam_ife_csid_ver2_path_reg_info
|
||||
.epoch0_shift_val = 16,
|
||||
.epoch1_shift_val = 0,
|
||||
.pix_store_en_shift_val = 10,
|
||||
.sof_retiming_dis_shift = 5,
|
||||
};
|
||||
|
||||
static struct cam_ife_csid_ver2_path_reg_info
|
||||
@@ -923,6 +933,7 @@ static struct cam_ife_csid_ver2_path_reg_info
|
||||
.epoch0_cfg_batch_id5_addr = 0x8EC,
|
||||
.epoch1_cfg_batch_id5_addr = 0x8F0,
|
||||
/* configurations */
|
||||
.capabilities = CAM_IFE_CSID_CAP_SOF_RETIME_DIS,
|
||||
.resume_frame_boundary = 1,
|
||||
.overflow_ctrl_en = 1,
|
||||
.capabilities = 0,
|
||||
@@ -949,6 +960,7 @@ static struct cam_ife_csid_ver2_path_reg_info
|
||||
.top_irq_mask = 0x800,
|
||||
.epoch0_shift_val = 16,
|
||||
.epoch1_shift_val = 0,
|
||||
.sof_retiming_dis_shift = 5,
|
||||
};
|
||||
|
||||
static struct cam_ife_csid_ver2_path_reg_info
|
||||
@@ -1018,6 +1030,7 @@ static struct cam_ife_csid_ver2_path_reg_info
|
||||
.epoch0_cfg_batch_id5_addr = 0x9EC,
|
||||
.epoch1_cfg_batch_id5_addr = 0x9F0,
|
||||
/* configurations */
|
||||
.capabilities = CAM_IFE_CSID_CAP_SOF_RETIME_DIS,
|
||||
.resume_frame_boundary = 1,
|
||||
.overflow_ctrl_en = 1,
|
||||
.capabilities = 0,
|
||||
@@ -1044,6 +1057,7 @@ static struct cam_ife_csid_ver2_path_reg_info
|
||||
.top_irq_mask = 0x1000,
|
||||
.epoch0_shift_val = 16,
|
||||
.epoch1_shift_val = 0,
|
||||
.sof_retiming_dis_shift = 5,
|
||||
};
|
||||
|
||||
static struct cam_ife_csid_csi2_rx_reg_info
|
||||
|
@@ -41,6 +41,7 @@
|
||||
#define CAM_IFE_CSID_CAP_MIPI16_UNPACK 0x20
|
||||
#define CAM_IFE_CSID_CAP_MIPI20_UNPACK 0x40
|
||||
#define CAM_IFE_CSID_CAP_LINE_SMOOTHING_IN_RDI 0x80
|
||||
#define CAM_IFE_CSID_CAP_SOF_RETIME_DIS 0x100
|
||||
|
||||
/*
|
||||
* Debug values enable the corresponding interrupts and debug logs provide
|
||||
|
@@ -55,6 +55,28 @@ static void cam_ife_csid_ver2_print_debug_reg_status(
|
||||
struct cam_ife_csid_ver2_hw *csid_hw,
|
||||
struct cam_isp_resource_node *res);
|
||||
|
||||
static bool cam_ife_csid_ver2_disable_sof_retime(
|
||||
struct cam_ife_csid_ver2_hw *csid_hw,
|
||||
struct cam_isp_resource_node *res)
|
||||
{
|
||||
struct cam_ife_csid_ver2_reg_info *csid_reg = (struct cam_ife_csid_ver2_reg_info *)
|
||||
csid_hw->core_info->csid_reg;
|
||||
struct cam_ife_csid_ver2_path_cfg *path_cfg = (struct cam_ife_csid_ver2_path_cfg *)
|
||||
res->res_priv;
|
||||
const struct cam_ife_csid_ver2_path_reg_info *path_reg = csid_reg->path_reg[res->res_id];
|
||||
|
||||
if (!(path_reg->capabilities & CAM_IFE_CSID_CAP_SOF_RETIME_DIS))
|
||||
return false;
|
||||
|
||||
if (path_cfg->sfe_shdr || path_cfg->lcr_en)
|
||||
return true;
|
||||
|
||||
if (csid_hw->flags.rdi_lcr_en && res->res_id == CAM_IFE_PIX_PATH_RES_PPP)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int cam_ife_csid_ver2_set_debug(
|
||||
struct cam_ife_csid_ver2_hw *csid_hw,
|
||||
uint32_t debug_val)
|
||||
@@ -2783,8 +2805,14 @@ static int cam_ife_csid_ver2_init_config_rdi_path(
|
||||
(cmn_reg->timestamp_strobe_val <<
|
||||
cmn_reg->timestamp_stb_sel_shift_val);
|
||||
|
||||
if (cam_ife_csid_ver2_disable_sof_retime(csid_hw, res))
|
||||
cfg0 |= 1 << path_reg->sof_retiming_dis_shift;
|
||||
|
||||
cam_io_w_mb(cfg0, mem_base + path_reg->cfg0_addr);
|
||||
|
||||
CAM_DBG(CAM_ISP, "CSID[%d] %s cfg0_addr 0x%x",
|
||||
csid_hw->hw_intf->hw_idx, res->res_name, cfg0);
|
||||
|
||||
/*Configure Multi VC DT combo */
|
||||
if (cid_data->vc_dt[CAM_IFE_CSID_MULTI_VC_DT_GRP_1].valid) {
|
||||
val = (cid_data->vc_dt[CAM_IFE_CSID_MULTI_VC_DT_GRP_1].vc <<
|
||||
@@ -2943,6 +2971,9 @@ static int cam_ife_csid_ver2_init_config_pxl_path(
|
||||
(cmn_reg->timestamp_strobe_val <<
|
||||
cmn_reg->timestamp_stb_sel_shift_val);
|
||||
|
||||
if (cam_ife_csid_ver2_disable_sof_retime(csid_hw, res))
|
||||
cfg0 |= 1 << path_reg->sof_retiming_dis_shift;
|
||||
|
||||
CAM_DBG(CAM_ISP, "CSID[%d] res:%d cfg0_addr 0x%x",
|
||||
csid_hw->hw_intf->hw_idx, res->res_id, cfg0);
|
||||
|
||||
@@ -5021,6 +5052,7 @@ static int cam_ife_csid_ver2_rdi_lcr_cfg(
|
||||
csid_reg->top_reg->rdi_lcr_shift_val;
|
||||
|
||||
csid_hw->flags.rdi_lcr_en = true;
|
||||
path_cfg->lcr_en = true;
|
||||
|
||||
CAM_DBG(CAM_ISP, "CSID[%u] %s top_cfg %u",
|
||||
csid_hw->hw_intf->hw_idx, res->res_name, csid_hw->top_cfg.rdi_lcr);
|
||||
|
@@ -168,6 +168,7 @@ struct cam_ife_csid_ver2_camif_data {
|
||||
* for before processing discard config we can skip it for
|
||||
* the corresponding paths
|
||||
* @sfe_shdr: flag to indicate if sfe is inline shdr
|
||||
* @lcr_en: Flag to indicate if path is part can be input to LCR
|
||||
*
|
||||
*/
|
||||
struct cam_ife_csid_ver2_path_cfg {
|
||||
@@ -206,6 +207,7 @@ struct cam_ife_csid_ver2_path_cfg {
|
||||
bool discard_init_frames;
|
||||
bool skip_discard_frame_cfg;
|
||||
bool sfe_shdr;
|
||||
bool lcr_en;
|
||||
};
|
||||
|
||||
struct cam_ife_csid_ver2_top_reg_info {
|
||||
@@ -351,6 +353,7 @@ struct cam_ife_csid_ver2_path_reg_info {
|
||||
uint32_t epoch1_cfg_val;
|
||||
uint32_t epoch0_shift_val;
|
||||
uint32_t epoch1_shift_val;
|
||||
uint32_t sof_retiming_dis_shift;
|
||||
uint32_t capabilities;
|
||||
};
|
||||
|
||||
|
Fai riferimento in un nuovo problema
Block a user