summaryrefslogtreecommitdiff
path: root/src/drivers/spi
diff options
context:
space:
mode:
authorVadim Bendebury <vbendeb@chromium.org>2014-05-01 12:23:09 -0700
committerMarc Jones <marc.jones@se-eng.com>2014-12-30 19:29:47 +0100
commitadcb095e9e1e535b9331648dab0d628afd1336ca (patch)
tree73fe69c46829b6648215c5ece23e7bb62ea3610a /src/drivers/spi
parentb1528838f6ba4cdbb0d8f01bf511d9b9482af172 (diff)
downloadcoreboot-adcb095e9e1e535b9331648dab0d628afd1336ca.tar.xz
Provide a common CBFS wrapper for SPI storage
Coreboot has all necessary infrastructure to use the proper SPI flash interface in bootblock for CBFS. This patch creates a common CBFS wrapper which can be enabled on different platforms as required. COMMON_CBFS_SPI_WRAPPER, a new configuration option, enables the common CBFS interface and prevents default inclusion of all SPI chip drivers, only explicitly configured ones will be included when the new feature is enabled. Since the wrapper uses the same driver at all stages, enabling the new feature will also make it necessary to include the SPI chip drivers in bootblock and romstage images. init_default_cbfs_media() can now be common for different platforms, and as such is defined in the library. BUG=none TEST=manual . with this change and the rest of the patches coreboot on AP148 comes up all the way to attempting to boot the payload (reading earlier stages from the SPI flash along the way). Original-Change-Id: Ia887bb7f386a0e23a110e38001d86f9d43fadf2c Original-Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/197800 Original-Tested-by: Vadim Bendebury <vbendeb@google.com> Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org> Original-Reviewed-by: David Hendricks <dhendrix@chromium.org> (cherry picked from commit 60eb16ebe624f9420c6191afa6ba239b8e83a6e6) Signed-off-by: Marc Jones <marc.jones@se-eng.com> Change-Id: I7b0bf3dda915c227659ab62743e405312dedaf41 Reviewed-on: http://review.coreboot.org/7932 Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Diffstat (limited to 'src/drivers/spi')
-rw-r--r--src/drivers/spi/Kconfig20
-rw-r--r--src/drivers/spi/Makefile.inc23
2 files changed, 33 insertions, 10 deletions
diff --git a/src/drivers/spi/Kconfig b/src/drivers/spi/Kconfig
index cc8703f3fb..3a1950f321 100644
--- a/src/drivers/spi/Kconfig
+++ b/src/drivers/spi/Kconfig
@@ -59,70 +59,70 @@ config SPI_FLASH_NO_FAST_READ
config SPI_FLASH_ADESTO
bool
- default y
+ default y if !COMMON_CBFS_SPI_WRAPPER
help
Select this option if your chipset driver needs to store certain
data in the SPI flash and your SPI flash is made by Adesto Technologies.
config SPI_FLASH_AMIC
bool
- default y
+ default y if !COMMON_CBFS_SPI_WRAPPER
help
Select this option if your chipset driver needs to store certain
data in the SPI flash and your SPI flash is made by AMIC.
config SPI_FLASH_ATMEL
bool
- default y
+ default y if !COMMON_CBFS_SPI_WRAPPER
help
Select this option if your chipset driver needs to store certain
data in the SPI flash and your SPI flash is made by Atmel.
config SPI_FLASH_EON
bool
- default y
+ default y if !COMMON_CBFS_SPI_WRAPPER
help
Select this option if your chipset driver needs to store certain
data in the SPI flash and your SPI flash is made by EON.
config SPI_FLASH_GIGADEVICE
bool
- default y
+ default y if !COMMON_CBFS_SPI_WRAPPER
help
Select this option if your chipset driver needs to store certain
data in the SPI flash and your SPI flash is made by Gigadevice.
config SPI_FLASH_MACRONIX
bool
- default y
+ default y if !COMMON_CBFS_SPI_WRAPPER
help
Select this option if your chipset driver needs to store certain
data in the SPI flash and your SPI flash is made by Macronix.
config SPI_FLASH_SPANSION
bool
- default y
+ default y if !COMMON_CBFS_SPI_WRAPPER
help
Select this option if your chipset driver needs to store certain
data in the SPI flash and your SPI flash is made by Spansion.
config SPI_FLASH_SST
bool
- default y
+ default y if !COMMON_CBFS_SPI_WRAPPER
help
Select this option if your chipset driver needs to store certain
data in the SPI flash and your SPI flash is made by SST.
config SPI_FLASH_STMICRO
bool
- default y
+ default y if !COMMON_CBFS_SPI_WRAPPER
help
Select this option if your chipset driver needs to store certain
data in the SPI flash and your SPI flash is made by ST MICRO.
config SPI_FLASH_WINBOND
bool
- default y
+ default y if !COMMON_CBFS_SPI_WRAPPER
help
Select this option if your chipset driver needs to store certain
data in the SPI flash and your SPI flash is made by Winbond.
diff --git a/src/drivers/spi/Makefile.inc b/src/drivers/spi/Makefile.inc
index 934743e782..1bada7975c 100644
--- a/src/drivers/spi/Makefile.inc
+++ b/src/drivers/spi/Makefile.inc
@@ -1,4 +1,27 @@
# SPI flash driver interface
+
+ifeq ($(CONFIG_COMMON_CBFS_SPI_WRAPPER),y)
+bootblock-y += spi_flash.c
+bootblock-$(CONFIG_SPI_FLASH_EON) += eon.c
+bootblock-$(CONFIG_SPI_FLASH_GIGADEVICE) += gigadevice.c
+bootblock-$(CONFIG_SPI_FLASH_MACRONIX) += macronix.c
+bootblock-$(CONFIG_SPI_FLASH_SPANSION) += spansion.c
+bootblock-$(CONFIG_SPI_FLASH_SST) += sst.c
+bootblock-$(CONFIG_SPI_FLASH_STMICRO) += stmicro.c
+bootblock-$(CONFIG_SPI_FLASH_WINBOND) += winbond.c
+bootblock-$(CONFIG_SPI_FRAM_RAMTRON) += ramtron.c
+
+romstage-$(CONFIG_SPI_FLASH) += spi_flash.c
+romstage-$(CONFIG_SPI_FLASH_EON) += eon.c
+romstage-$(CONFIG_SPI_FLASH_GIGADEVICE) += gigadevice.c
+romstage-$(CONFIG_SPI_FLASH_MACRONIX) += macronix.c
+romstage-$(CONFIG_SPI_FLASH_SPANSION) += spansion.c
+romstage-$(CONFIG_SPI_FLASH_SST) += sst.c
+romstage-$(CONFIG_SPI_FLASH_STMICRO) += stmicro.c
+romstage-$(CONFIG_SPI_FLASH_WINBOND) += winbond.c
+romstage-$(CONFIG_SPI_FRAM_RAMTRON) += ramtron.c
+endif
+
ramstage-$(CONFIG_SPI_FLASH) += spi_flash.c
# drivers