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>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
Johan Hovold <johan+linaro@kernel.org>
Subject: [PATCH v2 04/15] phy: qcom-qmp-combo: restructure PHY creation
Date: Tue, 15 Nov 2022 15:39:54 +0100 [thread overview]
Message-ID: <20221115144005.2478-5-johan+linaro@kernel.org> (raw)
In-Reply-To: <20221115144005.2478-1-johan+linaro@kernel.org>
In preparation for supporting devicetree bindings which do not use child
nodes, move the PHY creation to probe() proper and parse the serdes,
dp_com and dp_serdes resources in a dedicated legacy devicetree helper.
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
---
drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 89 ++++++++++++-----------
1 file changed, 48 insertions(+), 41 deletions(-)
diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
index 5da42a4e5bf6..85def6560e43 100644
--- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
+++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
@@ -2471,11 +2471,9 @@ static int phy_dp_clks_register(struct qmp_combo *qmp, struct device_node *np)
return devm_add_action_or_reset(qmp->dev, phy_clk_release_provider, np);
}
-static int qmp_combo_create_dp(struct qmp_combo *qmp, struct device_node *np)
+static int qmp_combo_parse_dt_lecacy_dp(struct qmp_combo *qmp, struct device_node *np)
{
struct device *dev = qmp->dev;
- struct phy *generic_phy;
- int ret;
/*
* Get memory resources from the DP child node:
@@ -2496,25 +2494,13 @@ static int qmp_combo_create_dp(struct qmp_combo *qmp, struct device_node *np)
if (IS_ERR(qmp->dp_tx2))
return PTR_ERR(qmp->dp_tx2);
- generic_phy = devm_phy_create(dev, np, &qmp_combo_dp_phy_ops);
- if (IS_ERR(generic_phy)) {
- ret = PTR_ERR(generic_phy);
- dev_err(dev, "failed to create DP PHY: %d\n", ret);
- return ret;
- }
-
- qmp->dp_phy = generic_phy;
- phy_set_drvdata(generic_phy, qmp);
-
return 0;
}
-static int qmp_combo_create_usb(struct qmp_combo *qmp, struct device_node *np)
+static int qmp_combo_parse_dt_lecacy_usb(struct qmp_combo *qmp, struct device_node *np)
{
const struct qmp_phy_cfg *cfg = qmp->cfg;
struct device *dev = qmp->dev;
- struct phy *generic_phy;
- int ret;
/*
* Get memory resources from the USB child node:
@@ -2556,15 +2542,34 @@ static int qmp_combo_create_usb(struct qmp_combo *qmp, struct device_node *np)
"failed to get pipe clock\n");
}
- generic_phy = devm_phy_create(dev, np, &qmp_combo_usb_phy_ops);
- if (IS_ERR(generic_phy)) {
- ret = PTR_ERR(generic_phy);
- dev_err(dev, "failed to create USB PHY: %d\n", ret);
+ return 0;
+}
+
+static int qmp_combo_parse_dt_legacy(struct qmp_combo *qmp, struct device_node *usb_np,
+ struct device_node *dp_np)
+{
+ struct platform_device *pdev = to_platform_device(qmp->dev);
+ int ret;
+
+ qmp->serdes = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(qmp->serdes))
+ return PTR_ERR(qmp->serdes);
+
+ qmp->dp_com = devm_platform_ioremap_resource(pdev, 1);
+ if (IS_ERR(qmp->dp_com))
+ return PTR_ERR(qmp->dp_com);
+
+ qmp->dp_serdes = devm_platform_ioremap_resource(pdev, 2);
+ if (IS_ERR(qmp->dp_serdes))
+ return PTR_ERR(qmp->dp_serdes);
+
+ ret = qmp_combo_parse_dt_lecacy_usb(qmp, usb_np);
+ if (ret)
return ret;
- }
- qmp->usb_phy = generic_phy;
- phy_set_drvdata(generic_phy, qmp);
+ ret = qmp_combo_parse_dt_lecacy_dp(qmp, dp_np);
+ if (ret)
+ return ret;
return 0;
}
@@ -2587,18 +2592,6 @@ static int qmp_combo_probe(struct platform_device *pdev)
if (!qmp->cfg)
return -EINVAL;
- qmp->serdes = devm_platform_ioremap_resource(pdev, 0);
- if (IS_ERR(qmp->serdes))
- return PTR_ERR(qmp->serdes);
-
- qmp->dp_com = devm_platform_ioremap_resource(pdev, 1);
- if (IS_ERR(qmp->dp_com))
- return PTR_ERR(qmp->dp_com);
-
- qmp->dp_serdes = devm_platform_ioremap_resource(pdev, 2);
- if (IS_ERR(qmp->dp_serdes))
- return PTR_ERR(qmp->dp_serdes);
-
mutex_init(&qmp->phy_mutex);
ret = qmp_combo_clk_init(qmp);
@@ -2623,6 +2616,10 @@ static int qmp_combo_probe(struct platform_device *pdev)
return -EINVAL;
}
+ ret = qmp_combo_parse_dt_legacy(qmp, usb_np, dp_np);
+ if (ret)
+ goto err_node_put;
+
pm_runtime_set_active(dev);
ret = devm_pm_runtime_enable(dev);
if (ret)
@@ -2633,21 +2630,31 @@ static int qmp_combo_probe(struct platform_device *pdev)
*/
pm_runtime_forbid(dev);
- ret = qmp_combo_create_usb(qmp, usb_np);
+ ret = phy_pipe_clk_register(qmp, usb_np);
if (ret)
goto err_node_put;
- ret = phy_pipe_clk_register(qmp, usb_np);
+ ret = phy_dp_clks_register(qmp, dp_np);
if (ret)
goto err_node_put;
- ret = qmp_combo_create_dp(qmp, dp_np);
- if (ret)
+ qmp->usb_phy = devm_phy_create(dev, usb_np, &qmp_combo_usb_phy_ops);
+ if (IS_ERR(qmp->usb_phy)) {
+ ret = PTR_ERR(qmp->usb_phy);
+ dev_err(dev, "failed to create USB PHY: %d\n", ret);
goto err_node_put;
+ }
- ret = phy_dp_clks_register(qmp, dp_np);
- if (ret)
+ phy_set_drvdata(qmp->usb_phy, qmp);
+
+ qmp->dp_phy = devm_phy_create(dev, dp_np, &qmp_combo_dp_phy_ops);
+ if (IS_ERR(qmp->dp_phy)) {
+ ret = PTR_ERR(qmp->dp_phy);
+ dev_err(dev, "failed to create DP PHY: %d\n", ret);
goto err_node_put;
+ }
+
+ phy_set_drvdata(qmp->dp_phy, qmp);
phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
--
2.37.4
next prev parent reply other threads:[~2022-11-15 14:41 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-15 14:39 [PATCH v2 00/15] phy: qcom-qmp-combo: fix sc8280xp binding (set 3/3) Johan Hovold
2022-11-15 14:39 ` [PATCH v2 01/15] dt-bindings: phy: qcom,qmp-usb3-dp: rename current bindings Johan Hovold
2022-11-15 14:39 ` [PATCH v2 02/15] dt-bindings: phy: qcom,qmp-usb3-dp: fix sc8280xp binding Johan Hovold
2022-11-16 21:59 ` Rob Herring
2022-11-15 14:39 ` [PATCH v2 03/15] phy: qcom-qmp-combo: drop v4 reference-clock source Johan Hovold
2022-11-16 13:48 ` Dmitry Baryshkov
2022-11-15 14:39 ` Johan Hovold [this message]
2022-11-16 13:50 ` [PATCH v2 04/15] phy: qcom-qmp-combo: restructure PHY creation Dmitry Baryshkov
2022-11-15 14:39 ` [PATCH v2 05/15] phy: qcom-qmp-combo: generate pipe clock name Johan Hovold
2022-11-15 14:39 ` [PATCH v2 06/15] phy: qcom-qmp-combo: drop redundant clock structure Johan Hovold
2022-11-15 14:39 ` [PATCH v2 07/15] phy: qcom-qmp-combo: drop redundant clock allocation Johan Hovold
2022-11-15 14:39 ` [PATCH v2 08/15] phy: qcom-qmp-combo: add clock registration helper Johan Hovold
2022-11-15 14:39 ` [PATCH v2 09/15] phy: qcom-qmp-combo: separate clock and provider registration Johan Hovold
2022-11-15 14:40 ` [PATCH v2 10/15] phy: qcom-qmp-combo: clean up DP clock callbacks Johan Hovold
2022-11-15 14:40 ` [PATCH v2 11/15] phy: qcom-qmp-combo: rename common-register pointers Johan Hovold
2022-11-15 14:40 ` [PATCH v2 12/15] phy: qcom-qmp-combo: rename DP_PHY register pointer Johan Hovold
2022-11-15 14:40 ` [PATCH v2 13/15] phy: qcom-qmp-combo: add support for updated sc8280xp binding Johan Hovold
2022-11-16 13:51 ` Dmitry Baryshkov
2022-11-15 14:40 ` [PATCH v2 14/15] arm64: dts: qcom: sc8280xp: fix primary USB-DP PHY reset Johan Hovold
2022-11-15 14:40 ` [PATCH v2 15/15] arm64: dts: qcom: sc8280xp: fix USB-DP PHY nodes Johan Hovold
2022-11-16 13:52 ` 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=20221115144005.2478-5-johan+linaro@kernel.org \
--to=johan+linaro@kernel.org \
--cc=agross@kernel.org \
--cc=andersson@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@linaro.org \
--cc=konrad.dybcio@linaro.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh+dt@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.