lkml.org 
[lkml]   [2020]   [Jun]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v2] usb: dwc3: Add support for VBUS power control
    On Wed, Jun 17, 2020 at 8:38 AM Mike Looijmans <mike.looijmans@topic.nl> 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@topicproducts.com
    > W: www.topicproducts.com
    >
    > Please consider the environment before printing this e-mail
    > On 10-06-2020 22:22, Rob Herring wrote:
    > > On Wed, Jun 03, 2020 at 02:09:15PM +0200, Mike Looijmans wrote:
    > >> Support VBUS power control using regulator framework. Enables the regulator
    > >> while the port is in host mode.
    > >>
    > >> Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
    > >> ---
    > >> v2: Add missing devm_regulator_get call which got lost during rebase
    > >>
    > >> .../devicetree/bindings/usb/dwc3.txt | 1 +
    > >> drivers/usb/dwc3/core.c | 34 ++++++++++++++-----
    > >> drivers/usb/dwc3/core.h | 4 +++
    > >> drivers/usb/dwc3/drd.c | 6 ++--
    > >> 4 files changed, 33 insertions(+), 12 deletions(-)
    > >>
    > >> diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
    > >> index 9946ff9ba735..56bc3f238e2d 100644
    > >> --- a/Documentation/devicetree/bindings/usb/dwc3.txt
    > >> +++ b/Documentation/devicetree/bindings/usb/dwc3.txt
    > >> @@ -37,6 +37,7 @@ Optional properties:
    > >> - phys: from the *Generic PHY* bindings
    > >> - phy-names: from the *Generic PHY* bindings; supported names are "usb2-phy"
    > >> or "usb3-phy".
    > >> + - vbus-supply: Regulator handle that provides the VBUS power.
    > > Does the DWC3 block require Vbus to power itself? Doubtful. This
    > > belongs in a usb-connector node. If the DWC3 driver wants to get the
    > > Vbus supply, it can fetch it from that node.
    > >
    > > Rob
    >
    > Okay, I've been digging into that. But there's no actual driver that
    > binds to a "usb-b-connector" compatible, so how do we get to the
    > vbus-supply from there?
    >
    > [devm_]regulator_get only accepts a device as argument, and will not
    > look into child nodes. The only way to get at the vbus of a child node
    > (or a node linked through a port) would be to hand-code the equivalent
    > of of_regulator_get(), which will not be acceptable.

    Doesn't it look into child nodes calling of_get_child_regulator()?

    You're right that it wouldn't work if graph is used. The connector has
    to be either a child of a controller for the connector or the USB
    controller. I'd expect you'd have the former for Type-C, but for
    "usb-b-connector" the parent is more likely just the USB controller.

    In any case, having a struct device shouldn't be a requirement and
    most subsystems expose a get function only needing the DT node.

    > Or is it the intention that I write a usb-X-connector device driver
    > first that handles the vbus?

    That's a kernel implementation detail that is independent of the
    binding, but yes we'll probably need a driver or library helper
    functions eventually. Note that it is possible to have a struct device
    without a driver.

    Rob

    \
     
     \ /
      Last update: 2020-06-17 18:15    [W:4.011 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site