1 /*
2  * Copyright (c) 2019 Vestas Wind Systems A/S
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PWM_PWM_H_
7 #define ZEPHYR_INCLUDE_DT_BINDINGS_PWM_PWM_H_
8 
9 /**
10  * @brief PWM Interface
11  * @defgroup pwm_interface PWM Interface
12  * @ingroup io_interfaces
13  * @{
14  */
15 
16 /**
17  * @name PWM period set helpers
18  * The period cell in the PWM specifier needs to be provided in nanoseconds.
19  * However, in some applications it is more convenient to use another scale.
20  * @{
21  */
22 
23 /** Specify PWM period in nanoseconds */
24 #define PWM_NSEC(x)	(x)
25 /** Specify PWM period in microseconds */
26 #define PWM_USEC(x)	(PWM_NSEC(x) * 1000UL)
27 /** Specify PWM period in milliseconds */
28 #define PWM_MSEC(x)	(PWM_USEC(x) * 1000UL)
29 /** Specify PWM period in seconds */
30 #define PWM_SEC(x)	(PWM_MSEC(x) * 1000UL)
31 /** Specify PWM frequency in hertz */
32 #define PWM_HZ(x)	(PWM_SEC(1UL) / (x))
33 /** Specify PWM frequency in kilohertz */
34 #define PWM_KHZ(x)	(PWM_HZ((x) * 1000UL))
35 
36 /** @} */
37 
38 /**
39  * @name PWM polarity flags
40  * The `PWM_POLARITY_*` flags are used with pwm_set_cycles(), pwm_set()
41  * or pwm_configure_capture() to specify the polarity of a PWM channel.
42  *
43  * The flags are on the lower 8bits of the pwm_flags_t
44  * @{
45  */
46 /** PWM pin normal polarity (active-high pulse). */
47 #define PWM_POLARITY_NORMAL	(0 << 0)
48 
49 /** PWM pin inverted polarity (active-low pulse). */
50 #define PWM_POLARITY_INVERTED	(1 << 0)
51 
52 /** @cond INTERNAL_HIDDEN */
53 #define PWM_POLARITY_MASK	0x1
54 /** @endcond */
55 /** @} */
56 
57 /** @} */
58 
59 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PWM_PWM_H_ */
60