aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOvidiu Panait <ovidiu.panait@windriver.com>2020-12-14 19:06:48 +0200
committerSimon Glass <sjg@chromium.org>2020-12-22 20:39:25 -0700
commit2da1800456909944b393ad8539edb0bf3e997e2d (patch)
treeab828bf50418abc67bee7bfd3b63e5fa751165d1
parent1dc53ce71d961a0404c0d785fb0b66f351a7b730 (diff)
downloadu-boot-2da1800456909944b393ad8539edb0bf3e997e2d.zip
u-boot-2da1800456909944b393ad8539edb0bf3e997e2d.tar.gz
u-boot-2da1800456909944b393ad8539edb0bf3e997e2d.tar.bz2
spi: sandbox_spi: Implement speed/mode setup
Implement sandbox_spi_set_{speed, mode} routines, to be able to keep track of the current bus speed/mode. This will help determine whether the values passed from dm_spi_claim_bus() are valid. Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
-rw-r--r--drivers/spi/sandbox_spi.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/spi/sandbox_spi.c b/drivers/spi/sandbox_spi.c
index 58f80c6..be516d5 100644
--- a/drivers/spi/sandbox_spi.c
+++ b/drivers/spi/sandbox_spi.c
@@ -28,6 +28,23 @@
# define CONFIG_SPI_IDLE_VAL 0xFF
#endif
+/**
+ * struct sandbox_spi_priv - Sandbox SPI private data
+ *
+ * Helper struct to keep track of the sandbox SPI bus internal state. It is
+ * used in unit tests to verify that dm spi functions update the bus
+ * speed/mode properly (for instance, when jumping back and forth between spi
+ * slaves claiming the bus, we need to make sure that the bus speed is updated
+ * accordingly for each slave).
+ *
+ * @speed: Current bus speed.
+ * @mode: Current bus mode.
+ */
+struct sandbox_spi_priv {
+ uint speed;
+ uint mode;
+};
+
__weak int sandbox_spi_get_emul(struct sandbox_state *state,
struct udevice *bus, struct udevice *slave,
struct udevice **emulp)
@@ -90,11 +107,19 @@ static int sandbox_spi_xfer(struct udevice *slave, unsigned int bitlen,
static int sandbox_spi_set_speed(struct udevice *bus, uint speed)
{
+ struct sandbox_spi_priv *priv = dev_get_priv(bus);
+
+ priv->speed = speed;
+
return 0;
}
static int sandbox_spi_set_mode(struct udevice *bus, uint mode)
{
+ struct sandbox_spi_priv *priv = dev_get_priv(bus);
+
+ priv->mode = mode;
+
return 0;
}
@@ -136,4 +161,5 @@ U_BOOT_DRIVER(sandbox_spi) = {
.id = UCLASS_SPI,
.of_match = sandbox_spi_ids,
.ops = &sandbox_spi_ops,
+ .priv_auto = sizeof(struct sandbox_spi_priv),
};