diff options
| author | Tom Rini <[email protected]> | 2025-11-20 08:00:11 -0600 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2025-11-20 08:00:11 -0600 |
| commit | 8ff90aa64b730c3f511921d4ff79e9f64e625867 (patch) | |
| tree | e43ed96f7840d878bd9da89f3afdbd82eda2f5d9 /test | |
| parent | b8872deb4450b09586e28550c23d33a71084d94f (diff) | |
| parent | fb3db4aa8df2ae5093a5c1580b9cd5789c248de4 (diff) | |
Merge tag 'interconnect-next-20251120' of https://source.denx.de/u-boot/custodians/u-boot-snapdragon into next
- Qualcomm RPMh cmd_db_read_slave_id() & cmd_db_read_aux_data()
- Initial Interconnect implementation + Qualcomm RPMh support
Diffstat (limited to 'test')
| -rw-r--r-- | test/dm/Makefile | 1 | ||||
| -rw-r--r-- | test/dm/interconnect.c | 195 |
2 files changed, 196 insertions, 0 deletions
diff --git a/test/dm/Makefile b/test/dm/Makefile index a261b3fb4b7..771b703b737 100644 --- a/test/dm/Makefile +++ b/test/dm/Makefile @@ -57,6 +57,7 @@ obj-$(CONFIG_DM_FPGA) += fpga.o obj-$(CONFIG_FWU_MDATA_GPT_BLK) += fwu_mdata.o obj-$(CONFIG_SANDBOX) += host.o obj-$(CONFIG_DM_HWSPINLOCK) += hwspinlock.o +obj-$(CONFIG_INTERCONNECT) += interconnect.o obj-$(CONFIG_DM_I2C) += i2c.o obj-$(CONFIG_I3C) += i3c.o obj-$(CONFIG_SOUND) += i2s.o diff --git a/test/dm/interconnect.c b/test/dm/interconnect.c new file mode 100644 index 00000000000..e8c2eccd7b1 --- /dev/null +++ b/test/dm/interconnect.c @@ -0,0 +1,195 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2025 Linaro Limited + */ + +#include <dm.h> +#include <malloc.h> +#include <dm/test.h> +#include <asm/interconnect.h> +#include <dm/device-internal.h> +#include <dm/uclass-internal.h> +#include <test/test.h> +#include <test/ut.h> + +static int dm_test_interconnect(struct unit_test_state *uts) +{ + struct udevice *dev_interconnect_0, + *dev_interconnect_1, + *dev_interconnect_2, + *dev_interconnect_3, + *dev_interconnect_4; + struct udevice *dev_test_0, *dev_test_1, *dev; + u64 avg = 0, peak = 0; + + ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "interconnect-test-0", + &dev_test_0)); + ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "interconnect-test-1", + &dev_test_1)); + + ut_assertok(sandbox_interconnect_test_get_index(dev_test_0, 0)); + ut_assertok(sandbox_interconnect_test_get(dev_test_1, "icc-path")); + + ut_assertok(uclass_find_device_by_name(UCLASS_INTERCONNECT, + "interconnect-0", + &dev_interconnect_0)); + ut_assertok(uclass_find_device_by_name(UCLASS_INTERCONNECT, + "interconnect-1", + &dev_interconnect_1)); + ut_assertok(uclass_find_device_by_name(UCLASS_INTERCONNECT, + "interconnect-2", + &dev_interconnect_2)); + ut_assertok(uclass_find_device_by_name(UCLASS_INTERCONNECT, + "interconnect-3", + &dev_interconnect_3)); + ut_assertok(uclass_find_device_by_name(UCLASS_INTERCONNECT, + "interconnect-4", + &dev_interconnect_4)); + + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_0, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_1, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_2, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_3, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_4, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + + ut_assertok(sandbox_interconnect_test_set_bw(dev_test_0, 10000, 100000)); + + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_0, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_1, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_2, &avg, &peak)); + ut_asserteq(avg, 10000); ut_asserteq(peak, 100000); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_3, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_4, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + + ut_assertok(sandbox_interconnect_test_set_bw(dev_test_1, 20000, 200000)); + + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_0, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_1, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_2, &avg, &peak)); + ut_asserteq(avg, 30000); ut_asserteq(peak, 200000); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_3, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_4, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + + ut_assertok(sandbox_interconnect_test_disable(dev_test_0)); + + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_0, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_1, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_2, &avg, &peak)); + ut_asserteq(avg, 20000); ut_asserteq(peak, 200000); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_3, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_4, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + + ut_assertok(sandbox_interconnect_test_disable(dev_test_1)); + + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_0, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_1, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_2, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_3, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_4, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + + ut_assertok(sandbox_interconnect_test_enable(dev_test_0)); + + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_0, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_1, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_2, &avg, &peak)); + ut_asserteq(avg, 10000); ut_asserteq(peak, 100000); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_3, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_4, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + + ut_assertok(sandbox_interconnect_test_enable(dev_test_1)); + + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_0, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_1, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_2, &avg, &peak)); + ut_asserteq(avg, 30000); ut_asserteq(peak, 200000); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_3, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_4, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + + ut_asserteq(-EBUSY, device_remove(dev_interconnect_0, DM_REMOVE_NORMAL)); + ut_asserteq(-EBUSY, device_remove(dev_interconnect_1, DM_REMOVE_NORMAL)); + ut_asserteq(-EBUSY, device_remove(dev_interconnect_2, DM_REMOVE_NORMAL)); + ut_asserteq(-EBUSY, device_remove(dev_interconnect_3, DM_REMOVE_NORMAL)); + ut_asserteq(-EBUSY, device_remove(dev_interconnect_4, DM_REMOVE_NORMAL)); + + ut_assertok(sandbox_interconnect_test_put(dev_test_0)); + + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_0, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_1, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_2, &avg, &peak)); + ut_asserteq(avg, 20000); ut_asserteq(peak, 200000); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_3, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_4, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + + ut_assertok(sandbox_interconnect_test_put(dev_test_1)); + + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_0, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_1, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_2, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_3, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + ut_assertok(sandbox_interconnect_get_bw(dev_interconnect_4, &avg, &peak)); + ut_asserteq(avg, 0); ut_asserteq(peak, 0); + + ut_asserteq(-ENOENT, sandbox_interconnect_test_get_index(dev_test_0, 1)); + ut_asserteq(-ENOENT, sandbox_interconnect_test_get_index(dev_test_1, 1)); + ut_asserteq(-ENODATA, sandbox_interconnect_test_get(dev_test_1, "pwet")); + + ut_assertok(device_remove(dev_interconnect_0, DM_REMOVE_NORMAL)); + ut_assertok(device_remove(dev_interconnect_1, DM_REMOVE_NORMAL)); + ut_assertok(device_remove(dev_interconnect_2, DM_REMOVE_NORMAL)); + ut_assertok(device_remove(dev_interconnect_3, DM_REMOVE_NORMAL)); + ut_assertok(device_remove(dev_interconnect_4, DM_REMOVE_NORMAL)); + + ut_assertok(device_unbind(dev_interconnect_0)); + ut_assertok(device_unbind(dev_interconnect_1)); + ut_assertok(device_unbind(dev_interconnect_2)); + ut_assertok(device_unbind(dev_interconnect_3)); + ut_assertok(device_unbind(dev_interconnect_4)); + + uclass_find_first_device(UCLASS_INTERCONNECT, &dev); + ut_assert(!dev); + + uclass_find_first_device(UCLASS_ICC_NODE, &dev); + ut_assert(!dev); + + return 0; +} + +DM_TEST(dm_test_interconnect, UTF_SCAN_FDT); |
