Hi João, On 2026-06-10T22:11:58, João Loureiro <[email protected]> wrote: > sandbox: spi: Add SPI EEPROM emulator and DM test > > Add a sandbox emulator for an AT25-style SPI EEPROM so the new SPI > EEPROM uclass can be exercised without real hardware. > > The sandbox SPI controller previously always bound the SPI flash > emulator for every chip select. Allow a slave node to select its own > emulator through a sandbox,emul phandle (mirroring the sandbox I2C > bus), falling back to the SPI flash emulator when none is given so that > existing behaviour is preserved. > > A test EEPROM is wired up on chip select 3 of the sandbox SPI bus and a > test/dm test verifies size reporting, patterned reads, out-of-bounds > rejection and the unimplemented write path. > > Signed-off-by: João Loureiro <[email protected]> > > MAINTAINERS | 2 + > arch/sandbox/dts/test.dts | 13 ++++- > drivers/misc/Makefile | 1 + > drivers/misc/spi_eeprom_emul.c | 118 > +++++++++++++++++++++++++++++++++++++++++ > drivers/spi/sandbox_spi.c | 31 ++++++++++- > test/dm/Makefile | 1 + > test/dm/spi_eeprom.c | 45 ++++++++++++++++ > 7 files changed, 209 insertions(+), 2 deletions(-)
> diff --git a/drivers/spi/sandbox_spi.c b/drivers/spi/sandbox_spi.c > @@ -77,6 +77,35 @@ static int sandbox_spi_set_wordlen(struct udevice *dev, > unsigned int wordlen) > +/** > + * sandbox_spi_emul_get() - find the emulator for a SPI slave > + * > + * A slave can name a dedicated emulator through a 'sandbox,emul' phandle > (for > + * example an SPI EEPROM). When no such phandle is present we fall back to > the > + * built-in SPI flash emulator, preserving the previous behaviour. > + */ > +static int sandbox_spi_emul_get(struct sandbox_state *state, struct udevice > *bus, > + struct udevice *slave, struct udevice **emulp) Can you please add rull kerneldoc for @state, @bus, @slave, @emulp and a Return: line. Try to wrap to 80 columns. > diff --git a/drivers/misc/spi_eeprom_emul.c b/drivers/misc/spi_eeprom_emul.c > @@ -0,0 +1,118 @@ > + priv->data = calloc(1, priv->size); > + if (!priv->data) > + return -ENOMEM; This is never freed, so each probe/remove cycle in the tests leaks the backing store. Please can you add a remove method that frees priv->data, as sandbox_i2c_eeprom_remove() does in i2c_eeprom_emul.c With those fixed: Reviewed-by: Simon Glass <[email protected]> Tested-by: Simon Glass <[email protected]> # sandbox Regards, Simon

