Thread (15 messages) 15 messages, 3 authors, 2020-02-18

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-spi
quoted
+      - description:
+          For implementations of the EC is connected through LPC.
+        const: google,cros-ec-lpc
This 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 I2C
Use 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 top
quoted
+            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 coherent
quoted
+            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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help