|
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