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

Commit 5a53510c authored by Meera Gande's avatar Meera Gande
Browse files

msm: camera: isp: Update ab & ib voting for fe



Update ab and ib voting for reading in
offline ISP. Also made changes to recover from
overflow for fetch engine.

Change-Id: I230a9ec92f9454e1c59d2998f3ac53d482f51cf3
Signed-off-by: default avatarMeera Gande <mgande@codeaurora.org>
parent 20059604
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
/* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
/* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -1782,11 +1782,18 @@ static int msm_vfe40_axi_restart(struct vfe_device *vfe_dev,
	memset(&vfe_dev->error_info, 0, sizeof(vfe_dev->error_info));
	atomic_set(&vfe_dev->error_info.overflow_state, NO_OVERFLOW);

	if (enable_camif) {
	if (enable_camif &&
		vfe_dev->axi_data.src_info[VFE_PIX_0].input_mux
		!= EXTERNAL_READ){
		vfe_dev->hw_info->vfe_ops.core_ops.
		update_camif_state(vfe_dev, ENABLE_CAMIF);
	}

	if (vfe_dev->fetch_engine_info.is_busy == 1) {
		vfe_dev->fetch_engine_info.is_busy = 0;
		msm_camera_io_w_mb(0x1, vfe_dev->vfe_base + 0x378);
		msm_camera_io_w_mb(0x10000, vfe_dev->vfe_base + 0x4C);
		msm_camera_io_w_mb(0x20000, vfe_dev->vfe_base + 0x4C);
	}
	return 0;
}

+12 −1
Original line number Diff line number Diff line
@@ -2272,8 +2272,10 @@ int msm_isp_update_stream_bandwidth(struct vfe_device *vfe_dev,
	struct msm_vfe_axi_stream *stream_info;
	struct msm_vfe_axi_shared_data *axi_data = &vfe_dev->axi_data;
	uint64_t total_pix_bandwidth = 0, total_rdi_bandwidth = 0;
	uint64_t total_fe_bandwidth = 0;
	uint32_t num_pix_streams = 0;
	uint64_t total_bandwidth = 0;
	int bpp = 0;

	for (i = 0; i < VFE_AXI_SRC_MAX; i++) {
		stream_info = &axi_data->stream_info[i];
@@ -2297,7 +2299,16 @@ int msm_isp_update_stream_bandwidth(struct vfe_device *vfe_dev,
		}
	}

	total_bandwidth = total_pix_bandwidth + total_rdi_bandwidth;
	if (axi_data->src_info[VFE_PIX_0].input_mux == EXTERNAL_READ
		&& num_pix_streams){
			bpp = msm_isp_get_bit_per_pixel(axi_data->
			src_info[VFE_PIX_0].input_format);
			total_fe_bandwidth =
			(axi_data->src_info[VFE_PIX_0].pixel_clock / 8) * bpp;
	}

	total_bandwidth = total_pix_bandwidth + total_rdi_bandwidth +
			total_fe_bandwidth;
		rc = msm_isp_update_bandwidth(ISP_VFE0 + vfe_dev->pdev->id,
			(total_bandwidth + vfe_dev->hw_info->min_ab),
			(total_bandwidth + vfe_dev->hw_info->min_ib));