diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 1552375e35ff..6ac7063c9247 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -234,3 +234,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_trans); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_preset); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_post_init_entity_util_avg); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_get_timer); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_adj_current_limit); diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 3107ee9ffccb..3286b6063c33 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -3729,6 +3729,8 @@ static void run_state_machine(struct tcpm_port *port) unsigned int msecs, timer_val_msecs; enum tcpm_state upcoming_state; const char *state_name; + u32 current_limit; + bool adjust; port->enter_state = port->state; switch (port->state) { @@ -4102,9 +4104,13 @@ static void run_state_machine(struct tcpm_port *port) break; case SNK_DISCOVERY: if (port->vbus_present) { - tcpm_set_current_limit(port, - tcpm_get_current_limit(port), - 5000); + current_limit = tcpm_get_current_limit(port); + trace_android_vh_typec_tcpm_adj_current_limit(tcpm_states[SNK_DISCOVERY], + port->current_limit, + port->supply_voltage, + port->pd_capable, + ¤t_limit, &adjust); + tcpm_set_current_limit(port, current_limit, 5000); tcpm_set_charge(port, true); tcpm_set_state(port, SNK_WAIT_CAPABILITIES, 0); break; @@ -4204,6 +4210,17 @@ static void run_state_machine(struct tcpm_port *port) port->pwr_opmode = TYPEC_PWR_MODE_PD; } + current_limit = tcpm_get_current_limit(port); + adjust = false; + trace_android_vh_typec_tcpm_adj_current_limit(tcpm_states[SNK_READY], + port->current_limit, + port->supply_voltage, + port->pd_capable, + ¤t_limit, + &adjust); + if (adjust) + tcpm_set_current_limit(port, current_limit, 5000); + tcpm_swap_complete(port, 0); tcpm_typec_connect(port); mod_enable_frs_delayed_work(port, 0); diff --git a/include/trace/hooks/typec.h b/include/trace/hooks/typec.h index 00a76b2ec777..db3e5ea700ef 100644 --- a/include/trace/hooks/typec.h +++ b/include/trace/hooks/typec.h @@ -53,6 +53,11 @@ DECLARE_HOOK(android_vh_typec_store_partner_src_caps, u32 (*source_caps)[PDO_MAX_OBJECTS]), TP_ARGS(port, nr_source_caps, source_caps)); +DECLARE_HOOK(android_vh_typec_tcpm_adj_current_limit, + TP_PROTO(const char *state, u32 port_current_limit, u32 port_voltage, bool pd_capable, + u32 *current_limit, bool *adjust), + TP_ARGS(state, port_current_limit, port_voltage, pd_capable, current_limit, adjust)); + #endif /* _TRACE_HOOK_UFSHCD_H */ /* This part must be outside protection */ #include