phy: meson-gxl-usb2: remove phy_meson_gxl_usb2_set_mode

Remove the public phy_meson_gxl_usb2_set_mode and move
the implementation in the the set_mode callback.

Reviewed-by: Marek Vasut <marex@denx.de>
Link: https://lore.kernel.org/r/20240620-u-boot-usb-gxl-phy-set-mode-v2-3-b81c027bc02c@linaro.org
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
This commit is contained in:
Neil Armstrong 2024-06-20 09:42:52 +02:00
parent 8c58c35048
commit affb461d9a
2 changed files with 16 additions and 36 deletions

View File

@ -9,9 +9,6 @@
#include <generic-phy.h> #include <generic-phy.h>
#include <linux/usb/otg.h> #include <linux/usb/otg.h>
/* TOFIX add set_mode to struct phy_ops */
void phy_meson_gxl_usb2_set_mode(struct phy *phy, enum usb_dr_mode mode);
int dwc3_meson_gxl_force_mode(struct udevice *dev, enum usb_dr_mode mode); int dwc3_meson_gxl_force_mode(struct udevice *dev, enum usb_dr_mode mode);
#endif #endif

View File

@ -19,8 +19,6 @@
#include <linux/printk.h> #include <linux/printk.h>
#include <linux/usb/otg.h> #include <linux/usb/otg.h>
#include <asm/arch/usb-gx.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/compat.h> #include <linux/compat.h>
@ -121,53 +119,38 @@ static void phy_meson_gxl_usb2_reset(struct phy_meson_gxl_usb2_priv *priv)
udelay(RESET_COMPLETE_TIME); udelay(RESET_COMPLETE_TIME);
} }
void phy_meson_gxl_usb2_set_mode(struct phy *phy, enum usb_dr_mode mode) static int phy_meson_gxl_usb2_set_mode(struct phy *phy, enum phy_mode mode, int submode)
{ {
struct udevice *dev = phy->dev; struct udevice *dev = phy->dev;
struct phy_meson_gxl_usb2_priv *priv = dev_get_priv(dev); struct phy_meson_gxl_usb2_priv *priv = dev_get_priv(dev);
uint val; uint val;
if (submode)
return -EOPNOTSUPP;
regmap_read(priv->regmap, U2P_R0, &val); regmap_read(priv->regmap, U2P_R0, &val);
switch (mode) { switch (mode) {
case USB_DR_MODE_UNKNOWN: case PHY_MODE_USB_DEVICE:
case USB_DR_MODE_HOST: val &= ~U2P_R0_DM_PULLDOWN;
case USB_DR_MODE_OTG: val &= ~U2P_R0_DP_PULLDOWN;
val |= U2P_R0_ID_PULLUP;
break;
case PHY_MODE_USB_HOST:
case PHY_MODE_USB_OTG:
val |= U2P_R0_DM_PULLDOWN; val |= U2P_R0_DM_PULLDOWN;
val |= U2P_R0_DP_PULLDOWN; val |= U2P_R0_DP_PULLDOWN;
val &= ~U2P_R0_ID_PULLUP; val &= ~U2P_R0_ID_PULLUP;
break; break;
case USB_DR_MODE_PERIPHERAL: default:
val &= ~U2P_R0_DM_PULLDOWN; return -EINVAL;
val &= ~U2P_R0_DP_PULLDOWN;
val |= U2P_R0_ID_PULLUP;
break;
} }
regmap_write(priv->regmap, U2P_R0, val); regmap_write(priv->regmap, U2P_R0, val);
phy_meson_gxl_usb2_reset(priv); 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; return 0;
} }
@ -183,7 +166,7 @@ static int phy_meson_gxl_usb2_power_on(struct phy *phy)
val &= ~U2P_R0_POWER_ON_RESET; val &= ~U2P_R0_POWER_ON_RESET;
regmap_write(priv->regmap, U2P_R0, val); regmap_write(priv->regmap, U2P_R0, val);
_phy_meson_gxl_usb2_set_mode(phy, PHY_MODE_USB_HOST, 0); phy_meson_gxl_usb2_set_mode(phy, PHY_MODE_USB_HOST, 0);
return 0; return 0;
} }
@ -205,7 +188,7 @@ static int phy_meson_gxl_usb2_power_off(struct phy *phy)
struct phy_ops meson_gxl_usb2_phy_ops = { struct phy_ops meson_gxl_usb2_phy_ops = {
.power_on = phy_meson_gxl_usb2_power_on, .power_on = phy_meson_gxl_usb2_power_on,
.power_off = phy_meson_gxl_usb2_power_off, .power_off = phy_meson_gxl_usb2_power_off,
.set_mode = _phy_meson_gxl_usb2_set_mode, .set_mode = phy_meson_gxl_usb2_set_mode,
}; };
int meson_gxl_usb2_phy_probe(struct udevice *dev) int meson_gxl_usb2_phy_probe(struct udevice *dev)