public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Johan Hovold <johan+linaro@kernel.org>
To: Vinod Koul <vkoul@kernel.org>
Cc: Andy Gross <agross@kernel.org>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Johan Hovold <johan+linaro@kernel.org>
Subject: [PATCH 19/22] phy: qcom-qmp-combo: clean up device-tree parsing
Date: Fri, 11 Nov 2022 09:56:40 +0100	[thread overview]
Message-ID: <20221111085643.9478-20-johan+linaro@kernel.org> (raw)
In-Reply-To: <20221111085643.9478-1-johan+linaro@kernel.org>

Since the QMP driver split there will be precisely two child nodes so
drop the obsolete iteration construct.

While at it, drop the verbose error logging that would have been printed
also on probe deferrals.

Note that there is no need to check if there are additional child nodes
(the kernel is not a devicetree validator), but let's return an error if
either child node is missing.

Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
---
 drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 82 ++++++++---------------
 1 file changed, 28 insertions(+), 54 deletions(-)

diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
index 43b7ea5d2edc..a4df228d8ae2 100644
--- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
+++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
@@ -2598,13 +2598,12 @@ static int qmp_combo_probe(struct platform_device *pdev)
 {
 	struct qmp_combo *qmp;
 	struct device *dev = &pdev->dev;
-	struct device_node *child;
+	struct device_node *dp_np, *usb_np;
 	struct phy_provider *phy_provider;
 	void __iomem *serdes;
 	void __iomem *usb_serdes;
 	void __iomem *dp_serdes = NULL;
 	const struct qmp_phy_cfg *cfg = NULL;
-	int num, id, expected_phys;
 	int ret;
 
 	qmp = devm_kzalloc(dev, sizeof(*qmp), GFP_KERNEL);
@@ -2630,8 +2629,6 @@ static int qmp_combo_probe(struct platform_device *pdev)
 	if (IS_ERR(dp_serdes))
 		return PTR_ERR(dp_serdes);
 
-	expected_phys = 2;
-
 	mutex_init(&qmp->phy_mutex);
 
 	ret = qmp_combo_clk_init(dev, cfg);
@@ -2646,75 +2643,52 @@ static int qmp_combo_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
-	num = of_get_available_child_count(dev->of_node);
-	/* do we have a rogue child node ? */
-	if (num > expected_phys)
+	usb_np = of_get_child_by_name(dev->of_node, "usb3-phy");
+	if (!usb_np)
+		return -EINVAL;
+
+	dp_np = of_get_child_by_name(dev->of_node, "dp-phy");
+	if (!dp_np) {
+		of_node_put(usb_np);
 		return -EINVAL;
+	}
 
 	pm_runtime_set_active(dev);
 	ret = devm_pm_runtime_enable(dev);
 	if (ret)
-		return ret;
+		goto err_node_put;
 	/*
 	 * Prevent runtime pm from being ON by default. Users can enable
 	 * it using power/control in sysfs.
 	 */
 	pm_runtime_forbid(dev);
 
-	id = 0;
-	for_each_available_child_of_node(dev->of_node, child) {
-		if (of_node_name_eq(child, "dp-phy")) {
-			serdes = dp_serdes;
-
-			/* Create per-lane phy */
-			ret = qmp_combo_create_dp(dev, child, serdes, cfg);
-			if (ret) {
-				dev_err(dev, "failed to create lane%d phy, %d\n",
-					id, ret);
-				goto err_node_put;
-			}
-
-			ret = phy_dp_clks_register(qmp, child);
-			if (ret) {
-				dev_err(qmp->dev,
-					"failed to register DP clock source\n");
-				goto err_node_put;
-			}
-		} else if (of_node_name_eq(child, "usb3-phy")) {
-			serdes = usb_serdes;
-
-			/* Create per-lane phy */
-			ret = qmp_combo_create_usb(dev, child, serdes, cfg);
-			if (ret) {
-				dev_err(dev, "failed to create lane%d phy, %d\n",
-					id, ret);
-				goto err_node_put;
-			}
-
-			/*
-			 * Register the pipe clock provided by phy.
-			 * See function description to see details of this pipe clock.
-			 */
-			ret = phy_pipe_clk_register(qmp, child);
-			if (ret) {
-				dev_err(qmp->dev,
-					"failed to register pipe clock source\n");
-				goto err_node_put;
-			}
-		}
+	ret = qmp_combo_create_usb(dev, usb_np, usb_serdes, cfg);
+	if (ret)
+		goto err_node_put;
 
-		id++;
-	}
+	ret = phy_pipe_clk_register(qmp, usb_np);
+	if (ret)
+		goto err_node_put;
 
-	if (!qmp->usb_phy)
-		return -EINVAL;
+	ret = qmp_combo_create_dp(dev, dp_np, dp_serdes, cfg);
+	if (ret)
+		goto err_node_put;
+
+	ret = phy_dp_clks_register(qmp, dp_np);
+	if (ret)
+		goto err_node_put;
 
 	phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
 
+	of_node_put(usb_np);
+	of_node_put(dp_np);
+
 	return PTR_ERR_OR_ZERO(phy_provider);
 
 err_node_put:
-	of_node_put(child);
+	of_node_put(usb_np);
+	of_node_put(dp_np);
 	return ret;
 }
 
