diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 79b0175..cdc2a7b 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -196,6 +196,10 @@ }; }; + ram { + compatible = "sandbox,ram"; + }; + reset@0 { compatible = "sandbox,warm-reset"; }; diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig index 907554f..99dc00f 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig @@ -47,3 +47,4 @@ CONFIG_UT_DM=y CONFIG_UT_ENV=y CONFIG_CLK=y CONFIG_RESET=y +CONFIG_RAM=y diff --git a/drivers/ram/Makefile b/drivers/ram/Makefile index 4494d81..0e10249 100644 --- a/drivers/ram/Makefile +++ b/drivers/ram/Makefile @@ -5,3 +5,4 @@ # SPDX-License-Identifier: GPL-2.0+ # obj-$(CONFIG_RAM) += ram-uclass.o +obj-$(CONFIG_SANDBOX) += sandbox_ram.o diff --git a/drivers/ram/sandbox_ram.c b/drivers/ram/sandbox_ram.c new file mode 100644 index 0000000..06bf3ec --- /dev/null +++ b/drivers/ram/sandbox_ram.c @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2015 Google, Inc + * Written by Simon Glass + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +static int sandbox_get_info(struct udevice *dev, struct ram_info *info) +{ + info->base = 0; + info->size = gd->ram_size; + + return 0; +} + +static const struct ram_ops sandbox_ram_ops = { + .get_info = sandbox_get_info, +}; + +static const struct udevice_id sandbox_ram_ids[] = { + { .compatible = "sandbox,ram" }, + { } +}; + +U_BOOT_DRIVER(warm_ram_sandbox) = { + .name = "ram_sandbox", + .id = UCLASS_RAM, + .of_match = sandbox_ram_ids, + .ops = &sandbox_ram_ops, +}; diff --git a/test/dm/Makefile b/test/dm/Makefile index d28a22f..f6a955cf 100644 --- a/test/dm/Makefile +++ b/test/dm/Makefile @@ -20,6 +20,7 @@ obj-$(CONFIG_DM_ETH) += eth.o obj-$(CONFIG_DM_GPIO) += gpio.o obj-$(CONFIG_DM_I2C) += i2c.o obj-$(CONFIG_DM_PCI) += pci.o +obj-$(CONFIG_RAM) += ram.o obj-$(CONFIG_RESET) += reset.o obj-$(CONFIG_DM_RTC) += rtc.o obj-$(CONFIG_DM_SPI_FLASH) += sf.o diff --git a/test/dm/ram.c b/test/dm/ram.c new file mode 100644 index 0000000..3a7c5ff --- /dev/null +++ b/test/dm/ram.c @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2015 Google, Inc + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +/* Basic test of the ram uclass */ +static int dm_test_ram_base(struct unit_test_state *uts) +{ + struct udevice *dev; + struct ram_info info; + + ut_assertok(uclass_get_device(UCLASS_RAM, 0, &dev)); + ut_assertok(ram_get_info(dev, &info)); + ut_asserteq(0, info.base); + ut_asserteq(gd->ram_size, info.size); + + return 0; +} +DM_TEST(dm_test_ram_base, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);