From: Markus Mayer <mma...@broadcom.com>

Most CPUfreq drivers (at least on ARM) seem to be sorting the available
frequencies from lowest to highest. To match this behaviour, we reverse
the sorting order in brcmstb-avs-cpufreq, so it is now also lowest to
highest.

Signed-off-by: Markus Mayer <mma...@broadcom.com>
---
 drivers/cpufreq/brcmstb-avs-cpufreq.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/cpufreq/brcmstb-avs-cpufreq.c 
b/drivers/cpufreq/brcmstb-avs-cpufreq.c
index b07559b9ed99..7dac3205d3eb 100644
--- a/drivers/cpufreq/brcmstb-avs-cpufreq.c
+++ b/drivers/cpufreq/brcmstb-avs-cpufreq.c
@@ -403,7 +403,7 @@ brcm_avs_get_freq_table(struct device *dev, struct 
private_data *priv)
 {
        struct cpufreq_frequency_table *table;
        unsigned int pstate;
-       int i, ret;
+       int p, i, ret;
 
        /* Remember P-state for later */
        ret = brcm_avs_get_pstate(priv, &pstate);
@@ -415,12 +415,13 @@ brcm_avs_get_freq_table(struct device *dev, struct 
private_data *priv)
        if (!table)
                return ERR_PTR(-ENOMEM);
 
-       for (i = AVS_PSTATE_P0; i <= AVS_PSTATE_MAX; i++) {
-               ret = brcm_avs_set_pstate(priv, i);
+       for (p = AVS_PSTATE_MAX, i = 0; p >= 0; p--, i++) {
+               ret = brcm_avs_set_pstate(priv, p);
                if (ret)
                        return ERR_PTR(ret);
                table[i].frequency = brcm_avs_get_frequency(priv->base);
-               table[i].driver_data = i;
+               /* Store the corresponding P-state with each frequency */
+               table[i].driver_data = p;
        }
        table[i].frequency = CPUFREQ_TABLE_END;
 
-- 
2.7.4

Reply via email to