// SPDX-License-Identifier: GPL-2.0+
/*
 * Test for pwm command
 *
 * Copyright 2020 SiFive, Inc
 *
 * Authors:
 *   Pragnesh Patel <pragnesh.patel@sifive.com>
 */

#include <dm.h>
#include <dm/test.h>
#include <test/test.h>
#include <test/ut.h>

/* Basic test of 'pwm' command */
static int dm_test_pwm_cmd(struct unit_test_state *uts)
{
	struct udevice *dev;

	ut_assertok(uclass_get_device(UCLASS_PWM, 0, &dev));
	ut_assertnonnull(dev);

	ut_assertok(console_record_reset_enable());

	/* pwm <invert> <pwm_dev_num> <channel> <polarity> */
	ut_assertok(run_command("pwm invert 0 0 1", 0));
	ut_assert_console_end();

	ut_assertok(run_command("pwm invert 0 0 0", 0));
	ut_assert_console_end();

	/* pwm <config> <pwm_dev_num> <channel> <period_ns> <duty_ns> */
	ut_assertok(run_command("pwm config 0 0 10 50", 0));
	ut_assert_console_end();

	/* pwm <enable/disable> <pwm_dev_num> <channel> */
	ut_assertok(run_command("pwm enable 0 0", 0));
	ut_assert_console_end();

	ut_assertok(run_command("pwm disable 0 0", 0));
	ut_assert_console_end();

	return 0;
}

DM_TEST(dm_test_pwm_cmd, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT | UT_TESTF_CONSOLE_REC);
