Messages in this thread | | | Subject | Re: [PATCH v2] usb: typec: get the vbus source and charge values from the devicetree | From | Guenter Roeck <> | Date | Sun, 9 Sep 2018 12:52:04 -0700 |
| |
On 09/09/2018 11:05 AM, Angus Ainslie (Purism) wrote: > If the board is being powered by USB disabling the source and sink > can remove power from the board. Allow the source and sink to be > initallized based on devicetree values. > > Changed since V1: > > use devicetree values instead of hardcoded initialization. > > Signed-off-by: Angus Ainslie (Purism) <angus@akkea.ca> > --- > .../bindings/connector/usb-connector.txt | 4 ++++ > drivers/usb/typec/tcpm.c | 14 +++++++++++--- > 2 files changed, 15 insertions(+), 3 deletions(-) > > diff --git a/Documentation/devicetree/bindings/connector/usb-connector.txt b/Documentation/devicetree/bindings/connector/usb-connector.txt > index 8855bfcfd778..afe851a713c3 100644 > --- a/Documentation/devicetree/bindings/connector/usb-connector.txt > +++ b/Documentation/devicetree/bindings/connector/usb-connector.txt > @@ -22,6 +22,10 @@ Optional properties for usb-c-connector: > or Try.SRC, should be "sink" for Try.SNK or "source" for Try.SRC. > - data-role: should be one of "host", "device", "dual"(DRD) if typec > connector supports USB data. > +- init-vbus-source: set the initalization value for vbus-source to true. > + If this property is not present the initial value will be false. > +- init-vbus-charge: set the initalization value for vbus-charge to true. > + If this property is not present the initial value will be false. > This change will require DT maintainer approval.
Thanks, Guenter
> Required properties for usb-c-connector with power delivery support: > - source-pdos: An array of u32 with each entry providing supported power > diff --git a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm.c > index ca7bedb46f7f..7f5d4f209e07 100644 > --- a/drivers/usb/typec/tcpm.c > +++ b/drivers/usb/typec/tcpm.c > @@ -2462,9 +2462,7 @@ static int tcpm_init_vbus(struct tcpm_port *port) > { > int ret; > > - ret = port->tcpc->set_vbus(port->tcpc, false, false); > - port->vbus_source = false; > - port->vbus_charge = false; > + ret = port->tcpc->set_vbus(port->tcpc, port->vbus_source, port->vbus_charge); > return ret; > } > > @@ -4266,6 +4264,16 @@ static int tcpm_fw_get_caps(struct tcpm_port *port, > return -EINVAL; > port->port_type = port->typec_caps.type; > > + if (fwnode_property_present(fwnode, "init-vbus-source")) > + port->vbus_source = true; > + else > + port->vbus_source = false; > + > + if (fwnode_property_present(fwnode, "init-vbus-charge")) > + port->vbus_charge = true; > + else > + port->vbus_charge = false; > + > if (port->port_type == TYPEC_PORT_SNK) > goto sink; >
| |