]> rtime.felk.cvut.cz Git - linux-imx.git/commitdiff
Merge branch 'pm-cpufreq-arm' into pm-cpufreq
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 27 Jun 2013 19:47:03 +0000 (21:47 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 27 Jun 2013 19:47:03 +0000 (21:47 +0200)
* pm-cpufreq-arm:
  cpufreq: tegra: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: s3c64xx: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: omap: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: imx6q: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: exynos: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: dbx500: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: davinci: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: arm-big-little: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: s3c2416: fix forgotten driver_data conversions

1  2 
drivers/cpufreq/s3c2416-cpufreq.c
drivers/cpufreq/s3c64xx-cpufreq.c
drivers/cpufreq/tegra-cpufreq.c

index 69f2e55828dc4462d701443162c25db19cbd00f3,f1233143e3e3bf6fc1d5100f6e805da6b677dac4..e35865af96e2e1320a17bfdd001c84eb708d2c46
@@@ -244,7 -244,7 +244,7 @@@ static int s3c2416_cpufreq_set_target(s
        if (ret != 0)
                goto out;
  
 -      idx = s3c_freq->freq_table[i].index;
 +      idx = s3c_freq->freq_table[i].driver_data;
  
        if (idx == SOURCE_HCLK)
                to_dvs = 1;
@@@ -312,7 -312,7 +312,7 @@@ static void __init s3c2416_cpufreq_cfg_
                if (freq->frequency == CPUFREQ_ENTRY_INVALID)
                        continue;
  
-               dvfs = &s3c2416_dvfs_table[freq->index];
+               dvfs = &s3c2416_dvfs_table[freq->driver_data];
                found = 0;
  
                /* Check only the min-voltage, more is always ok on S3C2416 */
@@@ -462,7 -462,7 +462,7 @@@ static int __init s3c2416_cpufreq_drive
        freq = s3c_freq->freq_table;
        while (freq->frequency != CPUFREQ_TABLE_END) {
                /* special handling for dvs mode */
-               if (freq->index == 0) {
+               if (freq->driver_data == 0) {
                        if (!s3c_freq->hclk) {
                                pr_debug("cpufreq: %dkHz unsupported as it would need unavailable dvs mode\n",
                                         freq->frequency);
index 306d395de9907b95104385931a0d635251df070c,017ade0af36bdb08aa2d775ad75fe2c1b8fb5b8c..13bb4bae64ee11505fb8a072d041ec9a8268bf84
@@@ -87,7 -87,7 +87,7 @@@ static int s3c64xx_cpufreq_set_target(s
        freqs.old = clk_get_rate(armclk) / 1000;
        freqs.new = s3c64xx_freq_table[i].frequency;
        freqs.flags = 0;
 -      dvfs = &s3c64xx_dvfs_table[s3c64xx_freq_table[i].index];
 +      dvfs = &s3c64xx_dvfs_table[s3c64xx_freq_table[i].driver_data];
  
        if (freqs.old == freqs.new)
                return 0;
                if (ret != 0) {
                        pr_err("Failed to set VDDARM for %dkHz: %d\n",
                               freqs.new, ret);
-                       goto err;
+                       freqs.new = freqs.old;
+                       goto post_notify;
                }
        }
  #endif
        if (ret < 0) {
                pr_err("Failed to set rate %dkHz: %d\n",
                       freqs.new, ret);
-               goto err;
+               freqs.new = freqs.old;
        }
  
+ post_notify:
        cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
+       if (ret)
+               goto err;
  
  #ifdef CONFIG_REGULATOR
        if (vddarm && freqs.new < freqs.old) {
index 81561be17e8c55162600c0e6256998bb2b6d4a33,e74d7774cf1ed965361fcecda005be509c682f59..cd66b85d927caa47d5080f5c8b8da4bd03c51686
  #include <linux/io.h>
  #include <linux/suspend.h>
  
 -/* Frequency table index must be sequential starting at 0 */
  static struct cpufreq_frequency_table freq_table[] = {
 -      { 0, 216000 },
 -      { 1, 312000 },
 -      { 2, 456000 },
 -      { 3, 608000 },
 -      { 4, 760000 },
 -      { 5, 816000 },
 -      { 6, 912000 },
 -      { 7, 1000000 },
 -      { 8, CPUFREQ_TABLE_END },
 +      { .frequency = 216000 },
 +      { .frequency = 312000 },
 +      { .frequency = 456000 },
 +      { .frequency = 608000 },
 +      { .frequency = 760000 },
 +      { .frequency = 816000 },
 +      { .frequency = 912000 },
 +      { .frequency = 1000000 },
 +      { .frequency = CPUFREQ_TABLE_END },
  };
  
  #define NUM_CPUS      2
@@@ -137,12 -138,12 +137,12 @@@ static int tegra_update_cpu_speed(struc
        if (ret) {
                pr_err("cpu-tegra: Failed to set cpu frequency to %d kHz\n",
                        freqs.new);
-               return ret;
+               freqs.new = freqs.old;
        }
  
        cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
  
-       return 0;
+       return ret;
  }
  
  static unsigned long tegra_cpu_highest_speed(void)