Message ID | 20230712072853.1755559-2-kyletso@google.com |
---|---|
State | New |
Headers | show |
Series | mutiple selectable capabilities in tcpm | expand |
On Wed, Jul 12, 2023 at 03:28:52PM +0800, Kyle Tso wrote: > Define a new optional property "capabilities" which is a child node > under connector to contain multiple USB Power Delivery capabilities. Is multiple capabilities a USB spec thing or some Linux feature? I think DT should only define the limits of the h/w capabilities and if the OS wants to define multiple profiles within those limits that's its problem. > > Define a new property with pattern (e.g. caps0, caps1) which is a child > node under "capabilities". Each node contains PDO data of a selectable > Power Delivery capability. > > Signed-off-by: Kyle Tso <kyletso@google.com> > --- > .../bindings/connector/usb-connector.yaml | 44 +++++++++++++++++++ > 1 file changed, 44 insertions(+) > > diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml > index 1c4d3eb87763..b8c96d0a127a 100644 > --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml > +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml > @@ -228,6 +228,50 @@ properties: > SNK_READY for non-pd link. > type: boolean > > + capabilities: > + description: A child node to contain all the selectable USB Power Delivery capabilities. > + type: object > + > + patternProperties: > + "^caps[0-9]+$": caps-[0-9] is more the convention. > + description: Child nodes under "capabilities" node. Each node contains a selectable USB > + Power Delivery capability. > + type: object > + > + properties: > + source-pdos: You are now defining the same property twice. You can use '$defs' to define common properties and then reference them. Or put all the PD properties into its own schema file and reference it. > + description: 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 for power source and power dual role. > + User can specify the source PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() > + defined in dt-bindings/usb/pd.h. > + $ref: /schemas/types.yaml#/definitions/uint32-array > + minItems: 1 > + maxItems: 7 > + > + sink-pdos: > + description: 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 for power sink and power dual role. User > + can specify the sink PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() defined > + in dt-bindings/usb/pd.h. > + $ref: /schemas/types.yaml#/definitions/uint32-array > + minItems: 1 > + maxItems: 7 > + > + op-sink-microwatt: > + description: Sink required operating power in microwatt, if source can't > + offer the power, Capability Mismatch is set. Required for power sink and > + power dual role. > + > + additionalProperties: false > + > + additionalProperties: false > + > dependencies: > sink-vdos-v1: [ 'sink-vdos' ] > sink-vdos: [ 'sink-vdos-v1' ] > -- > 2.41.0.255.g8b1d071c50-goog >
On Sat, Jul 15, 2023 at 12:09 AM Rob Herring <robh@kernel.org> wrote: > > On Wed, Jul 12, 2023 at 03:28:52PM +0800, Kyle Tso wrote: > > Define a new optional property "capabilities" which is a child node > > under connector to contain multiple USB Power Delivery capabilities. > > Is multiple capabilities a USB spec thing or some Linux feature? I think > DT should only define the limits of the h/w capabilities and if the OS > wants to define multiple profiles within those limits that's its > problem. > It is a feature introduced in the commit 662a60102c12 ("usb: typec: Separate USB Power Delivery from USB Type-C") > > > > Define a new property with pattern (e.g. caps0, caps1) which is a child > > node under "capabilities". Each node contains PDO data of a selectable > > Power Delivery capability. > > > > Signed-off-by: Kyle Tso <kyletso@google.com> > > --- > > .../bindings/connector/usb-connector.yaml | 44 +++++++++++++++++++ > > 1 file changed, 44 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml > > index 1c4d3eb87763..b8c96d0a127a 100644 > > --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml > > +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml > > @@ -228,6 +228,50 @@ properties: > > SNK_READY for non-pd link. > > type: boolean > > > > + capabilities: > > + description: A child node to contain all the selectable USB Power Delivery capabilities. > > + type: object > > + > > + patternProperties: > > + "^caps[0-9]+$": > > caps-[0-9] is more the convention. > will update in v2 > > + description: Child nodes under "capabilities" node. Each node contains a selectable USB > > + Power Delivery capability. > > + type: object > > + > > + properties: > > + source-pdos: > > You are now defining the same property twice. You can use '$defs' to > define common properties and then reference them. Or put all the PD > properties into its own schema file and reference it. > will update in v2 > > + description: 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 for power source and power dual role. > > + User can specify the source PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() > > + defined in dt-bindings/usb/pd.h. > > + $ref: /schemas/types.yaml#/definitions/uint32-array > > + minItems: 1 > > + maxItems: 7 > > + > > + sink-pdos: > > + description: 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 for power sink and power dual role. User > > + can specify the sink PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() defined > > + in dt-bindings/usb/pd.h. > > + $ref: /schemas/types.yaml#/definitions/uint32-array > > + minItems: 1 > > + maxItems: 7 > > + > > + op-sink-microwatt: > > + description: Sink required operating power in microwatt, if source can't > > + offer the power, Capability Mismatch is set. Required for power sink and > > + power dual role. > > + > > + additionalProperties: false > > + > > + additionalProperties: false > > + > > dependencies: > > sink-vdos-v1: [ 'sink-vdos' ] > > sink-vdos: [ 'sink-vdos-v1' ] > > -- > > 2.41.0.255.g8b1d071c50-goog > >
diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml index 1c4d3eb87763..b8c96d0a127a 100644 --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml @@ -228,6 +228,50 @@ properties: SNK_READY for non-pd link. type: boolean + capabilities: + description: A child node to contain all the selectable USB Power Delivery capabilities. + type: object + + patternProperties: + "^caps[0-9]+$": + description: Child nodes under "capabilities" node. Each node contains a selectable USB + Power Delivery capability. + type: object + + properties: + source-pdos: + description: 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 for power source and power dual role. + User can specify the source PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() + defined in dt-bindings/usb/pd.h. + $ref: /schemas/types.yaml#/definitions/uint32-array + minItems: 1 + maxItems: 7 + + sink-pdos: + description: 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 for power sink and power dual role. User + can specify the sink PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() defined + in dt-bindings/usb/pd.h. + $ref: /schemas/types.yaml#/definitions/uint32-array + minItems: 1 + maxItems: 7 + + op-sink-microwatt: + description: Sink required operating power in microwatt, if source can't + offer the power, Capability Mismatch is set. Required for power sink and + power dual role. + + additionalProperties: false + + additionalProperties: false + dependencies: sink-vdos-v1: [ 'sink-vdos' ] sink-vdos: [ 'sink-vdos-v1' ]
Define a new optional property "capabilities" which is a child node under connector to contain multiple USB Power Delivery capabilities. Define a new property with pattern (e.g. caps0, caps1) which is a child node under "capabilities". Each node contains PDO data of a selectable Power Delivery capability. Signed-off-by: Kyle Tso <kyletso@google.com> --- .../bindings/connector/usb-connector.yaml | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+)