interconnect: qcom: icc-rpmh: Vote initial floor in sleep set
Currently the initial floor is only voted in AMC/WAKE, which means the floor is removed when entering the sleep set. However, some use cases require bus BW even when the CPU is idle. If all clients haven't voted yet, then assume we need to keep these votes around permanently. Change-Id: I2277e62e0a4e1ea949f1c7fbad052e76cf451c68 Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
This commit is contained in:
parent
bba0dddd2a
commit
b3588ad7e0
@ -98,11 +98,20 @@ static void bcm_aggregate(struct qcom_icc_bcm *bcm, bool init)
|
||||
}
|
||||
|
||||
if (bcm->keepalive) {
|
||||
/*
|
||||
* Keepalive should normally only be enforced for AMC/WAKE so
|
||||
* that BCMs are only kept alive when HLOS is active. But early
|
||||
* during init all clients haven't had a chance to vot yet, and
|
||||
* some have use cases that persist when HLOS is asleep. So
|
||||
* during init vote to all sets, including SLEEP.
|
||||
*/
|
||||
if (init) {
|
||||
bcm->vote_x[QCOM_ICC_BUCKET_AMC] = 16000;
|
||||
bcm->vote_x[QCOM_ICC_BUCKET_WAKE] = 16000;
|
||||
bcm->vote_x[QCOM_ICC_BUCKET_SLEEP] = 16000;
|
||||
bcm->vote_y[QCOM_ICC_BUCKET_AMC] = 16000;
|
||||
bcm->vote_y[QCOM_ICC_BUCKET_WAKE] = 16000;
|
||||
bcm->vote_y[QCOM_ICC_BUCKET_SLEEP] = 16000;
|
||||
} else if (bcm->vote_x[QCOM_ICC_BUCKET_AMC] == 0 &&
|
||||
bcm->vote_y[QCOM_ICC_BUCKET_AMC] == 0) {
|
||||
bcm->vote_x[QCOM_ICC_BUCKET_AMC] = 1;
|
||||
|
Loading…
Reference in New Issue
Block a user