diff options
author | Ovidiu Panait <ovidiu.panait@windriver.com> | 2020-12-14 19:06:48 +0200 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2020-12-22 20:39:25 -0700 |
commit | 2da1800456909944b393ad8539edb0bf3e997e2d (patch) | |
tree | ab828bf50418abc67bee7bfd3b63e5fa751165d1 /drivers | |
parent | 1dc53ce71d961a0404c0d785fb0b66f351a7b730 (diff) | |
download | u-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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/spi/sandbox_spi.c | 26 |
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), }; |