diff --git a/drivers/soc/qcom/rpmh-rsc.c b/drivers/soc/qcom/rpmh-rsc.c index 51618c8db100..28cc0a35e085 100644 --- a/drivers/soc/qcom/rpmh-rsc.c +++ b/drivers/soc/qcom/rpmh-rsc.c @@ -1157,7 +1157,7 @@ int rpmh_rsc_mode_solver_set(struct rsc_drv *drv, bool enable) int rpmh_rsc_is_tcs_completed(struct rsc_drv *drv, int ch) { u32 sts; - int retry = 10; + int retry = 10, ret = 0; do { sts = readl_relaxed(drv->base + drv->regs[RSC_DRV_CHN_TCS_COMPLETE]); @@ -1170,12 +1170,17 @@ int rpmh_rsc_is_tcs_completed(struct rsc_drv *drv, int ch) retry--; } while (!sts && retry); - if (!retry) - return -EBUSY; + if (!retry) { + ret = -EBUSY; + goto exit; + } writel_relaxed(CH_CLEAR_STATUS, drv->base + drv->regs[RSC_DRV_CHN_TCS_COMPLETE]); +exit: + trace_rpmh_switch_channel(drv, ch, ret); + ipc_log_string(drv->ipc_log_ctx, "channel switched to: %d ret: %d", ch, ret); return 0; } @@ -1249,6 +1254,8 @@ int rpmh_rsc_drv_enable(struct rsc_drv *drv, bool enable) } exit: spin_unlock(&drv->lock); + trace_rpmh_drv_enable(drv, enable, ret); + ipc_log_string(drv->ipc_log_ctx, "drv enable: %d ret: %d", enable, ret); return ret; } diff --git a/drivers/soc/qcom/trace-rpmh.h b/drivers/soc/qcom/trace-rpmh.h index efaf50a4b67d..6f06562b641e 100644 --- a/drivers/soc/qcom/trace-rpmh.h +++ b/drivers/soc/qcom/trace-rpmh.h @@ -88,6 +88,50 @@ TRACE_EVENT(rpmh_solver_set, __get_str(name), __entry->set) ); +TRACE_EVENT(rpmh_switch_channel, + + TP_PROTO(struct rsc_drv *d, int ch, int ret), + + TP_ARGS(d, ch, ret), + + TP_STRUCT__entry( + __string(name, d->name) + __field(int, ch) + __field(int, ret) + ), + + TP_fast_assign( + __assign_str(name, d->name); + __entry->ch = ch; + __entry->ret = ret; + ), + + TP_printk("%s: channel switched to: %d ret: %d", + __get_str(name), __entry->ch, __entry->ret) +); + +TRACE_EVENT(rpmh_drv_enable, + + TP_PROTO(struct rsc_drv *d, bool enable, int ret), + + TP_ARGS(d, enable, ret), + + TP_STRUCT__entry( + __string(name, d->name) + __field(bool, enable) + __field(int, ret) + ), + + TP_fast_assign( + __assign_str(name, d->name); + __entry->enable = enable; + __entry->ret = ret; + ), + + TP_printk("%s: drv enable: %d ret: %d", + __get_str(name), __entry->enable, __entry->ret) +); + #endif /* _TRACE_RPMH_H */ #undef TRACE_INCLUDE_PATH