media: atomisp: Remove __atomisp_get_pipe() helper
Remove the complicated __atomisp_get_pipe() helper, atomisp_buf_done() only needs the pipe pointer in cases where it has a frame, so we can simply get the pipe from the frame using the vb_to_pipe() helper. Reviewed-by: Andy Shevchenko <andy@kernel.org> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
Родитель
7bc1bfa562
Коммит
eb314d873a
|
@ -754,93 +754,6 @@ static void atomisp_recover_params_queue(struct atomisp_video_pipe *pipe)
|
|||
atomisp_handle_parameter_and_buffer(pipe);
|
||||
}
|
||||
|
||||
/* find atomisp_video_pipe with css pipe id, buffer type and atomisp run_mode */
|
||||
static struct atomisp_video_pipe *__atomisp_get_pipe(
|
||||
struct atomisp_sub_device *asd,
|
||||
enum atomisp_input_stream_id stream_id,
|
||||
enum ia_css_pipe_id css_pipe_id,
|
||||
enum ia_css_buffer_type buf_type)
|
||||
{
|
||||
/* video is same in online as in continuouscapture mode */
|
||||
if (asd->vfpp->val == ATOMISP_VFPP_DISABLE_LOWLAT) {
|
||||
/*
|
||||
* Disable vf_pp and run CSS in still capture mode. In this
|
||||
* mode, CSS does not cause extra latency with buffering, but
|
||||
* scaling is not available.
|
||||
*/
|
||||
return &asd->video_out_capture;
|
||||
} else if (asd->vfpp->val == ATOMISP_VFPP_DISABLE_SCALER) {
|
||||
/*
|
||||
* Disable vf_pp and run CSS in video mode. This allows using
|
||||
* ISP scaling but it has one frame delay due to CSS internal
|
||||
* buffering.
|
||||
*/
|
||||
return &asd->video_out_video_capture;
|
||||
} else if (css_pipe_id == IA_CSS_PIPE_ID_YUVPP) {
|
||||
/*
|
||||
* to SOC camera, yuvpp pipe is run for capture/video/SDV/ZSL.
|
||||
*/
|
||||
if (asd->continuous_mode->val) {
|
||||
if (asd->run_mode->val == ATOMISP_RUN_MODE_VIDEO) {
|
||||
/* SDV case */
|
||||
switch (buf_type) {
|
||||
case IA_CSS_BUFFER_TYPE_SEC_OUTPUT_FRAME:
|
||||
return &asd->video_out_video_capture;
|
||||
case IA_CSS_BUFFER_TYPE_SEC_VF_OUTPUT_FRAME:
|
||||
return &asd->video_out_preview;
|
||||
case IA_CSS_BUFFER_TYPE_OUTPUT_FRAME:
|
||||
return &asd->video_out_capture;
|
||||
default:
|
||||
return &asd->video_out_vf;
|
||||
}
|
||||
} else if (asd->run_mode->val == ATOMISP_RUN_MODE_PREVIEW) {
|
||||
/* ZSL case */
|
||||
switch (buf_type) {
|
||||
case IA_CSS_BUFFER_TYPE_SEC_OUTPUT_FRAME:
|
||||
return &asd->video_out_preview;
|
||||
case IA_CSS_BUFFER_TYPE_OUTPUT_FRAME:
|
||||
return &asd->video_out_capture;
|
||||
default:
|
||||
return &asd->video_out_vf;
|
||||
}
|
||||
}
|
||||
} else if (buf_type == IA_CSS_BUFFER_TYPE_OUTPUT_FRAME) {
|
||||
switch (asd->run_mode->val) {
|
||||
case ATOMISP_RUN_MODE_VIDEO:
|
||||
return &asd->video_out_video_capture;
|
||||
case ATOMISP_RUN_MODE_PREVIEW:
|
||||
return &asd->video_out_preview;
|
||||
default:
|
||||
return &asd->video_out_capture;
|
||||
}
|
||||
} else if (buf_type == IA_CSS_BUFFER_TYPE_VF_OUTPUT_FRAME) {
|
||||
if (asd->run_mode->val == ATOMISP_RUN_MODE_VIDEO)
|
||||
return &asd->video_out_preview;
|
||||
else
|
||||
return &asd->video_out_vf;
|
||||
}
|
||||
} else if (asd->run_mode->val == ATOMISP_RUN_MODE_VIDEO) {
|
||||
/* For online video or SDV video pipe. */
|
||||
if (css_pipe_id == IA_CSS_PIPE_ID_VIDEO ||
|
||||
css_pipe_id == IA_CSS_PIPE_ID_COPY ||
|
||||
css_pipe_id == IA_CSS_PIPE_ID_YUVPP) {
|
||||
if (buf_type == IA_CSS_BUFFER_TYPE_OUTPUT_FRAME)
|
||||
return &asd->video_out_video_capture;
|
||||
return &asd->video_out_preview;
|
||||
}
|
||||
} else if (asd->run_mode->val == ATOMISP_RUN_MODE_PREVIEW) {
|
||||
/* For online preview or ZSL preview pipe. */
|
||||
if (css_pipe_id == IA_CSS_PIPE_ID_PREVIEW ||
|
||||
css_pipe_id == IA_CSS_PIPE_ID_COPY ||
|
||||
css_pipe_id == IA_CSS_PIPE_ID_YUVPP)
|
||||
return &asd->video_out_preview;
|
||||
}
|
||||
/* For capture pipe. */
|
||||
if (buf_type == IA_CSS_BUFFER_TYPE_VF_OUTPUT_FRAME)
|
||||
return &asd->video_out_vf;
|
||||
return &asd->video_out_capture;
|
||||
}
|
||||
|
||||
enum atomisp_metadata_type
|
||||
atomisp_get_metadata_type(struct atomisp_sub_device *asd,
|
||||
enum ia_css_pipe_id pipe_id)
|
||||
|
@ -898,13 +811,6 @@ void atomisp_buf_done(struct atomisp_sub_device *asd, int error,
|
|||
return;
|
||||
}
|
||||
|
||||
/* need to know the atomisp pipe for frame buffers */
|
||||
pipe = __atomisp_get_pipe(asd, stream_id, css_pipe_id, buf_type);
|
||||
if (!pipe) {
|
||||
dev_err(isp->dev, "error getting atomisp pipe\n");
|
||||
return;
|
||||
}
|
||||
|
||||
switch (buf_type) {
|
||||
case IA_CSS_BUFFER_TYPE_3A_STATISTICS:
|
||||
list_for_each_entry_safe(s3a_iter, _s3a_buf_tmp,
|
||||
|
@ -987,6 +893,8 @@ void atomisp_buf_done(struct atomisp_sub_device *asd, int error,
|
|||
if (!frame->valid)
|
||||
error = true;
|
||||
|
||||
pipe = vb_to_pipe(&frame->vb.vb2_buf);
|
||||
|
||||
/* FIXME:
|
||||
* YUVPP doesn't set postview exp_id correctlly in SDV mode.
|
||||
* This is a WORKAROUND to set exp_id. see HSDES-1503911606.
|
||||
|
@ -1036,6 +944,8 @@ void atomisp_buf_done(struct atomisp_sub_device *asd, int error,
|
|||
if (!frame->valid)
|
||||
error = true;
|
||||
|
||||
pipe = vb_to_pipe(&frame->vb.vb2_buf);
|
||||
|
||||
/* FIXME:
|
||||
* YUVPP doesn't set preview exp_id correctlly in ZSL mode.
|
||||
* This is a WORKAROUND to set exp_id. see HSDES-1503911606.
|
||||
|
|
Загрузка…
Ссылка в новой задаче