Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1ChromeOS Embedded Controller
2
3Google's ChromeOS EC is a Cortex-M device which talks to the AP and
4implements various function such as keyboard and battery charging.
5
6The EC can be connect through various means (I2C, SPI, LPC) and the
7compatible string used depends on the interface. Each connection method has
8its own driver which connects to the top level interface-agnostic EC driver.
9Other Linux driver (such as cros-ec-keyb for the matrix keyboard) connect to
10the top-level driver.
11
12Required properties (I2C):
13- compatible: "google,cros-ec-i2c"
14- reg: I2C slave address
15
16Required properties (SPI):
17- compatible: "google,cros-ec-spi"
18- reg: SPI chip select
19
20Optional properties (SPI):
21- google,cros-ec-spi-msg-delay: Some implementations of the EC require some
22 additional processing time in order to accept new transactions. If the delay
23 between transactions is not long enough the EC may not be able to respond
24 properly to subsequent transactions and cause them to hang. This property
25 specifies the delay, in usecs, introduced between transactions to account
26 for the time required by the EC to get back into a state in which new data
27 can be accepted.
28
29Required properties (LPC):
30- compatible: "google,cros-ec-lpc"
31- reg: List of (IO address, size) pairs defining the interface uses
32
33
34Example for I2C:
35
36i2c@12CA0000 {
37 cros-ec@1e {
38 reg = <0x1e>;
39 compatible = "google,cros-ec-i2c";
40 interrupts = <14 0>;
41 interrupt-parent = <&wakeup_eint>;
42 wakeup-source;
43 };
44
45
46Example for SPI:
47
48spi@131b0000 {
49 ec@0 {
50 compatible = "google,cros-ec-spi";
51 reg = <0x0>;
52 interrupts = <14 0>;
53 interrupt-parent = <&wakeup_eint>;
54 wakeup-source;
55 spi-max-frequency = <5000000>;
56 controller-data {
57 cs-gpio = <&gpf0 3 4 3 0>;
58 samsung,spi-cs;
59 samsung,spi-feedback-delay = <2>;
60 };
61 };
62};
63
64
65Example for LPC is not supplied as it is not yet implemented.