diff mbox series

[02/12] usb: typec: add basic typec properties

Message ID 1506386727-16370-3-git-send-email-jun.li@nxp.com
State Superseded, archived
Headers show
Series staging: typec: tcpci: move out of staging | expand

Commit Message

Jun Li Sept. 26, 2017, 12:45 a.m. UTC
port-type is required for any typec port; default-role is only required
for drp; power source capable needs src-pdos; power sink capable needs
snk-pdos, max-snk-mv, max-snk-ma, op-snk-mw.

Signed-off-by: Li Jun <jun.li@nxp.com>
---
 Documentation/devicetree/bindings/usb/typec.txt | 46 +++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

Comments

Heikki Krogerus Sept. 26, 2017, 8:23 a.m. UTC | #1
On Tue, Sep 26, 2017 at 08:45:17AM +0800, Li Jun wrote:
> port-type is required for any typec port; default-role is only required
> for drp; power source capable needs src-pdos; power sink capable needs
> snk-pdos, max-snk-mv, max-snk-ma, op-snk-mw.
> 
> Signed-off-by: Li Jun <jun.li@nxp.com>
> ---
>  Documentation/devicetree/bindings/usb/typec.txt | 46 +++++++++++++++++++++++++
>  1 file changed, 46 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/usb/typec.txt b/Documentation/devicetree/bindings/usb/typec.txt
> new file mode 100644
> index 0000000..36d4467
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/usb/typec.txt
> @@ -0,0 +1,46 @@
> +Generic typec and power delivery properties
> +-------------------------------------------
> +
> +Required properties:
> +- port-type:    should be one of "source", "sink" or "dual".
> +- default-role: preferred power role if drp, should be "sink" or "source".
> +- src-pdos:     An array of u32 with each entry providing supported power
> +                source data object(PDO), the detailed bit definitions of
> +                PDO can be found in "Universal Serial Bus Power Delivery
> +                Specification" chapter 6.4.1.2 Source_Capabilities Message,
> +                the order of each entry(PDO) should follow the PD spec chapter
> +                6.4.1. Required only for power source and power dual role with
> +                power delivery support.
> +- snk-pdos:     An array of u32 with each entry providing supported power
> +                sink data object(PDO), the detailed bit definitions of PDO
> +                can be found in "Universal Serial Bus Power Delivery
> +                Specification" chapter 6.4.1.3 Sink Capabilities Message,
> +                the order of each entry(PDO) should follow the PD spec chapter
> +                6.4.1. Required only for power sink and power dual role with
> +                power delivery support.

Wouldn't it be better to supply a property per detail and let the
drivers construct the pdos as needed?

> +- max-snk-mv:   The max voltage the sink can support in millivoltage, required
> +                only for power sink and power dual role with power delivery
> +                support.
> +- max-snk-ma:   The max current the sink can support in milliampere, required
> +                only for power sink and power dual role with power delivery
> +                support.
> +- op-snk-mw:    Sink required operating power in milliwatts, if source offered
> +                power is less then it, Capability Mismatch is set, required
> +                only for power sink and power dual role with power delivery
> +                support.

I'm a little bit concerned about these. Has any OF/DT guys reviewed
them?

We should also keep in mind that the same properties should also be
possible to use with ACPI. That may not be a problem as such, but we
should consult the ACPI guys as well.


Thanks,
Jun Li Sept. 26, 2017, 10:09 a.m. UTC | #2
Hi,

