On Friday 09 June 2017 03:50 PM, Felipe Balbi wrote: > ->set_mode() can be used to tell PHY to prepare itself to enter USB > Host/Peripheral mode and that's very important for DRD > configurations. > > Signed-off-by: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> > > changes since v1: > - rebase on PHY -next removed this changelog and merged, Thanks Kishon > > > --- > drivers/phy/ti/phy-tusb1210.c | 35 +++++++++++++++++++++++++++++++++++ > 1 file changed, 35 insertions(+) > > diff --git a/drivers/phy/ti/phy-tusb1210.c b/drivers/phy/ti/phy-tusb1210.c > index 5dbb9a7b4945..b8ec39ac4dfc 100644 > --- a/drivers/phy/ti/phy-tusb1210.c > +++ b/drivers/phy/ti/phy-tusb1210.c > @@ -11,6 +11,7 @@ > */ > #include <linux/module.h> > #include <linux/ulpi/driver.h> > +#include <linux/ulpi/regs.h> > #include <linux/gpio/consumer.h> > #include <linux/phy/ulpi_phy.h> > > @@ -52,9 +53,43 @@ static int tusb1210_power_off(struct phy *phy) > return 0; > } > > +static int tusb1210_set_mode(struct phy *phy, enum phy_mode mode) > +{ > + struct tusb1210 *tusb = phy_get_drvdata(phy); > + int ret; > + > + ret = ulpi_read(tusb->ulpi, ULPI_OTG_CTRL); > + if (ret < 0) > + return ret; > + > + switch (mode) { > + case PHY_MODE_USB_HOST: > + ret |= (ULPI_OTG_CTRL_DRVVBUS_EXT > + | ULPI_OTG_CTRL_ID_PULLUP > + | ULPI_OTG_CTRL_DP_PULLDOWN > + | ULPI_OTG_CTRL_DM_PULLDOWN); > + ulpi_write(tusb->ulpi, ULPI_OTG_CTRL, ret); > + ret |= ULPI_OTG_CTRL_DRVVBUS; > + break; > + case PHY_MODE_USB_DEVICE: > + ret &= ~(ULPI_OTG_CTRL_DRVVBUS > + | ULPI_OTG_CTRL_DP_PULLDOWN > + | ULPI_OTG_CTRL_DM_PULLDOWN); > + ulpi_write(tusb->ulpi, ULPI_OTG_CTRL, ret); > + ret &= ~ULPI_OTG_CTRL_DRVVBUS_EXT; > + break; > + default: > + /* nothing */ > + return 0; > + } > + > + return ulpi_write(tusb->ulpi, ULPI_OTG_CTRL, ret); > +} > + > static const struct phy_ops phy_ops = { > .power_on = tusb1210_power_on, > .power_off = tusb1210_power_off, > + .set_mode = tusb1210_set_mode, > .owner = THIS_MODULE, > }; > > -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html