phy: meson-gxl-usb2: add set_mode callback
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>
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user