@@ -15,12 +15,12 @@ namespace {
1515
1616#define DEVICE_GPIO (n, p, i ) DEVICE_DT_GET(DT_PROP_BY_IDX(n, p, i))
1717constexpr const struct device *gpios[] = {
18- DT_FOREACH_PROP_ELEM_SEP (DT_PATH (zephyr_user), gpios , DEVICE_GPIO, (,))
18+ DT_FOREACH_PROP_ELEM_SEP (DT_PATH (zephyr_user), gpio_ports , DEVICE_GPIO, (,))
1919};
2020
2121#define PROP_NGPIOS (n, p, i ) DT_PROP(DT_PROP_BY_IDX(n, p, i), ngpios)
2222constexpr uint32_t pins[] = {
23- DT_FOREACH_PROP_ELEM_SEP (DT_PATH (zephyr_user), gpios , PROP_NGPIOS, (,))
23+ DT_FOREACH_PROP_ELEM_SEP (DT_PATH (zephyr_user), gpio_ports , PROP_NGPIOS, (,))
2424};
2525
2626constexpr inline const struct device *local_gpio_port_recursive (pin_size_t pin,
@@ -46,9 +46,14 @@ constexpr inline const struct device *local_gpio_port(pin_size_t gpin)
4646 return local_gpio_port_recursive (gpin, gpios, pins, ARRAY_SIZE (gpios));
4747}
4848
49+ constexpr inline pin_size_t port_idx (pin_size_t gpin)
50+ {
51+ return port_index_recursive (local_gpio_port (gpin), gpios, 0 , ARRAY_SIZE (gpios));
52+ }
53+
4954constexpr inline pin_size_t local_gpio_pin (pin_size_t gpin)
5055{
51- return gpin - pins[ port_index_recursive ( local_gpio_port (gpin), gpios, 0 , ARRAY_SIZE (gpios) )];
56+ return port_idx ( gpin) == pin_size_t (- 1 ) ? pin_size_t (- 1 ) : gpin - pins[ port_idx (gpin )];
5257}
5358
5459constexpr inline pin_size_t global_gpio_pin_ (size_t port_idx, pin_size_t lpin)
0 commit comments