OSDN Git Service

phy: phy-rockchip-inno-usb2: support standalone phy nodes
authorPeter Geis <pgwipeout@gmail.com>
Wed, 15 Dec 2021 21:02:48 +0000 (16:02 -0500)
committerVinod Koul <vkoul@kernel.org>
Thu, 23 Dec 2021 11:24:48 +0000 (16:54 +0530)
New Rockchip devices have the usb2 phy devices as standalone nodes
instead of children of the grf node.
Allow the driver to find the grf node from a phandle.

Signed-off-by: Peter Geis <pgwipeout@gmail.com>
Tested-by: Michael Riesch <michael.riesch@wolfvision.net>
Link: https://lore.kernel.org/r/20211215210252.120923-5-pgwipeout@gmail.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/rockchip/phy-rockchip-inno-usb2.c

index fac390e..1cdd9ae 100644 (file)
@@ -1073,12 +1073,19 @@ static int rockchip_usb2phy_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
-       if (!dev->parent || !dev->parent->of_node)
-               return -EINVAL;
+       if (!dev->parent || !dev->parent->of_node) {
+               rphy->grf = syscon_regmap_lookup_by_phandle(np, "rockchip,usbgrf");
+               if (IS_ERR(rphy->grf)) {
+                       dev_err(dev, "failed to locate usbgrf\n");
+                       return PTR_ERR(rphy->grf);
+               }
+       }
 
-       rphy->grf = syscon_node_to_regmap(dev->parent->of_node);
-       if (IS_ERR(rphy->grf))
-               return PTR_ERR(rphy->grf);
+       else {
+               rphy->grf = syscon_node_to_regmap(dev->parent->of_node);
+                       if (IS_ERR(rphy->grf))
+                               return PTR_ERR(rphy->grf);
+       }
 
        if (of_device_is_compatible(np, "rockchip,rv1108-usb2phy")) {
                rphy->usbgrf =