[coreboot-gerrit] Patch set updated for coreboot: intel/apollolake: Add helper routine for spi reg read

Furquan Shaikh (furquan@google.com) gerrit at coreboot.org
Tue Jun 21 01:29:53 CEST 2016


Furquan Shaikh (furquan at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15268

-gerrit

commit f651c3321cf82962a17e6108316e0b7b637be9b9
Author: Furquan Shaikh <furquan at google.com>
Date:   Sun Jun 19 23:20:08 2016 -0700

    intel/apollolake: Add helper routine for spi reg read
    
    BUG=chrome-os-partner:54563
    
    Change-Id: I56bc6b5292aec676103a436048abee8577edd961
    Signed-off-by: Furquan Shaikh <furquan at google.com>
---
 src/soc/intel/apollolake/include/soc/spi.h |  2 ++
 src/soc/intel/apollolake/spi.c             | 24 +++++++++++++++++-------
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/src/soc/intel/apollolake/include/soc/spi.h b/src/soc/intel/apollolake/include/soc/spi.h
index 1414a84..f67110f 100644
--- a/src/soc/intel/apollolake/include/soc/spi.h
+++ b/src/soc/intel/apollolake/include/soc/spi.h
@@ -75,4 +75,6 @@
  */
 int spi_read_status(uint8_t *status);
 
+/* Read SPI controller register. */
+uint32_t spi_ctrlr_reg_read(uint16_t reg);
 #endif
diff --git a/src/soc/intel/apollolake/spi.c b/src/soc/intel/apollolake/spi.c
index 58c566d..96d33de 100644
--- a/src/soc/intel/apollolake/spi.c
+++ b/src/soc/intel/apollolake/spi.c
@@ -64,14 +64,22 @@ static void _spi_get_ctx(struct spi_ctx *ctx)
 }
 
 /* Read register from the SPI controller. 'reg' is the register offset. */
-static uint32_t _spi_reg_read(struct spi_ctx *ctx, uint16_t reg)
+static uint32_t _spi_ctrlr_reg_read(struct spi_ctx *ctx, uint16_t reg)
 {
 	uintptr_t addr =  ALIGN_DOWN(ctx->mmio_base + reg, 4);
 	return read32((void *)addr);
 }
 
+uint32_t spi_ctrlr_reg_read(uint16_t reg)
+{
+	BOILERPLATE_CREATE_CTX(ctx);
+	return _spi_ctrlr_reg_read(ctx, reg);
+}
+
+
 /* Write to register in the SPI controller. 'reg' is the register offset. */
-static void _spi_reg_write(struct spi_ctx *ctx, uint16_t reg, uint32_t val)
+static void _spi_ctrlr_reg_write(struct spi_ctx *ctx, uint16_t reg,
+				      uint32_t val)
 {
 	uintptr_t addr =  ALIGN_DOWN(ctx->mmio_base + reg, 4);
 	write32((void *)addr, val);
@@ -92,8 +100,9 @@ static void _spi_reg_write(struct spi_ctx *ctx, uint16_t reg, uint32_t val)
 static uint32_t read_spi_sfdp_param(struct spi_ctx *ctx, uint16_t sfdp_reg)
 {
 	uint32_t ptinx_index = sfdp_reg & SPIBAR_PTINX_IDX_MASK;
-	_spi_reg_write(ctx, SPIBAR_PTINX, ptinx_index | SPIBAR_PTINX_HORD_JEDEC);
-	return _spi_reg_read(ctx, SPIBAR_PTDATA);
+	_spi_ctrlr_reg_write(ctx, SPIBAR_PTINX,
+				  ptinx_index | SPIBAR_PTINX_HORD_JEDEC);
+	return _spi_ctrlr_reg_read(ctx, SPIBAR_PTDATA);
 }
 
 /* Fill FDATAn FIFO in preparation for a write transaction. */
@@ -124,8 +133,9 @@ static void start_hwseq_xfer(struct spi_ctx *ctx, uint32_t hsfsts_cycle,
 	hsfsts |= hsfsts_cycle & SPIBAR_HSFSTS_FCYCLE_MASK;
 	hsfsts |= SPIBAR_HSFSTS_FBDC(len - 1);
 
-	_spi_reg_write(ctx, SPIBAR_FADDR, flash_addr);
-	_spi_reg_write(ctx, SPIBAR_HSFSTS_CTL, hsfsts | SPIBAR_HSFSTS_FGO);
+	_spi_ctrlr_reg_write(ctx, SPIBAR_FADDR, flash_addr);
+	_spi_ctrlr_reg_write(ctx, SPIBAR_HSFSTS_CTL,
+			     hsfsts | SPIBAR_HSFSTS_FGO);
 }
 
 static void print_xfer_error(struct spi_ctx *ctx, const char *failure_reason,
@@ -140,7 +150,7 @@ static int wait_for_hwseq_xfer(struct spi_ctx *ctx)
 {
 	uint32_t hsfsts;
 	do {
-		hsfsts = _spi_reg_read(ctx, SPIBAR_HSFSTS_CTL);
+		hsfsts = _spi_ctrlr_reg_read(ctx, SPIBAR_HSFSTS_CTL);
 
 		if (hsfsts & SPIBAR_HSFSTS_FCERR) {
 			ctx->hsfsts_on_last_error = hsfsts;



More information about the coreboot-gerrit mailing list