mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +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 {
|
mbox: mbox {
|
||||||
compatible = "sandbox,mbox";
|
compatible = "sandbox,mbox";
|
||||||
#mbox-cells = <1>;
|
#mbox-cells = <1>;
|
||||||
|
|
|
@ -225,6 +225,7 @@ CONFIG_SPLASH_SCREEN_ALIGN=y
|
||||||
CONFIG_VIDEO_BMP_RLE8=y
|
CONFIG_VIDEO_BMP_RLE8=y
|
||||||
# CONFIG_WATCHDOG_AUTOSTART is not set
|
# CONFIG_WATCHDOG_AUTOSTART is not set
|
||||||
CONFIG_WDT=y
|
CONFIG_WDT=y
|
||||||
|
CONFIG_WDT_GPIO=y
|
||||||
CONFIG_WDT_SANDBOX=y
|
CONFIG_WDT_SANDBOX=y
|
||||||
CONFIG_FS_CBFS=y
|
CONFIG_FS_CBFS=y
|
||||||
CONFIG_FS_CRAMFS=y
|
CONFIG_FS_CRAMFS=y
|
||||||
|
|
|
@ -283,6 +283,7 @@ CONFIG_W1_EEPROM=y
|
||||||
CONFIG_W1_EEPROM_SANDBOX=y
|
CONFIG_W1_EEPROM_SANDBOX=y
|
||||||
# CONFIG_WATCHDOG_AUTOSTART is not set
|
# CONFIG_WATCHDOG_AUTOSTART is not set
|
||||||
CONFIG_WDT=y
|
CONFIG_WDT=y
|
||||||
|
CONFIG_WDT_GPIO=y
|
||||||
CONFIG_WDT_SANDBOX=y
|
CONFIG_WDT_SANDBOX=y
|
||||||
CONFIG_FS_CBFS=y
|
CONFIG_FS_CBFS=y
|
||||||
CONFIG_FS_CRAMFS=y
|
CONFIG_FS_CRAMFS=y
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
#include <wdt.h>
|
#include <wdt.h>
|
||||||
|
#include <asm/gpio.h>
|
||||||
#include <asm/state.h>
|
#include <asm/state.h>
|
||||||
#include <asm/test.h>
|
#include <asm/test.h>
|
||||||
#include <dm/test.h>
|
#include <dm/test.h>
|
||||||
|
@ -19,7 +20,8 @@ static int dm_test_wdt_base(struct unit_test_state *uts)
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
const u64 timeout = 42;
|
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_assertnonnull(dev);
|
||||||
ut_asserteq(0, state->wdt.counter);
|
ut_asserteq(0, state->wdt.counter);
|
||||||
ut_asserteq(false, state->wdt.running);
|
ut_asserteq(false, state->wdt.running);
|
||||||
|
@ -39,3 +41,35 @@ static int dm_test_wdt_base(struct unit_test_state *uts)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
DM_TEST(dm_test_wdt_base, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
|
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