From patchwork Fri Oct 29 08:49:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mauro Carvalho Chehab X-Patchwork-Id: 12592201 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 18368C433EF for ; Fri, 29 Oct 2021 08:49:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EFFB261075 for ; Fri, 29 Oct 2021 08:49:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232554AbhJ2IwK (ORCPT ); Fri, 29 Oct 2021 04:52:10 -0400 Received: from mail.kernel.org ([198.145.29.99]:49086 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229692AbhJ2IwJ (ORCPT ); Fri, 29 Oct 2021 04:52:09 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id D98D861165; Fri, 29 Oct 2021 08:49:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1635497380; bh=uCWXb8MoeOqsDEr7CtzkTLPhqtbKubeuYpeFJQuqaY4=; h=From:To:Cc:Subject:Date:From; b=uzQB6GYwAWNi5KvnUo25wsO3RSnDYfmdusB5kX2Rs+Y1Ga10F2X0o9vHVhjy4NIa2 Gr5AKrSZJLzYHK+PgS5bqc64qTc3YEfcKSLMgbcc30sYL+potVPLGKjCDRw7AMv2iK +G216+JwmyVGXJb4g/W28EEo5B+oaK1+aP04BzzNErRKK5cENAjIHZ0igw6/btlNXN mLxxDRxjFW2Wn4XlhsYJsmBz1FEbK2xwkel3UeAsAfKNx8aiC5THqJOJkgJdFZvSxP JU0WW9WdF8e3u8EED46BNu5NJdsGXQC+pR3imXcVvYcjVKYfpqteQK2LmWHM0bN2zc ZiwX13Pil5WEQ== Received: by mail.kernel.org with local (Exim 4.94.2) (envelope-from ) id 1mgNZx-002sAJ-QZ; Fri, 29 Oct 2021 09:49:37 +0100 From: Mauro Carvalho Chehab Cc: linuxarm@huawei.com, mauro.chehab@huawei.com, Mauro Carvalho Chehab , Aditya Srivastava , Alex Dewar , Aline Santana Cordeiro , Andy Shevchenko , Arnd Bergmann , Baokun Li , Greg Kroah-Hartman , Hans Verkuil , Kaixu Xia , Mauro Carvalho Chehab , Sakari Ailus , Tomi Valkeinen , Tsuchiya Yuto , Yang Li , linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 1/2] media: atomisp: better describe get_frame_info issues Date: Fri, 29 Oct 2021 09:49:35 +0100 Message-Id: <750e50daa3ed65a7eb060cb0eb5cfc60dc9386be.1635497370.git.mchehab+huawei@kernel.org> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Sender: Mauro Carvalho Chehab To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org 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 --- .../staging/media/atomisp/pci/atomisp_cmd.c | 4 +- .../media/atomisp/pci/atomisp_compat_css20.c | 67 ++++++++++--------- 2 files changed, 39 insertions(+), 32 deletions(-) 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); From patchwork Fri Oct 29 08:49:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mauro Carvalho Chehab X-Patchwork-Id: 12592199 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 916E4C433F5 for ; Fri, 29 Oct 2021 08:49:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 72FEF61181 for ; Fri, 29 Oct 2021 08:49:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232521AbhJ2IwJ (ORCPT ); Fri, 29 Oct 2021 04:52:09 -0400 Received: from mail.kernel.org ([198.145.29.99]:49080 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232505AbhJ2IwJ (ORCPT ); Fri, 29 Oct 2021 04:52:09 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id D72CB61157; Fri, 29 Oct 2021 08:49:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1635497380; bh=nHj/PtqTShC5DJeCKQQ6eaD/es2mjzAYoWFJcIhmDyQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=omM6eedfyGm8EOPeolv3AjpcpBnkgylGVXH0NDzaresfz2OK8yi5u/04BNzSu1ToZ AyOz/2aSChTYh5OIaDVRL2WJCzi3x9VP/Ihw3MHhA2d+wzUFqiOXMDn1cwKECD94yr 9aViirPeb87jr/TvGbpwcAPWOSJezoO00R4xDaf3Oz7SMFLRx9BbjTp/ZBXOTp+mtU YMXtgQL2CPpsjVIfBn35EHV5eq+3w7K6rpsmBOPnjlP6K6otzggVH7n2Gyhso/R8tR NHdNJa9yggC3y6VjQcTC8BHMg8kaF8ypITbnfIp43grtkWiqFJS6FiM9kxVpdBQujA /59rfnQxw9AEQ== Received: by mail.kernel.org with local (Exim 4.94.2) (envelope-from ) id 1mgNZx-002sAM-S6; Fri, 29 Oct 2021 09:49:37 +0100 From: Mauro Carvalho Chehab Cc: linuxarm@huawei.com, mauro.chehab@huawei.com, Mauro Carvalho Chehab , Alan , Arnd Bergmann , Greg Kroah-Hartman , Hans Verkuil , Laurent Pinchart , Mauro Carvalho Chehab , Sakari Ailus , Tomi Valkeinen , Tsuchiya Yuto , linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 2/2] media: atomisp: set default mode Date: Fri, 29 Oct 2021 09:49:36 +0100 Message-Id: <543e61dd07c90a7d8577b3a94696edc77953b9d8.1635497370.git.mchehab+huawei@kernel.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <750e50daa3ed65a7eb060cb0eb5cfc60dc9386be.1635497370.git.mchehab+huawei@kernel.org> References: <750e50daa3ed65a7eb060cb0eb5cfc60dc9386be.1635497370.git.mchehab+huawei@kernel.org> MIME-Version: 1.0 Sender: Mauro Carvalho Chehab To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Without setting a default mode at open(), applications that don't call VIDIOC_SET_PARM with a custom atomisp parameters won't work, as the pipeline won't be set: atomisp-isp2 0000:00:03.0: can't create streams atomisp-isp2 0000:00:03.0: __get_frame_info 1600x1200 (padded to 0) returned -22 So, as an step to allow generic apps to use this driver, put the device's run_mode in preview after open. After this patch, using v4l2grab starts to work: $ v4l2grab -D -f 'NV12' -x 1600 -y 1200 -d /dev/video2 -u $ nvt/raw2pnm -x1600 -y1200 -f NV12 out017.raw out017.pnm $ feh out017.pnm Signed-off-by: Mauro Carvalho Chehab --- drivers/staging/media/atomisp/pci/atomisp_fops.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/staging/media/atomisp/pci/atomisp_fops.c b/drivers/staging/media/atomisp/pci/atomisp_fops.c index 72cbdce2142a..7df982c80b1a 100644 --- a/drivers/staging/media/atomisp/pci/atomisp_fops.c +++ b/drivers/staging/media/atomisp/pci/atomisp_fops.c @@ -893,6 +893,11 @@ static int atomisp_open(struct file *file) else pipe->users++; rt_mutex_unlock(&isp->mutex); + + /* Ensure that a mode is set */ + if (asd) + v4l2_ctrl_s_ctrl(asd->run_mode, ATOMISP_RUN_MODE_PREVIEW); + return 0; css_error: