static inline int wait_for_signal(uint32_t port, uint32_t mask, int value, int timeout_us) { uint32_t start = get_time().le.lo; while ((get_time().le.lo - start) < timeout_us) { if ((!!(STM32_GPIO_IDR(port) & mask)) == value) return EC_SUCCESS; } return EC_ERROR_TIMEOUT; }
uint16_t *gpio_get_level_reg(enum gpio_signal signal, uint32_t *mask) { *mask = gpio_list[signal].mask; return (uint16_t *)&STM32_GPIO_IDR(gpio_list[signal].port); }
test_mockable int gpio_get_level(enum gpio_signal signal) { return !!(STM32_GPIO_IDR(gpio_list[signal].port) & gpio_list[signal].mask); }