On 20-05-29 07:47:37, Mike Looijmans wrote: > > Met vriendelijke groet / kind regards, > > Mike Looijmans > System Expert > > > TOPIC Embedded Products B.V. > Materiaalweg 4, 5681 RJ Best > The Netherlands > > T: +31 (0) 499 33 69 69 > E: mike.looijmans@xxxxxxxxxxxxxxxxx > W: https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.topicproducts.com%2F&data=02%7C01%7Cpeter.chen%40nxp.com%7Cc8a5e33bbd3141b57d5408d80393cff2%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637263280668758097&sdata=e5yJuVtOJ9%2BUqmRl6HNk14Fd0%2FPR2jQAhOl1vHtYJKg%3D&reserved=0 > > Please consider the environment before printing this e-mail > On 28-05-2020 13:20, Peter Chen wrote: > > On 20-05-26 16:50:51, Mike Looijmans wrote: > > > This enables support for VBUS on boards where the power is supplied > > > by a regulator. The regulator is enabled when the USB port enters > > > HOST mode. > > > > > Why you don't do this at your host controller driver? > > That was my first thought too, but it made more sense to do it here. It's > about how things are connected on the board, and not about the controller. > Also makes for a consistent devicetree when using different SOCs on the same > carrier board. A standard interface is: port_power for hc_driver, but seems the xHCI doesn't implement it. > > I already needed this driver to properly reset the USB phy, which the > controller driver also did not do. So it made sense to add the vbus power > control to this driver too. > > If you have a strong preference for the controller driver, I can move this > to the DWC3 driver which happens to be the controller for the latest batch > of SOMs. > You may ask Mathias or Felipe for comments where is suitable for vbus regulator. > > > + > > > nop->dev = dev; > > > nop->phy.dev = nop->dev; > > > nop->phy.label = "nop-xceiv"; > > > @@ -278,6 +319,7 @@ int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_generic *nop) > > > nop->phy.otg->usb_phy = &nop->phy; > > > nop->phy.otg->set_host = nop_set_host; > > > nop->phy.otg->set_peripheral = nop_set_peripheral; > > > + nop->phy.otg->set_vbus = nop_set_vbus; OTG is dead, even USB-IF has refused OTG test since 2019-09, you may avoid to use OTG structure. Peter > > > return 0; > > > } > > > diff --git a/drivers/usb/phy/phy-generic.h b/drivers/usb/phy/phy-generic.h > > > index 7ee80211a688..a3663639ea1e 100644 > > > --- a/drivers/usb/phy/phy-generic.h > > > +++ b/drivers/usb/phy/phy-generic.h > > > @@ -14,7 +14,9 @@ struct usb_phy_generic { > > > struct gpio_desc *gpiod_reset; > > > struct gpio_desc *gpiod_vbus; > > > struct regulator *vbus_draw; > > > + struct regulator *vbus_reg; > > > bool vbus_draw_enabled; > > > + bool vbus_reg_enabled; > > > unsigned long mA; > > > unsigned int vbus; > > > }; > > > -- > > > 2.17.1 > > > > > -- > Mike Looijmans > -- Thanks, Peter Chen