dm: test: Add a test for the ram uclass
authorSimon Glass <sjg@chromium.org>
Mon, 6 Jul 2015 18:54:31 +0000 (12:54 -0600)
committerSimon Glass <sjg@chromium.org>
Tue, 21 Jul 2015 23:39:32 +0000 (17:39 -0600)
Add a test to confirm that we can probe this device and get information on
the available RAM.

Signed-off-by: Simon Glass <sjg@chromium.org>
arch/sandbox/dts/test.dts
configs/sandbox_defconfig
drivers/ram/Makefile
drivers/ram/sandbox_ram.c [new file with mode: 0644]
test/dm/Makefile
test/dm/ram.c [new file with mode: 0644]

index 79b017598cb236ff94ec38b290b8c796e222971f..cdc2a7b2ef3237c29fa36b78df9d72e759c54e62 100644 (file)
                };
        };
 
+       ram {
+               compatible = "sandbox,ram";
+       };
+
        reset@0 {
                compatible = "sandbox,warm-reset";
        };
index 907554f7386985f770e126160c4c701c762e0736..99dc00f30ce9db431653e0d27a4dbb81419c79c9 100644 (file)
@@ -47,3 +47,4 @@ CONFIG_UT_DM=y
 CONFIG_UT_ENV=y
 CONFIG_CLK=y
 CONFIG_RESET=y
+CONFIG_RAM=y
index 4494d8187b0dce1b87eb48b2be99d91094c48970..0e102491a4a569921e543b016012747de873f776 100644 (file)
@@ -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 (file)
index 0000000..06bf3ec
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2015 Google, Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <ram.h>
+#include <asm/test.h>
+
+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,
+};
index d28a22f01849cee0cd52c0d9345263cb18bfff39..f6a955cfafce1810e28e760d236bff05ac0d1074 100644 (file)
@@ -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 (file)
index 0000000..3a7c5ff
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <ram.h>
+#include <dm/test.h>
+#include <test/ut.h>
+
+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);