summaryrefslogtreecommitdiff
path: root/src/include/spi-generic.h
diff options
context:
space:
mode:
authorFurquan Shaikh <furquan@chromium.org>2017-05-17 19:14:06 -0700
committerFurquan Shaikh <furquan@google.com>2017-05-19 21:23:11 +0200
commita1491574ef2c91ff8b89df70feba67ad34836c75 (patch)
tree6bba1c05f7bf87eb5cdac4c2a884d37cff59b6a5 /src/include/spi-generic.h
parentbd9e32efdd8f06063c9ee37dd6d0bebf535b86c1 (diff)
downloadcoreboot-a1491574ef2c91ff8b89df70feba67ad34836c75.tar.xz
drivers/spi/spi_flash: Clean up SPI flash probe
1. Rename __spi_flash_probe to spi_flash_generic_probe and export it so that drivers can use it outside spi_flash.c. 2. Make southbridge intel spi driver use spi_flash_generic_probe if spi_is_multichip returns 0. 3. Add spi_flash_probe to spi_ctrlr structure to allow platforms to provide specialized probe functions. With this change, the specialized spi flash probe functions are now associated with a particular spi ctrlr structure and no longer disconnected from the spi controller. BUG=b:38330715 Change-Id: I35f3bd8ddc5e71515df3ef0c1c4b1a68ee56bf4b Signed-off-by: Furquan Shaikh <furquan@chromium.org> Reviewed-on: https://review.coreboot.org/19708 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'src/include/spi-generic.h')
-rw-r--r--src/include/spi-generic.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/include/spi-generic.h b/src/include/spi-generic.h
index 56353bb692..783df0b917 100644
--- a/src/include/spi-generic.h
+++ b/src/include/spi-generic.h
@@ -94,6 +94,8 @@ struct spi_cfg {
*/
#define SPI_CTRLR_DEFAULT_MAX_XFER_SIZE (UINT32_MAX)
+struct spi_flash;
+
/*-----------------------------------------------------------------------
* Representation of a SPI controller.
*
@@ -108,6 +110,11 @@ struct spi_cfg {
* deduct_cmd_len: Whether cmd_len should be deducted from max_xfer_size
* when calculating max_data_size
*
+ * Following member is provided by specialized SPI controllers that are
+ * actually SPI flash controllers.
+ *
+ * flash_probe: Specialized probe function provided by SPI flash
+ * controllers.
*/
struct spi_ctrlr {
int (*claim_bus)(const struct spi_slave *slave);
@@ -119,6 +126,8 @@ struct spi_ctrlr {
struct spi_op vectors[], size_t count);
uint32_t max_xfer_size;
bool deduct_cmd_len;
+ int (*flash_probe)(const struct spi_slave *slave,
+ struct spi_flash *flash);
};
/*-----------------------------------------------------------------------