Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83cd26e7 authored by Vishalsingh Hajeri's avatar Vishalsingh Hajeri
Browse files

msm: camera: isp: Add CSID binning



Add support to configure CSID binning

Change-Id: I09b76b287c243149c89cba958a786f7476c8addb
Signed-off-by: default avatarVishalsingh Hajeri <vhajeri@codeaurora.org>
parent a8667785
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -2147,6 +2147,8 @@ static int cam_ife_mgr_acquire_get_unified_structure_v0(
	port_info->dsp_mode        =  in->dsp_mode;
	port_info->hbi_cnt         =  in->hbi_cnt;
	port_info->cust_node       =  0;
	port_info->horizontal_bin  =  0;
	port_info->qcfa_bin        =  0;
	port_info->num_out_res     =  in->num_out_res;

	port_info->data = kcalloc(in->num_out_res,
@@ -2246,6 +2248,8 @@ static int cam_ife_mgr_acquire_get_unified_structure_v2(
	port_info->dsp_mode       =  in->dsp_mode;
	port_info->hbi_cnt        =  in->hbi_cnt;
	port_info->cust_node      =  in->cust_node;
	port_info->horizontal_bin =  in->horizontal_bin;
	port_info->qcfa_bin       =  in->qcfa_bin;
	port_info->num_out_res    =  in->num_out_res;

	port_info->data = kcalloc(in->num_out_res,
+2 −0
Original line number Diff line number Diff line
@@ -50,6 +50,8 @@ static struct cam_ife_csid_pxl_reg_offset cam_ife_csid_480_ipp_reg_offset = {
	/* configurations */
	.pix_store_en_shift_val              = 7,
	.early_eof_en_shift_val              = 29,
	.horizontal_bin_en_shift_val         = 2,
	.quad_cfa_bin_en_shift_val           = 30,
	.ccif_violation_en                   = 1,
	.overflow_ctrl_en                    = 1,
};
+8 −0
Original line number Diff line number Diff line
@@ -1016,6 +1016,8 @@ static int cam_ife_csid_path_reserve(struct cam_ife_csid_hw *csid_hw,
	path_data->end_line = reserve->in_port->line_stop;
	path_data->crop_enable = reserve->crop_enable;
	path_data->drop_enable = reserve->drop_enable;
	path_data->horizontal_bin = reserve->in_port->horizontal_bin;
	path_data->qcfa_bin = reserve->in_port->qcfa_bin;

	CAM_DBG(CAM_ISP,
		"Res id: %d height:%d line_start %d line_stop %d crop_en %d",
@@ -1603,6 +1605,12 @@ static int cam_ife_csid_init_config_pxl_path(
			(path_data->drop_enable <<
			csid_reg->cmn_reg->drop_v_en_shift_val);

	if (path_data->horizontal_bin || path_data->qcfa_bin) {
		val |= (1 << pxl_reg->horizontal_bin_en_shift_val);
		if (path_data->qcfa_bin)
			val |= (1 << pxl_reg->quad_cfa_bin_en_shift_val);
	}

	val |= (1 << pxl_reg->pix_store_en_shift_val);
	cam_io_w_mb(val, soc_info->reg_map[0].mem_base +
		pxl_reg->csid_pxl_cfg0_addr);
+3 −0
Original line number Diff line number Diff line
@@ -133,6 +133,7 @@ struct cam_ife_csid_pxl_reg_offset {
	/* configuration */
	uint32_t pix_store_en_shift_val;
	uint32_t early_eof_en_shift_val;
	uint32_t horizontal_bin_en_shift_val;
	uint32_t quad_cfa_bin_en_shift_val;
	uint32_t ccif_violation_en;
	uint32_t overflow_ctrl_en;
@@ -448,6 +449,8 @@ struct cam_ife_csid_path_cfg {
	enum cam_isp_hw_sync_mode       sync_mode;
	uint32_t                        master_idx;
	uint64_t                        clk_rate;
	uint32_t                        horizontal_bin;
	uint32_t                        qcfa_bin;
};

/**
+2 −0
Original line number Diff line number Diff line
@@ -95,6 +95,8 @@ struct cam_isp_in_port_generic_info {
	uint32_t                        hbi_cnt;
	uint32_t                        cust_node;
	uint32_t                        num_out_res;
	uint32_t                        horizontal_bin;
	uint32_t                        qcfa_bin;
	struct cam_isp_out_port_generic_info    *data;
};

Loading