]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
soc: qcom: rpmpd: Add support to set rpmpd state to max
authorSibi Sankar <sibis@codeaurora.org>
Mon, 13 May 2019 10:20:08 +0000 (15:50 +0530)
committerAndy Gross <agross@kernel.org>
Thu, 30 May 2019 02:40:41 +0000 (21:40 -0500)
rpmpd max state varies across SoCs and SoC families, add support
in the driver to make it SoC/SoC family specific

Reviewed-by: Jeffrey Hugo <jhugo@codeaurora.org>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Andy Gross <agross@kernel.org>
drivers/soc/qcom/rpmpd.c

index 235d01870dd8c0b8ed240f9bc21d6b4dc2025ee9..94015ece40e91dddff316793b614d2e14dabfec4 100644 (file)
@@ -25,7 +25,7 @@
 #define KEY_ENABLE             0x6e657773 /* swen */
 #define KEY_FLOOR_CORNER       0x636676   /* vfc */
 
-#define MAX_RPMPD_STATE                6
+#define MAX_8996_RPMPD_STATE   6
 
 #define DEFINE_RPMPD_CORNER_SMPA(_platform, _name, _active, r_id)              \
        static struct rpmpd _platform##_##_active;                      \
@@ -83,12 +83,14 @@ struct rpmpd {
        const int res_type;
        const int res_id;
        struct qcom_smd_rpm *rpm;
+       unsigned int max_state;
        __le32 key;
 };
 
 struct rpmpd_desc {
        struct rpmpd **rpmpds;
        size_t num_pds;
+       unsigned int max_state;
 };
 
 static DEFINE_MUTEX(rpmpd_lock);
@@ -114,6 +116,7 @@ static struct rpmpd *msm8996_rpmpds[] = {
 static const struct rpmpd_desc msm8996_desc = {
        .rpmpds = msm8996_rpmpds,
        .num_pds = ARRAY_SIZE(msm8996_rpmpds),
+       .max_state = MAX_8996_RPMPD_STATE,
 };
 
 static const struct of_device_id rpmpd_match_table[] = {
@@ -225,8 +228,8 @@ static int rpmpd_set_performance(struct generic_pm_domain *domain,
        int ret = 0;
        struct rpmpd *pd = domain_to_rpmpd(domain);
 
-       if (state > MAX_RPMPD_STATE)
-               state = MAX_RPMPD_STATE;
+       if (state > pd->max_state)
+               state = pd->max_state;
 
        mutex_lock(&rpmpd_lock);
 
@@ -287,6 +290,7 @@ static int rpmpd_probe(struct platform_device *pdev)
                }
 
                rpmpds[i]->rpm = rpm;
+               rpmpds[i]->max_state = desc->max_state;
                rpmpds[i]->pd.power_off = rpmpd_power_off;
                rpmpds[i]->pd.power_on = rpmpd_power_on;
                rpmpds[i]->pd.set_performance_state = rpmpd_set_performance;