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>
This commit is contained in:
Furquan Shaikh
2017-05-17 19:14:06 -07:00
committed by Furquan Shaikh
parent bd9e32efdd
commit a1491574ef
8 changed files with 53 additions and 62 deletions

View File

@ -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);
};
/*-----------------------------------------------------------------------