|
14 | 14 | #include <zephyr/drivers/pwm.h>
|
15 | 15 | #include <zephyr/kernel.h>
|
16 | 16 |
|
17 |
| -#define SUM_NGPIOS(i, n, p) DT_PROP(DT_PROP_BY_IDX(n, p, i), ngpios) + |
18 |
| -#define ACCUM_NGPIOS(n, p, i) LISTIFY(i, SUM_NGPIOS, (), n, p) |
| 17 | +#define ADD_NGPIOS(i, n, p) DT_PROP(DT_PROP_BY_IDX(n, p, i), ngpios) + |
| 18 | +#define ACCUM_NGPIOS(n, p, i) LISTIFY(i, ADD_NGPIOS, (), n, p) |
19 | 19 | #define ACCUM_NGPIOS_CHECK(n, p, i, node) \
|
20 |
| - COND_CODE_1(DT_SAME_NODE(DT_PROP_BY_IDX(n, p, i), node), \ |
21 |
| - (ACCUM_NGPIOS(n, p, i)), ()) |
| 20 | + COND_CODE_1(DT_SAME_NODE(DT_PROP_BY_IDX(n, p, i), node), (ACCUM_NGPIOS(n, p, i)), ()) |
22 | 21 | #define FIND_GPIO_IDX(node) \
|
23 | 22 | DT_FOREACH_PROP_ELEM_VARGS(DT_PATH(zephyr_user), gpios, ACCUM_NGPIOS_CHECK, node)
|
24 | 23 |
|
25 |
| -#ifndef LED_BUILTIN |
| 24 | +#define PROP_NGPIOS(n, p, i) DT_PROP(DT_PROP_BY_IDX(n, p, i), ngpios) |
| 25 | + |
| 26 | +#define GPIO_PIN_NUMS \ |
| 27 | + (DT_FOREACH_PROP_ELEM_SEP(DT_PATH(zephyr_user), gpios, PROP_NGPIOS, (+))) |
26 | 28 |
|
| 29 | +#ifndef LED_BUILTIN |
27 | 30 | #if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), builtin_led_gpios) && \
|
28 | 31 | (DT_PROP_LEN(DT_PATH(zephyr_user), builtin_led_gpios) > 0)
|
29 |
| - |
30 | 32 | #define LED_BUILTIN \
|
31 | 33 | (FIND_GPIO_IDX(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0)) \
|
32 | 34 | DT_PHA_BY_IDX(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0), \
|
33 | 35 | pin))
|
34 |
| -/* If digital-pin-gpios is not defined, tries to use the led0 alias */ |
35 | 36 | #elif DT_NODE_EXISTS(DT_ALIAS(led0))
|
36 | 37 | #define LED_BUILTIN \
|
37 | 38 | (FIND_GPIO_IDX(DT_PHANDLE(DT_ALIAS(led0), gpios)) DT_PHA(DT_ALIAS(led0), gpios, pin))
|
38 |
| -#endif // builtin_led_gpios |
39 |
| - |
40 |
| -#endif // LED_BUILTIN |
| 39 | +#endif |
| 40 | +#endif |
41 | 41 |
|
42 | 42 | #define DN_ENUMS(n, p, i) \
|
43 | 43 | D##i = FIND_GPIO_IDX(DT_PHANDLE_BY_IDX(n, p, i)) DT_PHA_BY_IDX(n, p, i, pin)
|
|
0 commit comments