Skip to content

Commit d2d7b8e

Browse files
jhovoldvinodkoul
authored andcommitted
phy: qcom-qmp-combo: fix drm bridge registration
Due to a long-standing issue in driver core, drivers may not probe defer after having registered child devices to avoid triggering a probe deferral loop (see fbc35b4 ("Add documentation on meaning of -EPROBE_DEFER")). This could potentially also trigger a bug in the DRM bridge implementation which does not expect bridges to go away even if device links may avoid triggering this (when enabled). Move registration of the DRM aux bridge to after looking up clocks and other resources. Note that PHY creation can in theory also trigger a probe deferral when a 'phy' supply is used. This does not seem to affect the QMP PHY driver but the PHY subsystem should be reworked to address this (i.e. by separating initialisation and registration of the PHY). Fixes: 3592191 ("phy: qcom: qmp-combo: switch to DRM_AUX_BRIDGE") Fixes: 1904c3f ("phy: qcom-qmp-combo: Introduce drm_bridge") Cc: [email protected] # 6.5 Cc: Bjorn Andersson <[email protected]> Cc: Dmitry Baryshkov <[email protected]> Signed-off-by: Johan Hovold <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Reviewed-by: Bjorn Andersson <[email protected]> Reviewed-by: Dmitry Baryshkov <[email protected]> Acked-by: Vinod Koul <[email protected]> Acked-by: Neil Armstrong <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
1 parent 90d35da commit d2d7b8e

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3566,10 +3566,6 @@ static int qmp_combo_probe(struct platform_device *pdev)
35663566
if (ret)
35673567
return ret;
35683568

3569-
ret = drm_aux_bridge_register(dev);
3570-
if (ret)
3571-
return ret;
3572-
35733569
/* Check for legacy binding with child nodes. */
35743570
usb_np = of_get_child_by_name(dev->of_node, "usb3-phy");
35753571
if (usb_np) {
@@ -3589,6 +3585,10 @@ static int qmp_combo_probe(struct platform_device *pdev)
35893585
if (ret)
35903586
goto err_node_put;
35913587

3588+
ret = drm_aux_bridge_register(dev);
3589+
if (ret)
3590+
goto err_node_put;
3591+
35923592
pm_runtime_set_active(dev);
35933593
ret = devm_pm_runtime_enable(dev);
35943594
if (ret)

0 commit comments

Comments
 (0)