Skip to content

Commit 6c7c449

Browse files
jhovoldvinodkoul
authored andcommitted
phy: qcom-qmp-combo: clean up device-tree parsing
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. Reviewed-by: Dmitry Baryshkov <[email protected]> Signed-off-by: Johan Hovold <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
1 parent dd11536 commit 6c7c449

File tree

1 file changed

+28
-54
lines changed

1 file changed

+28
-54
lines changed

drivers/phy/qualcomm/phy-qcom-qmp-combo.c

Lines changed: 28 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -2575,13 +2575,12 @@ static int qmp_combo_probe(struct platform_device *pdev)
25752575
{
25762576
struct qmp_combo *qmp;
25772577
struct device *dev = &pdev->dev;
2578-
struct device_node *child;
2578+
struct device_node *dp_np, *usb_np;
25792579
struct phy_provider *phy_provider;
25802580
void __iomem *serdes;
25812581
void __iomem *usb_serdes;
25822582
void __iomem *dp_serdes = NULL;
25832583
const struct qmp_phy_cfg *cfg = NULL;
2584-
int num, id, expected_phys;
25852584
int ret;
25862585

25872586
qmp = devm_kzalloc(dev, sizeof(*qmp), GFP_KERNEL);
@@ -2607,8 +2606,6 @@ static int qmp_combo_probe(struct platform_device *pdev)
26072606
if (IS_ERR(dp_serdes))
26082607
return PTR_ERR(dp_serdes);
26092608

2610-
expected_phys = 2;
2611-
26122609
mutex_init(&qmp->phy_mutex);
26132610

26142611
ret = qmp_combo_clk_init(dev, cfg);
@@ -2623,75 +2620,52 @@ static int qmp_combo_probe(struct platform_device *pdev)
26232620
if (ret)
26242621
return ret;
26252622

2626-
num = of_get_available_child_count(dev->of_node);
2627-
/* do we have a rogue child node ? */
2628-
if (num > expected_phys)
2623+
usb_np = of_get_child_by_name(dev->of_node, "usb3-phy");
2624+
if (!usb_np)
2625+
return -EINVAL;
2626+
2627+
dp_np = of_get_child_by_name(dev->of_node, "dp-phy");
2628+
if (!dp_np) {
2629+
of_node_put(usb_np);
26292630
return -EINVAL;
2631+
}
26302632

26312633
pm_runtime_set_active(dev);
26322634
ret = devm_pm_runtime_enable(dev);
26332635
if (ret)
2634-
return ret;
2636+
goto err_node_put;
26352637
/*
26362638
* Prevent runtime pm from being ON by default. Users can enable
26372639
* it using power/control in sysfs.
26382640
*/
26392641
pm_runtime_forbid(dev);
26402642

2641-
id = 0;
2642-
for_each_available_child_of_node(dev->of_node, child) {
2643-
if (of_node_name_eq(child, "dp-phy")) {
2644-
serdes = dp_serdes;
2645-
2646-
/* Create per-lane phy */
2647-
ret = qmp_combo_create_dp(dev, child, serdes, cfg);
2648-
if (ret) {
2649-
dev_err(dev, "failed to create lane%d phy, %d\n",
2650-
id, ret);
2651-
goto err_node_put;
2652-
}
2653-
2654-
ret = phy_dp_clks_register(qmp, child);
2655-
if (ret) {
2656-
dev_err(qmp->dev,
2657-
"failed to register DP clock source\n");
2658-
goto err_node_put;
2659-
}
2660-
} else if (of_node_name_eq(child, "usb3-phy")) {
2661-
serdes = usb_serdes;
2662-
2663-
/* Create per-lane phy */
2664-
ret = qmp_combo_create_usb(dev, child, serdes, cfg);
2665-
if (ret) {
2666-
dev_err(dev, "failed to create lane%d phy, %d\n",
2667-
id, ret);
2668-
goto err_node_put;
2669-
}
2670-
2671-
/*
2672-
* Register the pipe clock provided by phy.
2673-
* See function description to see details of this pipe clock.
2674-
*/
2675-
ret = phy_pipe_clk_register(qmp, child);
2676-
if (ret) {
2677-
dev_err(qmp->dev,
2678-
"failed to register pipe clock source\n");
2679-
goto err_node_put;
2680-
}
2681-
}
2643+
ret = qmp_combo_create_usb(dev, usb_np, usb_serdes, cfg);
2644+
if (ret)
2645+
goto err_node_put;
26822646

2683-
id++;
2684-
}
2647+
ret = phy_pipe_clk_register(qmp, usb_np);
2648+
if (ret)
2649+
goto err_node_put;
26852650

2686-
if (!qmp->usb_phy)
2687-
return -EINVAL;
2651+
ret = qmp_combo_create_dp(dev, dp_np, dp_serdes, cfg);
2652+
if (ret)
2653+
goto err_node_put;
2654+
2655+
ret = phy_dp_clks_register(qmp, dp_np);
2656+
if (ret)
2657+
goto err_node_put;
26882658

26892659
phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
26902660

2661+
of_node_put(usb_np);
2662+
of_node_put(dp_np);
2663+
26912664
return PTR_ERR_OR_ZERO(phy_provider);
26922665

26932666
err_node_put:
2694-
of_node_put(child);
2667+
of_node_put(usb_np);
2668+
of_node_put(dp_np);
26952669
return ret;
26962670
}
26972671

0 commit comments

Comments
 (0)