mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-09-21 22:01:34 +02:00
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:
parent
8c58c35048
commit
affb461d9a
@ -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
|
||||||
|
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user