From c6f60b1ddf372db04eba5b9e177d8cbe0100f3ab Mon Sep 17 00:00:00 2001 From: Felix Held Date: Wed, 16 Oct 2024 20:17:18 +0200 Subject: drivers/spi/spi_flash: introduce 'spi_flash_cmd_multi' A following patch that adds some support for reading the serial flash discoverable parameters (SFDP) data structures needs to send more than just the one command byte that 'spi_flash_cmd' supports. To be able to do this, introduce the 'spi_flash_cmd_multi' function which supports sending multiple bytes before reading back some bytes. The prototype is added to drivers/spi/spi_flash_internal.h since only other files in the same directory are supposed to be using that function. Signed-off-by: Felix Held Change-Id: I1f3872463249240c0a32e2825e4302894e856b2e Reviewed-on: https://review.coreboot.org/c/coreboot/+/84789 Reviewed-by: Matt DeVillier Tested-by: build bot (Jenkins) --- src/drivers/spi/spi_flash.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/drivers/spi/spi_flash.c') diff --git a/src/drivers/spi/spi_flash.c b/src/drivers/spi/spi_flash.c index 11597c6c1d..6ecd29f773 100644 --- a/src/drivers/spi/spi_flash.c +++ b/src/drivers/spi/spi_flash.c @@ -129,6 +129,16 @@ int spi_flash_cmd(const struct spi_slave *spi, u8 cmd, void *response, size_t le return ret; } +int spi_flash_cmd_multi(const struct spi_slave *spi, const u8 *dout, size_t bytes_out, + void *din, size_t bytes_in) +{ + int ret = do_spi_flash_cmd(spi, dout, bytes_out, din, bytes_in); + if (ret) + printk(BIOS_WARNING, "SF: Failed to send command %02x: %d\n", dout[0], ret); + + return ret; +} + /* TODO: This code is quite possibly broken and overflowing stacks. Fix ASAP! */ #pragma GCC diagnostic push #if defined(__GNUC__) && !defined(__clang__) -- cgit v1.2.3