@@ -25,11 +25,11 @@ constexpr uint32_t pins[] = {
25
25
26
26
constexpr inline const struct device *local_gpio_port_recursive (pin_size_t pin,
27
27
const struct device *const *ctrl,
28
- const uint32_t *end, size_t n)
28
+ const uint32_t accum, const uint32_t *end, size_t n)
29
29
{
30
30
return (n == 0 ) ? nullptr
31
- : (pin < end[0 ]) ? ctrl[0 ]
32
- : local_gpio_port_recursive (pin, ctrl + 1 , end + 1 , n - 1 );
31
+ : (pin < accum + end[0 ]) ? ctrl[0 ]
32
+ : local_gpio_port_recursive (pin, ctrl + 1 , accum + end[ 0 ], end + 1 , n - 1 );
33
33
}
34
34
35
35
constexpr inline size_t port_index_recursive (const struct device *target,
@@ -43,7 +43,7 @@ constexpr inline size_t port_index_recursive(const struct device *target,
43
43
44
44
constexpr inline const struct device *local_gpio_port (pin_size_t gpin)
45
45
{
46
- return local_gpio_port_recursive (gpin, gpios, pins, ARRAY_SIZE (gpios));
46
+ return local_gpio_port_recursive (gpin, gpios, 0 , pins, ARRAY_SIZE (gpios));
47
47
}
48
48
49
49
constexpr inline pin_size_t port_idx (pin_size_t gpin)
0 commit comments