diff options
Diffstat (limited to 'board/willow/analyzestack.yaml')
-rw-r--r-- | board/willow/analyzestack.yaml | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/board/willow/analyzestack.yaml b/board/willow/analyzestack.yaml new file mode 100644 index 0000000000..76f8f523f2 --- /dev/null +++ b/board/willow/analyzestack.yaml @@ -0,0 +1,246 @@ +# Check cortex-m/switch.S +exception_frame_size: 64 +add: +# TCPC functions, see fusb302_tcpm_drv struct. + tcpm_init[driver/tcpm/tcpm.h:121]: + - fusb302_tcpm_init + tcpm_release[driver/tcpm/tcpm.h:134]: + - fusb302_tcpm_release, + tcpm_select_rp_value[driver/tcpm/tcpm.h:150]: + - fusb302_tcpm_select_rp_value + tcpm_set_msg_header[driver/tcpm/tcpm.h:170]: + - fusb302_tcpm_set_msg_header + tcpm_enter_low_power_mode[driver/tcpm/tcpm.h:234]: + - fusb302_tcpm_enter_low_power_mode + tcpm_transmit[driver/tcpm/tcpm.h:188]: + - fusb302_tcpm_transmit + tcpm_get_cc[driver/tcpm/tcpm.h:140]: + - fusb302_tcpm_get_cc + tcpm_set_rx_enable[driver/tcpm/tcpm.h:176]: + - fusb302_tcpm_set_rx_enable + tcpm_set_vconn[driver/tcpm/tcpm.h:165]: + - fusb302_tcpm_set_vconn + tcpm_set_polarity[driver/tcpm/tcpm.h:160]: + - fusb302_tcpm_set_polarity + tcpm_set_cc[driver/tcpm/tcpm.h:155]: + - fusb302_tcpm_set_cc + tcpm_get_vbus_level[driver/tcpm/tcpm.h:145]: + - fusb302_tcpm_get_vbus_level + tcpm_enqueue_message[driver/tcpm/tcpci.c:468]: + - fusb302_tcpm_get_message_raw +# USB mux, see it5205_usb_mux_driver + usb_mux_flip[driver/usb_mux/usb_mux.c:164]: #get + - it5205_set_mux + usb_mux_flip[driver/usb_mux/usb_mux.c:175]: #set + - it5205_get_mux + usb_mux_init[driver/usb_mux/usb_mux.c:65]: #init + - it5205_init + usb_mux_init[driver/usb_mux/usb_mux.c:76]: # board_init + - None + enter_low_power_mode[driver/usb_mux/usb_mux.c:43]: + - it5205_enter_low_power_mode + usb_mux_set[driver/usb_mux/usb_mux.c:113]: + - it5205_set_mux + hc_usb_pd_mux_info[driver/usb_mux/usb_mux.c:241]: + - it5205_get_mux + usb_mux_get[driver/usb_mux/usb_mux.c:141]: + - it5205_get_mux +# usb_mux hpd_update + svdm_dp_post_config[baseboard/kukui/usb_pd_policy.c:200]: + - board_hpd_status + svdm_exit_dp_mode[baseboard/kukui/usb_pd_policy.c:263]: + - board_hpd_status + svdm_dp_attention[baseboard/kukui/usb_pd_policy.c:219]: + - board_hpd_status +# USB PD policy, see struct svdm_amode_fx + pd_svdm[common/usb_pd_policy.c:766]: + - svdm_dp_status + - svdm_gfu_status + pd_svdm[common/usb_pd_policy.c:777]: + - svdm_dp_config + - svdm_gfu_config + pd_svdm[common/usb_pd_policy.c:783]: + - svdm_dp_post_config + pd_dfp_enter_mode[common/usb_pd_policy.c:440]: + - svdm_enter_dp_mode + - svdm_enter_gfu_mode + pd_dfp_exit_mode[common/usb_pd_policy.c:544]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode + dfp_consume_attention[common/usb_pd_policy.c:478]: + - svdm_dp_attention + - svdm_gfu_attention + pd_dfp_exit_mode[common/usb_pd_policy.c:561]: + - svdm_exit_dp_mode + - svdm_exit_gfu_mode +# Motion sense: bmi160 + motion_sense_set_data_rate[common/motion_sense.c:156]: # set_data_rate + - set_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:175]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_data_rate[common/motion_sense.c:184]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_motion_intervals[common/motion_sense.c:302]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_set_ec_rate_from_ap[common/motion_sense.c:196]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_init[common/motion_sense.c:327]: # init + - init[driver/accelgyro_bmi160.c] + sensor_init_done[common/motion_sense.c:353]: # get_range + - get_range[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:431]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:437]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_shutdown[common/motion_sense.c:440]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:589]: # read + - read[driver/accelgyro_bmi160.c] + motion_sense_read[common/motion_sense.c:576]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + motion_sense_process[common/motion_sense.c:667]: # irq_handler + - irq_handler[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1153]: # set_range + - set_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1164]: # get_range + - get_range[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1179]: # set_offset + - set_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1207]: # set_scale + - set_scale[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1233]: # perform_calib + - perform_calib[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1237]: # get_offset + - get_offset[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1313]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1333]: # list_activities + - list_activities[driver/accelgyro_bmi160.c] + host_cmd_motion_sense[common/motion_sense.c:1337]: # manage_activity + - manage_activity[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1455]: # set_range + - set_range[driver/accelgyro_bmi160.c] + command_accelrange[common/motion_sense.c:1460]: # get_range + - get_range[driver/accelgyro_bmi160.c] + command_accelresolution[common/motion_sense.c:1504]: # set_resolution + - None + command_accelresolution[common/motion_sense.c:1508]: # get_resolution + - get_resolution[driver/accelgyro_bmi160.c] + command_accel_data_rate[common/motion_sense.c:1560]: # get_data_rate + - get_data_rate[driver/accelgyro_bmi160.c] + command_accel_read_xyz[common/motion_sense.c:1595]: # read + - read[driver/accelgyro_bmi160.c] + +# Core + handle_command[common/console.c:248]: + - { name: __cmds, stride: 16, offset: 4 } + hook_task[common/hooks.c:200]: + - { name: __deferred_funcs, stride: 4, offset: 0 } + - { name: __hooks_second, stride: 8, offset: 0 } + - { name: __hooks_tick, stride: 8, offset: 0 } + # Note: This assumes worse case, where all hook functions can be called from + # any hook_notify call + # Generate using `grep hooks_.*_end build/kukui/R*/ec.R*.smap | + # sed -e 's/.*\(__hooks.*\)_end/ - { name: \1, stride: 8, offset: 0 }/' | + # sort -u` + hook_notify[common/hooks.c:130]: + - { name: __hooks_ac_change, stride: 8, offset: 0 } + - { name: __hooks_base_attached_change, stride: 8, offset: 0 } + - { name: __hooks_battery_soc_change, stride: 8, offset: 0 } + - { name: __hooks_chipset_pre_init, stride: 8, offset: 0 } + - { name: __hooks_chipset_reset, stride: 8, offset: 0 } + - { name: __hooks_chipset_resume, stride: 8, offset: 0 } + - { name: __hooks_chipset_shutdown, stride: 8, offset: 0 } + - { name: __hooks_chipset_startup, stride: 8, offset: 0 } + - { name: __hooks_chipset_suspend, stride: 8, offset: 0 } + - { name: __hooks_freq_change, stride: 8, offset: 0 } + - { name: __hooks_lid_change, stride: 8, offset: 0 } + - { name: __hooks_pre_freq_change, stride: 8, offset: 0 } + - { name: __hooks_pwrbtn_change, stride: 8, offset: 0 } + - { name: __hooks_sysjump, stride: 8, offset: 0 } + - { name: __hooks_tablet_mode_change, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_connect, stride: 8, offset: 0 } + - { name: __hooks_usb_pd_disconnect, stride: 8, offset: 0 } + mkbp_get_next_event[common/mkbp_event.c:369]: + - { name: __mkbp_evt_srcs, stride: 8, offset: 4 } + host_command_process[common/host_command.c:708]: + - { name: __hcmds, stride: 12, offset: 0 } + vfnprintf: + # This covers all the addchar in vfnprintf, but stackanalyzer does not + # realize that... + - __tx_char + host_send_response[common/host_command.c:153]: # send_response + - spi_send_response + host_packet_respond[common/host_command.c:240]: + - spi_send_response_packet +# Misc + i2c_command_passthru[common/i2c_master.c:991]: + - None + cprints[common/console_output.c:108]: + - None # I'm not sure what this is?! + chip_i2c_xfer_with_notify[common/i2c_master.c:112]: # i2c_port->drv->xfer + - i2c_bitbang_xfer + default_handler[core/cortex-m0/init.S:100]: + - exception_panic + gpio_interrupt[chip/stm32/gpio.c:154]: + - None + +remove: +# Remove all callsites pointing to panic_assert_fail. +- panic_assert_fail + +# Remove paths that make no sense +# HOOK_USB_PD_DISCONNECT +- [ pd_request_power_swap, set_state.lto_priv.206, hook_notify, + [ motion_sense_shutdown, charger_enable_psys, charger_disable_psys, + system_common_shutdown ] ] +# HOOK_AC_CHANGE/HOOK_BATTERY_SOC_CHANGE +- [ charger_task, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_LID_CHANGE +- [ [ lid_switch_open, lid_switch_close ], hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_BASE_ATTACHED_CHANGE/HOOK_TABLET_MODE_CHANGE +- [ tablet_set_mode, hook_notify, [ system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +# HOOK_POWER_BUTTON_CHANGE +- [ power_button_change_deferred, hook_notify, + [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SECOND +- [ hook_task, hook_notify, [ motion_sense_shutdown, system_common_shutdown ] ] +# HOOK_SYSJUMP +- [ jump_to_image, hook_notify, + [ motion_sense_shutdown, system_common_shutdown, charger_enable_psys, charger_disable_psys ] ] +- [ pd_request_power_swap, set_state, hook_notify, panic_init ] +# set_state(port, PD_STATE_SRC/SNK_SWAP_INIT); will not call these functions +- [ pd_request_power_swap, set_state, + [ pd_dfp_exit_mode, usb_mux_set, pd_power_supply_reset, tcpm_set_vconn ] ] +- [ [ pd_request_data_swap, pd_request_vconn_swap ] , set_state, pd_power_supply_reset ] +# All sensors will be shut down in S5 +- [ motion_sense_shutdown, motion_sense_switch_sensor_rate, + [ motion_sense_set_data_rate, motion_sense_init ] ] +# HOOK_CHIPSET_PRE_INIT, HOOK_CHIPSET_STARTUP, HOOK_CHIPSET_RESUME, +# HOOK_CHIPSET_SUSPEND, HOOK_CHIPSET_SHUTDOWN +- [ chipset_task, hook_notify ] +# TCPC, KEYBOARD, BC12 will not access battery's bitbang +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ], [ i2c_write, i2c_read ], + i2c_xfer_unlocked, i2c_bitbang_xfer ] +- [ [ raw_read8.lto_priv.157, tcpc_read.lto_priv.352, tcpc_write.lto_priv.351, + it8801_ioex_write, it8801_read, it8801_write.lto_priv.336, raw_read16.lto_priv.349, + raw_write16.lto_priv.348, it5205_init.lto_priv.241, it5205_write, + raw_read8, tcpc_read.lto_priv.340 ], + [ i2c_write8, i2c_read8, i2c_write16, i2c_read16 ] , [ i2c_write, i2c_read ], + i2c_xfer, i2c_xfer_unlocked, i2c_bitbang_xfer ] +# PD_INT_C0_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ pd_interrupt_handler_task, fusb302_tcpc_alert, pd_execute_hard_reset, set_state.lto_priv.206, + pd_power_supply_reset, charge_manager_source_port.part.10, charge_manager_save_log.part.9, + charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, reset_device_and_notify ] +# CONSOLE_TASK +# pd_wait_exit_low_power -> reset_device_and_notify can only be called in a pd_task NOT pd_interrupt_handler_task +- [ console_task, command_pd, set_state.lto_priv.206, pd_power_supply_reset, charge_manager_source_port.part.10, + charge_manager_save_log.part.9, charge_manager_fill_power_info, tcpc_read.lto_priv.352, pd_wait_exit_low_power, + reset_device_and_notify ] |