Re: [PATCH v2 1/4] dt-bindings: Add cros-ec Type C port driver
From: Prashant Malani <hidden>
Date: 2020-02-11 19:02:01
Also in:
lkml
Resending (because I didn't send it in PlainText mode, so the MLs blocked the email). Sorry. On Tue, Feb 11, 2020 at 11:00 AM Prashant Malani [off-list ref] wrote:
Hi Enric, Thanks as always for reviewing the patch. Kindly see my responses inline: On Tue, Feb 11, 2020 at 2:28 AM Enric Balletbo i Serra [off-list ref] wrote:quoted
Hi Prashant, On 7/2/20 21:37, Prashant Malani wrote:quoted
Some Chrome OS devices with Embedded Controllers (EC) can read and modify Type C port state. Add an entry in the DT Bindings documentation that lists out the logical device and describes the relevant port information, to be used by the corresponding driver. Signed-off-by: Prashant Malani <redacted> --- Changes in v2: - No changes. Patch first introduced in v2 of series. .../bindings/chrome/google,cros-ec-typec.yaml | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Documentation/devicetree/bindings/chrome/google,cros-ec-typec.yamldiff --git a/Documentation/devicetree/bindings/chrome/google,cros-ec-typec.yaml b/Documentation/devicetree/bindings/chrome/google,cros-ec-typec.yaml new file mode 100644 index 00000000000000..46ebcbe76db3c2 --- /dev/null +++ b/Documentation/devicetree/bindings/chrome/google,cros-ec-typec.yaml@@ -0,0 +1,77 @@ +# SPDX-License-Identifier: GPL-2.0I think that Google is fine with the dual licensing here. Would be good if this can be (GPL-2.0-only OR BSD-2-Clause)Thanks for catching this. I will update it in the next version.quoted
quoted
+%YAML 1.2 +--- +$id: http://devicetree.org/schemas/chrome/google,cros-ec-typec.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Google Chrome OS EC(Embedded Controller) Type C port driver. + +maintainers: + - Benson Leung [off-list ref] + - Prashant Malani [off-list ref] + +description: + Chrome OS devices have an Embedded Controller(EC) which has access to + Type C port state. This node is intended to allow the host to read and + control the Type C ports. The node for this device should be under a + cros-ec node like google,cros-ec-spi. + +properties: + compatible: + const: google,cros-ec-typec + + port: + description: A node that represents a physical Type C port on the + device. + type: object + properties: + port-number: + description: The number used by the Chrome OS EC to identify + this type C port. + $ref: /schemas/types.yaml#/definitions/uint32Any range of values allowed? 0 is okay?0 is acceptable. Looks like Chrome OS EC numbers the ports as 0 to (num_ports - 1). Actually, looking at it more closely, the port info EC command struct uses uint8_t (https://elixir.bootlin.com/linux/latest/source/include/linux/platform_data/cros_ec_commands.h#L4879) Also, num_ports cannot be larger than: https://elixir.bootlin.com/linux/latest/ident/EC_USB_PD_MAX_PORTS So perhaps this should be updated to say it can be any value from 0 - EC_USB_PD_MAX_PORTS ? (Not sure if I can reference #defines from header files in the DT bindings file....)quoted
quoted
+ power-role:Sorry if this question is silly, aren't this and below properties the same as provided by usb-connector? Can't this be usb-c-connector? Documentation/devicetree/bindings/connector/usb-connector.txtThat's correct, it is the same. I think there is a slight difference between the properties of usb-connector (what properties are defined as optional and required) so I don't know if we can re-use usb-connector. TBH I wasn't sure about this myself. I am also not sure whether there will be an issue with usb-c-connector being "claimed" by another driver. I think Heikki could perhaps guide us here.quoted
quoted
+ description: Determines the power role that the Type C port will + adopt. + oneOf: + - items: + - const: sink + - const: source + - const: dual + data-role: + description: Determines the data role that the Type C port will + adopt. + oneOf: + - items: + - const: host + - const: device + - const: dual + try-power-role: + description: Determines the preferred power role of the Type C port. + oneOf: + - items: + - const: sink + - const: source + - const: dual + + required: + - port-number + - power-role + - data-role + - try-power-role + +required: + - compatible + - port + +examples: + - |+Rob can confirm, but I think is a good practice add the parent node, so add the cros-ec-spi node here?Done. Will add it in the next version.quoted
quoted
+ typec { + compatible = "google,cros-ec-typec"; + + port@0 {You can run: make dt_binding_check DT_SCHEMA_FILES=<...>/chrome/google,cros-ec-typec.yaml And you'll get an error: typec: 'port' is a required propertyNoted. I will run this check before pushing next time and fix the error.quoted
quoted
+ port-number = <0>; + power-role = "dual"; + data-role = "dual"; + try-power-role = "source"; + }; + };Thanks, EnricThanks, -Prashant