summaryrefslogtreecommitdiff
path: root/zephyr/shim/include/hook_types.h
blob: bcd1d0119c4335beb89a069d4971fb020e2e2e01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* Copyright 2022 The Chromium OS Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
#ifndef __CROS_EC_HOOK_TYPES_H_
#define __CROS_EC_HOOK_TYPES_H_

#include <zephyr/sys/util_macro.h>

/*
 * Some config macros are defined but without any value for some boards, so
 * IF_ENABLED checks cannot be used. In addition, config values may not be set
 * when generating the linker script: in that case we emit every possible hook
 * type, since doing so won't bloat the output if no corresponding sections
 * were generated.
 */
#if defined(TEST_BUILD) || defined(_LINKER)
#define HOOK_TYPES_TEST_BUILD HOOK_TEST_1, HOOK_TEST_2, HOOK_TEST_3,
#else
#define HOOK_TYPES_TEST_BUILD
#endif

#if defined(CONFIG_USB_SUSPEND) || defined(_LINKER)
#define HOOK_TYPES_USB_SUSPEND HOOK_USB_PM_CHANGE
#else
#define HOOK_TYPES_USB_SUSPEND
#endif

/*
 * HOOK_TYPES_LIST is a sequence of tokens that expands to every enabled
 * `enum hook_type` value.
 *
 * If the enum definition is changed, this macro must also be changed.
 */
#define HOOK_TYPES_LIST                                                    \
	LIST_DROP_EMPTY(                                                   \
		HOOK_INIT, HOOK_PRE_FREQ_CHANGE, HOOK_FREQ_CHANGE,         \
		HOOK_SYSJUMP, HOOK_CHIPSET_PRE_INIT, HOOK_CHIPSET_STARTUP, \
		HOOK_CHIPSET_RESUME, HOOK_CHIPSET_SUSPEND,                 \
		IF_ENABLED(CONFIG_PLATFORM_EC_CHIPSET_RESUME_INIT_HOOK,    \
			   (HOOK_CHIPSET_RESUME_INIT,                      \
			    HOOK_CHIPSET_SUSPEND_COMPLETE, ))              \
			HOOK_CHIPSET_SHUTDOWN,                             \
		HOOK_CHIPSET_SHUTDOWN_COMPLETE, HOOK_CHIPSET_HARD_OFF,     \
		HOOK_CHIPSET_RESET, HOOK_AC_CHANGE, HOOK_LID_CHANGE,       \
		HOOK_TABLET_MODE_CHANGE, HOOK_BASE_ATTACHED_CHANGE,        \
		HOOK_POWER_BUTTON_CHANGE, HOOK_BATTERY_SOC_CHANGE,         \
		HOOK_TYPES_USB_SUSPEND, HOOK_TICK, HOOK_SECOND,            \
		HOOK_USB_PD_DISCONNECT, HOOK_USB_PD_CONNECT,               \
		HOOK_TYPES_TEST_BUILD)

#endif