mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
sandbox: add test of wdt_gpio driver
It seems that no other test has claimed gpio_a:7 yet, so use that. The only small wrinkle is modifying the existing wdt test to use uclass_get_device_by_driver() since we now have two UCLASS_WDT instances in play, so it's a little more robust to fetch the device by driver and not merely uclass+index. Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
This commit is contained in:
parent
2ac8490412
commit
a9346b93b4
4 changed files with 43 additions and 1 deletions
|
@ -793,6 +793,12 @@
|
|||
};
|
||||
};
|
||||
|
||||
gpio-wdt {
|
||||
gpios = <&gpio_a 7 0>;
|
||||
compatible = "linux,wdt-gpio";
|
||||
always-running;
|
||||
};
|
||||
|
||||
mbox: mbox {
|
||||
compatible = "sandbox,mbox";
|
||||
#mbox-cells = <1>;
|
||||
|
|
|
@ -225,6 +225,7 @@ CONFIG_SPLASH_SCREEN_ALIGN=y
|
|||
CONFIG_VIDEO_BMP_RLE8=y
|
||||
# CONFIG_WATCHDOG_AUTOSTART is not set
|
||||
CONFIG_WDT=y
|
||||
CONFIG_WDT_GPIO=y
|
||||
CONFIG_WDT_SANDBOX=y
|
||||
CONFIG_FS_CBFS=y
|
||||
CONFIG_FS_CRAMFS=y
|
||||
|
|
|
@ -283,6 +283,7 @@ CONFIG_W1_EEPROM=y
|
|||
CONFIG_W1_EEPROM_SANDBOX=y
|
||||
# CONFIG_WATCHDOG_AUTOSTART is not set
|
||||
CONFIG_WDT=y
|
||||
CONFIG_WDT_GPIO=y
|
||||
CONFIG_WDT_SANDBOX=y
|
||||
CONFIG_FS_CBFS=y
|
||||
CONFIG_FS_CRAMFS=y
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include <common.h>
|
||||
#include <dm.h>
|
||||
#include <wdt.h>
|
||||
#include <asm/gpio.h>
|
||||
#include <asm/state.h>
|
||||
#include <asm/test.h>
|
||||
#include <dm/test.h>
|
||||
|
@ -19,7 +20,8 @@ static int dm_test_wdt_base(struct unit_test_state *uts)
|
|||
struct udevice *dev;
|
||||
const u64 timeout = 42;
|
||||
|
||||
ut_assertok(uclass_get_device(UCLASS_WDT, 0, &dev));
|
||||
ut_assertok(uclass_get_device_by_driver(UCLASS_WDT,
|
||||
DM_DRIVER_GET(wdt_sandbox), &dev));
|
||||
ut_assertnonnull(dev);
|
||||
ut_asserteq(0, state->wdt.counter);
|
||||
ut_asserteq(false, state->wdt.running);
|
||||
|
@ -39,3 +41,35 @@ static int dm_test_wdt_base(struct unit_test_state *uts)
|
|||
return 0;
|
||||
}
|
||||
DM_TEST(dm_test_wdt_base, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
|
||||
|
||||
static int dm_test_wdt_gpio(struct unit_test_state *uts)
|
||||
{
|
||||
/*
|
||||
* The sandbox wdt gpio is "connected" to gpio bank a, offset
|
||||
* 7. Use the sandbox back door to verify that the gpio-wdt
|
||||
* driver behaves as expected.
|
||||
*/
|
||||
struct udevice *wdt, *gpio;
|
||||
const u64 timeout = 42;
|
||||
const int offset = 7;
|
||||
int val;
|
||||
|
||||
ut_assertok(uclass_get_device_by_driver(UCLASS_WDT,
|
||||
DM_DRIVER_GET(wdt_gpio), &wdt));
|
||||
ut_assertnonnull(wdt);
|
||||
|
||||
ut_assertok(uclass_get_device_by_name(UCLASS_GPIO, "base-gpios", &gpio));
|
||||
ut_assertnonnull(gpio);
|
||||
ut_assertok(wdt_start(wdt, timeout, 0));
|
||||
|
||||
val = sandbox_gpio_get_value(gpio, offset);
|
||||
ut_assertok(wdt_reset(wdt));
|
||||
ut_asserteq(!val, sandbox_gpio_get_value(gpio, offset));
|
||||
ut_assertok(wdt_reset(wdt));
|
||||
ut_asserteq(val, sandbox_gpio_get_value(gpio, offset));
|
||||
|
||||
ut_asserteq(-ENOSYS, wdt_stop(wdt));
|
||||
|
||||
return 0;
|
||||
}
|
||||
DM_TEST(dm_test_wdt_gpio, UT_TESTF_SCAN_FDT);
|
||||
|
|
Loading…
Reference in a new issue