diff options
author | Aaron Durbin <adurbin@chromium.org> | 2018-04-19 21:15:25 -0600 |
---|---|---|
committer | Aaron Durbin <adurbin@chromium.org> | 2018-04-23 20:58:58 +0000 |
commit | 851dde8255efda7ecf9b37a3b7b22f4edab8881f (patch) | |
tree | 10a4d241f9af25db1fb9c71b696dfecb7ca5cf44 /src/include/spi_flash.h | |
parent | 6c2b10e98933569f028d2ee78efb4cc660d2f9ac (diff) |
drivers/spi: reduce confusion in the API
Julius brought up confusion about the current spi api in [1]. In order
alleviate the confusion stemming from supporting x86 spi flash
controllers:
- Remove spi_xfer_two_vectors() which was fusing transactions to
accomodate the limitations of the spi controllers themselves.
- Add spi_flash_vector_helper() for the x86 spi flash controllers to
utilize in validating driver/controller current assumptions.
- Remove the xfer() callback in the x86 spi flash drivers which
will trigger an error as these controllers can't support the api.
[1] https://mail.coreboot.org/pipermail/coreboot/2018-April/086561.html
Change-Id: Id88adc6ad5234c29a739d43521c5f344bb7d3217
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://review.coreboot.org/25745
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'src/include/spi_flash.h')
-rw-r--r-- | src/include/spi_flash.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/include/spi_flash.h b/src/include/spi_flash.h index 3a6df9ab1f..f7f3b3dbdf 100644 --- a/src/include/spi_flash.h +++ b/src/include/spi_flash.h @@ -125,4 +125,18 @@ const struct spi_flash *boot_device_spi_flash(void); int spi_flash_ctrlr_protect_region(const struct spi_flash *flash, const struct region *region); +/* + * This function is provided to support spi flash command-response transactions. + * Only 2 vectors are supported and the 'func' is called with appropriate + * write and read buffers together. This can be used for chipsets that + * have specific spi flash controllers that don't conform to the normal + * spi xfer API because they are specialized controllers and not generic. + * + * Returns 0 on success and non-zero on failure. + */ +int spi_flash_vector_helper(const struct spi_slave *slave, + struct spi_op vectors[], size_t count, + int (*func)(const struct spi_slave *slave, const void *dout, + size_t bytesout, void *din, size_t bytesin)); + #endif /* _SPI_FLASH_H_ */ |