From patchwork Thu Feb 9 22:16:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sakari Ailus X-Patchwork-Id: 13135066 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 43704C61DA4 for ; Thu, 9 Feb 2023 22:17:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=zBJRk6zfaWD6tIwD8ctKCTvJ3aHTDqL6XJv8CE9zqZ0=; b=nBEHAEZHyE/3TA Hw3hA+J5nM9isPrXIOTObWIUhi9wqTeutu1dVHRcb9qW3WvKnc7gWiSZt85VPo5NoXksjZJDO4DSI ry91pK+qS6dsFbKhCBtEEzTqNhXzd3QUp5LBSPisiSSb8QumIWZFQ5Id54GF2Tcu3Klf4YRkquq85 HEgrdiArELcnLN5D2cC4TLIFJKU332gqTSdtm1hftBZbPgsAbZXVd+B5Lb9aokz+VT2Cm6XAOCjq2 O06g8e1RgdXD4UjGH97PMdhne6t6npIWvMM61hV1Aa51/9S+Ne3942P1EppzsPHg54YIqC9zuETvu Ntnz5xsNoQkObzfSvM+w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pQFDj-003MuS-Dv; Thu, 09 Feb 2023 22:16:47 +0000 Received: from mga01.intel.com ([192.55.52.88]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pQFDf-003Msx-KV for linux-arm-kernel@lists.infradead.org; Thu, 09 Feb 2023 22:16:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675981003; x=1707517003; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GSjf2NPzu5MWkIb8/9gk2LPcHwSjoEZKSLu4qvnTF5c=; b=MReI7Yz4KzDY2vWvsTrpkyrCHJOun1rbH0kma2I7ryOoz2nkT/Q1jjC1 MeYE+YaoV+aJSgPfIrnotJ/13OhvgoublWTtRisQzq6WDO1EvonM4cztL uBMkv3u53cyvgdHI+EhCzrBvqM7EyXASSUjEYCcIFnwgsHGgKANaECVNQ 9ISSE4tbgG26dOnTqVvzWfsp+8YzCNMOetd2cGSrnrvzsFxkKH52stHCX 1bYYp1bKY17aNs8GgR7wHBX9nyjm/NVog1CnPQsPC+KXNcNgj0gpANHre +K6TiWSQcqy+6PW9VMujB7GxB9rtkanW2gsN5SD5ATElUDtqicsRQvkn3 A==; X-IronPort-AV: E=McAfee;i="6500,9779,10616"; a="357663789" X-IronPort-AV: E=Sophos;i="5.97,284,1669104000"; d="scan'208";a="357663789" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Feb 2023 14:16:41 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10616"; a="645418193" X-IronPort-AV: E=Sophos;i="5.97,284,1669104000"; d="scan'208";a="645418193" Received: from turnipsi.fi.intel.com (HELO kekkonen.fi.intel.com) ([10.237.72.44]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Feb 2023 14:16:38 -0800 Received: from svinhufvud.ger.corp.intel.com (localhost [IPv6:::1]) by kekkonen.fi.intel.com (Postfix) with ESMTP id EA03412033D; Fri, 10 Feb 2023 00:16:34 +0200 (EET) From: Sakari Ailus To: linux-media@vger.kernel.org Cc: frieder.schrempf@kontron.de, laurent.pinchart@ideasonboard.com, Tim Harvey , linux-arm-kernel@lists.infradead.org, Dave Stevenson , Javier Martinez Canillas Subject: [RFC 1/1] v4l: async: Add some debug prints Date: Fri, 10 Feb 2023 00:16:34 +0200 Message-Id: <20230209221634.35239-1-sakari.ailus@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <049f2fea-1725-74d9-d20d-fc4f7506d504@kontron.de> References: <049f2fea-1725-74d9-d20d-fc4f7506d504@kontron.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230209_141643_759717_74ED7624 X-CRM114-Status: GOOD ( 18.26 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Just add some debug prints for V4L2 async sub-device matching process. These might come useful in figuring out why things don't work as expected. Signed-off-by: Sakari Ailus --- Frieder, Can you try this? It prints what is being matched with what. Perhaps this could be merged in a bit more refined form if it proves useful. Not tested in any way. drivers/media/v4l2-core/v4l2-async.c | 41 ++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c index 2f1b718a9189..6c13a9488415 100644 --- a/drivers/media/v4l2-core/v4l2-async.c +++ b/drivers/media/v4l2-core/v4l2-async.c @@ -86,13 +86,18 @@ match_fwnode_one(struct v4l2_async_notifier *notifier, bool sd_fwnode_is_ep; struct device *dev; + dev_dbg(sd->dev, "async fwnode match %pfw vs. %pfw\n", sd_fwnode, + asd->match.fwnode); + /* * Both the subdev and the async subdev can provide either an endpoint * fwnode or a device fwnode. Start with the simple case of direct * fwnode matching. */ - if (sd_fwnode == asd->match.fwnode) + if (sd_fwnode == asd->match.fwnode) { + dev_dbg(sd->dev, "true\n"); return true; + } /* * Otherwise, check if the sd fwnode and the asd fwnode refer to an @@ -105,8 +110,12 @@ match_fwnode_one(struct v4l2_async_notifier *notifier, sd_fwnode_is_ep = fwnode_graph_is_endpoint(sd_fwnode); asd_fwnode_is_ep = fwnode_graph_is_endpoint(asd->match.fwnode); - if (sd_fwnode_is_ep == asd_fwnode_is_ep) + dev_dbg(sd->dev, "async fwnode match %pfw vs. %pfw\n", sd_fwnode, + asd->match.fwnode); + if (sd_fwnode_is_ep == asd_fwnode_is_ep) { + dev_dbg(sd->dev, "unmatching node types (false)\n"); return false; + } /* * The sd and asd fwnodes are of different types. Get the device fwnode @@ -120,10 +129,15 @@ match_fwnode_one(struct v4l2_async_notifier *notifier, other_fwnode = sd_fwnode; } + dev_dbg(sd->dev, "async fwnode (compat) match %pfw vs. %pfw\n", + dev_fwnode, other_fwnode); + fwnode_handle_put(dev_fwnode); - if (dev_fwnode != other_fwnode) + if (dev_fwnode != other_fwnode) { + dev_dbg(sd->dev, "false\n"); return false; + } /* * We have a heterogeneous match. Retrieve the struct device of the side @@ -143,6 +157,8 @@ match_fwnode_one(struct v4l2_async_notifier *notifier, dev->driver->name); } + dev_dbg(sd->dev, "true\n"); + return true; } @@ -255,7 +271,10 @@ v4l2_async_nf_can_complete(struct v4l2_async_notifier *notifier) v4l2_async_find_subdev_notifier(sd); if (subdev_notifier && - !v4l2_async_nf_can_complete(subdev_notifier)) + !v4l2_async_nf_can_complete(subdev_notifier)) { + if (subdev_notifier->sd) + deb_dbg(subdev_notifier->sd->dev, + "cannot complete\n"); return false; } @@ -273,18 +292,27 @@ v4l2_async_nf_try_complete(struct v4l2_async_notifier *notifier) if (!list_empty(¬ifier->waiting)) return 0; + if (notifier->sd) + deb_dbg(notifier->sd->dev, "trying to complete\n"); + /* Check the entire notifier tree; find the root notifier first. */ while (notifier->parent) notifier = notifier->parent; /* This is root if it has v4l2_dev. */ - if (!notifier->v4l2_dev) + if (!notifier->v4l2_dev) { + if (notifier->sd) + deb_dbg(notifier->sd->dev, + "V4L2 device not available\n"); return 0; + } /* Is everything ready? */ if (!v4l2_async_nf_can_complete(notifier)) return 0; + deb_dbg(notifier->sd->dev, "complete\n"); + return v4l2_async_nf_call_complete(notifier); } @@ -386,6 +414,9 @@ v4l2_async_nf_try_all_subdevs(struct v4l2_async_notifier *notifier) continue; ret = v4l2_async_match_notify(notifier, v4l2_dev, sd, asd); + deb_dbg(sd->dev, "bound to %s's notifier (ret %d)\n", + notifier->sd ? dev_name(notifier->sd->dev) : "no-dev", + ret); if (ret < 0) return ret;