From: Chaoyi Chen <[email protected]>

Using the DRM_AUX_BRIDGE helper to create the transparent DRM bridge
device.

Signed-off-by: Chaoyi Chen <[email protected]>
Reviewed-by: Neil Armstrong <[email protected]>
Reviewed-by: Sebastian Reichel <[email protected]>
---
(no changes since v1)

---
 drivers/phy/rockchip/Kconfig              |  2 ++
 drivers/phy/rockchip/phy-rockchip-typec.c | 13 +++++++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/phy/rockchip/Kconfig b/drivers/phy/rockchip/Kconfig
index 14698571b607..9173d3b4fef4 100644
--- a/drivers/phy/rockchip/Kconfig
+++ b/drivers/phy/rockchip/Kconfig
@@ -119,6 +119,8 @@ config PHY_ROCKCHIP_SNPS_PCIE3
 config PHY_ROCKCHIP_TYPEC
        tristate "Rockchip TYPEC PHY Driver"
        depends on OF && (ARCH_ROCKCHIP || COMPILE_TEST)
+       depends on DRM || DRM=n
+       select DRM_AUX_BRIDGE if DRM_BRIDGE
        select EXTCON
        select GENERIC_PHY
        select RESET_CONTROLLER
diff --git a/drivers/phy/rockchip/phy-rockchip-typec.c 
b/drivers/phy/rockchip/phy-rockchip-typec.c
index d9701b6106d5..48070b50416e 100644
--- a/drivers/phy/rockchip/phy-rockchip-typec.c
+++ b/drivers/phy/rockchip/phy-rockchip-typec.c
@@ -54,6 +54,7 @@
 
 #include <linux/mfd/syscon.h>
 #include <linux/phy/phy.h>
+#include <drm/bridge/aux-bridge.h>
 
 #define CMN_SSM_BANDGAP                        (0x21 << 2)
 #define CMN_SSM_BIAS                   (0x22 << 2)
@@ -1162,16 +1163,24 @@ static int rockchip_typec_phy_probe(struct 
platform_device *pdev)
 
        for_each_available_child_of_node(np, child_np) {
                struct phy *phy;
+               ret = 0;
 
-               if (of_node_name_eq(child_np, "dp-port"))
+               if (of_node_name_eq(child_np, "dp-port")) {
                        phy = devm_phy_create(dev, child_np,
                                              &rockchip_dp_phy_ops);
-               else if (of_node_name_eq(child_np, "usb3-port"))
+                       ret = drm_aux_bridge_register_from_node(dev, child_np);
+               } else if (of_node_name_eq(child_np, "usb3-port"))
                        phy = devm_phy_create(dev, child_np,
                                              &rockchip_usb3_phy_ops);
                else
                        continue;
 
+               if (ret) {
+                       pm_runtime_disable(dev);
+                       of_node_put(child_np);
+                       return ret;
+               }
+
                if (IS_ERR(phy)) {
                        dev_err(dev, "failed to create phy: %pOFn\n",
                                child_np);
-- 
2.54.0

Reply via email to