Re: [PATCH] dt-bindings: mfd: Convert ChromeOS EC bindings to json-schema
From: Ikjoon Jang <hidden>
Date: 2020-01-15 09:57:04
Also in:
linux-devicetree
Hi, <snip>
quoted
Signed-off-by: Ikjoon Jang <redacted> --- .../devicetree/bindings/mfd/cros-ec.txt | 76 ---------- .../devicetree/bindings/mfd/cros-ec.yaml | 138 ++++++++++++++++++This is not an mfd binding anymore, the old binding is in the wrong place, please move to devicetree/bindings/chrome/google,cros-ec.yaml
I think creating a new 'chrome' subdirectory should involve more discussions as there are other chrome related things in dt-binding. I'd like to convert the format first before moving forward. <snip>
quoted
+description: | + Google's ChromeOS EC is a Cortex-M device which talks to the AP and + implements various function such as keyboard and battery charging.I am not English native but I guess there are some typos. Lets take this opportunity to rewrite fix some parts, please feel free to ignore them if I am wrong.
yeah, I'm not too. Honestly, there was nothing strange for me before you point out. :-) anyway I'm trying my best to fix those things mentioned (typos, removing LPC, rpmsg examples) and do some generalizations (e.g. Cortex --> microcontroller). send v2 patch soon. Thanks!
typo: functions?quoted
+ The EC can be connect through various means (I2C, SPI, LPC, RPMSG)typo: 'connected' or 'is connected' I'd add '(I2C, SPI and others)' where other is RPMSG, ISHP, and future transport layers.quoted
+ and the compatible string used depends on the interface.on the communication interface?quoted
+ Each connection method has its own driver which connects to the + top level interface-agnostic EC driver. Other Linux driver + (such as cros-ec-keyb for the matrix keyboard) connect to the + top-level driver.Not sure this part is clear an accurate to the reality, I'd just remove it.
ACK
quoted
+ +properties: + compatible: + oneOf: + - description: + For implementations of the EC is connected through I2C.s/is/are connected/? And the same change applies below.quoted
+ const: google,cros-ec-i2c + - description: + For implementations of the EC is connected through SPI. + const: google,cros-ec-spiquoted
+ - description: + For implementations of the EC is connected through LPC. + const: google,cros-ec-lpcThis does not exist in mainline so remove it.
ACK <snip>
+ google,cros-ec-spi-pre-delay: + description: | + Some implementations of the EC need a little time to wake up + from sleep before they can receive SPI transfers + at a high clock rate. This property specifies the delay, + in usecs, between the assertion of the CS to the start of + the first clock pulse. + google,cros-ec-spi-msg-delay: + description: | + Some implementations of the EC require some additional + processing time in order to accept new transactions. + If the delay between transactions is not long enough + the EC may not be able to respond properly to + subsequent transactions and cause them to hang. + This property specifies the delay, in usecs, + introduced between transactions to account for the + time required by the EC to get back into a state + in which new data can be accepted.
I will remove some details here ('some implementations need something' parts).
<snip>
quoted
+ - if: + properties: + compatible: + const: google,cros-ec-lpc + then: + properties: + reg: + description: | + List of (IO address, size) pairs defining the interface uses + required: + - reg +Remove the LPC part.
ACK
quoted
+examples: + - |+ + // Example for I2CUse c style comments I guess
Okay, I will use '#' outside of example context in v2.
quoted
+ i2c@12ca0000 {i2c0 {quoted
+ #address-cells = <1>; + #size-cells = <0>;nit: Add an empty line here
ACK
quoted
+ cros-ec@1e { + reg = <0x1e>; + compatible = "google,cros-ec-i2c";The compatible on topquoted
+ interrupts = <14 0>; + interrupt-parent = <&wakeup_eint>; + wakeup-source; + };Just let's use an upstream example, i.e the snow one: cros-ec@1e { compatible = "google,cros-ec-i2c"; reg = <0x1e>; interrupts = <6 IRQ_TYPE_NONE>; interrupt-parent = <&gpx1>; };quoted
+ }; + - |+ + // Example for SPI + spi@131b0000 {spi0 {quoted
+ #address-cells = <1>; + #size-cells = <0>;nit: Add an empty line here
ACK
quoted
+ ec@0 {Use cros-ec@0, same name as before to be coherentquoted
+ compatible = "google,cros-ec-spi"; + reg = <0x0>; + interrupts = <14 0>; + interrupt-parent = <&wakeup_eint>;What about selecting a more simple example, without the controller-data to not confuse the reader.quoted
+ wakeup-source; + spi-max-frequency = <5000000>; + controller-data { + cs-gpio = <&gpf0 3 4 3 0>; + samsung,spi-cs; + samsung,spi-feedback-delay = <2>; + }; + }; + }; +I propose the veyron one. cros-ec@0 { compatible = "google,cros-ec-spi"; reg = <0>; google,cros-ec-spi-pre-delay = <30>; interrupt-parent = <&gpio7>; interrupts = <RK_PA7 IRQ_TYPE_LEVEL_LOW>; spi-max-frequency = <3000000>; };quoted
+...
Okay, but I will use interrupts = <99 0> instead of <RK_XXX IRQ_XXX> in here. :-)
Could we have a RPMSG example too?
Okay
Thanks, Enric