/*
 * Copyright (c) 2019 Vestas Wind Systems A/S
 *
 * SPDX-License-Identifier: Apache-2.0
 */
#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PWM_PWM_H_
#define ZEPHYR_INCLUDE_DT_BINDINGS_PWM_PWM_H_

/**
 * @name PWM period set helpers
 * The period cell in the PWM specifier needs to be provided in nanoseconds.
 * However, in some applications it is more convenient to use another scale.
 * @{
 */

/** Specify PWM period in nanoseconds */
#define PWM_NSEC(x)	(x)
/** Specify PWM period in microseconds */
#define PWM_USEC(x)	(PWM_NSEC(x) * 1000UL)
/** Specify PWM period in milliseconds */
#define PWM_MSEC(x)	(PWM_USEC(x) * 1000UL)
/** Specify PWM period in seconds */
#define PWM_SEC(x)	(PWM_MSEC(x) * 1000UL)

/** @} */

/**
 * @name PWM polarity flags
 * The `PWM_POLARITY_*` flags are used with pwm_pin_set_cycles(),
 * pwm_pin_set_usec(), pwm_pin_set_nsec() or pwm_pin_configure_capture() to
 * specify the polarity of a PWM pin.
 * The flags are on the lower 8bits of the pwm_flags_t
 * @{
 */
/** PWM pin normal polarity (active-high pulse). */
#define PWM_POLARITY_NORMAL	(0 << 0)

/** PWM pin inverted polarity (active-low pulse). */
#define PWM_POLARITY_INVERTED	(1 << 0)

/** @cond INTERNAL_HIDDEN */
#define PWM_POLARITY_MASK	0x1
/** @endcond */
/** @} */

#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PWM_PWM_H_ */
