diff options
author | Anton Staaf <robotboy@chromium.org> | 2016-03-23 12:45:28 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-04-18 17:32:40 -0700 |
commit | 068cd0850684ee28a5a514e5a270edce2edb3979 (patch) | |
tree | e84f2316e37baa72f1c9611e665749d91a3ce8fd /board | |
parent | 1e7c280491232110e1006d545f9a61ca05d469d5 (diff) | |
download | chrome-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.c | 8 | ||||
-rw-r--r-- | board/amenia/usb_pd_policy.c | 5 | ||||
-rw-r--r-- | board/chell/usb_pd_policy.c | 5 | ||||
-rw-r--r-- | board/dingdong/board.c | 7 | ||||
-rw-r--r-- | board/elm/board.c | 16 | ||||
-rw-r--r-- | board/glados/board.c | 8 | ||||
-rw-r--r-- | board/glados/usb_pd_policy.c | 5 | ||||
-rw-r--r-- | board/glados_pd/board.c | 2 | ||||
-rw-r--r-- | board/hoho/board.c | 9 | ||||
-rw-r--r-- | board/honeybuns/board.c | 7 | ||||
-rw-r--r-- | board/kunimitsu/usb_pd_policy.c | 5 | ||||
-rw-r--r-- | board/lars/usb_pd_policy.c | 3 | ||||
-rw-r--r-- | board/lars_pd/board.c | 2 | ||||
-rw-r--r-- | board/lucid/board.c | 3 | ||||
-rw-r--r-- | board/oak/board.c | 10 | ||||
-rw-r--r-- | board/plankton/board.c | 47 | ||||
-rw-r--r-- | board/ryu/usb_pd_policy.c | 2 | ||||
-rw-r--r-- | board/samus/extpower.c | 6 | ||||
-rw-r--r-- | board/samus/panel.c | 4 | ||||
-rw-r--r-- | board/samus_pd/board.c | 2 | ||||
-rw-r--r-- | board/samus_pd/usb_pd_policy.c | 5 | ||||
-rw-r--r-- | board/strago/usb_pd_policy.c | 2 | ||||
-rw-r--r-- | board/twinkie/sniffer.c | 9 | ||||
-rw-r--r-- | board/wheatley/board.c | 8 | ||||
-rw-r--r-- | board/wheatley/usb_pd_policy.c | 5 |
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) { |