> -----Original Message-----
> From: Heikki Krogerus [mailto:heikki.krogerus@linux.intel.com]
> Sent: Tuesday, September 26, 2017 4:23 PM
> To: Jun Li <jun.li@nxp.com>
> Cc: gregkh@linuxfoundation.org; linux@roeck-us.net; robh+dt@kernel.org;
> mark.rutland@arm.com; yueyao@google.com; o_leveque@orange.fr; Peter
> Chen <peter.chen@nxp.com>; A.s. Dong <aisheng.dong@nxp.com>; linux-
> usb@vger.kernel.org; devicetree@vger.kernel.org
> Subject: Re: [PATCH 02/12] usb: typec: add basic typec properties
> 
> On Tue, Sep 26, 2017 at 08:45:17AM +0800, Li Jun wrote:
> > port-type is required for any typec port; default-role is only
> > required for drp; power source capable needs src-pdos; power sink
> > capable needs snk-pdos, max-snk-mv, max-snk-ma, op-snk-mw.
> >
> > Signed-off-by: Li Jun <jun.li@nxp.com>
> > ---
> >  Documentation/devicetree/bindings/usb/typec.txt | 46
> > +++++++++++++++++++++++++
> >  1 file changed, 46 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/usb/typec.txt
> > b/Documentation/devicetree/bindings/usb/typec.txt
> > new file mode 100644
> > index 0000000..36d4467
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/usb/typec.txt
> > @@ -0,0 +1,46 @@
> > +Generic typec and power delivery properties
> > +-------------------------------------------
> > +
> > +Required properties:
> > +- port-type:    should be one of "source", "sink" or "dual".
> > +- default-role: preferred power role if drp, should be "sink" or "source".
> > +- src-pdos:     An array of u32 with each entry providing supported power
> > +                source data object(PDO), the detailed bit definitions of
> > +                PDO can be found in "Universal Serial Bus Power Delivery
> > +                Specification" chapter 6.4.1.2 Source_Capabilities Message,
> > +                the order of each entry(PDO) should follow the PD spec chapter
> > +                6.4.1. Required only for power source and power dual role with
> > +                power delivery support.
> > +- snk-pdos:     An array of u32 with each entry providing supported power
> > +                sink data object(PDO), the detailed bit definitions of PDO
> > +                can be found in "Universal Serial Bus Power Delivery
> > +                Specification" chapter 6.4.1.3 Sink Capabilities Message,
> > +                the order of each entry(PDO) should follow the PD spec chapter
> > +                6.4.1. Required only for power sink and power dual role with
> > +                power delivery support.
> 
> Wouldn't it be better to supply a property per detail and let the drivers construct
> the pdos as needed?

This is my original idea, but different kind of PDOs have so many detail attributes for
different config, we will have a very long properties list, for simple, maybe it's easier
for user to check the standard PD spec and construct it by hand in this case.

> 
> > +- max-snk-mv:   The max voltage the sink can support in millivoltage, required
> > +                only for power sink and power dual role with power delivery
> > +                support.
> > +- max-snk-ma:   The max current the sink can support in milliampere, required
> > +                only for power sink and power dual role with power delivery
> > +                support.
> > +- op-snk-mw:    Sink required operating power in milliwatts, if source offered
> > +                power is less then it, Capability Mismatch is set, required
> > +                only for power sink and power dual role with power delivery
> > +                support.
> 
> I'm a little bit concerned about these. Has any OF/DT guys reviewed them?
> 
> We should also keep in mind that the same properties should also be possible to
> use with ACPI. That may not be a problem as such, but we should consult the
> ACPI guys as well.
> 

Ok, let's wait DT guys comments.

Li Jun
> 
> Thanks,
> 
> --
> heikki
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/usb/typec.txt b/Documentation/devicetree/bindings/usb/typec.txt
new file mode 100644
index 0000000..36d4467
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/typec.txt
@@ -0,0 +1,46 @@ 
+Generic typec and power delivery properties
+-------------------------------------------
+
+Required properties:
+- port-type:    should be one of "source", "sink" or "dual".
+- default-role: preferred power role if drp, should be "sink" or "source".
+- src-pdos:     An array of u32 with each entry providing supported power
+                source data object(PDO), the detailed bit definitions of
+                PDO can be found in "Universal Serial Bus Power Delivery
+                Specification" chapter 6.4.1.2 Source_Capabilities Message,
+                the order of each entry(PDO) should follow the PD spec chapter
+                6.4.1. Required only for power source and power dual role with
+                power delivery support.
+- snk-pdos:     An array of u32 with each entry providing supported power
+                sink data object(PDO), the detailed bit definitions of PDO
+                can be found in "Universal Serial Bus Power Delivery
+                Specification" chapter 6.4.1.3 Sink Capabilities Message,
+                the order of each entry(PDO) should follow the PD spec chapter
+                6.4.1. Required only for power sink and power dual role with
+                power delivery support.
+- max-snk-mv:   The max voltage the sink can support in millivoltage, required
+                only for power sink and power dual role with power delivery
+                support.
+- max-snk-ma:   The max current the sink can support in milliampere, required
+                only for power sink and power dual role with power delivery
+                support.
+- op-snk-mw:    Sink required operating power in milliwatts, if source offered
+                power is less then it, Capability Mismatch is set, required
+                only for power sink and power dual role with power delivery
+                support.
+
+Example:
+
+ptn5110@50 {
+	compatible = "usb,tcpci";
+	reg = <0x50>;
+	interrupt-parent = <&gpio3>;
+	interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+	port-type = "dual";
+	default-role = "sink";
+	src-pdos = <0x380190c8>;
+	snk-pdos = <0x380190c8 0x3802d0c8>;
+	max-snk-mv = <9000>;
+	max-snk-ma = <1000>;
+	op-snk-mw = <9000>;
+};