mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 13:22:23 +00:00
01e73c89cf
The EC has specific timing it requires. Add support for an optional delay after raising CS to fix timing issues. This is configurable based on a DT property "google,cros-ec-spi-msg-delay". If this property isn't set, then no delay will be added. However, if set it will cause a delay equal to the value passed to it to be inserted at the end of a transaction. Signed-off-by: Rhyland Klein <rklein@nvidia.com> Reviewed-by: Bernie Thompson <bhthompson@chromium.org> Reviewed-by: Andrew Bresticker <abrestic@chromium.org> Acked-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
66 lines
1.8 KiB
Plaintext
66 lines
1.8 KiB
Plaintext
ChromeOS Embedded Controller
|
|
|
|
Google's ChromeOS EC is a Cortex-M device which talks to the AP and
|
|
implements various function such as keyboard and battery charging.
|
|
|
|
The EC can be connect through various means (I2C, SPI, LPC) and the
|
|
compatible string used depends on the interface. 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.
|
|
|
|
Required properties (I2C):
|
|
- compatible: "google,cros-ec-i2c"
|
|
- reg: I2C slave address
|
|
|
|
Required properties (SPI):
|
|
- compatible: "google,cros-ec-spi"
|
|
- reg: SPI chip select
|
|
|
|
Optional properties (SPI):
|
|
- google,cros-ec-spi-msg-delay: 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.
|
|
|
|
Required properties (LPC):
|
|
- compatible: "google,cros-ec-lpc"
|
|
- reg: List of (IO address, size) pairs defining the interface uses
|
|
|
|
|
|
Example for I2C:
|
|
|
|
i2c@12CA0000 {
|
|
cros-ec@1e {
|
|
reg = <0x1e>;
|
|
compatible = "google,cros-ec-i2c";
|
|
interrupts = <14 0>;
|
|
interrupt-parent = <&wakeup_eint>;
|
|
wakeup-source;
|
|
};
|
|
|
|
|
|
Example for SPI:
|
|
|
|
spi@131b0000 {
|
|
ec@0 {
|
|
compatible = "google,cros-ec-spi";
|
|
reg = <0x0>;
|
|
interrupts = <14 0>;
|
|
interrupt-parent = <&wakeup_eint>;
|
|
wakeup-source;
|
|
spi-max-frequency = <5000000>;
|
|
controller-data {
|
|
cs-gpio = <&gpf0 3 4 3 0>;
|
|
samsung,spi-cs;
|
|
samsung,spi-feedback-delay = <2>;
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
Example for LPC is not supplied as it is not yet implemented.
|