From d36ed272b2d2d082889a7f21414904badc2c2936 Mon Sep 17 00:00:00 2001 From: Furquan Shaikh Date: Tue, 1 Nov 2016 21:33:12 -0700 Subject: soc/intel/apollolake: Implement SPI flash status register read This was a dummy implementation until now which returned -1 always. Add support for reading SPI flash status register (srp0). BUG=chrome-os-partner:59267 BRANCH=None TEST=Verified by enabling and disabling write-protect on reef that the value of SRP0 changes accordingly in status register read. Change-Id: Ib1349605dd87c4a087e416f52a8256b1eaac4f4c Signed-off-by: Furquan Shaikh Reviewed-on: https://review.coreboot.org/17205 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- src/soc/intel/apollolake/spi.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/soc') diff --git a/src/soc/intel/apollolake/spi.c b/src/soc/intel/apollolake/spi.c index 85bc0b6a32..8cb8aa5d6d 100644 --- a/src/soc/intel/apollolake/spi.c +++ b/src/soc/intel/apollolake/spi.c @@ -313,8 +313,16 @@ static int nuclear_spi_write(struct spi_flash *flash, static int nuclear_spi_status(struct spi_flash *flash, uint8_t *reg) { - printk(BIOS_DEBUG, "NOT IMPLEMENTED: %s() !!!\n", __func__); - return E_NOT_IMPLEMENTED; + int ret; + BOILERPLATE_CREATE_CTX(ctx); + + ret = exec_sync_hwseq_xfer(ctx, SPIBAR_HSFSTS_CYCLE_RD_STATUS, 0, + sizeof(*reg)); + if (ret != SUCCESS) + return ret; + + drain_xfer_fifo(ctx, reg, sizeof(*reg)); + return ret; } static struct spi_slave boot_spi CAR_GLOBAL; -- cgit v1.2.3