diff options
| author | Tom Rini <[email protected]> | 2025-11-11 14:53:47 -0600 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2025-11-11 14:53:47 -0600 |
| commit | 10fec1b7a36dcd902274fe136ff1e3ba280ecef4 (patch) | |
| tree | 57c4d7e03a950d09cd80091f353ab99a5a973adc /test | |
| parent | 62e89de7698a637c673b08ec129941d8079a5405 (diff) | |
| parent | e5e4b60c55e448e6a9a6bf6f7e9cfd01fe3103e1 (diff) | |
Merge patch series "reenable dm_gpio tests, add support for gpio-line-names lookup"
Rasmus Villemoes <[email protected]> says:
Hopefully third time's the charm.
I merely wanted to add support (mostly for use by the 'gpio' shell
command) for looking up a gpio via the gpio-line-names DT property. We
already have a "gpio_request_by_line_name()", but cmd/gpio.c does a
separate "lookup + request", so it felt more natural to teach the
lookup machinery this as well. That ran into
OF_CONTROL-but-not-OF_LIBFDT being a thing for SPL, so here's yet
another attempt.
Now, when trying to do my civic duty and add tests for this, I found
that test/dm/gpio.c has been defunct for a couple of years, and
reinstating it is not entirely trivial.
After a couple of rounds CI is now happy with this:
https://github.com/u-boot/u-boot/pull/828
Link: https://lore.kernel.org/r/[email protected]
Diffstat (limited to 'test')
| -rw-r--r-- | test/dm/Makefile | 2 | ||||
| -rw-r--r-- | test/dm/gpio.c | 24 |
2 files changed, 20 insertions, 6 deletions
diff --git a/test/dm/Makefile b/test/dm/Makefile index 2db0e3b8dfd..a261b3fb4b7 100644 --- a/test/dm/Makefile +++ b/test/dm/Makefile @@ -25,7 +25,7 @@ ifeq ($(CONFIG_ACPIGEN),y) obj-y += acpi.o obj-y += acpigen.o obj-y += acpi_dp.o -obj-(CONFIG_DM_GPIO) += gpio.o +obj-$(CONFIG_DM_GPIO) += gpio.o obj-y += irq.o endif obj-$(CONFIG_ADC) += adc.o diff --git a/test/dm/gpio.c b/test/dm/gpio.c index b45946c143c..0fb05b5ca06 100644 --- a/test/dm/gpio.c +++ b/test/dm/gpio.c @@ -29,14 +29,14 @@ static int dm_test_gpio(struct unit_test_state *uts) /* * We expect to get 4 banks. One is anonymous (just numbered) and - * comes from plat. The other are named a (20 gpios), + * comes from plat. The other are named a (25 gpios), * b (10 gpios) and c (10 gpios) and come from the device tree. See * test/dm/test.dts. */ ut_assertok(gpio_lookup_name("b4", &dev, &offset, &gpio)); ut_asserteq_str(dev->name, "extra-gpios"); ut_asserteq(4, offset); - ut_asserteq(CONFIG_SANDBOX_GPIO_COUNT + 20 + 4, gpio); + ut_asserteq(CONFIG_SANDBOX_GPIO_COUNT + 25 + 4, gpio); name = gpio_get_bank_info(dev, &offset_count); ut_asserteq_str("b", name); @@ -110,7 +110,7 @@ static int dm_test_gpio(struct unit_test_state *uts) name = gpio_get_bank_info(dev, &offset_count); ut_asserteq_str("a", name); - ut_asserteq(20, offset_count); + ut_asserteq(25, offset_count); /* add gpio hog tests */ ut_assertok(gpio_hog_lookup_name("hog_input_active_low", &desc)); @@ -135,7 +135,7 @@ static int dm_test_gpio(struct unit_test_state *uts) ut_asserteq(0, dm_gpio_get_value(desc)); /* Check if lookup for labels work */ - ut_assertok(gpio_lookup_name("hog_input_active_low", &dev, &offset, + ut_assertok(gpio_lookup_name("hog_input_active_low.gpio-hog", &dev, &offset, &gpio)); ut_asserteq_str(dev->name, "base-gpios"); ut_asserteq(10, offset); @@ -143,6 +143,17 @@ static int dm_test_gpio(struct unit_test_state *uts) ut_assert(gpio_lookup_name("hog_not_exist", &dev, &offset, &gpio)); + /* Check if lookup for gpio-line-names work */ + ut_assertok(gpio_lookup_name("factory-reset", &dev, &offset, &gpio)); + ut_asserteq_str(dev->name, "extra-gpios"); + ut_asserteq(0, offset); + ut_asserteq(CONFIG_SANDBOX_GPIO_COUNT + 25 + 0, gpio); + + ut_assertok(gpio_lookup_name("rtc-irq", &dev, &offset, &gpio)); + ut_asserteq_str(dev->name, "base-gpios"); + ut_asserteq(2, offset); + ut_asserteq(CONFIG_SANDBOX_GPIO_COUNT + 2, gpio); + return 0; } DM_TEST(dm_test_gpio, UTF_SCAN_PDATA | UTF_SCAN_FDT); @@ -161,7 +172,7 @@ static int dm_test_gpio_opendrain_opensource(struct unit_test_state *uts) ut_asserteq_str("pinmux-gpios", gpio_c->name); ut_asserteq(8, gpio_request_list_by_name(dev, "test3-gpios", desc_list, - ARRAY_SIZE(desc_list), 0)) + ARRAY_SIZE(desc_list), 0)); ut_asserteq(true, !!device_active(gpio_c)); ut_asserteq_ptr(gpio_c, desc_list[0].dev); @@ -309,6 +320,8 @@ static int dm_test_gpio_copy(struct unit_test_state *uts) DM_TEST(dm_test_gpio_copy, UTF_SCAN_PDATA | UTF_SCAN_FDT); /* Test that we don't leak memory with GPIOs */ +/* Disabled for now as there seems to be a leak in the test framework itself. */ +#if 0 static int dm_test_gpio_leak(struct unit_test_state *uts) { ut_assertok(dm_test_gpio(uts)); @@ -319,6 +332,7 @@ static int dm_test_gpio_leak(struct unit_test_state *uts) return 0; } DM_TEST(dm_test_gpio_leak, UTF_SCAN_PDATA | UTF_SCAN_FDT); +#endif /* Test that we can find GPIOs using phandles */ static int dm_test_gpio_phandles(struct unit_test_state *uts) |
