Messages in this thread Patch in this message | | | Subject | Re: [PATCH v3] usb: typec: get the vbus source and charge values from the devicetree | Date | Wed, 12 Sep 2018 10:08:58 -0600 | From | Angus Ainslie <> |
| |
On 2018-09-11 09:33, Guenter Roeck wrote: > I cant put my finger on it but this seems wrong. As i said both src > and sink should never be true at the same time. I also din’t > understand why turning off src should power off your board. Ultimately > my concern is that we may be just painting over the real problem, and > that would be really bad to do with dt properties. >
I agree that this doesn't seem like the correct way of solving the problem. On this HW (Emcraft iMX8M BSB) I think the PTN5110 chip has been connected correctly so I'm assuming that it is some quirk of the PTN5110.
I didn't design the HW or the chip. This is a workaround for "quirky" hardware and there may be others that don't behave exactly as expected.
> Note that sending to groeck7@ makes it hard for me to see your emails > and to reply. Using linux@roeck-us.net would be much better. >
Ok, I think that email was grabbed from the driver source.
> Guenter > > Sent from my iPhone > >> On Sep 11, 2018, at 7:59 AM, Angus Ainslie (Purism) <angus@akkea.ca> >> 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 V2: >> >> Change the devicetree documentation. >> Change the devicetree property names. >> >> Changed since V1: >> >> use devicetree values instead of hardcoded initialization. >> >> Signed-off-by: Angus Ainslie (Purism) <angus@akkea.ca> >> --- >> .../devicetree/bindings/usb/typec-tcpci.txt | 6 ++++++ >> drivers/usb/typec/tcpm.c | 14 +++++++++++--- >> 2 files changed, 17 insertions(+), 3 deletions(-) >> >> diff --git a/Documentation/devicetree/bindings/usb/typec-tcpci.txt >> b/Documentation/devicetree/bindings/usb/typec-tcpci.txt >> index 0dd1469e7318..b07418ae6482 100644 >> --- a/Documentation/devicetree/bindings/usb/typec-tcpci.txt >> +++ b/Documentation/devicetree/bindings/usb/typec-tcpci.txt >> @@ -15,6 +15,12 @@ Required sub-node: >> of connector node are specified in >> Documentation/devicetree/bindings/connector/usb-connector.txt >> >> +Optional properties for usb-c-connector sub-node: >> +- 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-sink: set the initalization value for vbus-sink to true. >> + If this property is not present the initial value will be false. >> + >> Example: >> >> ptn5110@50 { >> diff --git a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm.c >> index ca7bedb46f7f..10c14ece3858 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-sink")) >> + port->vbus_charge = true; >> + else >> + port->vbus_charge = false; >> + >> if (port->port_type == TYPEC_PORT_SNK) >> goto sink; >> >> -- >> 2.17.1 >>
| |