iommu/arm-smmu: Add support for active-only interconnect votes

The SMMU interconnect voting vote assumes all votes are required
in both the active and sleep contexts. This means that votes
for a particular interconnect path cast by the SMMU driver will
be upheld even when the CPU subsystem has been suspended, which
is not correct from a power consumption perspective.

Thus, add support for the qcom,active-only property to denote
that interconnect votes should be upheld only when the CPU
subsystem is in the active context.

Change-Id: I3168a9ff55809370e155771ab2b7918da06755e4
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
This commit is contained in:
Isaac J. Manjarres 2020-02-26 13:24:32 -08:00
commit d48a06aca6

View file

@ -79,6 +79,7 @@
#define ARM_SMMU_ICC_AVG_BW 0
#define ARM_SMMU_ICC_PEAK_BW_HIGH 1000
#define ARM_SMMU_ICC_PEAK_BW_LOW 0
#define ARM_SMMU_ICC_ACTIVE_ONLY_TAG 0x3
static int force_stage;
module_param(force_stage, int, S_IRUGO);
@ -4253,6 +4254,9 @@ static int arm_smmu_init_interconnect(struct arm_smmu_power_resources *pwr)
return pwr->icc_path ? PTR_ERR(pwr->icc_path) : -EINVAL;
}
if (of_property_read_bool(dev->of_node, "qcom,active-only"))
icc_set_tag(pwr->icc_path, ARM_SMMU_ICC_ACTIVE_ONLY_TAG);
return 0;
}