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@xxxxxxxxxx> > --- > .../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 >