summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorAnton Staaf <robotboy@chromium.org>2016-03-23 12:45:28 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-04-18 17:32:40 -0700
commit068cd0850684ee28a5a514e5a270edce2edb3979 (patch)
treee84f2316e37baa72f1c9611e665749d91a3ce8fd /board
parent1e7c280491232110e1006d545f9a61ca05d469d5 (diff)
downloadchrome-ec-068cd0850684ee28a5a514e5a270edce2edb3979.tar.gz
Deferred: Use deferred_data instead of function pointer
Previously calls to hook_call_deferred were passed the function to call, which was then looked up in the .rodata.deferred section with a linear search. This linear search can be replaced with a subtract by passing the pointer to the deferred_data object created when DECLARE_DEFERRED was invoked. Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=None BUG=None CQ-DEPEND=CL:*255812 TEST=make buildall -j Change-Id: I951dd1541302875b102dd086154cf05591694440 Reviewed-on: https://chromium-review.googlesource.com/334315 Commit-Ready: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Diffstat (limited to 'board')
-rw-r--r--board/amenia/board.c8
-rw-r--r--board/amenia/usb_pd_policy.c5
-rw-r--r--board/chell/usb_pd_policy.c5
-rw-r--r--board/dingdong/board.c7
-rw-r--r--board/elm/board.c16
-rw-r--r--board/glados/board.c8
-rw-r--r--board/glados/usb_pd_policy.c5
-rw-r--r--board/glados_pd/board.c2
-rw-r--r--board/hoho/board.c9
-rw-r--r--board/honeybuns/board.c7
-rw-r--r--board/kunimitsu/usb_pd_policy.c5
-rw-r--r--board/lars/usb_pd_policy.c3
-rw-r--r--board/lars_pd/board.c2
-rw-r--r--board/lucid/board.c3
-rw-r--r--board/oak/board.c10
-rw-r--r--board/plankton/board.c47
-rw-r--r--board/ryu/usb_pd_policy.c2
-rw-r--r--board/samus/extpower.c6
-rw-r--r--board/samus/panel.c4
-rw-r--r--board/samus_pd/board.c2
-rw-r--r--board/samus_pd/usb_pd_policy.c5
-rw-r--r--board/strago/usb_pd_policy.c2
-rw-r--r--board/twinkie/sniffer.c9
-rw-r--r--board/wheatley/board.c8
-rw-r--r--board/wheatley/usb_pd_policy.c5
25 files changed, 103 insertions, 82 deletions
diff --git a/board/amenia/board.c b/board/amenia/board.c
index 767a491883..670ceb2870 100644
--- a/board/amenia/board.c
+++ b/board/amenia/board.c
@@ -85,10 +85,11 @@ void usb1_evt(enum gpio_signal signal)
* state of GPIOs, so its definition must reside after including gpio_list.
*/
static void enable_input_devices(void);
+DECLARE_DEFERRED(enable_input_devices);
void tablet_mode_interrupt(enum gpio_signal signal)
{
- hook_call_deferred(enable_input_devices, 0);
+ hook_call_deferred(&enable_input_devices_data, 0);
}
#include "gpio_list.h"
@@ -301,19 +302,18 @@ static void enable_input_devices(void)
keyboard_scan_enable(kb_enable, KB_SCAN_DISABLE_LID_ANGLE);
gpio_set_level(GPIO_ENABLE_TOUCHPAD, tp_enable);
}
-DECLARE_DEFERRED(enable_input_devices);
/* Called on AP S5 -> S3 transition */
static void board_chipset_startup(void)
{
- hook_call_deferred(enable_input_devices, 0);
+ hook_call_deferred(&enable_input_devices_data, 0);
}
DECLARE_HOOK(HOOK_CHIPSET_STARTUP, board_chipset_startup, HOOK_PRIO_DEFAULT);
/* Called on AP S3 -> S5 transition */
static void board_chipset_shutdown(void)
{
- hook_call_deferred(enable_input_devices, 0);
+ hook_call_deferred(&enable_input_devices_data, 0);
}
DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_chipset_shutdown, HOOK_PRIO_DEFAULT);
diff --git a/board/amenia/usb_pd_policy.c b/board/amenia/usb_pd_policy.c
index f2fbced24e..803dfecef2 100644
--- a/board/amenia/usb_pd_policy.c
+++ b/board/amenia/usb_pd_policy.c
@@ -303,8 +303,9 @@ static void hpd1_irq_deferred(void)
DECLARE_DEFERRED(hpd0_irq_deferred);
DECLARE_DEFERRED(hpd1_irq_deferred);
-#define PORT_TO_HPD_IRQ_DEFERRED(port) ((port) ? hpd1_irq_deferred : \
- hpd0_irq_deferred)
+#define PORT_TO_HPD_IRQ_DEFERRED(port) ((port) ? \
+ &hpd1_irq_deferred_data : \
+ &hpd0_irq_deferred_data)
static int svdm_dp_attention(int port, uint32_t *payload)
{
diff --git a/board/chell/usb_pd_policy.c b/board/chell/usb_pd_policy.c
index cc2c87d239..cf57b09345 100644
--- a/board/chell/usb_pd_policy.c
+++ b/board/chell/usb_pd_policy.c
@@ -308,8 +308,9 @@ static void hpd1_irq_deferred(void)
DECLARE_DEFERRED(hpd0_irq_deferred);
DECLARE_DEFERRED(hpd1_irq_deferred);
-#define PORT_TO_HPD_IRQ_DEFERRED(port) ((port) ? hpd1_irq_deferred : \
- hpd0_irq_deferred)
+#define PORT_TO_HPD_IRQ_DEFERRED(port) ((port) ? \
+ &hpd1_irq_deferred_data : \
+ &hpd0_irq_deferred_data)
static int svdm_dp_attention(int port, uint32_t *payload)
{
diff --git a/board/dingdong/board.c b/board/dingdong/board.c
index 5091494dfb..ae79cb5b6b 100644
--- a/board/dingdong/board.c
+++ b/board/dingdong/board.c
@@ -74,7 +74,7 @@ void hpd_event(enum gpio_signal signal)
hpd_prev_ts = now.val;
/* All previous hpd level events need to be re-triggered */
- hook_call_deferred(hpd_lvl_deferred, -1);
+ hook_call_deferred(&hpd_lvl_deferred_data, -1);
/* It's a glitch. Previous time moves but level is the same. */
if (cur_delta < HPD_USTREAM_DEBOUNCE_IRQ)
@@ -83,9 +83,10 @@ void hpd_event(enum gpio_signal signal)
if ((!hpd_prev_level && level) &&
(cur_delta < HPD_USTREAM_DEBOUNCE_LVL))
/* It's an irq */
- hook_call_deferred(hpd_irq_deferred, 0);
+ hook_call_deferred(&hpd_irq_deferred_data, 0);
else if (cur_delta >= HPD_USTREAM_DEBOUNCE_LVL)
- hook_call_deferred(hpd_lvl_deferred, HPD_USTREAM_DEBOUNCE_LVL);
+ hook_call_deferred(&hpd_lvl_deferred_data,
+ HPD_USTREAM_DEBOUNCE_LVL);
hpd_prev_level = level;
}
diff --git a/board/elm/board.c b/board/elm/board.c
index 8d02e76dca..ee2d6275c0 100644
--- a/board/elm/board.c
+++ b/board/elm/board.c
@@ -171,23 +171,25 @@ static struct mutex dp_hw_lock;
* Reset PD MCU
* ANX7688 needs a reset pulse of 50ms after power enable.
*/
+void deferred_reset_pd_mcu(void);
+DECLARE_DEFERRED(deferred_reset_pd_mcu);
+
void deferred_reset_pd_mcu(void)
{
if (!gpio_get_level(GPIO_USB_C0_RST)) {
gpio_set_level(GPIO_USB_C0_RST, 1);
- hook_call_deferred(deferred_reset_pd_mcu, 50 * MSEC);
+ hook_call_deferred(&deferred_reset_pd_mcu_data, 50 * MSEC);
} else {
gpio_set_level(GPIO_USB_C0_RST, 0);
}
}
-DECLARE_DEFERRED(deferred_reset_pd_mcu);
void board_reset_pd_mcu(void)
{
/* Perform ANX7688 startup sequence */
gpio_set_level(GPIO_USB_C0_PWR_EN_L, 0);
gpio_set_level(GPIO_USB_C0_RST, 0);
- hook_call_deferred(deferred_reset_pd_mcu, 0);
+ hook_call_deferred(&deferred_reset_pd_mcu_data, 0);
}
/**
@@ -357,7 +359,7 @@ void board_typec_dp_on(int port)
board_typec_set_dp_hpd(port, 1);
} else {
board_typec_set_dp_hpd(port, 0);
- hook_call_deferred(hpd_irq_deferred,
+ hook_call_deferred(&hpd_irq_deferred_data,
HPD_DSTREAM_DEBOUNCE_IRQ);
}
}
@@ -431,7 +433,7 @@ DECLARE_DEFERRED(tmp432_set_power_deferred);
static void board_extpower(void)
{
board_extpower_buffer_to_soc();
- hook_call_deferred(tmp432_set_power_deferred, 0);
+ hook_call_deferred(&tmp432_set_power_deferred_data, 0);
}
DECLARE_HOOK(HOOK_AC_CHANGE, board_extpower, HOOK_PRIO_DEFAULT);
@@ -454,14 +456,14 @@ DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_chipset_shutdown, HOOK_PRIO_DEFAULT);
/* Called on AP S3 -> S0 transition */
static void board_chipset_resume(void)
{
- hook_call_deferred(tmp432_set_power_deferred, 0);
+ hook_call_deferred(&tmp432_set_power_deferred_data, 0);
}
DECLARE_HOOK(HOOK_CHIPSET_RESUME, board_chipset_resume, HOOK_PRIO_DEFAULT);
/* Called on AP S0 -> S3 transition */
static void board_chipset_suspend(void)
{
- hook_call_deferred(tmp432_set_power_deferred, 0);
+ hook_call_deferred(&tmp432_set_power_deferred_data, 0);
}
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, board_chipset_suspend, HOOK_PRIO_DEFAULT);
diff --git a/board/glados/board.c b/board/glados/board.c
index 08ed832fa6..8855ae9518 100644
--- a/board/glados/board.c
+++ b/board/glados/board.c
@@ -88,10 +88,11 @@ void usb1_evt(enum gpio_signal signal)
* state of GPIOs, so its definition must reside after including gpio_list.
*/
static void enable_input_devices(void);
+DECLARE_DEFERRED(enable_input_devices);
void tablet_mode_interrupt(enum gpio_signal signal)
{
- hook_call_deferred(enable_input_devices, 0);
+ hook_call_deferred(&enable_input_devices_data, 0);
}
#include "gpio_list.h"
@@ -380,14 +381,13 @@ static void enable_input_devices(void)
keyboard_scan_enable(kb_enable, KB_SCAN_DISABLE_LID_ANGLE);
gpio_set_level(GPIO_ENABLE_TOUCHPAD, tp_enable);
}
-DECLARE_DEFERRED(enable_input_devices);
/* Called on AP S5 -> S3 transition */
static void board_chipset_startup(void)
{
gpio_set_level(GPIO_USB1_ENABLE, 1);
gpio_set_level(GPIO_USB2_ENABLE, 1);
- hook_call_deferred(enable_input_devices, 0);
+ hook_call_deferred(&enable_input_devices_data, 0);
}
DECLARE_HOOK(HOOK_CHIPSET_STARTUP, board_chipset_startup, HOOK_PRIO_DEFAULT);
@@ -396,7 +396,7 @@ static void board_chipset_shutdown(void)
{
gpio_set_level(GPIO_USB1_ENABLE, 0);
gpio_set_level(GPIO_USB2_ENABLE, 0);
- hook_call_deferred(enable_input_devices, 0);
+ hook_call_deferred(&enable_input_devices_data, 0);
}
DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_chipset_shutdown, HOOK_PRIO_DEFAULT);
diff --git a/board/glados/usb_pd_policy.c b/board/glados/usb_pd_policy.c
index e07454e887..d50450d557 100644
--- a/board/glados/usb_pd_policy.c
+++ b/board/glados/usb_pd_policy.c
@@ -304,8 +304,9 @@ static void hpd1_irq_deferred(void)
DECLARE_DEFERRED(hpd0_irq_deferred);
DECLARE_DEFERRED(hpd1_irq_deferred);
-#define PORT_TO_HPD_IRQ_DEFERRED(port) ((port) ? hpd1_irq_deferred : \
- hpd0_irq_deferred)
+#define PORT_TO_HPD_IRQ_DEFERRED(port) ((port) ? \
+ &hpd1_irq_deferred_data : \
+ &hpd0_irq_deferred_data)
static int svdm_dp_attention(int port, uint32_t *payload)
{
diff --git a/board/glados_pd/board.c b/board/glados_pd/board.c
index 230cc1ea2d..930f3eb66d 100644
--- a/board/glados_pd/board.c
+++ b/board/glados_pd/board.c
@@ -141,7 +141,7 @@ static int ec_status_host_cmd(struct host_cmd_handler_args *args)
/* Have the PD follow the EC into hibernate. */
if (p->status & EC_STATUS_HIBERNATING)
- hook_call_deferred(system_hibernate_deferred, 0);
+ hook_call_deferred(&system_hibernate_deferred_data, 0);
/*
* If the source of the EC int line was HOST_EVENT, it has
diff --git a/board/hoho/board.c b/board/hoho/board.c
index 93329a4001..e6258f19b4 100644
--- a/board/hoho/board.c
+++ b/board/hoho/board.c
@@ -76,7 +76,7 @@ void hpd_event(enum gpio_signal signal)
hpd_prev_ts = now.val;
/* All previous hpd level events need to be re-triggered */
- hook_call_deferred(hpd_lvl_deferred, -1);
+ hook_call_deferred(&hpd_lvl_deferred_data, -1);
/* It's a glitch. Previous time moves but level is the same. */
if (cur_delta < HPD_USTREAM_DEBOUNCE_IRQ)
@@ -85,9 +85,10 @@ void hpd_event(enum gpio_signal signal)
if ((!hpd_prev_level && level) &&
(cur_delta < HPD_USTREAM_DEBOUNCE_LVL))
/* It's an irq */
- hook_call_deferred(hpd_irq_deferred, 0);
+ hook_call_deferred(&hpd_irq_deferred_data, 0);
else if (cur_delta >= HPD_USTREAM_DEBOUNCE_LVL)
- hook_call_deferred(hpd_lvl_deferred, HPD_USTREAM_DEBOUNCE_LVL);
+ hook_call_deferred(&hpd_lvl_deferred_data,
+ HPD_USTREAM_DEBOUNCE_LVL);
hpd_prev_level = level;
}
@@ -167,7 +168,7 @@ static void board_init(void)
gpio_set_level(GPIO_STM_READY, 1); /* factory test only */
/* Delay needed to allow HDMI MCU to boot. */
- hook_call_deferred(factory_validation_deferred, 200*MSEC);
+ hook_call_deferred(&factory_validation_deferred_data, 200*MSEC);
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
diff --git a/board/honeybuns/board.c b/board/honeybuns/board.c
index 3315418fc2..7c23b39ef1 100644
--- a/board/honeybuns/board.c
+++ b/board/honeybuns/board.c
@@ -81,7 +81,7 @@ void hpd_event(enum gpio_signal signal)
hpd_prev_ts = now.val;
/* All previous hpd level events need to be re-triggered */
- hook_call_deferred(hpd_lvl_deferred, -1);
+ hook_call_deferred(&hpd_lvl_deferred_data, -1);
/* It's a glitch. Previous time moves but level is the same. */
if (cur_delta < HPD_USTREAM_DEBOUNCE_IRQ)
@@ -90,9 +90,10 @@ void hpd_event(enum gpio_signal signal)
if ((!hpd_prev_level && level) &&
(cur_delta < HPD_USTREAM_DEBOUNCE_LVL))
/* It's an irq */
- hook_call_deferred(hpd_irq_deferred, 0);
+ hook_call_deferred(&hpd_irq_deferred_data, 0);
else if (cur_delta >= HPD_USTREAM_DEBOUNCE_LVL)
- hook_call_deferred(hpd_lvl_deferred, HPD_USTREAM_DEBOUNCE_LVL);
+ hook_call_deferred(&hpd_lvl_deferred_data,
+ HPD_USTREAM_DEBOUNCE_LVL);
hpd_prev_level = level;
}
diff --git a/board/kunimitsu/usb_pd_policy.c b/board/kunimitsu/usb_pd_policy.c
index e07454e887..d50450d557 100644
--- a/board/kunimitsu/usb_pd_policy.c
+++ b/board/kunimitsu/usb_pd_policy.c
@@ -304,8 +304,9 @@ static void hpd1_irq_deferred(void)
DECLARE_DEFERRED(hpd0_irq_deferred);
DECLARE_DEFERRED(hpd1_irq_deferred);
-#define PORT_TO_HPD_IRQ_DEFERRED(port) ((port) ? hpd1_irq_deferred : \
- hpd0_irq_deferred)
+#define PORT_TO_HPD_IRQ_DEFERRED(port) ((port) ? \
+ &hpd1_irq_deferred_data : \
+ &hpd0_irq_deferred_data)
static int svdm_dp_attention(int port, uint32_t *payload)
{
diff --git a/board/lars/usb_pd_policy.c b/board/lars/usb_pd_policy.c
index 3010df52fb..c4c071a121 100644
--- a/board/lars/usb_pd_policy.c
+++ b/board/lars/usb_pd_policy.c
@@ -311,7 +311,8 @@ static int svdm_dp_attention(int port, uint32_t *payload)
if (irq & cur_lvl) {
gpio_set_level(GPIO_USB_C0_DP_HPD, 0);
- hook_call_deferred(hpd0_irq_deferred, HPD_DSTREAM_DEBOUNCE_IRQ);
+ hook_call_deferred(&hpd0_irq_deferred_data,
+ HPD_DSTREAM_DEBOUNCE_IRQ);
} else if (irq & !cur_lvl) {
CPRINTF("ERR:HPD:IRQ&LOW\n");
return 0; /* nak */
diff --git a/board/lars_pd/board.c b/board/lars_pd/board.c
index 1354e03b24..e3bbd46598 100644
--- a/board/lars_pd/board.c
+++ b/board/lars_pd/board.c
@@ -135,7 +135,7 @@ static int ec_status_host_cmd(struct host_cmd_handler_args *args)
/* Have the PD follow the EC into hibernate. */
if (p->status & EC_STATUS_HIBERNATING)
- hook_call_deferred(system_hibernate_deferred, 0);
+ hook_call_deferred(&system_hibernate_deferred_data, 0);
/*
* If the source of the EC int line was HOST_EVENT, it has
diff --git a/board/lucid/board.c b/board/lucid/board.c
index a396f0b547..f5f03e2895 100644
--- a/board/lucid/board.c
+++ b/board/lucid/board.c
@@ -105,7 +105,8 @@ void vbus_evt(enum gpio_signal signal)
* lucid only has one port and charging is always enabled.
*/
- hook_call_deferred(usb_charger_bc12_detect, USB_CHG_DETECT_DELAY_US);
+ hook_call_deferred(&usb_charger_bc12_detect_data,
+ USB_CHG_DETECT_DELAY_US);
update_vbus_supplier(gpio_get_level(signal));
task_wake(TASK_ID_PD_C0);
diff --git a/board/oak/board.c b/board/oak/board.c
index 9f770d8865..f66c35acee 100644
--- a/board/oak/board.c
+++ b/board/oak/board.c
@@ -396,8 +396,8 @@ void board_typec_dp_on(int port)
board_typec_set_dp_hpd(port, 1);
} else {
board_typec_set_dp_hpd(port, 0);
- hook_call_deferred(hpd_irq_deferred,
- HPD_DSTREAM_DEBOUNCE_IRQ);
+ hook_call_deferred(&hpd_irq_deferred_data,
+ HPD_DSTREAM_DEBOUNCE_IRQ);
}
}
@@ -589,7 +589,7 @@ static void board_extpower(void)
{
board_extpower_buffer_to_soc();
#ifdef CONFIG_TEMP_SENSOR_TMP432
- hook_call_deferred(tmp432_set_power_deferred, 0);
+ hook_call_deferred(&tmp432_set_power_deferred_data, 0);
#endif
}
DECLARE_HOOK(HOOK_AC_CHANGE, board_extpower, HOOK_PRIO_DEFAULT);
@@ -625,7 +625,7 @@ DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_chipset_shutdown, HOOK_PRIO_DEFAULT);
static void board_chipset_resume(void)
{
#ifdef CONFIG_TEMP_SENSOR_TMP432
- hook_call_deferred(tmp432_set_power_deferred, 0);
+ hook_call_deferred(&tmp432_set_power_deferred_data, 0);
#endif
}
DECLARE_HOOK(HOOK_CHIPSET_RESUME, board_chipset_resume, HOOK_PRIO_DEFAULT);
@@ -634,7 +634,7 @@ DECLARE_HOOK(HOOK_CHIPSET_RESUME, board_chipset_resume, HOOK_PRIO_DEFAULT);
static void board_chipset_suspend(void)
{
#ifdef CONFIG_TEMP_SENSOR_TMP432
- hook_call_deferred(tmp432_set_power_deferred, 0);
+ hook_call_deferred(&tmp432_set_power_deferred_data, 0);
#endif
}
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, board_chipset_suspend, HOOK_PRIO_DEFAULT);
diff --git a/board/plankton/board.c b/board/plankton/board.c
index d52f94bca5..a0cd041724 100644
--- a/board/plankton/board.c
+++ b/board/plankton/board.c
@@ -104,7 +104,8 @@ void hpd_event(enum gpio_signal signal)
hpd_prev_ts = now.val;
/* All previous hpd level events need to be re-triggered */
- hook_call_deferred(hpd_lvl_deferred, HPD_USTREAM_DEBOUNCE_LVL);
+ hook_call_deferred(&hpd_lvl_deferred_data,
+ HPD_USTREAM_DEBOUNCE_LVL);
}
/* Debounce time for voltage buttons */
@@ -177,13 +178,17 @@ static void set_active_cc(int cc)
* is detected. If a type-C connection can be made in both polarities, then we
* have a double CC cable, otherwise we have a single CC cable.
*/
+static void detect_cc_cable(void);
+DECLARE_DEFERRED(detect_cc_cable);
+
static void detect_cc_cable(void)
{
/*
* Delay long enough to guarantee a type-C disconnect will be seen and
* a new connection will be made made.
*/
- hook_call_deferred(detect_cc_cable, PD_T_CC_DEBOUNCE + PD_T_SAFE_0V);
+ hook_call_deferred(&detect_cc_cable_data,
+ PD_T_CC_DEBOUNCE + PD_T_SAFE_0V);
switch (cable) {
case TYPEC_CABLE_NONE:
@@ -210,7 +215,6 @@ static void detect_cc_cable(void)
break;
}
}
-DECLARE_DEFERRED(detect_cc_cable);
static void fake_disconnect_end(void)
{
@@ -218,14 +222,14 @@ static void fake_disconnect_end(void)
board_pd_set_host_mode(fake_pd_host_mode);
/* Restart CC cable detection */
- hook_call_deferred(detect_cc_cable, 500*MSEC);
+ hook_call_deferred(&detect_cc_cable_data, 500*MSEC);
}
DECLARE_DEFERRED(fake_disconnect_end);
static void fake_disconnect_start(void)
{
/* Cancel detection of CC cable */
- hook_call_deferred(detect_cc_cable, -1);
+ hook_call_deferred(&detect_cc_cable_data, -1);
/* Record the current host mode */
fake_pd_host_mode = !gpio_get_level(GPIO_USBC_CHARGE_EN);
@@ -241,7 +245,7 @@ static void fake_disconnect_start(void)
fake_pd_disconnected = 1;
- hook_call_deferred(fake_disconnect_end,
+ hook_call_deferred(&fake_disconnect_end_data,
fake_pd_disconnect_duration_us);
}
DECLARE_DEFERRED(fake_disconnect_start);
@@ -261,7 +265,7 @@ static void update_usbc_dual_role(int dual_role)
* since both CC lines are used and SRC/SNK changes are dictated
* by the USB PD protocol state machine.
*/
- hook_call_deferred(detect_cc_cable, -1);
+ hook_call_deferred(&detect_cc_cable_data, -1);
/* Need to make sure both CC lines are set for SNK or SRC. */
set_active_cc(host_mode);
/* Ensure that PD communication is enabled. */
@@ -272,7 +276,7 @@ static void update_usbc_dual_role(int dual_role)
* Dualrole mode is not active, resume cable detect function
* which controls which CC line is active.
*/
- hook_call_deferred(detect_cc_cable, 0);
+ hook_call_deferred(&detect_cc_cable_data, 0);
}
/* Update dual role setting used in USB PD protocol state machine */
pd_set_dual_role(dual_role);
@@ -335,10 +339,10 @@ static void set_usbc_action(enum usbc_action act)
* Fake a disconnection for long enough to guarantee
* that we disconnect.
*/
- hook_call_deferred(fake_disconnect_start, -1);
- hook_call_deferred(fake_disconnect_end, -1);
+ hook_call_deferred(&fake_disconnect_start_data, -1);
+ hook_call_deferred(&fake_disconnect_end_data, -1);
fake_pd_disconnect_duration_us = PD_T_SAFE_0V;
- hook_call_deferred(fake_disconnect_start, 0);
+ hook_call_deferred(&fake_disconnect_start_data, 0);
set_active_cc(!active_cc);
}
break;
@@ -370,10 +374,13 @@ static void set_usbc_action(enum usbc_action act)
/* has Pull-up */
static int prev_dbg20v = 1;
+
static void button_dbg20v_deferred(void);
+DECLARE_DEFERRED(button_dbg20v_deferred);
+
static void enable_dbg20v_poll(void)
{
- hook_call_deferred(button_dbg20v_deferred, 10 * MSEC);
+ hook_call_deferred(&button_dbg20v_deferred_data, 10 * MSEC);
}
/* Handle debounced button press */
@@ -427,7 +434,7 @@ void button_event(enum gpio_signal signal)
{
button_pressed = signal;
/* reset debounce time */
- hook_call_deferred(button_deferred, BUTTON_DEBOUNCE_US);
+ hook_call_deferred(&button_deferred_data, BUTTON_DEBOUNCE_US);
}
static void button_dbg20v_deferred(void)
@@ -437,7 +444,6 @@ static void button_dbg20v_deferred(void)
else
enable_dbg20v_poll();
}
-DECLARE_DEFERRED(button_dbg20v_deferred);
void vbus_event(enum gpio_signal signal)
{
@@ -729,10 +735,11 @@ static void board_init(void)
/* Initialize USB hub */
if (system_get_reset_flags() & RESET_FLAG_POWER_ON)
- hook_call_deferred(board_usb_hub_reset_no_return, 500 * MSEC);
+ hook_call_deferred(&board_usb_hub_reset_no_return_data,
+ 500 * MSEC);
/* Start detecting CC cable type */
- hook_call_deferred(detect_cc_cable, SECOND);
+ hook_call_deferred(&detect_cc_cable_data, SECOND);
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
@@ -752,11 +759,11 @@ static int cmd_fake_disconnect(int argc, char *argv[])
return EC_ERROR_PARAM2;
/* Cancel any pending function calls */
- hook_call_deferred(fake_disconnect_start, -1);
- hook_call_deferred(fake_disconnect_end, -1);
+ hook_call_deferred(&fake_disconnect_start_data, -1);
+ hook_call_deferred(&fake_disconnect_end_data, -1);
fake_pd_disconnect_duration_us = duration_ms * MSEC;
- hook_call_deferred(fake_disconnect_start, delay_ms * MSEC);
+ hook_call_deferred(&fake_disconnect_start_data, delay_ms * MSEC);
ccprintf("Fake disconnect for %d ms starting in %d ms.\n",
duration_ms, delay_ms);
@@ -779,7 +786,7 @@ static int cmd_trigger_dfu(int argc, char *argv[])
ccprintf("Asserting CASE_CLOSE_DFU_L.\n");
ccprintf("If you expect to see DFU debug but it doesn't show up,\n");
ccprintf("try flipping the USB type-C cable.\n");
- hook_call_deferred(trigger_dfu_release, 1500 * MSEC);
+ hook_call_deferred(&trigger_dfu_release_data, 1500 * MSEC);
return EC_SUCCESS;
}
DECLARE_CONSOLE_COMMAND(dfu, cmd_trigger_dfu, NULL, NULL, NULL);
diff --git a/board/ryu/usb_pd_policy.c b/board/ryu/usb_pd_policy.c
index b600edb427..e4b45bece0 100644
--- a/board/ryu/usb_pd_policy.c
+++ b/board/ryu/usb_pd_policy.c
@@ -331,7 +331,7 @@ static int svdm_dp_attention(int port, uint32_t *payload)
if (irq & cur_lvl) {
gpio_set_level(GPIO_USBC_DP_HPD, 0);
- hook_call_deferred(hpd_irq_deferred,
+ hook_call_deferred(&hpd_irq_deferred_data,
HPD_DSTREAM_DEBOUNCE_IRQ);
} else if (irq & !cur_lvl) {
CPRINTF("ERR:HPD:IRQ&LOW\n");
diff --git a/board/samus/extpower.c b/board/samus/extpower.c
index b842f7d3ea..e54cb52a80 100644
--- a/board/samus/extpower.c
+++ b/board/samus/extpower.c
@@ -177,7 +177,7 @@ DECLARE_DEFERRED(allow_min_charging);
static void extpower_board_hacks(int extpower, int extpower_prev)
{
/* Cancel deferred attempt to enable max charge request */
- hook_call_deferred(allow_max_request, -1);
+ hook_call_deferred(&allow_max_request_data, -1);
/*
* When AC is detected, delay briefly before allowing PD
@@ -197,7 +197,7 @@ static void extpower_board_hacks(int extpower, int extpower_prev)
if (extpower && !extpower_prev) {
/* AC connected */
charger_disable(0);
- hook_call_deferred(allow_max_request, 500*MSEC);
+ hook_call_deferred(&allow_max_request_data, 500*MSEC);
set_pp5000_in_g3(PP5000_IN_G3_AC, 1);
} else if (extpower && extpower_prev) {
/*
@@ -213,7 +213,7 @@ static void extpower_board_hacks(int extpower, int extpower_prev)
charger_disable(1);
- hook_call_deferred(allow_min_charging, 100*MSEC);
+ hook_call_deferred(&allow_min_charging_data, 100*MSEC);
set_pp5000_in_g3(PP5000_IN_G3_AC, 0);
}
extpower_prev = extpower;
diff --git a/board/samus/panel.c b/board/samus/panel.c
index e29d0b9e60..970197b9c8 100644
--- a/board/samus/panel.c
+++ b/board/samus/panel.c
@@ -163,7 +163,7 @@ void backlight_interrupt(enum gpio_signal signal)
* PCH indicates it is turning on backlight so we should
* attempt to put the backlight controller into PWM mode.
*/
- hook_call_deferred(lp8555_enable_pwm_mode, 0);
+ hook_call_deferred(&lp8555_enable_pwm_mode_data, 0);
}
/**
@@ -177,7 +177,7 @@ static void update_backlight(void)
*/
gpio_set_level(GPIO_ENABLE_BACKLIGHT, lid_is_open());
if (lid_is_open())
- hook_call_deferred(lp8555_enable_pwm_mode, 0);
+ hook_call_deferred(&lp8555_enable_pwm_mode_data, 0);
}
DECLARE_HOOK(HOOK_LID_CHANGE, update_backlight, HOOK_PRIO_DEFAULT);
diff --git a/board/samus_pd/board.c b/board/samus_pd/board.c
index 270c82e7e9..80e99dd9da 100644
--- a/board/samus_pd/board.c
+++ b/board/samus_pd/board.c
@@ -178,7 +178,7 @@ DECLARE_DEFERRED(pch_evt_deferred);
void pch_evt(enum gpio_signal signal)
{
- hook_call_deferred(pch_evt_deferred, 0);
+ hook_call_deferred(&pch_evt_deferred_data, 0);
}
void board_config_pre_init(void)
diff --git a/board/samus_pd/usb_pd_policy.c b/board/samus_pd/usb_pd_policy.c
index 18b5ff8f20..7b51e3e38e 100644
--- a/board/samus_pd/usb_pd_policy.c
+++ b/board/samus_pd/usb_pd_policy.c
@@ -319,8 +319,9 @@ static void hpd1_irq_deferred(void)
DECLARE_DEFERRED(hpd0_irq_deferred);
DECLARE_DEFERRED(hpd1_irq_deferred);
-#define PORT_TO_HPD_IRQ_DEFERRED(port) ((port) ? hpd1_irq_deferred : \
- hpd0_irq_deferred)
+#define PORT_TO_HPD_IRQ_DEFERRED(port) ((port) ? \
+ &hpd1_irq_deferred_data : \
+ &hpd0_irq_deferred_data)
static int svdm_dp_attention(int port, uint32_t *payload)
{
diff --git a/board/strago/usb_pd_policy.c b/board/strago/usb_pd_policy.c
index 6be4c83417..162c8a0d5e 100644
--- a/board/strago/usb_pd_policy.c
+++ b/board/strago/usb_pd_policy.c
@@ -301,7 +301,7 @@ static int svdm_dp_attention(int port, uint32_t *payload)
if (irq & cur_lvl) {
gpio_set_level(hpd, 0);
- hook_call_deferred(hpd0_irq_deferred,
+ hook_call_deferred(&hpd0_irq_deferred_data,
HPD_DSTREAM_DEBOUNCE_IRQ);
} else if (irq & !cur_lvl) {
CPRINTF("ERR:HPD:IRQ&LOW\n");
diff --git a/board/twinkie/sniffer.c b/board/twinkie/sniffer.c
index 77eefb20f9..64e0060010 100644
--- a/board/twinkie/sniffer.c
+++ b/board/twinkie/sniffer.c
@@ -119,7 +119,7 @@ static void vbus_vol_read_deferred(void)
vbus_vol_tail = (flag_started == 0) ? 1 : vbus_vol_tail + 1;
}
- hook_call_deferred(vbus_vol_read_deferred, DEFERRED_READ_TIME_US);
+ hook_call_deferred(&vbus_vol_read_deferred_data, DEFERRED_READ_TIME_US);
}
DECLARE_DEFERRED(vbus_vol_read_deferred);
@@ -149,7 +149,8 @@ static void vbus_curr_read_deferred(void)
vbus_curr_tail = (flag_started == 0) ? 1 : vbus_curr_tail + 1;
}
- hook_call_deferred(vbus_curr_read_deferred, DEFERRED_READ_TIME_US);
+ hook_call_deferred(&vbus_curr_read_deferred_data,
+ DEFERRED_READ_TIME_US);
}
DECLARE_DEFERRED(vbus_curr_read_deferred);
#endif
@@ -364,8 +365,8 @@ void sniffer_init(void)
/* whether the sniffer task have started sending packet */
flag_started = 0;
- hook_call_deferred(vbus_vol_read_deferred, 0);
- hook_call_deferred(vbus_curr_read_deferred, 0);
+ hook_call_deferred(&vbus_vol_read_deferred_data, 0);
+ hook_call_deferred(&vbus_curr_read_deferred_data, 0);
#endif
/* remap TIM1 CH1/2/3 to DMA channel 6 */
diff --git a/board/wheatley/board.c b/board/wheatley/board.c
index ba6fce0f7f..f8754eae0c 100644
--- a/board/wheatley/board.c
+++ b/board/wheatley/board.c
@@ -88,10 +88,11 @@ void usb1_evt(enum gpio_signal signal)
* state of GPIOs, so its definition must reside after including gpio_list.
*/
static void enable_input_devices(void);
+DECLARE_DEFERRED(enable_input_devices);
void tablet_mode_interrupt(enum gpio_signal signal)
{
- hook_call_deferred(enable_input_devices, 0);
+ hook_call_deferred(&enable_input_devices_data, 0);
}
#include "gpio_list.h"
@@ -328,14 +329,13 @@ static void enable_input_devices(void)
keyboard_scan_enable(kb_enable, KB_SCAN_DISABLE_LID_ANGLE);
gpio_set_level(GPIO_ENABLE_TOUCHPAD, tp_enable);
}
-DECLARE_DEFERRED(enable_input_devices);
/* Called on AP S5 -> S3 transition */
static void board_chipset_startup(void)
{
gpio_set_level(GPIO_USB1_ENABLE, 1);
gpio_set_level(GPIO_USB2_ENABLE, 1);
- hook_call_deferred(enable_input_devices, 0);
+ hook_call_deferred(&enable_input_devices_data, 0);
}
DECLARE_HOOK(HOOK_CHIPSET_STARTUP, board_chipset_startup, HOOK_PRIO_DEFAULT);
@@ -344,7 +344,7 @@ static void board_chipset_shutdown(void)
{
gpio_set_level(GPIO_USB1_ENABLE, 0);
gpio_set_level(GPIO_USB2_ENABLE, 0);
- hook_call_deferred(enable_input_devices, 0);
+ hook_call_deferred(&enable_input_devices_data, 0);
}
DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_chipset_shutdown, HOOK_PRIO_DEFAULT);
diff --git a/board/wheatley/usb_pd_policy.c b/board/wheatley/usb_pd_policy.c
index ff88ede3bc..5f0f8c5761 100644
--- a/board/wheatley/usb_pd_policy.c
+++ b/board/wheatley/usb_pd_policy.c
@@ -299,8 +299,9 @@ static void hpd1_irq_deferred(void)
DECLARE_DEFERRED(hpd0_irq_deferred);
DECLARE_DEFERRED(hpd1_irq_deferred);
-#define PORT_TO_HPD_IRQ_DEFERRED(port) ((port) ? hpd1_irq_deferred : \
- hpd0_irq_deferred)
+#define PORT_TO_HPD_IRQ_DEFERRED(port) ((port) ? \
+ &hpd1_irq_deferred_data : \
+ &hpd0_irq_deferred_data)
static int svdm_dp_attention(int port, uint32_t *payload)
{