diff options
author | Bin Meng <bmeng.cn@gmail.com> | 2018-10-10 22:07:01 -0700 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2018-11-14 09:16:27 -0800 |
commit | 2786cd740ebdbdd653714837eadf359f7b28964f (patch) | |
tree | 050d4dd49d3be0fa932156a86baa8be590b84524 | |
parent | 8e39afcd942cdc52acaec33bce6b807b0dcc8cfe (diff) | |
download | u-boot-2786cd740ebdbdd653714837eadf359f7b28964f.tar.gz u-boot-2786cd740ebdbdd653714837eadf359f7b28964f.tar.xz u-boot-2786cd740ebdbdd653714837eadf359f7b28964f.zip |
test: dm: core: Add a test case for driver marked with DM_FLAG_PRE_RELOC flag
Now that we fixed the pre-relocation driver binding for driver marked
with DM_FLAG_PRE_RELOC flag, add a test case to cover that scenario.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | arch/sandbox/dts/test.dts | 4 | ||||
-rw-r--r-- | test/dm/bus.c | 2 | ||||
-rw-r--r-- | test/dm/test-fdt.c | 29 |
3 files changed, 31 insertions, 4 deletions
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 57e0dd7663..ffc93d05ba 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -186,6 +186,10 @@ compatible = "denx,u-boot-fdt-test"; }; + h-test { + compatible = "denx,u-boot-fdt-test1"; + }; + clocks { clk_fixed: clk-fixed { compatible = "fixed-clock"; diff --git a/test/dm/bus.c b/test/dm/bus.c index 08137a2216..d0cd5a009c 100644 --- a/test/dm/bus.c +++ b/test/dm/bus.c @@ -107,7 +107,7 @@ UCLASS_DRIVER(testbus) = { /* Test that we can probe for children */ static int dm_test_bus_children(struct unit_test_state *uts) { - int num_devices = 7; + int num_devices = 8; struct udevice *bus; struct uclass *uc; diff --git a/test/dm/test-fdt.c b/test/dm/test-fdt.c index 79b1f1de45..3da384f4c5 100644 --- a/test/dm/test-fdt.c +++ b/test/dm/test-fdt.c @@ -84,6 +84,25 @@ U_BOOT_DRIVER(testfdt_drv) = { .platdata_auto_alloc_size = sizeof(struct dm_test_pdata), }; +static const struct udevice_id testfdt1_ids[] = { + { + .compatible = "denx,u-boot-fdt-test1", + .data = DM_TEST_TYPE_FIRST }, + { } +}; + +U_BOOT_DRIVER(testfdt1_drv) = { + .name = "testfdt1_drv", + .of_match = testfdt1_ids, + .id = UCLASS_TEST_FDT, + .ofdata_to_platdata = testfdt_ofdata_to_platdata, + .probe = testfdt_drv_probe, + .ops = &test_ops, + .priv_auto_alloc_size = sizeof(struct dm_test_priv), + .platdata_auto_alloc_size = sizeof(struct dm_test_pdata), + .flags = DM_FLAG_PRE_RELOC, +}; + /* From here is the testfdt uclass code */ int testfdt_ping(struct udevice *dev, int pingval, int *pingret) { @@ -168,7 +187,7 @@ int dm_check_devices(struct unit_test_state *uts, int num_devices) /* Test that FDT-based binding works correctly */ static int dm_test_fdt(struct unit_test_state *uts) { - const int num_devices = 7; + const int num_devices = 8; struct udevice *dev; struct uclass *uc; int ret; @@ -208,8 +227,12 @@ static int dm_test_fdt_pre_reloc(struct unit_test_state *uts) ret = uclass_get(UCLASS_TEST_FDT, &uc); ut_assert(!ret); - /* These is only one pre-reloc device */ - ut_asserteq(1, list_count_items(&uc->dev_head)); + /* + * These are 2 pre-reloc devices: + * one with "u-boot,dm-pre-reloc" property (a-test node), and the other + * one whose driver marked with DM_FLAG_PRE_RELOC flag (h-test node). + */ + ut_asserteq(2, list_count_items(&uc->dev_head)); return 0; } |