From patchwork Tue May 10 11:51:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 15849 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 9EE50C326E for ; Tue, 10 May 2022 11:52:09 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 3B48F65654; Tue, 10 May 2022 13:52:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1652183529; bh=zvOjg0QeN6mSFOMqPebQPsFhlL+PiY+QVPoTBCUk1fI=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=jJ2nXYq9kYqT2rX+Fj7zT04xpy4uWMqdF6yuZwhI6ekSTwNqp2hZff2nZcoL3q0s4 vDNF0TqwHyKbSyFfCS4lgWAnd/XT/y7BrZ7uZl6z/xJQYuinmZWTRWec3+wBvQXB9n AlgLYabwYGYWgXYTye9ReTj1URHq8Fy+0bacCabG4JLhU8WHYMD7Jd3wIgUFCTa3UV Sz4brSJJnLKu9ueA0E6Sijs5dvenqUT44HJ/htUhzlq+s+JxKmmfDf98wSPfDkVb2i P/ulwFwlE2MVFy/SWW6YR7QAFXEzwzlZ1f66HB92+4V6uIl5mkjOcfHn7oGaPgmZTT VmDOsjUioDyZw== Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 92EB96565D for ; Tue, 10 May 2022 13:52:04 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="eNQBbn4n"; dkim-atps=neutral Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id AE0F1BA9; Tue, 10 May 2022 13:52:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1652183524; bh=zvOjg0QeN6mSFOMqPebQPsFhlL+PiY+QVPoTBCUk1fI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eNQBbn4nxIy02Fam+n4/tMaMkGBCmzKgtTYqd6vnAcmhZ7dS2ebrMyHxZWwW9YLJo gQFSZKmHXtan7ZZZMbvwVXmGLKPTL4n9Wz2wxSI0GBN5SeUXJ9s6wzuKQoK6HzugXz dX0U0wmul3VJQw6ZLoCDBaE0H7kApnubTCPuGPjw= To: libcamera-devel@lists.libcamera.org Date: Tue, 10 May 2022 14:51:06 +0300 Message-Id: <20220510115147.19360-10-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220510115147.19360-1-laurent.pinchart@ideasonboard.com> References: <20220510115147.19360-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 09/50] staging: media: imx: imx7-media-csi: Move format init to probe time X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Laurent Pinchart via libcamera-devel From: Laurent Pinchart Reply-To: Laurent Pinchart Cc: Martin Kepplinger , kernel@pengutronix.de, Dorota Czaplejewicz , Alexander Stein , Rui Miguel Silva , Philipp Zabel , Steve Longerbeam Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" There's no need to wait until the subdev is registered to initialize the active pad formats. Do so at probe time. Signed-off-by: Laurent Pinchart --- drivers/staging/media/imx/imx7-media-csi.c | 55 ++++++++++------------ 1 file changed, 24 insertions(+), 31 deletions(-) diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c index cd063c4f3f40..d85b5ab204df 100644 --- a/drivers/staging/media/imx/imx7-media-csi.c +++ b/drivers/staging/media/imx/imx7-media-csi.c @@ -763,26 +763,6 @@ static int imx7_csi_s_stream(struct v4l2_subdev *sd, int enable) return ret; } -static int imx7_csi_init_cfg(struct v4l2_subdev *sd, - struct v4l2_subdev_state *sd_state) -{ - struct imx7_csi *csi = v4l2_get_subdevdata(sd); - struct v4l2_mbus_framefmt *mf; - int ret; - int i; - - for (i = 0; i < IMX7_CSI_PADS_NUM; i++) { - mf = v4l2_subdev_get_try_format(sd, sd_state, i); - - ret = imx_media_init_mbus_fmt(mf, 800, 600, 0, V4L2_FIELD_NONE, - &csi->cc[i]); - if (ret < 0) - return ret; - } - - return 0; -} - static struct v4l2_mbus_framefmt * imx7_csi_get_format(struct imx7_csi *csi, struct v4l2_subdev_state *sd_state, @@ -795,6 +775,28 @@ imx7_csi_get_format(struct imx7_csi *csi, return &csi->format_mbus[pad]; } +static int imx7_csi_init_cfg(struct v4l2_subdev *sd, + struct v4l2_subdev_state *sd_state) +{ + const enum v4l2_subdev_format_whence which = + sd_state ? V4L2_SUBDEV_FORMAT_TRY : V4L2_SUBDEV_FORMAT_ACTIVE; + struct imx7_csi *csi = v4l2_get_subdevdata(sd); + int ret; + int i; + + for (i = 0; i < IMX7_CSI_PADS_NUM; i++) { + struct v4l2_mbus_framefmt *mf = + imx7_csi_get_format(csi, sd_state, i, which); + + ret = imx_media_init_mbus_fmt(mf, 800, 600, 0, V4L2_FIELD_NONE, + &csi->cc[i]); + if (ret < 0) + return ret; + } + + return 0; +} + static int imx7_csi_enum_mbus_code(struct v4l2_subdev *sd, struct v4l2_subdev_state *sd_state, struct v4l2_subdev_mbus_code_enum *code) @@ -1046,16 +1048,6 @@ static int imx7_csi_registered(struct v4l2_subdev *sd) { struct imx7_csi *csi = v4l2_get_subdevdata(sd); int ret; - int i; - - for (i = 0; i < IMX7_CSI_PADS_NUM; i++) { - /* set a default mbus format */ - ret = imx_media_init_mbus_fmt(&csi->format_mbus[i], - 800, 600, 0, V4L2_FIELD_NONE, - &csi->cc[i]); - if (ret < 0) - return ret; - } csi->vdev = imx_media_capture_device_init(csi->sd.dev, &csi->sd, IMX7_CSI_PAD_SRC, false); @@ -1291,7 +1283,8 @@ static int imx7_csi_probe(struct platform_device *pdev) if (ret) goto destroy_mutex; - ret = v4l2_device_register_subdev(&csi->imxmd->v4l2_dev, &csi->sd); + /* Set the default mbus formats. */ + ret = imx7_csi_init_cfg(&csi->sd, NULL); if (ret) goto media_cleanup;