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

Commit 09ac3781 authored by Senthil kumar Rajagopal's avatar Senthil kumar Rajagopal Committed by Senthil Kumar Rajagopal
Browse files

msm: camera: isp: Address corner cases in camera2 buffer handling



Increment sof counter when camif sof is received and use it in
request_frame

Change-Id: I0a6fe61655a9fa1581e34d88990429ba0b6852c7
Signed-off-by: default avatarSenthil Kumar Rajagopal <skrajago@codeaurora.org>
parent d1d399cc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -372,6 +372,7 @@ struct msm_vfe_axi_composite_info {

struct msm_vfe_src_info {
	uint32_t frame_id;
	uint32_t camif_sof_frame_id;
	uint8_t active;
	uint8_t pix_stream_count;
	uint8_t raw_stream_count;
+6 −0
Original line number Diff line number Diff line
@@ -399,6 +399,12 @@ static void msm_vfe32_process_camif_irq(struct vfe_device *vfe_dev,
	if (!(irq_status0 & 0x1F))
		return;

	if (irq_status0 & 0x1)
		vfe_dev->axi_data.src_info[VFE_PIX_0].camif_sof_frame_id++;

	if (vfe_dev->axi_data.src_info[VFE_PIX_0].camif_sof_frame_id == 0)
		vfe_dev->axi_data.src_info[VFE_PIX_0].camif_sof_frame_id = 1;

	if (irq_status0 & BIT(0)) {
		ISP_DBG("%s: SOF IRQ\n", __func__);
		if (vfe_dev->axi_data.src_info[VFE_PIX_0].raw_stream_count > 0
+6 −0
Original line number Diff line number Diff line
@@ -443,6 +443,12 @@ static void msm_vfe40_process_input_irq(struct vfe_device *vfe_dev,
	if (!(irq_status0 & 0x1000003))
		return;

	if (irq_status0 & 0x1)
		vfe_dev->axi_data.src_info[VFE_PIX_0].camif_sof_frame_id++;

	if (vfe_dev->axi_data.src_info[VFE_PIX_0].camif_sof_frame_id == 0)
		vfe_dev->axi_data.src_info[VFE_PIX_0].camif_sof_frame_id = 1;

	if (irq_status0 & (1 << 24)) {
		ISP_DBG("%s: Fetch Engine Read IRQ\n", __func__);
		msm_isp_fetch_engine_done_notify(vfe_dev,
+6 −0
Original line number Diff line number Diff line
@@ -291,6 +291,12 @@ static void msm_vfe44_process_input_irq(struct vfe_device *vfe_dev,
	if (!(irq_status0 & 0x1000003))
		return;

	if (irq_status0 & 0x1)
		vfe_dev->axi_data.src_info[VFE_PIX_0].camif_sof_frame_id++;

	if (vfe_dev->axi_data.src_info[VFE_PIX_0].camif_sof_frame_id == 0)
		vfe_dev->axi_data.src_info[VFE_PIX_0].camif_sof_frame_id = 1;

	if (irq_status0 & (1 << 24)) {
		ISP_DBG("%s: Fetch Engine Read IRQ\n", __func__);
		msm_isp_fetch_engine_done_notify(vfe_dev,
+6 −0
Original line number Diff line number Diff line
@@ -316,6 +316,12 @@ static void msm_vfe46_process_input_irq(struct vfe_device *vfe_dev,
	if (!(irq_status0 & 0x1000003))
		return;

	if (irq_status0 & 0x1)
		vfe_dev->axi_data.src_info[VFE_PIX_0].camif_sof_frame_id++;

	if (vfe_dev->axi_data.src_info[VFE_PIX_0].camif_sof_frame_id == 0)
		vfe_dev->axi_data.src_info[VFE_PIX_0].camif_sof_frame_id = 1;

	if (irq_status0 & (1 << 24)) {
		ISP_DBG("%s: Fetch Engine Read IRQ\n", __func__);
		msm_isp_fetch_engine_done_notify(vfe_dev,
Loading