[PATCH v2 09/10] sandbox: add test of wdt_gpio driver
Stefan Roese
sr at denx.de
Tue Jun 29 08:08:25 CEST 2021
On 28.05.21 00:00, Rasmus Villemoes wrote:
> 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.
>
> Signed-off-by: Rasmus Villemoes <rasmus.villemoes at prevas.dk>
Reviewed-by: Stefan Roese <sr at denx.de>
Thanks,
Stefan
> ---
> arch/sandbox/dts/test.dts | 6 ++++++
> configs/sandbox64_defconfig | 1 +
> configs/sandbox_defconfig | 1 +
> test/dm/wdt.c | 36 +++++++++++++++++++++++++++++++++++-
> 4 files changed, 43 insertions(+), 1 deletion(-)
>
> diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
> index 5ca3bc502a..cee5b14ecb 100644
> --- a/arch/sandbox/dts/test.dts
> +++ b/arch/sandbox/dts/test.dts
> @@ -755,6 +755,12 @@
> };
> };
>
> + gpio-wdt {
> + gpios = <&gpio_a 7 0>;
> + compatible = "linux,wdt-gpio";
> + always-running;
> + };
> +
> mbox: mbox {
> compatible = "sandbox,mbox";
> #mbox-cells = <1>;
> diff --git a/configs/sandbox64_defconfig b/configs/sandbox64_defconfig
> index 8b934698b5..3e4ee6e8e1 100644
> --- a/configs/sandbox64_defconfig
> +++ b/configs/sandbox64_defconfig
> @@ -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
> diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
> index 8911463d58..faea4d763c 100644
> --- a/configs/sandbox_defconfig
> +++ b/configs/sandbox_defconfig
> @@ -272,6 +272,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
> diff --git a/test/dm/wdt.c b/test/dm/wdt.c
> index 24b991dff6..abff853a02 100644
> --- a/test/dm/wdt.c
> +++ b/test/dm/wdt.c
> @@ -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);
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de
More information about the U-Boot
mailing list