From patchwork Fri Jan 15 20:01:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Kocialkowski X-Patchwork-Id: 12023967 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 46764C433E6 for ; Fri, 15 Jan 2021 20:04:19 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0165A23A58 for ; Fri, 15 Jan 2021 20:04:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0165A23A58 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=/yfd8BK5s+kMQVKli9A+Eh2l7k03wjiNs0jzqxVA4GI=; b=kkQPYAd/SZ9Wak5Sw5IoIyzT4 RK6YLWLESat2QS5uUUqwCmSz2UZ62y5ZveVjIXHT5sUBaZ8ifZgy+w61fZwglIm6/+wNs8PN/PLDy /1jvnd+1u3sUvsF17QehepClR4nN73Hz3E74EbniDMbXO/oQKo4Fqn0f8fXoVpz3nqAJZtMDnkQ42 n9pOQuMVHmDx0MLoSX1kB2gxIXIfUYPGIKJl90SpWoBlnsajDuq8PfEBEFW/nmWHaP0/JVbWvvjit qAg9Opcy5mXbFPuNdcoM2FyrWQruCQhNrZx2XWjBI7u98Gkj7IqyFCpkupCbWJ28WguYXjpAUSGPN XEdpkeE+g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l0VIZ-0002ZO-2E; Fri, 15 Jan 2021 20:02:19 +0000 Received: from relay5-d.mail.gandi.net ([217.70.183.197]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l0VIJ-0002Tb-CG for linux-arm-kernel@lists.infradead.org; Fri, 15 Jan 2021 20:02:09 +0000 X-Originating-IP: 93.29.109.196 Received: from localhost.localdomain (196.109.29.93.rev.sfr.net [93.29.109.196]) (Authenticated sender: paul.kocialkowski@bootlin.com) by relay5-d.mail.gandi.net (Postfix) with ESMTPSA id DF73F1C0008; Fri, 15 Jan 2021 20:01:59 +0000 (UTC) From: Paul Kocialkowski To: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, devel@driverdev.osuosl.org, linux-sunxi@googlegroups.com Subject: [PATCH v5 04/16] media: sun6i-csi: Stop using the deprecated fwnode endpoint parser Date: Fri, 15 Jan 2021 21:01:29 +0100 Message-Id: <20210115200141.1397785-5-paul.kocialkowski@bootlin.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210115200141.1397785-1-paul.kocialkowski@bootlin.com> References: <20210115200141.1397785-1-paul.kocialkowski@bootlin.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210115_150203_696882_59D41438 X-CRM114-Status: GOOD ( 20.27 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jernej Skrabec , Dafna Hirschfeld , Philipp Zabel , Jonathan Corbet , Thomas Petazzoni , Greg Kroah-Hartman , Helen Koike , Vinod Koul , Maxime Ripard , Kishon Vijay Abraham I , Paul Kocialkowski , Chen-Yu Tsai , Rob Herring , Hans Verkuil , Ezequiel Garcia , Yong Deng , Sakari Ailus , Mauro Carvalho Chehab , kevin.lhopital@hotmail.com Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The v4l2_async_notifier_parse_fwnode_endpoints helper is getting deprecated in favor of explicit parsing of the endpoints. Implement it instead of using this deprecated function. Since this was the last user of the helper, it should now be safe to remove. Signed-off-by: Paul Kocialkowski Acked-by: Maxime Ripard --- .../platform/sunxi/sun6i-csi/sun6i_csi.c | 69 ++++++++++++------- .../platform/sunxi/sun6i-csi/sun6i_csi.h | 1 + 2 files changed, 44 insertions(+), 26 deletions(-) diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c index c3b2f27b99d2..1a11a6174a17 100644 --- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c +++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c @@ -693,28 +693,6 @@ static const struct v4l2_async_notifier_operations sun6i_csi_async_ops = { .complete = sun6i_subdev_notify_complete, }; -static int sun6i_csi_fwnode_parse(struct device *dev, - struct v4l2_fwnode_endpoint *vep, - struct v4l2_async_subdev *asd) -{ - struct sun6i_csi *csi = dev_get_drvdata(dev); - - if (vep->base.port || vep->base.id) { - dev_warn(dev, "Only support a single port with one endpoint\n"); - return -ENOTCONN; - } - - switch (vep->bus_type) { - case V4L2_MBUS_PARALLEL: - case V4L2_MBUS_BT656: - csi->v4l2_ep = *vep; - return 0; - default: - dev_err(dev, "Unsupported media bus type\n"); - return -ENOTCONN; - } -} - static void sun6i_csi_v4l2_cleanup(struct sun6i_csi *csi) { media_device_unregister(&csi->media_dev); @@ -726,6 +704,48 @@ static void sun6i_csi_v4l2_cleanup(struct sun6i_csi *csi) media_device_cleanup(&csi->media_dev); } +static int sun6i_csi_v4l2_fwnode_init(struct sun6i_csi *csi) +{ + struct v4l2_fwnode_endpoint *endpoint = NULL; + struct fwnode_handle *handle = NULL; + int ret; + + /* Parallel */ + + endpoint = &csi->v4l2_ep; + handle = fwnode_graph_get_endpoint_by_id(dev_fwnode(csi->dev), 0, 0, + FWNODE_GRAPH_ENDPOINT_NEXT); + if (!handle) + return 0; + + ret = v4l2_fwnode_endpoint_parse(handle, endpoint); + if (ret) + goto error; + + if (endpoint->bus_type != V4L2_MBUS_PARALLEL && + endpoint->bus_type != V4L2_MBUS_BT656) { + dev_err(csi->dev, "Unsupported parallel media bus type\n"); + ret = -ENOTCONN; + goto error; + } + + ret = v4l2_async_notifier_add_fwnode_remote_subdev(&csi->notifier, + handle, + &csi->subdev); + if (ret) + goto error; + + fwnode_handle_put(handle); + + return 0; + +error: + if (handle) + fwnode_handle_put(handle); + + return ret; +} + static int sun6i_csi_v4l2_init(struct sun6i_csi *csi) { int ret; @@ -760,10 +780,7 @@ static int sun6i_csi_v4l2_init(struct sun6i_csi *csi) if (ret) goto unreg_v4l2; - ret = v4l2_async_notifier_parse_fwnode_endpoints(csi->dev, - &csi->notifier, - sizeof(struct v4l2_async_subdev), - sun6i_csi_fwnode_parse); + ret = sun6i_csi_v4l2_fwnode_init(csi); if (ret) goto clean_video; diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.h b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.h index c626821aaedb..7f3389c70794 100644 --- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.h +++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.h @@ -38,6 +38,7 @@ struct sun6i_csi { struct v4l2_device v4l2_dev; struct media_device media_dev; + struct v4l2_async_subdev subdev; struct v4l2_async_notifier notifier; /* video port settings */