Re: [PATCH 3/3] powernow-k6: reorder frequencies

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12 December 2013 06:09, Mikulas Patocka <mpatocka@xxxxxxxxxx> wrote:
> This patch reorders reported frequencies from the highest to the lowest,
> just like in other frequency drivers.
>
> Signed-off-by: Mikulas Patocka <mpatocka@xxxxxxxxxx>
> Cc: stable@xxxxxxxxxx
>
> ---
>  drivers/cpufreq/powernow-k6.c |   17 ++++++++++-------
>  1 file changed, 10 insertions(+), 7 deletions(-)
>
> Index: linux-3.12.3/drivers/cpufreq/powernow-k6.c
> ===================================================================
> --- linux-3.12.3.orig/drivers/cpufreq/powernow-k6.c     2013-12-06 22:08:27.000000000 +0100
> +++ linux-3.12.3/drivers/cpufreq/powernow-k6.c  2013-12-06 22:17:44.000000000 +0100
> @@ -37,17 +37,20 @@ MODULE_PARM_DESC(bus_frequency, "Bus fre
>
>  /* Clock ratio multiplied by 10 - see table 27 in AMD#23446 */
>  static struct cpufreq_frequency_table clock_ratio[] = {
> -       {45,  /* 000 -> 4.5x */ 0},
> +       {60,  /* 110 -> 6.0x */ 0},
> +       {55,  /* 011 -> 5.5x */ 0},
>         {50,  /* 001 -> 5.0x */ 0},
> +       {45,  /* 000 -> 4.5x */ 0},
>         {40,  /* 010 -> 4.0x */ 0},
> -       {55,  /* 011 -> 5.5x */ 0},
> -       {20,  /* 100 -> 2.0x */ 0},
> -       {30,  /* 101 -> 3.0x */ 0},
> -       {60,  /* 110 -> 6.0x */ 0},
>         {35,  /* 111 -> 3.5x */ 0},
> +       {30,  /* 101 -> 3.0x */ 0},
> +       {20,  /* 100 -> 2.0x */ 0},
>         {0, CPUFREQ_TABLE_END}
>  };
>
> +static const u8 index_to_register[8] = { 6, 3, 1, 0, 2, 7, 5, 4 };
> +static const u8 register_to_index[8] = { 3, 2, 4, 1, 7, 6, 0, 5 };
> +
>  static const struct {
>         unsigned freq;
>         unsigned mult;
> @@ -91,7 +94,7 @@ static int powernow_k6_get_cpu_multiplie
>
>         local_irq_enable();
>
> -       return clock_ratio[(invalue >> 5)&7].driver_data;
> +       return clock_ratio[register_to_index[(invalue >> 5)&7]].driver_data;
>  }
>
>  static void powernow_k6_set_cpu_multiplier(unsigned int best_i)
> @@ -111,7 +114,7 @@ static void powernow_k6_set_cpu_multipli
>         write_cr0(cr0 | X86_CR0_CD);
>         wbinvd();
>
> -       outvalue = (1<<12) | (1<<10) | (1<<9) | (best_i<<5);
> +       outvalue = (1<<12) | (1<<10) | (1<<9) | (index_to_register[best_i]<<5);
>
>         msrval = POWERNOW_IOPORT + 0x1;
>         wrmsr(MSR_K6_EPMR, msrval, 0); /* enable the PowerNow port */

Acked-by: Viresh Kumar <viresh.kumar@xxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe cpufreq" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Devel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Forum]     [Linux SCSI]

  Powered by Linux