summaryrefslogtreecommitdiff
path: root/src/soc/broadcom/cygnus
diff options
context:
space:
mode:
authorFurquan Shaikh <furquan@chromium.org>2017-05-15 14:35:15 -0700
committerFurquan Shaikh <furquan@google.com>2017-05-19 21:21:47 +0200
commit30221b45e02f0be8940debd8ad5690c77d6a97a6 (patch)
tree0771086cabe7259abef22d80a29377d2661bc795 /src/soc/broadcom/cygnus
parentfc1a123aa7392fe7900b466e6a6f089733fec1ee (diff)
drivers/spi/spi_flash: Pass in flash structure to fill in probe
Instead of making all SPI drivers allocate space for a spi_flash structure and fill it in, udpate the API to allow callers to pass in a spi_flash structure that can be filled by the flash drivers as required. This also cleans up the interface so that the callers can maintain and free the space for spi_flash structure as required. BUG=b:38330715 Change-Id: If6f1b403731466525c4690777d9b32ce778eb563 Signed-off-by: Furquan Shaikh <furquan@chromium.org> Reviewed-on: https://review.coreboot.org/19705 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/soc/broadcom/cygnus')
-rw-r--r--src/soc/broadcom/cygnus/ddr_init.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/soc/broadcom/cygnus/ddr_init.c b/src/soc/broadcom/cygnus/ddr_init.c
index b6bbf4a86f..5c4c985366 100644
--- a/src/soc/broadcom/cygnus/ddr_init.c
+++ b/src/soc/broadcom/cygnus/ddr_init.c
@@ -717,7 +717,7 @@ static int write_shmoo_to_flash(void *buf, int length)
static int write_shmoo_to_flash(void *buf, int length)
{
- struct spi_flash *flash;
+ struct spi_flash flash;
int erase = 0;
volatile uint32_t *flptr;
int i, j, ret = 0;
@@ -734,13 +734,7 @@ static int write_shmoo_to_flash(void *buf, int length)
}
/* Probe flash */
- flash = spi_flash_probe(
- CONFIG_ENV_SPI_BUS,
- CONFIG_ENV_SPI_CS,
- CONFIG_ENV_SPI_MAX_HZ,
- CONFIG_ENV_SPI_MODE
- );
- if (!flash) {
+ if (spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS, &flash)) {
printk(BIOS_ERR, "Failed to initialize SPI flash for saving Shmoo values!\n");
return -1;
}
@@ -748,26 +742,22 @@ static int write_shmoo_to_flash(void *buf, int length)
/* Erase if necessary */
if (erase) {
ret = spi_flash_erase(
- flash,
+ &flash,
offset / flash->sector_size * flash->sector_size,
flash->sector_size
);
if (ret) {
printk(BIOS_ERR, "SPI flash erase failed, error=%d\n", ret);
- spi_flash_free(flash);
return ret;
}
}
/* Write data */
- ret = spi_flash_write(flash, offset, length, buf);
+ ret = spi_flash_write(&flash, offset, length, buf);
if (ret) {
printk(BIOS_ERR, "SPI flash write failed, error=%d\n", ret);
}
- /* Free flash instance */
- spi_flash_free(flash);
-
return ret;
}