]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
phy: meson-gxl-usb2: add set_mode callback
authorNeil Armstrong <neil.armstrong@linaro.org>
Thu, 20 Jun 2024 07:42:50 +0000 (09:42 +0200)
committerNeil Armstrong <neil.armstrong@linaro.org>
Tue, 25 Jun 2024 13:25:10 +0000 (15:25 +0200)
Implement set_mode callback by calling the current public
function, use a temporary function name that will be removed
when the public phy_meson_gxl_usb2_set_mode is finally removed
in a following change.

Reviewed-by: Marek Vasut <marex@denx.de>
Link: https://lore.kernel.org/r/20240620-u-boot-usb-gxl-phy-set-mode-v2-1-b81c027bc02c@linaro.org
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
drivers/phy/meson-gxl-usb2.c

index 92c285103c4a22157642bd3e2cddff37ceabcab3..e051e662243622bb97b3272c3c1a61ea31485ee3 100644 (file)
@@ -150,6 +150,28 @@ void phy_meson_gxl_usb2_set_mode(struct phy *phy, enum usb_dr_mode mode)
        phy_meson_gxl_usb2_reset(priv);
 }
 
+static int _phy_meson_gxl_usb2_set_mode(struct phy *phy, enum phy_mode mode, int submode)
+{
+       if (submode)
+               return -EOPNOTSUPP;
+
+       switch (mode) {
+       case PHY_MODE_USB_DEVICE:
+               phy_meson_gxl_usb2_set_mode(phy, USB_DR_MODE_PERIPHERAL);
+               break;
+
+       case PHY_MODE_USB_HOST:
+       case PHY_MODE_USB_OTG:
+               phy_meson_gxl_usb2_set_mode(phy, USB_DR_MODE_HOST);
+               break;
+
+       default:
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
 static int phy_meson_gxl_usb2_power_on(struct phy *phy)
 {
        struct udevice *dev = phy->dev;
@@ -161,7 +183,7 @@ static int phy_meson_gxl_usb2_power_on(struct phy *phy)
        val &= ~U2P_R0_POWER_ON_RESET;
        regmap_write(priv->regmap, U2P_R0, val);
 
-       phy_meson_gxl_usb2_set_mode(phy, USB_DR_MODE_HOST);
+       _phy_meson_gxl_usb2_set_mode(phy, PHY_MODE_USB_HOST, 0);
 
        return 0;
 }
@@ -183,6 +205,7 @@ static int phy_meson_gxl_usb2_power_off(struct phy *phy)
 struct phy_ops meson_gxl_usb2_phy_ops = {
        .power_on = phy_meson_gxl_usb2_power_on,
        .power_off = phy_meson_gxl_usb2_power_off,
+       .set_mode = _phy_meson_gxl_usb2_set_mode,
 };
 
 int meson_gxl_usb2_phy_probe(struct udevice *dev)