Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

soc: qcom: rpmh-rsc: Unconditionally clear _TRIGGER bit for TCS

Unconditionally clear the TCS_AMC_MODE_TRIGGER bit when a
transaction completes. Previously this bit was only cleared when
a wake TCS was borrowed as an AMC TCS but not for dedicated
AMC TCS. Leaving this bit set for AMC TCS and entering deeper low
power modes can generate a false completion IRQ.

Prevent this scenario by always clearing the TCS_AMC_MODE_TRIGGER
bit upon receiving a completion IRQ.

Fixes: 15b3bf61b8d4 ("soc: qcom: rpmh-rsc: Clear active mode configuration for wake TCS")
Signed-off-by: Sneh Mankad <sneh.mankad@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250825-rpmh_rsc_change-v1-1-138202c31bf6@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

authored by

Sneh Mankad and committed by
Bjorn Andersson
f87412d1 72e9f68b

+2 -5
+2 -5
drivers/soc/qcom/rpmh-rsc.c
··· 453 453 454 454 trace_rpmh_tx_done(drv, i, req); 455 455 456 - /* 457 - * If wake tcs was re-purposed for sending active 458 - * votes, clear AMC trigger & enable modes and 456 + /* Clear AMC trigger & enable modes and 459 457 * disable interrupt for this TCS 460 458 */ 461 - if (!drv->tcs[ACTIVE_TCS].num_tcs) 462 - __tcs_set_trigger(drv, i, false); 459 + __tcs_set_trigger(drv, i, false); 463 460 skip: 464 461 /* Reclaim the TCS */ 465 462 write_tcs_reg(drv, drv->regs[RSC_DRV_CMD_ENABLE], i, 0);