diff options
Diffstat (limited to 'zephyr/shim/src/gpio_id.c')
-rw-r--r-- | zephyr/shim/src/gpio_id.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/zephyr/shim/src/gpio_id.c b/zephyr/shim/src/gpio_id.c index e157e2d487..b994154cd1 100644 --- a/zephyr/shim/src/gpio_id.c +++ b/zephyr/shim/src/gpio_id.c @@ -3,14 +3,16 @@ * found in the LICENSE file. */ +#include <zephyr/devicetree.h> + #ifdef __REQUIRE_ZEPHYR_GPIOS__ #undef __REQUIRE_ZEPHYR_GPIOS__ #endif - #include "gpio.h" #include "util.h" -#include <zephyr/devicetree.h> +#define IS_BOARD_COMPATIBLE DT_NODE_HAS_COMPAT(DT_PATH(board), cros_ec_gpio_id) +#define IS_SKU_COMPATIBLE DT_NODE_HAS_COMPAT(DT_PATH(sku), cros_ec_gpio_id) #define CONVERT_NUMERAL_SYSTEM_EVAL(system, bits, nbits) \ system##_from_bits(bits, nbits) @@ -21,15 +23,14 @@ #define READ_PIN_FROM_PHANDLE(node_id, prop, idx) \ gpio_get_ternary(GPIO_SIGNAL(DT_PHANDLE_BY_IDX(node_id, prop, idx))), -#define SKU_GPIO_ID_NODE DT_NODELABEL(gpio_id_sku) -#if DT_NODE_HAS_STATUS(SKU_GPIO_ID_NODE, okay) +#if DT_NODE_EXISTS(DT_PATH(sku)) && IS_SKU_COMPATIBLE __override uint32_t board_get_sku_id(void) { static uint32_t sku_id = (uint32_t)-1; if (sku_id == (uint32_t)-1) { - int bits[] = { DT_FOREACH_PROP_ELEM(SKU_GPIO_ID_NODE, bits, + int bits[] = { DT_FOREACH_PROP_ELEM(DT_PATH(sku), bits, READ_PIN_FROM_PHANDLE) }; if (sizeof(bits) == 0) @@ -45,15 +46,14 @@ __override uint32_t board_get_sku_id(void) #endif -#define BOARD_GPIO_ID_NODE DT_NODELABEL(gpio_id_board) -#if DT_NODE_HAS_STATUS(SKU_GPIO_ID_NODE, okay) +#if DT_NODE_EXISTS(DT_PATH(board)) && IS_BOARD_COMPATIBLE __override int board_get_version(void) { static int board_version = -1; if (board_version == -1) { - int bits[] = { DT_FOREACH_PROP_ELEM(BOARD_GPIO_ID_NODE, bits, + int bits[] = { DT_FOREACH_PROP_ELEM(DT_PATH(board), bits, READ_PIN_FROM_PHANDLE) }; if (sizeof(bits) == 0) @@ -68,7 +68,3 @@ __override int board_get_version(void) } #endif - -BUILD_ASSERT(DT_NODE_HAS_STATUS(SKU_GPIO_ID_NODE, okay) || - DT_NODE_HAS_STATUS(BOARD_GPIO_ID_NODE, okay), - "neither sku or board id nodelabels found"); |