diff mbox series

[1/2] media: atomisp: better describe get_frame_info issues

Message ID 750e50daa3ed65a7eb060cb0eb5cfc60dc9386be.1635497370.git.mchehab+huawei@kernel.org (mailing list archive)
State New, archived
Headers show
Series [1/2] media: atomisp: better describe get_frame_info issues | expand

Commit Message

Mauro Carvalho Chehab Oct. 29, 2021, 8:49 a.m. UTC
When atomisp is used by a normal client, it fails to get
frame info. However, the information is confusing and misleading,
as there are several wrappers for such function, and the error
could be on different places.

So, improve the error log in order to allow narrowing down
where the error is actually occuring.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 .../staging/media/atomisp/pci/atomisp_cmd.c   |  4 +-
 .../media/atomisp/pci/atomisp_compat_css20.c  | 67 ++++++++++---------
 2 files changed, 39 insertions(+), 32 deletions(-)

Comments

Andy Shevchenko Oct. 29, 2021, 9:01 a.m. UTC | #1
On Fri, Oct 29, 2021 at 11:50 AM Mauro Carvalho Chehab
<mchehab+huawei@kernel.org> wrote:
>
> When atomisp is used by a normal client, it fails to get
> frame info. However, the information is confusing and misleading,
> as there are several wrappers for such function, and the error
> could be on different places.
>
> So, improve the error log in order to allow narrowing down
> where the error is actually occuring.

...

> +       switch (type) {
> +       case ATOMISP_CSS_VF_FRAME:
> +               *info = p_info.vf_output_info[0];
> +               dev_dbg(isp->dev, "getting vf frame info.\n");
> +               break;
> +       case ATOMISP_CSS_SECOND_VF_FRAME:
> +               *info = p_info.vf_output_info[1];
> +               dev_dbg(isp->dev, "getting second vf frame info.\n");
> +               break;
> +       case ATOMISP_CSS_OUTPUT_FRAME:
> +               *info = p_info.output_info[0];
> +               dev_dbg(isp->dev, "getting main frame info.\n");
> +               break;
> +       case ATOMISP_CSS_SECOND_OUTPUT_FRAME:
> +               *info = p_info.output_info[1];
> +               dev_dbg(isp->dev, "getting second main frame info.\n");
> +               break;
> +       case ATOMISP_CSS_RAW_FRAME:
> +               *info = p_info.raw_output_info;
> +               dev_dbg(isp->dev, "getting raw frame info.\n");

Can we get break; here followed by default case?

>         }
> +       dev_dbg(isp->dev, "get frame info: w=%d, h=%d, num_invalid_frames %d.\n",
> +               info->res.width, info->res.height, p_info.num_invalid_frames);
> +
> +       return 0;
Mauro Carvalho Chehab Nov. 2, 2021, 6:54 a.m. UTC | #2
Em Fri, 29 Oct 2021 12:01:57 +0300
Andy Shevchenko <andy.shevchenko@gmail.com> escreveu:

