Commit c85d0eec authored by Dafna Hirschfeld's avatar Dafna Hirschfeld Committed by Mauro Carvalho Chehab
Browse files

media: staging: rkisp1: call params isr only upon frame out



Currently the params isr is called and then returned when
isp-frame interrupt is not set. This condition is already
tested in the isp's isr so move the call under the condition
in the isp's isr.

Signed-off-by: default avatarDafna Hirschfeld <dafna.hirschfeld@collabora.com>
Acked-by: default avatarHelen Koike <helen.koike@collabora.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 56947d2c
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -460,7 +460,7 @@ void rkisp1_isp_isr(struct rkisp1_device *rkisp1);
void rkisp1_mipi_isr(struct rkisp1_device *rkisp1);
void rkisp1_mipi_isr(struct rkisp1_device *rkisp1);
void rkisp1_capture_isr(struct rkisp1_device *rkisp1);
void rkisp1_capture_isr(struct rkisp1_device *rkisp1);
void rkisp1_stats_isr(struct rkisp1_stats *stats, u32 isp_ris);
void rkisp1_stats_isr(struct rkisp1_stats *stats, u32 isp_ris);
void rkisp1_params_isr(struct rkisp1_device *rkisp1, u32 isp_mis);
void rkisp1_params_isr(struct rkisp1_device *rkisp1);


/* register/unregisters functions of the entities */
/* register/unregisters functions of the entities */
int rkisp1_capture_devs_register(struct rkisp1_device *rkisp1);
int rkisp1_capture_devs_register(struct rkisp1_device *rkisp1);
+6 −6
Original line number Original line Diff line number Diff line
@@ -1140,12 +1140,12 @@ void rkisp1_isp_isr(struct rkisp1_device *rkisp1)
		isp_ris = rkisp1_read(rkisp1, RKISP1_CIF_ISP_RIS);
		isp_ris = rkisp1_read(rkisp1, RKISP1_CIF_ISP_RIS);
		if (isp_ris & RKISP1_STATS_MEAS_MASK)
		if (isp_ris & RKISP1_STATS_MEAS_MASK)
			rkisp1_stats_isr(&rkisp1->stats, isp_ris);
			rkisp1_stats_isr(&rkisp1->stats, isp_ris);
	}

		/*
		/*
		 * Then update changed configs. Some of them involve
		 * Then update changed configs. Some of them involve
		 * lot of register writes. Do those only one per frame.
		 * lot of register writes. Do those only one per frame.
		 * Do the updates in the order of the processing flow.
		 * Do the updates in the order of the processing flow.
		 */
		 */
	rkisp1_params_isr(rkisp1, status);
		rkisp1_params_isr(rkisp1);
	}

}
}
+13 −16
Original line number Original line Diff line number Diff line
@@ -1185,12 +1185,13 @@ static void rkisp1_isp_isr_meas_config(struct rkisp1_params *params,
	}
	}
}
}


void rkisp1_params_isr(struct rkisp1_device *rkisp1, u32 isp_mis)
void rkisp1_params_isr(struct rkisp1_device *rkisp1)
{
{
	unsigned int frame_sequence = atomic_read(&rkisp1->isp.frame_sequence);
	unsigned int frame_sequence = atomic_read(&rkisp1->isp.frame_sequence);
	struct rkisp1_params *params = &rkisp1->params;
	struct rkisp1_params *params = &rkisp1->params;
	struct rkisp1_params_cfg *new_params;
	struct rkisp1_params_cfg *new_params;
	struct rkisp1_buffer *cur_buf = NULL;
	struct rkisp1_buffer *cur_buf = NULL;
	u32 isp_ctrl;


	spin_lock(&params->config_lock);
	spin_lock(&params->config_lock);
	if (!params->is_streaming) {
	if (!params->is_streaming) {
@@ -1209,9 +1210,6 @@ void rkisp1_params_isr(struct rkisp1_device *rkisp1, u32 isp_mis)


	new_params = (struct rkisp1_params_cfg *)(cur_buf->vaddr);
	new_params = (struct rkisp1_params_cfg *)(cur_buf->vaddr);


	if (isp_mis & RKISP1_CIF_ISP_FRAME) {
		u32 isp_ctrl;

	rkisp1_isp_isr_other_config(params, new_params);
	rkisp1_isp_isr_other_config(params, new_params);
	rkisp1_isp_isr_meas_config(params, new_params);
	rkisp1_isp_isr_meas_config(params, new_params);


@@ -1227,7 +1225,6 @@ void rkisp1_params_isr(struct rkisp1_device *rkisp1, u32 isp_mis)
	cur_buf->vb.sequence = frame_sequence;
	cur_buf->vb.sequence = frame_sequence;
	vb2_buffer_done(&cur_buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
	vb2_buffer_done(&cur_buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
}
}
}


static const struct rkisp1_cif_isp_awb_meas_config rkisp1_awb_params_default_config = {
static const struct rkisp1_cif_isp_awb_meas_config rkisp1_awb_params_default_config = {
	{
	{