-- 
2.37.4


  parent reply	other threads:[~2022-11-11  8:58 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-11  8:56 [PATCH 00/22] phy: qcom-qmp-combo: preparatory cleanups (set 2/3) Johan Hovold
2022-11-11  8:56 ` [PATCH 01/22] phy: qcom-qmp-combo: sort device-id table Johan Hovold
2022-11-12  6:18   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 02/22] phy: qcom-qmp-combo: move " Johan Hovold
2022-11-12  6:18   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 03/22] phy: qcom-qmp-combo: move pm ops Johan Hovold
2022-11-12  6:19   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 04/22] phy: qcom-qmp-combo: rename PHY ops structures Johan Hovold
2022-11-12  6:19   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 05/22] phy: qcom-qmp-combo: drop unused DP PHY mode op Johan Hovold
2022-11-12  6:19   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 06/22] phy: qcom-qmp-combo: rename USB PHY ops Johan Hovold
2022-11-12  6:20   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 07/22] phy: qcom-qmp-combo: drop unnecessary debug message Johan Hovold
2022-11-12  6:20   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 08/22] phy: qcom-qmp-combo: separate USB and DP init ops Johan Hovold
2022-11-12  6:21   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 09/22] phy: qcom-qmp-combo: rename DP PHY ops Johan Hovold
2022-11-12  6:21   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 10/22] phy: qcom-qmp-combo: separate USB and DP power-on ops Johan Hovold
2022-11-12  7:32   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 11/22] phy: qcom-qmp-combo: clean up serdes initialisation Johan Hovold
2022-11-12  7:33   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 12/22] phy: qcom-qmp-combo: separate USB and DP devicetree parsing Johan Hovold
2022-11-12  7:50   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 13/22] phy: qcom-qmp-combo: add dedicated DP iomem pointers Johan Hovold
2022-11-12  7:36   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 14/22] phy: qcom-qmp-combo: clean up DP configurations Johan Hovold
2022-11-12  7:32   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 15/22] phy: qcom-qmp-combo: rename sc8280xp config Johan Hovold
2022-11-12  7:33   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 16/22] phy: qcom-qmp-combo: add DP configuration tables Johan Hovold
2022-11-12  7:39   ` Dmitry Baryshkov
2022-11-14  8:38     ` Johan Hovold
2022-11-14  9:49       ` Dmitry Baryshkov
2022-11-14  9:50       ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 17/22] phy: qcom-qmp-combo: merge USB and DP configurations Johan Hovold
2022-11-12  7:43   ` Dmitry Baryshkov
2022-11-14  8:54     ` Johan Hovold
2022-11-14 10:10       ` Dmitry Baryshkov
2022-11-14 10:57         ` Johan Hovold
2022-11-14 10:11   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 18/22] phy: qcom-qmp-combo: merge driver data Johan Hovold
2022-11-12  7:46   ` Dmitry Baryshkov
2022-11-14  9:01     ` Johan Hovold
2022-11-14  9:22       ` Dmitry Baryshkov
2022-11-11  8:56 ` Johan Hovold [this message]
2022-11-12  7:48   ` [PATCH 19/22] phy: qcom-qmp-combo: clean up device-tree parsing Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 20/22] phy: qcom-qmp-combo: clean up probe initialisation Johan Hovold
2022-11-12  7:48   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 21/22] phy: qcom-qmp-combo: clean up PHY init Johan Hovold
2022-11-12  7:49   ` Dmitry Baryshkov
2022-11-11  8:56 ` [PATCH 22/22] phy: qcom-qmp-combo: clean up DP callback names Johan Hovold
2022-11-12  7:49   ` Dmitry Baryshkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221111085643.9478-20-johan+linaro@kernel.org \
    --to=johan+linaro@kernel.org \
    --cc=agross@kernel.org \
    --cc=andersson@kernel.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=konrad.dybcio@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox