chromeec: Add wakeup delay after SPI /CS assertion
Some ECs may require a few microseconds to ramp up their clock after being awaken by /CS assertion. This adds a Kconfig variable that can be overridden at the mainboard-level which will force a delay between asserting /CS and beginning a transfer. BUG=chrome-os-partner:32223 BRANCH=none TEST=verified ~100us delay using logic analyzer Change-Id: I6d9b8beaa808252f008efb10e7448afdf96d2004 Signed-off-by: Stefan Reinauer <reinauer@chromium.org> Original-Commit-Id: ec6b10e4e3f0362dea0dc8046cfd4e4615a42585 Original-Change-Id: Ibba356e4af18f80a7da73c96dadfda0f25251381 Original-Signed-off-by: David Hendricks <dhendrix@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/220242 Original-Reviewed-by: Julius Werner <jwerner@chromium.org> Original-Reviewed-by: Alexandru Stan <amstan@chromium.org> Reviewed-on: http://review.coreboot.org/9217 Reviewed-by: David Hendricks <dhendrix@chromium.org> Tested-by: build bot (Jenkins)
This commit is contained in:
parent
8429786315
commit
767d245ebf
|
@ -43,6 +43,13 @@ config EC_GOOGLE_CHROMEEC_SPI_BUS
|
||||||
depends on EC_GOOGLE_CHROMEEC_SPI
|
depends on EC_GOOGLE_CHROMEEC_SPI
|
||||||
hex "SPI bus for Google's Chrome EC"
|
hex "SPI bus for Google's Chrome EC"
|
||||||
|
|
||||||
|
config EC_GOOGLE_CHROMEEC_SPI_WAKEUP_DELAY_US
|
||||||
|
depends on EC_GOOGLE_CHROMEEC_SPI
|
||||||
|
int
|
||||||
|
default 0
|
||||||
|
help
|
||||||
|
Force delay after asserting /CS to allow EC to wakeup.
|
||||||
|
|
||||||
config EC_GOOGLE_CHROMEEC_SPI_CHIP
|
config EC_GOOGLE_CHROMEEC_SPI_CHIP
|
||||||
depends on EC_GOOGLE_CHROMEEC_SPI
|
depends on EC_GOOGLE_CHROMEEC_SPI
|
||||||
hex
|
hex
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
|
#include <delay.h>
|
||||||
#include "ec.h"
|
#include "ec.h"
|
||||||
#include "ec_commands.h"
|
#include "ec_commands.h"
|
||||||
#include <spi-generic.h>
|
#include <spi-generic.h>
|
||||||
|
@ -50,6 +51,10 @@ static int crosec_spi_io(size_t req_size, size_t resp_size, void *context)
|
||||||
|
|
||||||
spi_claim_bus(slave);
|
spi_claim_bus(slave);
|
||||||
|
|
||||||
|
/* Allow EC to ramp up clock after being awaken.
|
||||||
|
* See chrome-os-partner:32223 for more details. */
|
||||||
|
udelay(CONFIG_EC_GOOGLE_CHROMEEC_SPI_WAKEUP_DELAY_US);
|
||||||
|
|
||||||
if (spi_xfer(slave, req_buf, req_size, NULL, 0)) {
|
if (spi_xfer(slave, req_buf, req_size, NULL, 0)) {
|
||||||
printk(BIOS_ERR, "%s: Failed to send request.\n", __func__);
|
printk(BIOS_ERR, "%s: Failed to send request.\n", __func__);
|
||||||
spi_release_bus(slave);
|
spi_release_bus(slave);
|
||||||
|
|
Loading…
Reference in New Issue