diff options
Diffstat (limited to 'zephyr/subsys/ap_pwrseq/power_signals.c')
-rw-r--r-- | zephyr/subsys/ap_pwrseq/power_signals.c | 68 |
1 files changed, 33 insertions, 35 deletions
diff --git a/zephyr/subsys/ap_pwrseq/power_signals.c b/zephyr/subsys/ap_pwrseq/power_signals.c index 135a0d9ac1..a02eef6e6b 100644 --- a/zephyr/subsys/ap_pwrseq/power_signals.c +++ b/zephyr/subsys/ap_pwrseq/power_signals.c @@ -1,4 +1,4 @@ -/* Copyright 2022 The Chromium OS Authors. All rights reserved. +/* Copyright 2022 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ @@ -8,6 +8,7 @@ #include <zephyr/logging/log.h> #include <zephyr/sys/atomic.h> +#include <ap_power/ap_pwrseq.h> #include <power_signals.h> #include "signal_gpio.h" @@ -18,7 +19,7 @@ LOG_MODULE_DECLARE(ap_pwrseq, CONFIG_AP_PWRSEQ_LOG_LEVEL); #if DT_HAS_COMPAT_STATUS_OKAY(intel_ap_pwrseq) BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(intel_ap_pwrseq) == 1, - "Only one node for intel_ap_pwrseq is allowed"); + "Only one node for intel_ap_pwrseq is allowed"); #endif BUILD_ASSERT(POWER_SIGNAL_COUNT <= 32, "Too many power signals"); @@ -41,49 +42,46 @@ struct ps_config { #define TAG_PWR_ENUM(tag, name) DT_CAT(tag, name) -#define PWR_ENUM(id, tag) \ - TAG_PWR_ENUM(tag, PWR_SIGNAL_ENUM(id)) +#define PWR_ENUM(id, tag) TAG_PWR_ENUM(tag, PWR_SIGNAL_ENUM(id)) -#define DBGNAME(id) \ - "(" DT_PROP(id, enum_name) ") " \ - DT_PROP(id, dbg_label) +#define DBGNAME(id) "(" DT_PROP(id, enum_name) ") " DT_PROP(id, dbg_label) -#define GEN_PS_ENTRY(id, src, tag) \ -{ \ - .debug_name = DBGNAME(id), \ - .source = src, \ - .src_enum = PWR_ENUM(id, tag), \ -}, - -#define GEN_PS_ENTRY_NO_ENUM(id, src) \ -{ \ - .debug_name = DBGNAME(id), \ - .source = src, \ -}, +#define GEN_PS_ENTRY(id, src, tag) \ + { \ + .debug_name = DBGNAME(id), \ + .source = src, \ + .src_enum = PWR_ENUM(id, tag), \ + }, +#define GEN_PS_ENTRY_NO_ENUM(id, src) \ + { \ + .debug_name = DBGNAME(id), \ + .source = src, \ + }, /* * Generate the power signal configuration array. */ static const struct ps_config sig_config[] = { -DT_FOREACH_STATUS_OKAY_VARGS(intel_ap_pwrseq_gpio, GEN_PS_ENTRY, - PWR_SIG_SRC_GPIO, PWR_SIG_TAG_GPIO) -DT_FOREACH_STATUS_OKAY_VARGS(intel_ap_pwrseq_vw, GEN_PS_ENTRY, - PWR_SIG_SRC_VW, PWR_SIG_TAG_VW) -DT_FOREACH_STATUS_OKAY_VARGS(intel_ap_pwrseq_external, GEN_PS_ENTRY_NO_ENUM, - PWR_SIG_SRC_EXT) -DT_FOREACH_STATUS_OKAY_VARGS(intel_ap_pwrseq_adc, GEN_PS_ENTRY, - PWR_SIG_SRC_ADC, PWR_SIG_TAG_ADC) + DT_FOREACH_STATUS_OKAY_VARGS(intel_ap_pwrseq_gpio, GEN_PS_ENTRY, + PWR_SIG_SRC_GPIO, PWR_SIG_TAG_GPIO) + DT_FOREACH_STATUS_OKAY_VARGS(intel_ap_pwrseq_vw, GEN_PS_ENTRY, + PWR_SIG_SRC_VW, PWR_SIG_TAG_VW) + DT_FOREACH_STATUS_OKAY_VARGS(intel_ap_pwrseq_external, + GEN_PS_ENTRY_NO_ENUM, + PWR_SIG_SRC_EXT) + DT_FOREACH_STATUS_OKAY_VARGS( + intel_ap_pwrseq_adc, GEN_PS_ENTRY, + PWR_SIG_SRC_ADC, PWR_SIG_TAG_ADC) }; -#define PWR_SIGNAL_POLLED(id) PWR_SIGNAL_ENUM(id), +#define PWR_SIGNAL_POLLED(id) PWR_SIGNAL_ENUM(id), /* * List of power signals that need to be polled. */ -static const uint8_t polled_signals[] = { -DT_FOREACH_STATUS_OKAY(intel_ap_pwrseq_external, PWR_SIGNAL_POLLED) -}; +static const uint8_t polled_signals[] = { DT_FOREACH_STATUS_OKAY( + intel_ap_pwrseq_external, PWR_SIGNAL_POLLED) }; /* * Bitmasks of power signals. A previous copy is held so that @@ -112,7 +110,7 @@ static inline void check_debug(enum power_signal signal) */ if ((CONFIG_AP_PWRSEQ_LOG_LEVEL >= LOG_LEVEL_INF) && (debug_signals & POWER_SIGNAL_MASK(signal))) { - bool value = atomic_test_bit(&power_signals, signal); + bool value = atomic_test_bit(&power_signals, signal); if (value != atomic_test_bit(&prev_power_signals, signal)) { LOG_INF("%s -> %d", power_signal_name(signal), value); @@ -137,11 +135,11 @@ void power_signal_interrupt(enum power_signal signal, int value) { atomic_set_bit_to(&power_signals, signal, value); check_debug(signal); + ap_pwrseq_wake(); } int power_wait_mask_signals_timeout(power_signal_mask_t mask, - power_signal_mask_t want, - int timeout) + power_signal_mask_t want, int timeout) { if (mask == 0) { return 0; @@ -166,7 +164,7 @@ int power_signal_get(enum power_signal signal) cp = &sig_config[signal]; switch (cp->source) { default: - return -EINVAL; /* should never happen */ + return -EINVAL; /* should never happen */ #if HAS_GPIO_SIGNALS case PWR_SIG_SRC_GPIO: |