diff options
Diffstat (limited to 'zephyr/shim/include/power/power.h')
-rw-r--r-- | zephyr/shim/include/power/power.h | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/zephyr/shim/include/power/power.h b/zephyr/shim/include/power/power.h index a764e0c8b5..1e780646af 100644 --- a/zephyr/shim/include/power/power.h +++ b/zephyr/shim/include/power/power.h @@ -9,10 +9,30 @@ #include <zephyr/devicetree.h> #include <zephyr/drivers/gpio.h> -#if CONFIG_CROS_EC_POWER_SIGNAL_LIST - #define POWER_SIGNAL_LIST_NODE DT_NODELABEL(power_signal_list) +#define SYSTEM_DT_POWER_SIGNAL_CONFIG DT_NODE_EXISTS(POWER_SIGNAL_LIST_NODE) + +#if (SYSTEM_DT_POWER_SIGNAL_CONFIG) + +#define GEN_POWER_SIGNAL_STRUCT_ENTRY_GPIO(cid) \ + DT_STRING_UPPER_TOKEN(DT_PROP(cid, power_gpio_pin), enum_name) +#define GEN_POWER_SIGNAL_STRUCT_ENTRY_FLAGS(cid) \ + (DT_GPIO_FLAGS(DT_PROP(cid, power_gpio_pin), gpios) & \ + GPIO_ACTIVE_LOW ? \ + POWER_SIGNAL_ACTIVE_LOW : \ + POWER_SIGNAL_ACTIVE_HIGH) +#define GEN_POWER_SIGNAL_STRUCT_ENTRY_NAME(cid) DT_PROP(cid, power_enum_name) + +#define GEN_POWER_SIGNAL_STRUCT_ENTRY(cid) \ + { \ + .gpio = GEN_POWER_SIGNAL_STRUCT_ENTRY_GPIO(cid), \ + .flags = GEN_POWER_SIGNAL_STRUCT_ENTRY_FLAGS(cid), \ + .name = GEN_POWER_SIGNAL_STRUCT_ENTRY_NAME(cid) \ + } +#define GEN_POWER_SIGNAL_STRUCT(cid) \ + [GEN_POWER_SIGNAL_ENUM_ENTRY(cid)] = GEN_POWER_SIGNAL_STRUCT_ENTRY(cid), + #define GEN_POWER_SIGNAL_ENUM_ENTRY(cid) \ DT_STRING_UPPER_TOKEN(cid, power_enum_name) @@ -22,5 +42,13 @@ enum power_signal { POWER_SIGNAL_COUNT }; -#endif /* CONFIG_CROS_EC_POWER_SIGNAL_LIST */ +/* + * Verify the number of required power-signals are specified in + * the DeviceTree + */ +#define POWER_SIGNALS_REQUIRED \ + DT_PROP(POWER_SIGNAL_LIST_NODE, power_signals_required) +BUILD_ASSERT(POWER_SIGNALS_REQUIRED == POWER_SIGNAL_COUNT); + +#endif /* SYSTEM_DT_POWER_SIGNAL_CONFIG */ #endif /* ZEPHYR_CHROME_POWER_POWER_H */ |