phy: usbphyc: update xlate with DT binding
authorPatrick Delaunay <patrick.delaunay@st.com>
Fri, 29 Mar 2019 14:42:10 +0000 (15:42 +0100)
committerMarek Vasut <marex@denx.de>
Sun, 21 Apr 2019 08:26:51 +0000 (10:26 +0200)
Parameter added for port 1, for example:

&usbh_ehci {
phys = <&usbphyc_port0>;
phy-names = "usb";
vbus-supply = <&vbus_sw>;
status = "okay";
};

&usbotg_hs {
pinctrl-names = "default";
pinctrl-0 = <&usbotg_hs_pins_a>;
phys = <&usbphyc_port1 0>;
phy-names = "usb2-phy";
status = "okay";
};

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
drivers/phy/phy-stm32-usbphyc.c

index fc53df2..ec5b47c 100644 (file)
@@ -297,19 +297,20 @@ static int stm32_usbphyc_get_regulator(struct udevice *dev, ofnode node,
 static int stm32_usbphyc_of_xlate(struct phy *phy,
                                  struct ofnode_phandle_args *args)
 {
-       if (args->args_count > 1) {
-               pr_debug("%s: invalid args_count: %d\n", __func__,
-                        args->args_count);
-               return -EINVAL;
-       }
+       if (args->args_count < 1)
+               return -ENODEV;
 
        if (args->args[0] >= MAX_PHYS)
                return -ENODEV;
 
-       if (args->args_count)
-               phy->id = args->args[0];
-       else
-               phy->id = 0;
+       phy->id = args->args[0];
+
+       if ((phy->id == 0 && args->args_count != 1) ||
+           (phy->id == 1 && args->args_count != 2)) {
+               dev_err(dev, "invalid number of cells for phy port%ld\n",
+                       phy->id);
+               return -EINVAL;
+       }
 
        return 0;
 }