summaryrefslogtreecommitdiff
path: root/src/soc/qualcomm/sdm845/qspi.c
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2019-06-06 17:09:58 -0700
committerJulius Werner <jwerner@chromium.org>2019-06-10 18:02:50 +0000
commit127a55e91d46623f700ba39f2679e3606ed0b2fb (patch)
treef2b021a67bdc1e411fb40a5abecc0ddf763bee2d /src/soc/qualcomm/sdm845/qspi.c
parent99e45ceb35ff9a4c48e516e6d005ebfae54b6591 (diff)
downloadcoreboot-127a55e91d46623f700ba39f2679e3606ed0b2fb.tar.xz
sdm845: qspi: Add Dual SPI support
This patch adds support for the Dual SPI feature (SDR 2-bit in Qualcomm terminology) to the QSPI controller. Change-Id: I7aed2ccd9627f5de5dd760b418f74d56d2c031d3 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/33284 Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/soc/qualcomm/sdm845/qspi.c')
-rw-r--r--src/soc/qualcomm/sdm845/qspi.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/soc/qualcomm/sdm845/qspi.c b/src/soc/qualcomm/sdm845/qspi.c
index b9a5194a10..cced567a87 100644
--- a/src/soc/qualcomm/sdm845/qspi.c
+++ b/src/soc/qualcomm/sdm845/qspi.c
@@ -277,11 +277,9 @@ void sdm845_release_bus(const struct spi_slave *slave)
cs_change(CS_DEASSERT);
}
-int sdm845_xfer(const struct spi_slave *slave, const void *dout,
- size_t out_bytes, void *din, size_t in_bytes)
+static int xfer(enum qspi_mode mode, const void *dout, size_t out_bytes,
+ void *din, size_t in_bytes)
{
- enum qspi_mode mode = SDR_1BIT;
-
if ((out_bytes && !dout) || (in_bytes && !din) ||
(in_bytes && out_bytes)) {
return -1;
@@ -294,3 +292,15 @@ int sdm845_xfer(const struct spi_slave *slave, const void *dout,
return 0;
}
+
+int sdm845_xfer(const struct spi_slave *slave, const void *dout,
+ size_t out_bytes, void *din, size_t in_bytes)
+{
+ return xfer(SDR_1BIT, dout, out_bytes, din, in_bytes);
+}
+
+int sdm845_xfer_dual(const struct spi_slave *slave, const void *dout,
+ size_t out_bytes, void *din, size_t in_bytes)
+{
+ return xfer(SDR_2BIT, dout, out_bytes, din, in_bytes);
+}