> > +       switch (type) {
> > +       case ATOMISP_CSS_VF_FRAME:
> > +               *info = p_info.vf_output_info[0];
> > +               dev_dbg(isp->dev, "getting vf frame info.\n");
> > +               break;
> > +       case ATOMISP_CSS_SECOND_VF_FRAME:
> > +               *info = p_info.vf_output_info[1];
> > +               dev_dbg(isp->dev, "getting second vf frame info.\n");
> > +               break;
> > +       case ATOMISP_CSS_OUTPUT_FRAME:
> > +               *info = p_info.output_info[0];
> > +               dev_dbg(isp->dev, "getting main frame info.\n");
> > +               break;
> > +       case ATOMISP_CSS_SECOND_OUTPUT_FRAME:
> > +               *info = p_info.output_info[1];
> > +               dev_dbg(isp->dev, "getting second main frame info.\n");
> > +               break;
> > +       case ATOMISP_CSS_RAW_FRAME:
> > +               *info = p_info.raw_output_info;
> > +               dev_dbg(isp->dev, "getting raw frame info.\n");  
> 
> Can we get break; here followed by default case?

Surely. I'll do such change on a separate patch.

Regards,
Mauro
diff mbox series

Patch

diff --git a/drivers/staging/media/atomisp/pci/atomisp_cmd.c b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
index a30dfcce54dd..32cae6908465 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_cmd.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_cmd.c
@@ -5444,9 +5444,9 @@  static int atomisp_set_fmt_to_isp(struct video_device *vdev,
 	else
 		ret = get_frame_info(asd, output_info);
 	if (ret) {
-		dev_err(isp->dev, "get_frame_info %ux%u (padded to %u) returned %d\n",
+		dev_err(isp->dev, "__get_frame_info %ux%u (padded to %u) returned %d\n",
 			pix->width, pix->height, pix->bytesperline, ret);
-		return -EINVAL;
+		return ret;
 	}
 
 	atomisp_update_grid_info(asd, pipe_id, source_pad);
diff --git a/drivers/staging/media/atomisp/pci/atomisp_compat_css20.c b/drivers/staging/media/atomisp/pci/atomisp_compat_css20.c
index 99a632f33d2d..1309855bb6c8 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_compat_css20.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_compat_css20.c
@@ -2657,41 +2657,48 @@  static int __get_frame_info(struct atomisp_sub_device *asd,
 	if (__destroy_pipes(asd, true))
 		dev_warn(isp->dev, "destroy pipe failed.\n");
 
-	if (__create_pipes(asd))
+	if (__create_pipes(asd)) {
+		dev_err(isp->dev, "can't create pipes\n");
 		return -EINVAL;
+	}
+
+	if (__create_streams(asd)) {
+		dev_err(isp->dev, "can't create streams\n");
+		goto stream_err;
+	}
 
-	if (__create_streams(asd))
+	ret = ia_css_pipe_get_info(asd->stream_env[stream_index].pipes[pipe_id],
+				   &p_info);
+	if (ret) {
+		dev_err(isp->dev, "can't get info from pipe\n");
 		goto stream_err;
+	}
 
-	ret = ia_css_pipe_get_info(
-		  asd->stream_env[stream_index]
-		  .pipes[pipe_id], &p_info);
-	if (!ret) {
-		switch (type) {
-		case ATOMISP_CSS_VF_FRAME:
-			*info = p_info.vf_output_info[0];
-			dev_dbg(isp->dev, "getting vf frame info.\n");
-			break;
-		case ATOMISP_CSS_SECOND_VF_FRAME:
-			*info = p_info.vf_output_info[1];
-			dev_dbg(isp->dev, "getting second vf frame info.\n");
-			break;
-		case ATOMISP_CSS_OUTPUT_FRAME:
-			*info = p_info.output_info[0];
-			dev_dbg(isp->dev, "getting main frame info.\n");
-			break;
-		case ATOMISP_CSS_SECOND_OUTPUT_FRAME:
-			*info = p_info.output_info[1];
-			dev_dbg(isp->dev, "getting second main frame info.\n");
-			break;
-		case ATOMISP_CSS_RAW_FRAME:
-			*info = p_info.raw_output_info;
-			dev_dbg(isp->dev, "getting raw frame info.\n");
-		}
-		dev_dbg(isp->dev, "get frame info: w=%d, h=%d, num_invalid_frames %d.\n",
-			info->res.width, info->res.height, p_info.num_invalid_frames);
-		return 0;
+	switch (type) {
+	case ATOMISP_CSS_VF_FRAME:
+		*info = p_info.vf_output_info[0];
+		dev_dbg(isp->dev, "getting vf frame info.\n");
+		break;
+	case ATOMISP_CSS_SECOND_VF_FRAME:
+		*info = p_info.vf_output_info[1];
+		dev_dbg(isp->dev, "getting second vf frame info.\n");
+		break;
+	case ATOMISP_CSS_OUTPUT_FRAME:
+		*info = p_info.output_info[0];
+		dev_dbg(isp->dev, "getting main frame info.\n");
+		break;
+	case ATOMISP_CSS_SECOND_OUTPUT_FRAME:
+		*info = p_info.output_info[1];
+		dev_dbg(isp->dev, "getting second main frame info.\n");
+		break;
+	case ATOMISP_CSS_RAW_FRAME:
+		*info = p_info.raw_output_info;
+		dev_dbg(isp->dev, "getting raw frame info.\n");
 	}
+	dev_dbg(isp->dev, "get frame info: w=%d, h=%d, num_invalid_frames %d.\n",
+		info->res.width, info->res.height, p_info.num_invalid_frames);
+
+	return 0;
 
 stream_err:
 	__destroy_pipes(asd, true);