Merge remote-tracking branches 'regulator/fix/88pm800', 'regulator/fix/max8973',...
[linux-drm-fsl-dcu.git] / drivers / cpufreq / cpufreq.c
1 /*
2  *  linux/drivers/cpufreq/cpufreq.c
3  *
4  *  Copyright (C) 2001 Russell King
5  *            (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
6  *            (C) 2013 Viresh Kumar <viresh.kumar@linaro.org>
7  *
8  *  Oct 2005 - Ashok Raj <ashok.raj@intel.com>
9  *      Added handling for CPU hotplug
10  *  Feb 2006 - Jacob Shin <jacob.shin@amd.com>
11  *      Fix handling for CPU hotplug -- affected CPUs
12  *
13  * This program is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License version 2 as
15  * published by the Free Software Foundation.
16  */
17
18 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
19
20 #include <linux/cpu.h>
21 #include <linux/cpufreq.h>
22 #include <linux/delay.h>
23 #include <linux/device.h>
24 #include <linux/init.h>
25 #include <linux/kernel_stat.h>
26 #include <linux/module.h>
27 #include <linux/mutex.h>
28 #include <linux/slab.h>
29 #include <linux/suspend.h>
30 #include <linux/syscore_ops.h>
31 #include <linux/tick.h>
32 #include <trace/events/power.h>
33
34 static LIST_HEAD(cpufreq_policy_list);
35
36 static inline bool policy_is_inactive(struct cpufreq_policy *policy)
37 {
38         return cpumask_empty(policy->cpus);
39 }
40
41 static bool suitable_policy(struct cpufreq_policy *policy, bool active)
42 {
43         return active == !policy_is_inactive(policy);
44 }
45
46 /* Finds Next Acive/Inactive policy */
47 static struct cpufreq_policy *next_policy(struct cpufreq_policy *policy,
48                                           bool active)
49 {
50         do {
51                 policy = list_next_entry(policy, policy_list);
52
53                 /* No more policies in the list */
54                 if (&policy->policy_list == &cpufreq_policy_list)
55                         return NULL;
56         } while (!suitable_policy(policy, active));
57
58         return policy;
59 }
60
61 static struct cpufreq_policy *first_policy(bool active)
62 {
63         struct cpufreq_policy *policy;
64
65         /* No policies in the list */
66         if (list_empty(&cpufreq_policy_list))
67                 return NULL;
68
69         policy = list_first_entry(&cpufreq_policy_list, typeof(*policy),
70                                   policy_list);
71
72         if (!suitable_policy(policy, active))
73                 policy = next_policy(policy, active);
74
75         return policy;
76 }
77
78 /* Macros to iterate over CPU policies */
79 #define for_each_suitable_policy(__policy, __active)    \
80         for (__policy = first_policy(__active);         \
81              __policy;                                  \
82              __policy = next_policy(__policy, __active))
83
84 #define for_each_active_policy(__policy)                \
85         for_each_suitable_policy(__policy, true)
86 #define for_each_inactive_policy(__policy)              \
87         for_each_suitable_policy(__policy, false)
88
89 #define for_each_policy(__policy)                       \
90         list_for_each_entry(__policy, &cpufreq_policy_list, policy_list)
91
92 /* Iterate over governors */
93 static LIST_HEAD(cpufreq_governor_list);
94 #define for_each_governor(__governor)                           \
95         list_for_each_entry(__governor, &cpufreq_governor_list, governor_list)
96
97 /**
98  * The "cpufreq driver" - the arch- or hardware-dependent low
99  * level driver of CPUFreq support, and its spinlock. This lock
100  * also protects the cpufreq_cpu_data array.
101  */
102 static struct cpufreq_driver *cpufreq_driver;
103 static DEFINE_PER_CPU(struct cpufreq_policy *, cpufreq_cpu_data);
104 static DEFINE_RWLOCK(cpufreq_driver_lock);
105 DEFINE_MUTEX(cpufreq_governor_lock);
106
107 /* Flag to suspend/resume CPUFreq governors */
108 static bool cpufreq_suspended;
109
110 static inline bool has_target(void)
111 {
112         return cpufreq_driver->target_index || cpufreq_driver->target;
113 }
114
115 /*
116  * rwsem to guarantee that cpufreq driver module doesn't unload during critical
117  * sections
118  */
119 static DECLARE_RWSEM(cpufreq_rwsem);
120
121 /* internal prototypes */
122 static int __cpufreq_governor(struct cpufreq_policy *policy,
123                 unsigned int event);
124 static unsigned int __cpufreq_get(struct cpufreq_policy *policy);
125 static void handle_update(struct work_struct *work);
126
127 /**
128  * Two notifier lists: the "policy" list is involved in the
129  * validation process for a new CPU frequency policy; the
130  * "transition" list for kernel code that needs to handle
131  * changes to devices when the CPU clock speed changes.
132  * The mutex locks both lists.
133  */
134 static BLOCKING_NOTIFIER_HEAD(cpufreq_policy_notifier_list);
135 static struct srcu_notifier_head cpufreq_transition_notifier_list;
136
137 static bool init_cpufreq_transition_notifier_list_called;
138 static int __init init_cpufreq_transition_notifier_list(void)
139 {
140         srcu_init_notifier_head(&cpufreq_transition_notifier_list);
141         init_cpufreq_transition_notifier_list_called = true;
142         return 0;
143 }
144 pure_initcall(init_cpufreq_transition_notifier_list);
145
146 static int off __read_mostly;
147 static int cpufreq_disabled(void)
148 {
149         return off;
150 }
151 void disable_cpufreq(void)
152 {
153         off = 1;
154 }
155 static DEFINE_MUTEX(cpufreq_governor_mutex);
156
157 bool have_governor_per_policy(void)
158 {
159         return !!(cpufreq_driver->flags & CPUFREQ_HAVE_GOVERNOR_PER_POLICY);
160 }
161 EXPORT_SYMBOL_GPL(have_governor_per_policy);
162
163 struct kobject *get_governor_parent_kobj(struct cpufreq_policy *policy)
164 {
165         if (have_governor_per_policy())
166                 return &policy->kobj;
167         else
168                 return cpufreq_global_kobject;
169 }
170 EXPORT_SYMBOL_GPL(get_governor_parent_kobj);
171
172 struct cpufreq_frequency_table *cpufreq_frequency_get_table(unsigned int cpu)
173 {
174         struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
175
176         return policy && !policy_is_inactive(policy) ?
177                 policy->freq_table : NULL;
178 }
179 EXPORT_SYMBOL_GPL(cpufreq_frequency_get_table);
180
181 static inline u64 get_cpu_idle_time_jiffy(unsigned int cpu, u64 *wall)
182 {
183         u64 idle_time;
184         u64 cur_wall_time;
185         u64 busy_time;
186
187         cur_wall_time = jiffies64_to_cputime64(get_jiffies_64());
188
189         busy_time = kcpustat_cpu(cpu).cpustat[CPUTIME_USER];
190         busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_SYSTEM];
191         busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_IRQ];
192         busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_SOFTIRQ];
193         busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_STEAL];
194         busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_NICE];
195
196         idle_time = cur_wall_time - busy_time;
197         if (wall)
198                 *wall = cputime_to_usecs(cur_wall_time);
199
200         return cputime_to_usecs(idle_time);
201 }
202
203 u64 get_cpu_idle_time(unsigned int cpu, u64 *wall, int io_busy)
204 {
205         u64 idle_time = get_cpu_idle_time_us(cpu, io_busy ? wall : NULL);
206
207         if (idle_time == -1ULL)
208                 return get_cpu_idle_time_jiffy(cpu, wall);
209         else if (!io_busy)
210                 idle_time += get_cpu_iowait_time_us(cpu, wall);
211
212         return idle_time;
213 }
214 EXPORT_SYMBOL_GPL(get_cpu_idle_time);
215
216 /*
217  * This is a generic cpufreq init() routine which can be used by cpufreq
218  * drivers of SMP systems. It will do following:
219  * - validate & show freq table passed
220  * - set policies transition latency
221  * - policy->cpus with all possible CPUs
222  */
223 int cpufreq_generic_init(struct cpufreq_policy *policy,
224                 struct cpufreq_frequency_table *table,
225                 unsigned int transition_latency)
226 {
227         int ret;
228
229         ret = cpufreq_table_validate_and_show(policy, table);
230         if (ret) {
231                 pr_err("%s: invalid frequency table: %d\n", __func__, ret);
232                 return ret;
233         }
234
235         policy->cpuinfo.transition_latency = transition_latency;
236
237         /*
238          * The driver only supports the SMP configuration where all processors
239          * share the clock and voltage and clock.
240          */
241         cpumask_setall(policy->cpus);
242
243         return 0;
244 }
245 EXPORT_SYMBOL_GPL(cpufreq_generic_init);
246
247 /* Only for cpufreq core internal use */
248 struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu)
249 {
250         struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
251
252         return policy && cpumask_test_cpu(cpu, policy->cpus) ? policy : NULL;
253 }
254
255 unsigned int cpufreq_generic_get(unsigned int cpu)
256 {
257         struct cpufreq_policy *policy = cpufreq_cpu_get_raw(cpu);
258
259         if (!policy || IS_ERR(policy->clk)) {
260                 pr_err("%s: No %s associated to cpu: %d\n",
261                        __func__, policy ? "clk" : "policy", cpu);
262                 return 0;
263         }
264
265         return clk_get_rate(policy->clk) / 1000;
266 }
267 EXPORT_SYMBOL_GPL(cpufreq_generic_get);
268
269 /**
270  * cpufreq_cpu_get: returns policy for a cpu and marks it busy.
271  *
272  * @cpu: cpu to find policy for.
273  *
274  * This returns policy for 'cpu', returns NULL if it doesn't exist.
275  * It also increments the kobject reference count to mark it busy and so would
276  * require a corresponding call to cpufreq_cpu_put() to decrement it back.
277  * If corresponding call cpufreq_cpu_put() isn't made, the policy wouldn't be
278  * freed as that depends on the kobj count.
279  *
280  * It also takes a read-lock of 'cpufreq_rwsem' and doesn't put it back if a
281  * valid policy is found. This is done to make sure the driver doesn't get
282  * unregistered while the policy is being used.
283  *
284  * Return: A valid policy on success, otherwise NULL on failure.
285  */
286 struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu)
287 {
288         struct cpufreq_policy *policy = NULL;
289         unsigned long flags;
290
291         if (WARN_ON(cpu >= nr_cpu_ids))
292                 return NULL;
293
294         if (!down_read_trylock(&cpufreq_rwsem))
295                 return NULL;
296
297         /* get the cpufreq driver */
298         read_lock_irqsave(&cpufreq_driver_lock, flags);
299
300         if (cpufreq_driver) {
301                 /* get the CPU */
302                 policy = cpufreq_cpu_get_raw(cpu);
303                 if (policy)
304                         kobject_get(&policy->kobj);
305         }
306
307         read_unlock_irqrestore(&cpufreq_driver_lock, flags);
308
309         if (!policy)
310                 up_read(&cpufreq_rwsem);
311
312         return policy;
313 }
314 EXPORT_SYMBOL_GPL(cpufreq_cpu_get);
315
316 /**
317  * cpufreq_cpu_put: Decrements the usage count of a policy
318  *
319  * @policy: policy earlier returned by cpufreq_cpu_get().
320  *
321  * This decrements the kobject reference count incremented earlier by calling
322  * cpufreq_cpu_get().
323  *
324  * It also drops the read-lock of 'cpufreq_rwsem' taken at cpufreq_cpu_get().
325  */
326 void cpufreq_cpu_put(struct cpufreq_policy *policy)
327 {
328         kobject_put(&policy->kobj);
329         up_read(&cpufreq_rwsem);
330 }
331 EXPORT_SYMBOL_GPL(cpufreq_cpu_put);
332
333 /*********************************************************************
334  *            EXTERNALLY AFFECTING FREQUENCY CHANGES                 *
335  *********************************************************************/
336
337 /**
338  * adjust_jiffies - adjust the system "loops_per_jiffy"
339  *
340  * This function alters the system "loops_per_jiffy" for the clock
341  * speed change. Note that loops_per_jiffy cannot be updated on SMP
342  * systems as each CPU might be scaled differently. So, use the arch
343  * per-CPU loops_per_jiffy value wherever possible.
344  */
345 static void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
346 {
347 #ifndef CONFIG_SMP
348         static unsigned long l_p_j_ref;
349         static unsigned int l_p_j_ref_freq;
350
351         if (ci->flags & CPUFREQ_CONST_LOOPS)
352                 return;
353
354         if (!l_p_j_ref_freq) {
355                 l_p_j_ref = loops_per_jiffy;
356                 l_p_j_ref_freq = ci->old;
357                 pr_debug("saving %lu as reference value for loops_per_jiffy; freq is %u kHz\n",
358                          l_p_j_ref, l_p_j_ref_freq);
359         }
360         if (val == CPUFREQ_POSTCHANGE && ci->old != ci->new) {
361                 loops_per_jiffy = cpufreq_scale(l_p_j_ref, l_p_j_ref_freq,
362                                                                 ci->new);
363                 pr_debug("scaling loops_per_jiffy to %lu for frequency %u kHz\n",
364                          loops_per_jiffy, ci->new);
365         }
366 #endif
367 }
368
369 static void __cpufreq_notify_transition(struct cpufreq_policy *policy,
370                 struct cpufreq_freqs *freqs, unsigned int state)
371 {
372         BUG_ON(irqs_disabled());
373
374         if (cpufreq_disabled())
375                 return;
376
377         freqs->flags = cpufreq_driver->flags;
378         pr_debug("notification %u of frequency transition to %u kHz\n",
379                  state, freqs->new);
380
381         switch (state) {
382
383         case CPUFREQ_PRECHANGE:
384                 /* detect if the driver reported a value as "old frequency"
385                  * which is not equal to what the cpufreq core thinks is
386                  * "old frequency".
387                  */
388                 if (!(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) {
389                         if ((policy) && (policy->cpu == freqs->cpu) &&
390                             (policy->cur) && (policy->cur != freqs->old)) {
391                                 pr_debug("Warning: CPU frequency is %u, cpufreq assumed %u kHz\n",
392                                          freqs->old, policy->cur);
393                                 freqs->old = policy->cur;
394                         }
395                 }
396                 srcu_notifier_call_chain(&cpufreq_transition_notifier_list,
397                                 CPUFREQ_PRECHANGE, freqs);
398                 adjust_jiffies(CPUFREQ_PRECHANGE, freqs);
399                 break;
400
401         case CPUFREQ_POSTCHANGE:
402                 adjust_jiffies(CPUFREQ_POSTCHANGE, freqs);
403                 pr_debug("FREQ: %lu - CPU: %lu\n",
404                          (unsigned long)freqs->new, (unsigned long)freqs->cpu);
405                 trace_cpu_frequency(freqs->new, freqs->cpu);
406                 srcu_notifier_call_chain(&cpufreq_transition_notifier_list,
407                                 CPUFREQ_POSTCHANGE, freqs);
408                 if (likely(policy) && likely(policy->cpu == freqs->cpu))
409                         policy->cur = freqs->new;
410                 break;
411         }
412 }
413
414 /**
415  * cpufreq_notify_transition - call notifier chain and adjust_jiffies
416  * on frequency transition.
417  *
418  * This function calls the transition notifiers and the "adjust_jiffies"
419  * function. It is called twice on all CPU frequency changes that have
420  * external effects.
421  */
422 static void cpufreq_notify_transition(struct cpufreq_policy *policy,
423                 struct cpufreq_freqs *freqs, unsigned int state)
424 {
425         for_each_cpu(freqs->cpu, policy->cpus)
426                 __cpufreq_notify_transition(policy, freqs, state);
427 }
428
429 /* Do post notifications when there are chances that transition has failed */
430 static void cpufreq_notify_post_transition(struct cpufreq_policy *policy,
431                 struct cpufreq_freqs *freqs, int transition_failed)
432 {
433         cpufreq_notify_transition(policy, freqs, CPUFREQ_POSTCHANGE);
434         if (!transition_failed)
435                 return;
436
437         swap(freqs->old, freqs->new);
438         cpufreq_notify_transition(policy, freqs, CPUFREQ_PRECHANGE);
439         cpufreq_notify_transition(policy, freqs, CPUFREQ_POSTCHANGE);
440 }
441
442 void cpufreq_freq_transition_begin(struct cpufreq_policy *policy,
443                 struct cpufreq_freqs *freqs)
444 {
445
446         /*
447          * Catch double invocations of _begin() which lead to self-deadlock.
448          * ASYNC_NOTIFICATION drivers are left out because the cpufreq core
449          * doesn't invoke _begin() on their behalf, and hence the chances of
450          * double invocations are very low. Moreover, there are scenarios
451          * where these checks can emit false-positive warnings in these
452          * drivers; so we avoid that by skipping them altogether.
453          */
454         WARN_ON(!(cpufreq_driver->flags & CPUFREQ_ASYNC_NOTIFICATION)
455                                 && current == policy->transition_task);
456
457 wait:
458         wait_event(policy->transition_wait, !policy->transition_ongoing);
459
460         spin_lock(&policy->transition_lock);
461
462         if (unlikely(policy->transition_ongoing)) {
463                 spin_unlock(&policy->transition_lock);
464                 goto wait;
465         }
466
467         policy->transition_ongoing = true;
468         policy->transition_task = current;
469
470         spin_unlock(&policy->transition_lock);
471
472         cpufreq_notify_transition(policy, freqs, CPUFREQ_PRECHANGE);
473 }
474 EXPORT_SYMBOL_GPL(cpufreq_freq_transition_begin);
475
476 void cpufreq_freq_transition_end(struct cpufreq_policy *policy,
477                 struct cpufreq_freqs *freqs, int transition_failed)
478 {
479         if (unlikely(WARN_ON(!policy->transition_ongoing)))
480                 return;
481
482         cpufreq_notify_post_transition(policy, freqs, transition_failed);
483
484         policy->transition_ongoing = false;
485         policy->transition_task = NULL;
486
487         wake_up(&policy->transition_wait);
488 }
489 EXPORT_SYMBOL_GPL(cpufreq_freq_transition_end);
490
491
492 /*********************************************************************
493  *                          SYSFS INTERFACE                          *
494  *********************************************************************/
495 static ssize_t show_boost(struct kobject *kobj,
496                                  struct attribute *attr, char *buf)
497 {
498         return sprintf(buf, "%d\n", cpufreq_driver->boost_enabled);
499 }
500
501 static ssize_t store_boost(struct kobject *kobj, struct attribute *attr,
502                                   const char *buf, size_t count)
503 {
504         int ret, enable;
505
506         ret = sscanf(buf, "%d", &enable);
507         if (ret != 1 || enable < 0 || enable > 1)
508                 return -EINVAL;
509
510         if (cpufreq_boost_trigger_state(enable)) {
511                 pr_err("%s: Cannot %s BOOST!\n",
512                        __func__, enable ? "enable" : "disable");
513                 return -EINVAL;
514         }
515
516         pr_debug("%s: cpufreq BOOST %s\n",
517                  __func__, enable ? "enabled" : "disabled");
518
519         return count;
520 }
521 define_one_global_rw(boost);
522
523 static struct cpufreq_governor *find_governor(const char *str_governor)
524 {
525         struct cpufreq_governor *t;
526
527         for_each_governor(t)
528                 if (!strncasecmp(str_governor, t->name, CPUFREQ_NAME_LEN))
529                         return t;
530
531         return NULL;
532 }
533
534 /**
535  * cpufreq_parse_governor - parse a governor string
536  */
537 static int cpufreq_parse_governor(char *str_governor, unsigned int *policy,
538                                 struct cpufreq_governor **governor)
539 {
540         int err = -EINVAL;
541
542         if (!cpufreq_driver)
543                 goto out;
544
545         if (cpufreq_driver->setpolicy) {
546                 if (!strncasecmp(str_governor, "performance", CPUFREQ_NAME_LEN)) {
547                         *policy = CPUFREQ_POLICY_PERFORMANCE;
548                         err = 0;
549                 } else if (!strncasecmp(str_governor, "powersave",
550                                                 CPUFREQ_NAME_LEN)) {
551                         *policy = CPUFREQ_POLICY_POWERSAVE;
552                         err = 0;
553                 }
554         } else {
555                 struct cpufreq_governor *t;
556
557                 mutex_lock(&cpufreq_governor_mutex);
558
559                 t = find_governor(str_governor);
560
561                 if (t == NULL) {
562                         int ret;
563
564                         mutex_unlock(&cpufreq_governor_mutex);
565                         ret = request_module("cpufreq_%s", str_governor);
566                         mutex_lock(&cpufreq_governor_mutex);
567
568                         if (ret == 0)
569                                 t = find_governor(str_governor);
570                 }
571
572                 if (t != NULL) {
573                         *governor = t;
574                         err = 0;
575                 }
576
577                 mutex_unlock(&cpufreq_governor_mutex);
578         }
579 out:
580         return err;
581 }
582
583 /**
584  * cpufreq_per_cpu_attr_read() / show_##file_name() -
585  * print out cpufreq information
586  *
587  * Write out information from cpufreq_driver->policy[cpu]; object must be
588  * "unsigned int".
589  */
590
591 #define show_one(file_name, object)                     \
592 static ssize_t show_##file_name                         \
593 (struct cpufreq_policy *policy, char *buf)              \
594 {                                                       \
595         return sprintf(buf, "%u\n", policy->object);    \
596 }
597
598 show_one(cpuinfo_min_freq, cpuinfo.min_freq);
599 show_one(cpuinfo_max_freq, cpuinfo.max_freq);
600 show_one(cpuinfo_transition_latency, cpuinfo.transition_latency);
601 show_one(scaling_min_freq, min);
602 show_one(scaling_max_freq, max);
603
604 static ssize_t show_scaling_cur_freq(struct cpufreq_policy *policy, char *buf)
605 {
606         ssize_t ret;
607
608         if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get)
609                 ret = sprintf(buf, "%u\n", cpufreq_driver->get(policy->cpu));
610         else
611                 ret = sprintf(buf, "%u\n", policy->cur);
612         return ret;
613 }
614
615 static int cpufreq_set_policy(struct cpufreq_policy *policy,
616                                 struct cpufreq_policy *new_policy);
617
618 /**
619  * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access
620  */
621 #define store_one(file_name, object)                    \
622 static ssize_t store_##file_name                                        \
623 (struct cpufreq_policy *policy, const char *buf, size_t count)          \
624 {                                                                       \
625         int ret, temp;                                                  \
626         struct cpufreq_policy new_policy;                               \
627                                                                         \
628         ret = cpufreq_get_policy(&new_policy, policy->cpu);             \
629         if (ret)                                                        \
630                 return -EINVAL;                                         \
631                                                                         \
632         ret = sscanf(buf, "%u", &new_policy.object);                    \
633         if (ret != 1)                                                   \
634                 return -EINVAL;                                         \
635                                                                         \
636         temp = new_policy.object;                                       \
637         ret = cpufreq_set_policy(policy, &new_policy);          \
638         if (!ret)                                                       \
639                 policy->user_policy.object = temp;                      \
640                                                                         \
641         return ret ? ret : count;                                       \
642 }
643
644 store_one(scaling_min_freq, min);
645 store_one(scaling_max_freq, max);
646
647 /**
648  * show_cpuinfo_cur_freq - current CPU frequency as detected by hardware
649  */
650 static ssize_t show_cpuinfo_cur_freq(struct cpufreq_policy *policy,
651                                         char *buf)
652 {
653         unsigned int cur_freq = __cpufreq_get(policy);
654         if (!cur_freq)
655                 return sprintf(buf, "<unknown>");
656         return sprintf(buf, "%u\n", cur_freq);
657 }
658
659 /**
660  * show_scaling_governor - show the current policy for the specified CPU
661  */
662 static ssize_t show_scaling_governor(struct cpufreq_policy *policy, char *buf)
663 {
664         if (policy->policy == CPUFREQ_POLICY_POWERSAVE)
665                 return sprintf(buf, "powersave\n");
666         else if (policy->policy == CPUFREQ_POLICY_PERFORMANCE)
667                 return sprintf(buf, "performance\n");
668         else if (policy->governor)
669                 return scnprintf(buf, CPUFREQ_NAME_PLEN, "%s\n",
670                                 policy->governor->name);
671         return -EINVAL;
672 }
673
674 /**
675  * store_scaling_governor - store policy for the specified CPU
676  */
677 static ssize_t store_scaling_governor(struct cpufreq_policy *policy,
678                                         const char *buf, size_t count)
679 {
680         int ret;
681         char    str_governor[16];
682         struct cpufreq_policy new_policy;
683
684         ret = cpufreq_get_policy(&new_policy, policy->cpu);
685         if (ret)
686                 return ret;
687
688         ret = sscanf(buf, "%15s", str_governor);
689         if (ret != 1)
690                 return -EINVAL;
691
692         if (cpufreq_parse_governor(str_governor, &new_policy.policy,
693                                                 &new_policy.governor))
694                 return -EINVAL;
695
696         ret = cpufreq_set_policy(policy, &new_policy);
697
698         policy->user_policy.policy = policy->policy;
699         policy->user_policy.governor = policy->governor;
700
701         if (ret)
702                 return ret;
703         else
704                 return count;
705 }
706
707 /**
708  * show_scaling_driver - show the cpufreq driver currently loaded
709  */
710 static ssize_t show_scaling_driver(struct cpufreq_policy *policy, char *buf)
711 {
712         return scnprintf(buf, CPUFREQ_NAME_PLEN, "%s\n", cpufreq_driver->name);
713 }
714
715 /**
716  * show_scaling_available_governors - show the available CPUfreq governors
717  */
718 static ssize_t show_scaling_available_governors(struct cpufreq_policy *policy,
719                                                 char *buf)
720 {
721         ssize_t i = 0;
722         struct cpufreq_governor *t;
723
724         if (!has_target()) {
725                 i += sprintf(buf, "performance powersave");
726                 goto out;
727         }
728
729         for_each_governor(t) {
730                 if (i >= (ssize_t) ((PAGE_SIZE / sizeof(char))
731                     - (CPUFREQ_NAME_LEN + 2)))
732                         goto out;
733                 i += scnprintf(&buf[i], CPUFREQ_NAME_PLEN, "%s ", t->name);
734         }
735 out:
736         i += sprintf(&buf[i], "\n");
737         return i;
738 }
739
740 ssize_t cpufreq_show_cpus(const struct cpumask *mask, char *buf)
741 {
742         ssize_t i = 0;
743         unsigned int cpu;
744
745         for_each_cpu(cpu, mask) {
746                 if (i)
747                         i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), " ");
748                 i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), "%u", cpu);
749                 if (i >= (PAGE_SIZE - 5))
750                         break;
751         }
752         i += sprintf(&buf[i], "\n");
753         return i;
754 }
755 EXPORT_SYMBOL_GPL(cpufreq_show_cpus);
756
757 /**
758  * show_related_cpus - show the CPUs affected by each transition even if
759  * hw coordination is in use
760  */
761 static ssize_t show_related_cpus(struct cpufreq_policy *policy, char *buf)
762 {
763         return cpufreq_show_cpus(policy->related_cpus, buf);
764 }
765
766 /**
767  * show_affected_cpus - show the CPUs affected by each transition
768  */
769 static ssize_t show_affected_cpus(struct cpufreq_policy *policy, char *buf)
770 {
771         return cpufreq_show_cpus(policy->cpus, buf);
772 }
773
774 static ssize_t store_scaling_setspeed(struct cpufreq_policy *policy,
775                                         const char *buf, size_t count)
776 {
777         unsigned int freq = 0;
778         unsigned int ret;
779
780         if (!policy->governor || !policy->governor->store_setspeed)
781                 return -EINVAL;
782
783         ret = sscanf(buf, "%u", &freq);
784         if (ret != 1)
785                 return -EINVAL;
786
787         policy->governor->store_setspeed(policy, freq);
788
789         return count;
790 }
791
792 static ssize_t show_scaling_setspeed(struct cpufreq_policy *policy, char *buf)
793 {
794         if (!policy->governor || !policy->governor->show_setspeed)
795                 return sprintf(buf, "<unsupported>\n");
796
797         return policy->governor->show_setspeed(policy, buf);
798 }
799
800 /**
801  * show_bios_limit - show the current cpufreq HW/BIOS limitation
802  */
803 static ssize_t show_bios_limit(struct cpufreq_policy *policy, char *buf)
804 {
805         unsigned int limit;
806         int ret;
807         if (cpufreq_driver->bios_limit) {
808                 ret = cpufreq_driver->bios_limit(policy->cpu, &limit);
809                 if (!ret)
810                         return sprintf(buf, "%u\n", limit);
811         }
812         return sprintf(buf, "%u\n", policy->cpuinfo.max_freq);
813 }
814
815 cpufreq_freq_attr_ro_perm(cpuinfo_cur_freq, 0400);
816 cpufreq_freq_attr_ro(cpuinfo_min_freq);
817 cpufreq_freq_attr_ro(cpuinfo_max_freq);
818 cpufreq_freq_attr_ro(cpuinfo_transition_latency);
819 cpufreq_freq_attr_ro(scaling_available_governors);
820 cpufreq_freq_attr_ro(scaling_driver);
821 cpufreq_freq_attr_ro(scaling_cur_freq);
822 cpufreq_freq_attr_ro(bios_limit);
823 cpufreq_freq_attr_ro(related_cpus);
824 cpufreq_freq_attr_ro(affected_cpus);
825 cpufreq_freq_attr_rw(scaling_min_freq);
826 cpufreq_freq_attr_rw(scaling_max_freq);
827 cpufreq_freq_attr_rw(scaling_governor);
828 cpufreq_freq_attr_rw(scaling_setspeed);
829
830 static struct attribute *default_attrs[] = {
831         &cpuinfo_min_freq.attr,
832         &cpuinfo_max_freq.attr,
833         &cpuinfo_transition_latency.attr,
834         &scaling_min_freq.attr,
835         &scaling_max_freq.attr,
836         &affected_cpus.attr,
837         &related_cpus.attr,
838         &scaling_governor.attr,
839         &scaling_driver.attr,
840         &scaling_available_governors.attr,
841         &scaling_setspeed.attr,
842         NULL
843 };
844
845 #define to_policy(k) container_of(k, struct cpufreq_policy, kobj)
846 #define to_attr(a) container_of(a, struct freq_attr, attr)
847
848 static ssize_t show(struct kobject *kobj, struct attribute *attr, char *buf)
849 {
850         struct cpufreq_policy *policy = to_policy(kobj);
851         struct freq_attr *fattr = to_attr(attr);
852         ssize_t ret;
853
854         if (!down_read_trylock(&cpufreq_rwsem))
855                 return -EINVAL;
856
857         down_read(&policy->rwsem);
858
859         if (fattr->show)
860                 ret = fattr->show(policy, buf);
861         else
862                 ret = -EIO;
863
864         up_read(&policy->rwsem);
865         up_read(&cpufreq_rwsem);
866
867         return ret;
868 }
869
870 static ssize_t store(struct kobject *kobj, struct attribute *attr,
871                      const char *buf, size_t count)
872 {
873         struct cpufreq_policy *policy = to_policy(kobj);
874         struct freq_attr *fattr = to_attr(attr);
875         ssize_t ret = -EINVAL;
876
877         get_online_cpus();
878
879         if (!cpu_online(policy->cpu))
880                 goto unlock;
881
882         if (!down_read_trylock(&cpufreq_rwsem))
883                 goto unlock;
884
885         down_write(&policy->rwsem);
886
887         /* Updating inactive policies is invalid, so avoid doing that. */
888         if (unlikely(policy_is_inactive(policy))) {
889                 ret = -EBUSY;
890                 goto unlock_policy_rwsem;
891         }
892
893         if (fattr->store)
894                 ret = fattr->store(policy, buf, count);
895         else
896                 ret = -EIO;
897
898 unlock_policy_rwsem:
899         up_write(&policy->rwsem);
900
901         up_read(&cpufreq_rwsem);
902 unlock:
903         put_online_cpus();
904
905         return ret;
906 }
907
908 static void cpufreq_sysfs_release(struct kobject *kobj)
909 {
910         struct cpufreq_policy *policy = to_policy(kobj);
911         pr_debug("last reference is dropped\n");
912         complete(&policy->kobj_unregister);
913 }
914
915 static const struct sysfs_ops sysfs_ops = {
916         .show   = show,
917         .store  = store,
918 };
919
920 static struct kobj_type ktype_cpufreq = {
921         .sysfs_ops      = &sysfs_ops,
922         .default_attrs  = default_attrs,
923         .release        = cpufreq_sysfs_release,
924 };
925
926 struct kobject *cpufreq_global_kobject;
927 EXPORT_SYMBOL(cpufreq_global_kobject);
928
929 static int cpufreq_global_kobject_usage;
930
931 int cpufreq_get_global_kobject(void)
932 {
933         if (!cpufreq_global_kobject_usage++)
934                 return kobject_add(cpufreq_global_kobject,
935                                 &cpu_subsys.dev_root->kobj, "%s", "cpufreq");
936
937         return 0;
938 }
939 EXPORT_SYMBOL(cpufreq_get_global_kobject);
940
941 void cpufreq_put_global_kobject(void)
942 {
943         if (!--cpufreq_global_kobject_usage)
944                 kobject_del(cpufreq_global_kobject);
945 }
946 EXPORT_SYMBOL(cpufreq_put_global_kobject);
947
948 int cpufreq_sysfs_create_file(const struct attribute *attr)
949 {
950         int ret = cpufreq_get_global_kobject();
951
952         if (!ret) {
953                 ret = sysfs_create_file(cpufreq_global_kobject, attr);
954                 if (ret)
955                         cpufreq_put_global_kobject();
956         }
957
958         return ret;
959 }
960 EXPORT_SYMBOL(cpufreq_sysfs_create_file);
961
962 void cpufreq_sysfs_remove_file(const struct attribute *attr)
963 {
964         sysfs_remove_file(cpufreq_global_kobject, attr);
965         cpufreq_put_global_kobject();
966 }
967 EXPORT_SYMBOL(cpufreq_sysfs_remove_file);
968
969 static int add_cpu_dev_symlink(struct cpufreq_policy *policy, int cpu)
970 {
971         struct device *cpu_dev;
972
973         pr_debug("%s: Adding symlink for CPU: %u\n", __func__, cpu);
974
975         if (!policy)
976                 return 0;
977
978         cpu_dev = get_cpu_device(cpu);
979         if (WARN_ON(!cpu_dev))
980                 return 0;
981
982         return sysfs_create_link(&cpu_dev->kobj, &policy->kobj, "cpufreq");
983 }
984
985 static void remove_cpu_dev_symlink(struct cpufreq_policy *policy, int cpu)
986 {
987         struct device *cpu_dev;
988
989         pr_debug("%s: Removing symlink for CPU: %u\n", __func__, cpu);
990
991         cpu_dev = get_cpu_device(cpu);
992         if (WARN_ON(!cpu_dev))
993                 return;
994
995         sysfs_remove_link(&cpu_dev->kobj, "cpufreq");
996 }
997
998 /* Add/remove symlinks for all related CPUs */
999 static int cpufreq_add_dev_symlink(struct cpufreq_policy *policy)
1000 {
1001         unsigned int j;
1002         int ret = 0;
1003
1004         /* Some related CPUs might not be present (physically hotplugged) */
1005         for_each_cpu_and(j, policy->related_cpus, cpu_present_mask) {
1006                 if (j == policy->kobj_cpu)
1007                         continue;
1008
1009                 ret = add_cpu_dev_symlink(policy, j);
1010                 if (ret)
1011                         break;
1012         }
1013
1014         return ret;
1015 }
1016
1017 static void cpufreq_remove_dev_symlink(struct cpufreq_policy *policy)
1018 {
1019         unsigned int j;
1020
1021         /* Some related CPUs might not be present (physically hotplugged) */
1022         for_each_cpu_and(j, policy->related_cpus, cpu_present_mask) {
1023                 if (j == policy->kobj_cpu)
1024                         continue;
1025
1026                 remove_cpu_dev_symlink(policy, j);
1027         }
1028 }
1029
1030 static int cpufreq_add_dev_interface(struct cpufreq_policy *policy,
1031                                      struct device *dev)
1032 {
1033         struct freq_attr **drv_attr;
1034         int ret = 0;
1035
1036         /* set up files for this cpu device */
1037         drv_attr = cpufreq_driver->attr;
1038         while (drv_attr && *drv_attr) {
1039                 ret = sysfs_create_file(&policy->kobj, &((*drv_attr)->attr));
1040                 if (ret)
1041                         return ret;
1042                 drv_attr++;
1043         }
1044         if (cpufreq_driver->get) {
1045                 ret = sysfs_create_file(&policy->kobj, &cpuinfo_cur_freq.attr);
1046                 if (ret)
1047                         return ret;
1048         }
1049
1050         ret = sysfs_create_file(&policy->kobj, &scaling_cur_freq.attr);
1051         if (ret)
1052                 return ret;
1053
1054         if (cpufreq_driver->bios_limit) {
1055                 ret = sysfs_create_file(&policy->kobj, &bios_limit.attr);
1056                 if (ret)
1057                         return ret;
1058         }
1059
1060         return cpufreq_add_dev_symlink(policy);
1061 }
1062
1063 static void cpufreq_init_policy(struct cpufreq_policy *policy)
1064 {
1065         struct cpufreq_governor *gov = NULL;
1066         struct cpufreq_policy new_policy;
1067         int ret = 0;
1068
1069         memcpy(&new_policy, policy, sizeof(*policy));
1070
1071         /* Update governor of new_policy to the governor used before hotplug */
1072         gov = find_governor(policy->last_governor);
1073         if (gov)
1074                 pr_debug("Restoring governor %s for cpu %d\n",
1075                                 policy->governor->name, policy->cpu);
1076         else
1077                 gov = CPUFREQ_DEFAULT_GOVERNOR;
1078
1079         new_policy.governor = gov;
1080
1081         /* Use the default policy if its valid. */
1082         if (cpufreq_driver->setpolicy)
1083                 cpufreq_parse_governor(gov->name, &new_policy.policy, NULL);
1084
1085         /* set default policy */
1086         ret = cpufreq_set_policy(policy, &new_policy);
1087         if (ret) {
1088                 pr_debug("setting policy failed\n");
1089                 if (cpufreq_driver->exit)
1090                         cpufreq_driver->exit(policy);
1091         }
1092 }
1093
1094 static int cpufreq_add_policy_cpu(struct cpufreq_policy *policy,
1095                                   unsigned int cpu, struct device *dev)
1096 {
1097         int ret = 0;
1098
1099         /* Has this CPU been taken care of already? */
1100         if (cpumask_test_cpu(cpu, policy->cpus))
1101                 return 0;
1102
1103         if (has_target()) {
1104                 ret = __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
1105                 if (ret) {
1106                         pr_err("%s: Failed to stop governor\n", __func__);
1107                         return ret;
1108                 }
1109         }
1110
1111         down_write(&policy->rwsem);
1112         cpumask_set_cpu(cpu, policy->cpus);
1113         up_write(&policy->rwsem);
1114
1115         if (has_target()) {
1116                 ret = __cpufreq_governor(policy, CPUFREQ_GOV_START);
1117                 if (!ret)
1118                         ret = __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
1119
1120                 if (ret) {
1121                         pr_err("%s: Failed to start governor\n", __func__);
1122                         return ret;
1123                 }
1124         }
1125
1126         return 0;
1127 }
1128
1129 static struct cpufreq_policy *cpufreq_policy_restore(unsigned int cpu)
1130 {
1131         struct cpufreq_policy *policy;
1132         unsigned long flags;
1133
1134         read_lock_irqsave(&cpufreq_driver_lock, flags);
1135         policy = per_cpu(cpufreq_cpu_data, cpu);
1136         read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1137
1138         if (likely(policy)) {
1139                 /* Policy should be inactive here */
1140                 WARN_ON(!policy_is_inactive(policy));
1141
1142                 down_write(&policy->rwsem);
1143                 policy->cpu = cpu;
1144                 policy->governor = NULL;
1145                 up_write(&policy->rwsem);
1146         }
1147
1148         return policy;
1149 }
1150
1151 static struct cpufreq_policy *cpufreq_policy_alloc(struct device *dev)
1152 {
1153         struct cpufreq_policy *policy;
1154         int ret;
1155
1156         policy = kzalloc(sizeof(*policy), GFP_KERNEL);
1157         if (!policy)
1158                 return NULL;
1159
1160         if (!alloc_cpumask_var(&policy->cpus, GFP_KERNEL))
1161                 goto err_free_policy;
1162
1163         if (!zalloc_cpumask_var(&policy->related_cpus, GFP_KERNEL))
1164                 goto err_free_cpumask;
1165
1166         ret = kobject_init_and_add(&policy->kobj, &ktype_cpufreq, &dev->kobj,
1167                                    "cpufreq");
1168         if (ret) {
1169                 pr_err("%s: failed to init policy->kobj: %d\n", __func__, ret);
1170                 goto err_free_rcpumask;
1171         }
1172
1173         INIT_LIST_HEAD(&policy->policy_list);
1174         init_rwsem(&policy->rwsem);
1175         spin_lock_init(&policy->transition_lock);
1176         init_waitqueue_head(&policy->transition_wait);
1177         init_completion(&policy->kobj_unregister);
1178         INIT_WORK(&policy->update, handle_update);
1179
1180         policy->cpu = dev->id;
1181
1182         /* Set this once on allocation */
1183         policy->kobj_cpu = dev->id;
1184
1185         return policy;
1186
1187 err_free_rcpumask:
1188         free_cpumask_var(policy->related_cpus);
1189 err_free_cpumask:
1190         free_cpumask_var(policy->cpus);
1191 err_free_policy:
1192         kfree(policy);
1193
1194         return NULL;
1195 }
1196
1197 static void cpufreq_policy_put_kobj(struct cpufreq_policy *policy, bool notify)
1198 {
1199         struct kobject *kobj;
1200         struct completion *cmp;
1201
1202         if (notify)
1203                 blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1204                                              CPUFREQ_REMOVE_POLICY, policy);
1205
1206         down_write(&policy->rwsem);
1207         cpufreq_remove_dev_symlink(policy);
1208         kobj = &policy->kobj;
1209         cmp = &policy->kobj_unregister;
1210         up_write(&policy->rwsem);
1211         kobject_put(kobj);
1212
1213         /*
1214          * We need to make sure that the underlying kobj is
1215          * actually not referenced anymore by anybody before we
1216          * proceed with unloading.
1217          */
1218         pr_debug("waiting for dropping of refcount\n");
1219         wait_for_completion(cmp);
1220         pr_debug("wait complete\n");
1221 }
1222
1223 static void cpufreq_policy_free(struct cpufreq_policy *policy, bool notify)
1224 {
1225         unsigned long flags;
1226         int cpu;
1227
1228         /* Remove policy from list */
1229         write_lock_irqsave(&cpufreq_driver_lock, flags);
1230         list_del(&policy->policy_list);
1231
1232         for_each_cpu(cpu, policy->related_cpus)
1233                 per_cpu(cpufreq_cpu_data, cpu) = NULL;
1234         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1235
1236         cpufreq_policy_put_kobj(policy, notify);
1237         free_cpumask_var(policy->related_cpus);
1238         free_cpumask_var(policy->cpus);
1239         kfree(policy);
1240 }
1241
1242 /**
1243  * cpufreq_add_dev - add a CPU device
1244  *
1245  * Adds the cpufreq interface for a CPU device.
1246  *
1247  * The Oracle says: try running cpufreq registration/unregistration concurrently
1248  * with with cpu hotplugging and all hell will break loose. Tried to clean this
1249  * mess up, but more thorough testing is needed. - Mathieu
1250  */
1251 static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
1252 {
1253         unsigned int j, cpu = dev->id;
1254         int ret = -ENOMEM;
1255         struct cpufreq_policy *policy;
1256         unsigned long flags;
1257         bool recover_policy = !sif;
1258
1259         pr_debug("adding CPU %u\n", cpu);
1260
1261         /*
1262          * Only possible if 'cpu' wasn't physically present earlier and we are
1263          * here from subsys_interface add callback. A hotplug notifier will
1264          * follow and we will handle it like logical CPU hotplug then. For now,
1265          * just create the sysfs link.
1266          */
1267         if (cpu_is_offline(cpu))
1268                 return add_cpu_dev_symlink(per_cpu(cpufreq_cpu_data, cpu), cpu);
1269
1270         if (!down_read_trylock(&cpufreq_rwsem))
1271                 return 0;
1272
1273         /* Check if this CPU already has a policy to manage it */
1274         policy = per_cpu(cpufreq_cpu_data, cpu);
1275         if (policy && !policy_is_inactive(policy)) {
1276                 WARN_ON(!cpumask_test_cpu(cpu, policy->related_cpus));
1277                 ret = cpufreq_add_policy_cpu(policy, cpu, dev);
1278                 up_read(&cpufreq_rwsem);
1279                 return ret;
1280         }
1281
1282         /*
1283          * Restore the saved policy when doing light-weight init and fall back
1284          * to the full init if that fails.
1285          */
1286         policy = recover_policy ? cpufreq_policy_restore(cpu) : NULL;
1287         if (!policy) {
1288                 recover_policy = false;
1289                 policy = cpufreq_policy_alloc(dev);
1290                 if (!policy)
1291                         goto nomem_out;
1292         }
1293
1294         cpumask_copy(policy->cpus, cpumask_of(cpu));
1295
1296         /* call driver. From then on the cpufreq must be able
1297          * to accept all calls to ->verify and ->setpolicy for this CPU
1298          */
1299         ret = cpufreq_driver->init(policy);
1300         if (ret) {
1301                 pr_debug("initialization failed\n");
1302                 goto err_set_policy_cpu;
1303         }
1304
1305         down_write(&policy->rwsem);
1306
1307         /* related cpus should atleast have policy->cpus */
1308         cpumask_or(policy->related_cpus, policy->related_cpus, policy->cpus);
1309
1310         /*
1311          * affected cpus must always be the one, which are online. We aren't
1312          * managing offline cpus here.
1313          */
1314         cpumask_and(policy->cpus, policy->cpus, cpu_online_mask);
1315
1316         if (!recover_policy) {
1317                 policy->user_policy.min = policy->min;
1318                 policy->user_policy.max = policy->max;
1319
1320                 write_lock_irqsave(&cpufreq_driver_lock, flags);
1321                 for_each_cpu(j, policy->related_cpus)
1322                         per_cpu(cpufreq_cpu_data, j) = policy;
1323                 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1324         }
1325
1326         if (cpufreq_driver->get && !cpufreq_driver->setpolicy) {
1327                 policy->cur = cpufreq_driver->get(policy->cpu);
1328                 if (!policy->cur) {
1329                         pr_err("%s: ->get() failed\n", __func__);
1330                         goto err_get_freq;
1331                 }
1332         }
1333
1334         /*
1335          * Sometimes boot loaders set CPU frequency to a value outside of
1336          * frequency table present with cpufreq core. In such cases CPU might be
1337          * unstable if it has to run on that frequency for long duration of time
1338          * and so its better to set it to a frequency which is specified in
1339          * freq-table. This also makes cpufreq stats inconsistent as
1340          * cpufreq-stats would fail to register because current frequency of CPU
1341          * isn't found in freq-table.
1342          *
1343          * Because we don't want this change to effect boot process badly, we go
1344          * for the next freq which is >= policy->cur ('cur' must be set by now,
1345          * otherwise we will end up setting freq to lowest of the table as 'cur'
1346          * is initialized to zero).
1347          *
1348          * We are passing target-freq as "policy->cur - 1" otherwise
1349          * __cpufreq_driver_target() would simply fail, as policy->cur will be
1350          * equal to target-freq.
1351          */
1352         if ((cpufreq_driver->flags & CPUFREQ_NEED_INITIAL_FREQ_CHECK)
1353             && has_target()) {
1354                 /* Are we running at unknown frequency ? */
1355                 ret = cpufreq_frequency_table_get_index(policy, policy->cur);
1356                 if (ret == -EINVAL) {
1357                         /* Warn user and fix it */
1358                         pr_warn("%s: CPU%d: Running at unlisted freq: %u KHz\n",
1359                                 __func__, policy->cpu, policy->cur);
1360                         ret = __cpufreq_driver_target(policy, policy->cur - 1,
1361                                 CPUFREQ_RELATION_L);
1362
1363                         /*
1364                          * Reaching here after boot in a few seconds may not
1365                          * mean that system will remain stable at "unknown"
1366                          * frequency for longer duration. Hence, a BUG_ON().
1367                          */
1368                         BUG_ON(ret);
1369                         pr_warn("%s: CPU%d: Unlisted initial frequency changed to: %u KHz\n",
1370                                 __func__, policy->cpu, policy->cur);
1371                 }
1372         }
1373
1374         blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1375                                      CPUFREQ_START, policy);
1376
1377         if (!recover_policy) {
1378                 ret = cpufreq_add_dev_interface(policy, dev);
1379                 if (ret)
1380                         goto err_out_unregister;
1381                 blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1382                                 CPUFREQ_CREATE_POLICY, policy);
1383
1384                 write_lock_irqsave(&cpufreq_driver_lock, flags);
1385                 list_add(&policy->policy_list, &cpufreq_policy_list);
1386                 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1387         }
1388
1389         cpufreq_init_policy(policy);
1390
1391         if (!recover_policy) {
1392                 policy->user_policy.policy = policy->policy;
1393                 policy->user_policy.governor = policy->governor;
1394         }
1395         up_write(&policy->rwsem);
1396
1397         kobject_uevent(&policy->kobj, KOBJ_ADD);
1398
1399         up_read(&cpufreq_rwsem);
1400
1401         /* Callback for handling stuff after policy is ready */
1402         if (cpufreq_driver->ready)
1403                 cpufreq_driver->ready(policy);
1404
1405         pr_debug("initialization complete\n");
1406
1407         return 0;
1408
1409 err_out_unregister:
1410 err_get_freq:
1411         up_write(&policy->rwsem);
1412
1413         if (cpufreq_driver->exit)
1414                 cpufreq_driver->exit(policy);
1415 err_set_policy_cpu:
1416         cpufreq_policy_free(policy, recover_policy);
1417 nomem_out:
1418         up_read(&cpufreq_rwsem);
1419
1420         return ret;
1421 }
1422
1423 static int __cpufreq_remove_dev_prepare(struct device *dev,
1424                                         struct subsys_interface *sif)
1425 {
1426         unsigned int cpu = dev->id;
1427         int ret = 0;
1428         struct cpufreq_policy *policy;
1429
1430         pr_debug("%s: unregistering CPU %u\n", __func__, cpu);
1431
1432         policy = cpufreq_cpu_get_raw(cpu);
1433         if (!policy) {
1434                 pr_debug("%s: No cpu_data found\n", __func__);
1435                 return -EINVAL;
1436         }
1437
1438         if (has_target()) {
1439                 ret = __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
1440                 if (ret) {
1441                         pr_err("%s: Failed to stop governor\n", __func__);
1442                         return ret;
1443                 }
1444         }
1445
1446         down_write(&policy->rwsem);
1447         cpumask_clear_cpu(cpu, policy->cpus);
1448
1449         if (policy_is_inactive(policy)) {
1450                 if (has_target())
1451                         strncpy(policy->last_governor, policy->governor->name,
1452                                 CPUFREQ_NAME_LEN);
1453         } else if (cpu == policy->cpu) {
1454                 /* Nominate new CPU */
1455                 policy->cpu = cpumask_any(policy->cpus);
1456         }
1457         up_write(&policy->rwsem);
1458
1459         /* Start governor again for active policy */
1460         if (!policy_is_inactive(policy)) {
1461                 if (has_target()) {
1462                         ret = __cpufreq_governor(policy, CPUFREQ_GOV_START);
1463                         if (!ret)
1464                                 ret = __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
1465
1466                         if (ret)
1467                                 pr_err("%s: Failed to start governor\n", __func__);
1468                 }
1469         } else if (cpufreq_driver->stop_cpu) {
1470                 cpufreq_driver->stop_cpu(policy);
1471         }
1472
1473         return ret;
1474 }
1475
1476 static int __cpufreq_remove_dev_finish(struct device *dev,
1477                                        struct subsys_interface *sif)
1478 {
1479         unsigned int cpu = dev->id;
1480         int ret;
1481         struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
1482
1483         if (!policy) {
1484                 pr_debug("%s: No cpu_data found\n", __func__);
1485                 return -EINVAL;
1486         }
1487
1488         /* Only proceed for inactive policies */
1489         if (!policy_is_inactive(policy))
1490                 return 0;
1491
1492         /* If cpu is last user of policy, free policy */
1493         if (has_target()) {
1494                 ret = __cpufreq_governor(policy, CPUFREQ_GOV_POLICY_EXIT);
1495                 if (ret) {
1496                         pr_err("%s: Failed to exit governor\n", __func__);
1497                         return ret;
1498                 }
1499         }
1500
1501         /*
1502          * Perform the ->exit() even during light-weight tear-down,
1503          * since this is a core component, and is essential for the
1504          * subsequent light-weight ->init() to succeed.
1505          */
1506         if (cpufreq_driver->exit)
1507                 cpufreq_driver->exit(policy);
1508
1509         /* Free the policy only if the driver is getting removed. */
1510         if (sif)
1511                 cpufreq_policy_free(policy, true);
1512
1513         return 0;
1514 }
1515
1516 /**
1517  * cpufreq_remove_dev - remove a CPU device
1518  *
1519  * Removes the cpufreq interface for a CPU device.
1520  */
1521 static int cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
1522 {
1523         unsigned int cpu = dev->id;
1524         int ret;
1525
1526         /*
1527          * Only possible if 'cpu' is getting physically removed now. A hotplug
1528          * notifier should have already been called and we just need to remove
1529          * link or free policy here.
1530          */
1531         if (cpu_is_offline(cpu)) {
1532                 struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
1533                 struct cpumask mask;
1534
1535                 if (!policy)
1536                         return 0;
1537
1538                 cpumask_copy(&mask, policy->related_cpus);
1539                 cpumask_clear_cpu(cpu, &mask);
1540
1541                 /*
1542                  * Free policy only if all policy->related_cpus are removed
1543                  * physically.
1544                  */
1545                 if (cpumask_intersects(&mask, cpu_present_mask)) {
1546                         remove_cpu_dev_symlink(policy, cpu);
1547                         return 0;
1548                 }
1549
1550                 cpufreq_policy_free(policy, true);
1551                 return 0;
1552         }
1553
1554         ret = __cpufreq_remove_dev_prepare(dev, sif);
1555
1556         if (!ret)
1557                 ret = __cpufreq_remove_dev_finish(dev, sif);
1558
1559         return ret;
1560 }
1561
1562 static void handle_update(struct work_struct *work)
1563 {
1564         struct cpufreq_policy *policy =
1565                 container_of(work, struct cpufreq_policy, update);
1566         unsigned int cpu = policy->cpu;
1567         pr_debug("handle_update for cpu %u called\n", cpu);
1568         cpufreq_update_policy(cpu);
1569 }
1570
1571 /**
1572  *      cpufreq_out_of_sync - If actual and saved CPU frequency differs, we're
1573  *      in deep trouble.
1574  *      @policy: policy managing CPUs
1575  *      @new_freq: CPU frequency the CPU actually runs at
1576  *
1577  *      We adjust to current frequency first, and need to clean up later.
1578  *      So either call to cpufreq_update_policy() or schedule handle_update()).
1579  */
1580 static void cpufreq_out_of_sync(struct cpufreq_policy *policy,
1581                                 unsigned int new_freq)
1582 {
1583         struct cpufreq_freqs freqs;
1584
1585         pr_debug("Warning: CPU frequency out of sync: cpufreq and timing core thinks of %u, is %u kHz\n",
1586                  policy->cur, new_freq);
1587
1588         freqs.old = policy->cur;
1589         freqs.new = new_freq;
1590
1591         cpufreq_freq_transition_begin(policy, &freqs);
1592         cpufreq_freq_transition_end(policy, &freqs, 0);
1593 }
1594
1595 /**
1596  * cpufreq_quick_get - get the CPU frequency (in kHz) from policy->cur
1597  * @cpu: CPU number
1598  *
1599  * This is the last known freq, without actually getting it from the driver.
1600  * Return value will be same as what is shown in scaling_cur_freq in sysfs.
1601  */
1602 unsigned int cpufreq_quick_get(unsigned int cpu)
1603 {
1604         struct cpufreq_policy *policy;
1605         unsigned int ret_freq = 0;
1606
1607         if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get)
1608                 return cpufreq_driver->get(cpu);
1609
1610         policy = cpufreq_cpu_get(cpu);
1611         if (policy) {
1612                 ret_freq = policy->cur;
1613                 cpufreq_cpu_put(policy);
1614         }
1615
1616         return ret_freq;
1617 }
1618 EXPORT_SYMBOL(cpufreq_quick_get);
1619
1620 /**
1621  * cpufreq_quick_get_max - get the max reported CPU frequency for this CPU
1622  * @cpu: CPU number
1623  *
1624  * Just return the max possible frequency for a given CPU.
1625  */
1626 unsigned int cpufreq_quick_get_max(unsigned int cpu)
1627 {
1628         struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1629         unsigned int ret_freq = 0;
1630
1631         if (policy) {
1632                 ret_freq = policy->max;
1633                 cpufreq_cpu_put(policy);
1634         }
1635
1636         return ret_freq;
1637 }
1638 EXPORT_SYMBOL(cpufreq_quick_get_max);
1639
1640 static unsigned int __cpufreq_get(struct cpufreq_policy *policy)
1641 {
1642         unsigned int ret_freq = 0;
1643
1644         if (!cpufreq_driver->get)
1645                 return ret_freq;
1646
1647         ret_freq = cpufreq_driver->get(policy->cpu);
1648
1649         /* Updating inactive policies is invalid, so avoid doing that. */
1650         if (unlikely(policy_is_inactive(policy)))
1651                 return ret_freq;
1652
1653         if (ret_freq && policy->cur &&
1654                 !(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) {
1655                 /* verify no discrepancy between actual and
1656                                         saved value exists */
1657                 if (unlikely(ret_freq != policy->cur)) {
1658                         cpufreq_out_of_sync(policy, ret_freq);
1659                         schedule_work(&policy->update);
1660                 }
1661         }
1662
1663         return ret_freq;
1664 }
1665
1666 /**
1667  * cpufreq_get - get the current CPU frequency (in kHz)
1668  * @cpu: CPU number
1669  *
1670  * Get the CPU current (static) CPU frequency
1671  */
1672 unsigned int cpufreq_get(unsigned int cpu)
1673 {
1674         struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1675         unsigned int ret_freq = 0;
1676
1677         if (policy) {
1678                 down_read(&policy->rwsem);
1679                 ret_freq = __cpufreq_get(policy);
1680                 up_read(&policy->rwsem);
1681
1682                 cpufreq_cpu_put(policy);
1683         }
1684
1685         return ret_freq;
1686 }
1687 EXPORT_SYMBOL(cpufreq_get);
1688
1689 static struct subsys_interface cpufreq_interface = {
1690         .name           = "cpufreq",
1691         .subsys         = &cpu_subsys,
1692         .add_dev        = cpufreq_add_dev,
1693         .remove_dev     = cpufreq_remove_dev,
1694 };
1695
1696 /*
1697  * In case platform wants some specific frequency to be configured
1698  * during suspend..
1699  */
1700 int cpufreq_generic_suspend(struct cpufreq_policy *policy)
1701 {
1702         int ret;
1703
1704         if (!policy->suspend_freq) {
1705                 pr_err("%s: suspend_freq can't be zero\n", __func__);
1706                 return -EINVAL;
1707         }
1708
1709         pr_debug("%s: Setting suspend-freq: %u\n", __func__,
1710                         policy->suspend_freq);
1711
1712         ret = __cpufreq_driver_target(policy, policy->suspend_freq,
1713                         CPUFREQ_RELATION_H);
1714         if (ret)
1715                 pr_err("%s: unable to set suspend-freq: %u. err: %d\n",
1716                                 __func__, policy->suspend_freq, ret);
1717
1718         return ret;
1719 }
1720 EXPORT_SYMBOL(cpufreq_generic_suspend);
1721
1722 /**
1723  * cpufreq_suspend() - Suspend CPUFreq governors
1724  *
1725  * Called during system wide Suspend/Hibernate cycles for suspending governors
1726  * as some platforms can't change frequency after this point in suspend cycle.
1727  * Because some of the devices (like: i2c, regulators, etc) they use for
1728  * changing frequency are suspended quickly after this point.
1729  */
1730 void cpufreq_suspend(void)
1731 {
1732         struct cpufreq_policy *policy;
1733
1734         if (!cpufreq_driver)
1735                 return;
1736
1737         if (!has_target())
1738                 goto suspend;
1739
1740         pr_debug("%s: Suspending Governors\n", __func__);
1741
1742         for_each_active_policy(policy) {
1743                 if (__cpufreq_governor(policy, CPUFREQ_GOV_STOP))
1744                         pr_err("%s: Failed to stop governor for policy: %p\n",
1745                                 __func__, policy);
1746                 else if (cpufreq_driver->suspend
1747                     && cpufreq_driver->suspend(policy))
1748                         pr_err("%s: Failed to suspend driver: %p\n", __func__,
1749                                 policy);
1750         }
1751
1752 suspend:
1753         cpufreq_suspended = true;
1754 }
1755
1756 /**
1757  * cpufreq_resume() - Resume CPUFreq governors
1758  *
1759  * Called during system wide Suspend/Hibernate cycle for resuming governors that
1760  * are suspended with cpufreq_suspend().
1761  */
1762 void cpufreq_resume(void)
1763 {
1764         struct cpufreq_policy *policy;
1765
1766         if (!cpufreq_driver)
1767                 return;
1768
1769         cpufreq_suspended = false;
1770
1771         if (!has_target())
1772                 return;
1773
1774         pr_debug("%s: Resuming Governors\n", __func__);
1775
1776         for_each_active_policy(policy) {
1777                 if (cpufreq_driver->resume && cpufreq_driver->resume(policy))
1778                         pr_err("%s: Failed to resume driver: %p\n", __func__,
1779                                 policy);
1780                 else if (__cpufreq_governor(policy, CPUFREQ_GOV_START)
1781                     || __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS))
1782                         pr_err("%s: Failed to start governor for policy: %p\n",
1783                                 __func__, policy);
1784         }
1785
1786         /*
1787          * schedule call cpufreq_update_policy() for first-online CPU, as that
1788          * wouldn't be hotplugged-out on suspend. It will verify that the
1789          * current freq is in sync with what we believe it to be.
1790          */
1791         policy = cpufreq_cpu_get_raw(cpumask_first(cpu_online_mask));
1792         if (WARN_ON(!policy))
1793                 return;
1794
1795         schedule_work(&policy->update);
1796 }
1797
1798 /**
1799  *      cpufreq_get_current_driver - return current driver's name
1800  *
1801  *      Return the name string of the currently loaded cpufreq driver
1802  *      or NULL, if none.
1803  */
1804 const char *cpufreq_get_current_driver(void)
1805 {
1806         if (cpufreq_driver)
1807                 return cpufreq_driver->name;
1808
1809         return NULL;
1810 }
1811 EXPORT_SYMBOL_GPL(cpufreq_get_current_driver);
1812
1813 /**
1814  *      cpufreq_get_driver_data - return current driver data
1815  *
1816  *      Return the private data of the currently loaded cpufreq
1817  *      driver, or NULL if no cpufreq driver is loaded.
1818  */
1819 void *cpufreq_get_driver_data(void)
1820 {
1821         if (cpufreq_driver)
1822                 return cpufreq_driver->driver_data;
1823
1824         return NULL;
1825 }
1826 EXPORT_SYMBOL_GPL(cpufreq_get_driver_data);
1827
1828 /*********************************************************************
1829  *                     NOTIFIER LISTS INTERFACE                      *
1830  *********************************************************************/
1831
1832 /**
1833  *      cpufreq_register_notifier - register a driver with cpufreq
1834  *      @nb: notifier function to register
1835  *      @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1836  *
1837  *      Add a driver to one of two lists: either a list of drivers that
1838  *      are notified about clock rate changes (once before and once after
1839  *      the transition), or a list of drivers that are notified about
1840  *      changes in cpufreq policy.
1841  *
1842  *      This function may sleep, and has the same return conditions as
1843  *      blocking_notifier_chain_register.
1844  */
1845 int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list)
1846 {
1847         int ret;
1848
1849         if (cpufreq_disabled())
1850                 return -EINVAL;
1851
1852         WARN_ON(!init_cpufreq_transition_notifier_list_called);
1853
1854         switch (list) {
1855         case CPUFREQ_TRANSITION_NOTIFIER:
1856                 ret = srcu_notifier_chain_register(
1857                                 &cpufreq_transition_notifier_list, nb);
1858                 break;
1859         case CPUFREQ_POLICY_NOTIFIER:
1860                 ret = blocking_notifier_chain_register(
1861                                 &cpufreq_policy_notifier_list, nb);
1862                 break;
1863         default:
1864                 ret = -EINVAL;
1865         }
1866
1867         return ret;
1868 }
1869 EXPORT_SYMBOL(cpufreq_register_notifier);
1870
1871 /**
1872  *      cpufreq_unregister_notifier - unregister a driver with cpufreq
1873  *      @nb: notifier block to be unregistered
1874  *      @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1875  *
1876  *      Remove a driver from the CPU frequency notifier list.
1877  *
1878  *      This function may sleep, and has the same return conditions as
1879  *      blocking_notifier_chain_unregister.
1880  */
1881 int cpufreq_unregister_notifier(struct notifier_block *nb, unsigned int list)
1882 {
1883         int ret;
1884
1885         if (cpufreq_disabled())
1886                 return -EINVAL;
1887
1888         switch (list) {
1889         case CPUFREQ_TRANSITION_NOTIFIER:
1890                 ret = srcu_notifier_chain_unregister(
1891                                 &cpufreq_transition_notifier_list, nb);
1892                 break;
1893         case CPUFREQ_POLICY_NOTIFIER:
1894                 ret = blocking_notifier_chain_unregister(
1895                                 &cpufreq_policy_notifier_list, nb);
1896                 break;
1897         default:
1898                 ret = -EINVAL;
1899         }
1900
1901         return ret;
1902 }
1903 EXPORT_SYMBOL(cpufreq_unregister_notifier);
1904
1905
1906 /*********************************************************************
1907  *                              GOVERNORS                            *
1908  *********************************************************************/
1909
1910 /* Must set freqs->new to intermediate frequency */
1911 static int __target_intermediate(struct cpufreq_policy *policy,
1912                                  struct cpufreq_freqs *freqs, int index)
1913 {
1914         int ret;
1915
1916         freqs->new = cpufreq_driver->get_intermediate(policy, index);
1917
1918         /* We don't need to switch to intermediate freq */
1919         if (!freqs->new)
1920                 return 0;
1921
1922         pr_debug("%s: cpu: %d, switching to intermediate freq: oldfreq: %u, intermediate freq: %u\n",
1923                  __func__, policy->cpu, freqs->old, freqs->new);
1924
1925         cpufreq_freq_transition_begin(policy, freqs);
1926         ret = cpufreq_driver->target_intermediate(policy, index);
1927         cpufreq_freq_transition_end(policy, freqs, ret);
1928
1929         if (ret)
1930                 pr_err("%s: Failed to change to intermediate frequency: %d\n",
1931                        __func__, ret);
1932
1933         return ret;
1934 }
1935
1936 static int __target_index(struct cpufreq_policy *policy,
1937                           struct cpufreq_frequency_table *freq_table, int index)
1938 {
1939         struct cpufreq_freqs freqs = {.old = policy->cur, .flags = 0};
1940         unsigned int intermediate_freq = 0;
1941         int retval = -EINVAL;
1942         bool notify;
1943
1944         notify = !(cpufreq_driver->flags & CPUFREQ_ASYNC_NOTIFICATION);
1945         if (notify) {
1946                 /* Handle switching to intermediate frequency */
1947                 if (cpufreq_driver->get_intermediate) {
1948                         retval = __target_intermediate(policy, &freqs, index);
1949                         if (retval)
1950                                 return retval;
1951
1952                         intermediate_freq = freqs.new;
1953                         /* Set old freq to intermediate */
1954                         if (intermediate_freq)
1955                                 freqs.old = freqs.new;
1956                 }
1957
1958                 freqs.new = freq_table[index].frequency;
1959                 pr_debug("%s: cpu: %d, oldfreq: %u, new freq: %u\n",
1960                          __func__, policy->cpu, freqs.old, freqs.new);
1961
1962                 cpufreq_freq_transition_begin(policy, &freqs);
1963         }
1964
1965         retval = cpufreq_driver->target_index(policy, index);
1966         if (retval)
1967                 pr_err("%s: Failed to change cpu frequency: %d\n", __func__,
1968                        retval);
1969
1970         if (notify) {
1971                 cpufreq_freq_transition_end(policy, &freqs, retval);
1972
1973                 /*
1974                  * Failed after setting to intermediate freq? Driver should have
1975                  * reverted back to initial frequency and so should we. Check
1976                  * here for intermediate_freq instead of get_intermediate, in
1977                  * case we haven't switched to intermediate freq at all.
1978                  */
1979                 if (unlikely(retval && intermediate_freq)) {
1980                         freqs.old = intermediate_freq;
1981                         freqs.new = policy->restore_freq;
1982                         cpufreq_freq_transition_begin(policy, &freqs);
1983                         cpufreq_freq_transition_end(policy, &freqs, 0);
1984                 }
1985         }
1986
1987         return retval;
1988 }
1989
1990 int __cpufreq_driver_target(struct cpufreq_policy *policy,
1991                             unsigned int target_freq,
1992                             unsigned int relation)
1993 {
1994         unsigned int old_target_freq = target_freq;
1995         int retval = -EINVAL;
1996
1997         if (cpufreq_disabled())
1998                 return -ENODEV;
1999
2000         /* Make sure that target_freq is within supported range */
2001         if (target_freq > policy->max)
2002                 target_freq = policy->max;
2003         if (target_freq < policy->min)
2004                 target_freq = policy->min;
2005
2006         pr_debug("target for CPU %u: %u kHz, relation %u, requested %u kHz\n",
2007                  policy->cpu, target_freq, relation, old_target_freq);
2008
2009         /*
2010          * This might look like a redundant call as we are checking it again
2011          * after finding index. But it is left intentionally for cases where
2012          * exactly same freq is called again and so we can save on few function
2013          * calls.
2014          */
2015         if (target_freq == policy->cur)
2016                 return 0;
2017
2018         /* Save last value to restore later on errors */
2019         policy->restore_freq = policy->cur;
2020
2021         if (cpufreq_driver->target)
2022                 retval = cpufreq_driver->target(policy, target_freq, relation);
2023         else if (cpufreq_driver->target_index) {
2024                 struct cpufreq_frequency_table *freq_table;
2025                 int index;
2026
2027                 freq_table = cpufreq_frequency_get_table(policy->cpu);
2028                 if (unlikely(!freq_table)) {
2029                         pr_err("%s: Unable to find freq_table\n", __func__);
2030                         goto out;
2031                 }
2032
2033                 retval = cpufreq_frequency_table_target(policy, freq_table,
2034                                 target_freq, relation, &index);
2035                 if (unlikely(retval)) {
2036                         pr_err("%s: Unable to find matching freq\n", __func__);
2037                         goto out;
2038                 }
2039
2040                 if (freq_table[index].frequency == policy->cur) {
2041                         retval = 0;
2042                         goto out;
2043                 }
2044
2045                 retval = __target_index(policy, freq_table, index);
2046         }
2047
2048 out:
2049         return retval;
2050 }
2051 EXPORT_SYMBOL_GPL(__cpufreq_driver_target);
2052
2053 int cpufreq_driver_target(struct cpufreq_policy *policy,
2054                           unsigned int target_freq,
2055                           unsigned int relation)
2056 {
2057         int ret = -EINVAL;
2058
2059         down_write(&policy->rwsem);
2060
2061         ret = __cpufreq_driver_target(policy, target_freq, relation);
2062
2063         up_write(&policy->rwsem);
2064
2065         return ret;
2066 }
2067 EXPORT_SYMBOL_GPL(cpufreq_driver_target);
2068
2069 static int __cpufreq_governor(struct cpufreq_policy *policy,
2070                                         unsigned int event)
2071 {
2072         int ret;
2073
2074         /* Only must be defined when default governor is known to have latency
2075            restrictions, like e.g. conservative or ondemand.
2076            That this is the case is already ensured in Kconfig
2077         */
2078 #ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE
2079         struct cpufreq_governor *gov = &cpufreq_gov_performance;
2080 #else
2081         struct cpufreq_governor *gov = NULL;
2082 #endif
2083
2084         /* Don't start any governor operations if we are entering suspend */
2085         if (cpufreq_suspended)
2086                 return 0;
2087         /*
2088          * Governor might not be initiated here if ACPI _PPC changed
2089          * notification happened, so check it.
2090          */
2091         if (!policy->governor)
2092                 return -EINVAL;
2093
2094         if (policy->governor->max_transition_latency &&
2095             policy->cpuinfo.transition_latency >
2096             policy->governor->max_transition_latency) {
2097                 if (!gov)
2098                         return -EINVAL;
2099                 else {
2100                         pr_warn("%s governor failed, too long transition latency of HW, fallback to %s governor\n",
2101                                 policy->governor->name, gov->name);
2102                         policy->governor = gov;
2103                 }
2104         }
2105
2106         if (event == CPUFREQ_GOV_POLICY_INIT)
2107                 if (!try_module_get(policy->governor->owner))
2108                         return -EINVAL;
2109
2110         pr_debug("__cpufreq_governor for CPU %u, event %u\n",
2111                  policy->cpu, event);
2112
2113         mutex_lock(&cpufreq_governor_lock);
2114         if ((policy->governor_enabled && event == CPUFREQ_GOV_START)
2115             || (!policy->governor_enabled
2116             && (event == CPUFREQ_GOV_LIMITS || event == CPUFREQ_GOV_STOP))) {
2117                 mutex_unlock(&cpufreq_governor_lock);
2118                 return -EBUSY;
2119         }
2120
2121         if (event == CPUFREQ_GOV_STOP)
2122                 policy->governor_enabled = false;
2123         else if (event == CPUFREQ_GOV_START)
2124                 policy->governor_enabled = true;
2125
2126         mutex_unlock(&cpufreq_governor_lock);
2127
2128         ret = policy->governor->governor(policy, event);
2129
2130         if (!ret) {
2131                 if (event == CPUFREQ_GOV_POLICY_INIT)
2132                         policy->governor->initialized++;
2133                 else if (event == CPUFREQ_GOV_POLICY_EXIT)
2134                         policy->governor->initialized--;
2135         } else {
2136                 /* Restore original values */
2137                 mutex_lock(&cpufreq_governor_lock);
2138                 if (event == CPUFREQ_GOV_STOP)
2139                         policy->governor_enabled = true;
2140                 else if (event == CPUFREQ_GOV_START)
2141                         policy->governor_enabled = false;
2142                 mutex_unlock(&cpufreq_governor_lock);
2143         }
2144
2145         if (((event == CPUFREQ_GOV_POLICY_INIT) && ret) ||
2146                         ((event == CPUFREQ_GOV_POLICY_EXIT) && !ret))
2147                 module_put(policy->governor->owner);
2148
2149         return ret;
2150 }
2151
2152 int cpufreq_register_governor(struct cpufreq_governor *governor)
2153 {
2154         int err;
2155
2156         if (!governor)
2157                 return -EINVAL;
2158
2159         if (cpufreq_disabled())
2160                 return -ENODEV;
2161
2162         mutex_lock(&cpufreq_governor_mutex);
2163
2164         governor->initialized = 0;
2165         err = -EBUSY;
2166         if (!find_governor(governor->name)) {
2167                 err = 0;
2168                 list_add(&governor->governor_list, &cpufreq_governor_list);
2169         }
2170
2171         mutex_unlock(&cpufreq_governor_mutex);
2172         return err;
2173 }
2174 EXPORT_SYMBOL_GPL(cpufreq_register_governor);
2175
2176 void cpufreq_unregister_governor(struct cpufreq_governor *governor)
2177 {
2178         struct cpufreq_policy *policy;
2179         unsigned long flags;
2180
2181         if (!governor)
2182                 return;
2183
2184         if (cpufreq_disabled())
2185                 return;
2186
2187         /* clear last_governor for all inactive policies */
2188         read_lock_irqsave(&cpufreq_driver_lock, flags);
2189         for_each_inactive_policy(policy) {
2190                 if (!strcmp(policy->last_governor, governor->name)) {
2191                         policy->governor = NULL;
2192                         strcpy(policy->last_governor, "\0");
2193                 }
2194         }
2195         read_unlock_irqrestore(&cpufreq_driver_lock, flags);
2196
2197         mutex_lock(&cpufreq_governor_mutex);
2198         list_del(&governor->governor_list);
2199         mutex_unlock(&cpufreq_governor_mutex);
2200         return;
2201 }
2202 EXPORT_SYMBOL_GPL(cpufreq_unregister_governor);
2203
2204
2205 /*********************************************************************
2206  *                          POLICY INTERFACE                         *
2207  *********************************************************************/
2208
2209 /**
2210  * cpufreq_get_policy - get the current cpufreq_policy
2211  * @policy: struct cpufreq_policy into which the current cpufreq_policy
2212  *      is written
2213  *
2214  * Reads the current cpufreq policy.
2215  */
2216 int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
2217 {
2218         struct cpufreq_policy *cpu_policy;
2219         if (!policy)
2220                 return -EINVAL;
2221
2222         cpu_policy = cpufreq_cpu_get(cpu);
2223         if (!cpu_policy)
2224                 return -EINVAL;
2225
2226         memcpy(policy, cpu_policy, sizeof(*policy));
2227
2228         cpufreq_cpu_put(cpu_policy);
2229         return 0;
2230 }
2231 EXPORT_SYMBOL(cpufreq_get_policy);
2232
2233 /*
2234  * policy : current policy.
2235  * new_policy: policy to be set.
2236  */
2237 static int cpufreq_set_policy(struct cpufreq_policy *policy,
2238                                 struct cpufreq_policy *new_policy)
2239 {
2240         struct cpufreq_governor *old_gov;
2241         int ret;
2242
2243         pr_debug("setting new policy for CPU %u: %u - %u kHz\n",
2244                  new_policy->cpu, new_policy->min, new_policy->max);
2245
2246         memcpy(&new_policy->cpuinfo, &policy->cpuinfo, sizeof(policy->cpuinfo));
2247
2248         if (new_policy->min > policy->max || new_policy->max < policy->min)
2249                 return -EINVAL;
2250
2251         /* verify the cpu speed can be set within this limit */
2252         ret = cpufreq_driver->verify(new_policy);
2253         if (ret)
2254                 return ret;
2255
2256         /* adjust if necessary - all reasons */
2257         blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2258                         CPUFREQ_ADJUST, new_policy);
2259
2260         /* adjust if necessary - hardware incompatibility*/
2261         blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2262                         CPUFREQ_INCOMPATIBLE, new_policy);
2263
2264         /*
2265          * verify the cpu speed can be set within this limit, which might be
2266          * different to the first one
2267          */
2268         ret = cpufreq_driver->verify(new_policy);
2269         if (ret)
2270                 return ret;
2271
2272         /* notification of the new policy */
2273         blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2274                         CPUFREQ_NOTIFY, new_policy);
2275
2276         policy->min = new_policy->min;
2277         policy->max = new_policy->max;
2278
2279         pr_debug("new min and max freqs are %u - %u kHz\n",
2280                  policy->min, policy->max);
2281
2282         if (cpufreq_driver->setpolicy) {
2283                 policy->policy = new_policy->policy;
2284                 pr_debug("setting range\n");
2285                 return cpufreq_driver->setpolicy(new_policy);
2286         }
2287
2288         if (new_policy->governor == policy->governor)
2289                 goto out;
2290
2291         pr_debug("governor switch\n");
2292
2293         /* save old, working values */
2294         old_gov = policy->governor;
2295         /* end old governor */
2296         if (old_gov) {
2297                 __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
2298                 up_write(&policy->rwsem);
2299                 __cpufreq_governor(policy, CPUFREQ_GOV_POLICY_EXIT);
2300                 down_write(&policy->rwsem);
2301         }
2302
2303         /* start new governor */
2304         policy->governor = new_policy->governor;
2305         if (!__cpufreq_governor(policy, CPUFREQ_GOV_POLICY_INIT)) {
2306                 if (!__cpufreq_governor(policy, CPUFREQ_GOV_START))
2307                         goto out;
2308
2309                 up_write(&policy->rwsem);
2310                 __cpufreq_governor(policy, CPUFREQ_GOV_POLICY_EXIT);
2311                 down_write(&policy->rwsem);
2312         }
2313
2314         /* new governor failed, so re-start old one */
2315         pr_debug("starting governor %s failed\n", policy->governor->name);
2316         if (old_gov) {
2317                 policy->governor = old_gov;
2318                 __cpufreq_governor(policy, CPUFREQ_GOV_POLICY_INIT);
2319                 __cpufreq_governor(policy, CPUFREQ_GOV_START);
2320         }
2321
2322         return -EINVAL;
2323
2324  out:
2325         pr_debug("governor: change or update limits\n");
2326         return __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
2327 }
2328
2329 /**
2330  *      cpufreq_update_policy - re-evaluate an existing cpufreq policy
2331  *      @cpu: CPU which shall be re-evaluated
2332  *
2333  *      Useful for policy notifiers which have different necessities
2334  *      at different times.
2335  */
2336 int cpufreq_update_policy(unsigned int cpu)
2337 {
2338         struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
2339         struct cpufreq_policy new_policy;
2340         int ret;
2341
2342         if (!policy)
2343                 return -ENODEV;
2344
2345         down_write(&policy->rwsem);
2346
2347         pr_debug("updating policy for CPU %u\n", cpu);
2348         memcpy(&new_policy, policy, sizeof(*policy));
2349         new_policy.min = policy->user_policy.min;
2350         new_policy.max = policy->user_policy.max;
2351         new_policy.policy = policy->user_policy.policy;
2352         new_policy.governor = policy->user_policy.governor;
2353
2354         /*
2355          * BIOS might change freq behind our back
2356          * -> ask driver for current freq and notify governors about a change
2357          */
2358         if (cpufreq_driver->get && !cpufreq_driver->setpolicy) {
2359                 new_policy.cur = cpufreq_driver->get(cpu);
2360                 if (WARN_ON(!new_policy.cur)) {
2361                         ret = -EIO;
2362                         goto unlock;
2363                 }
2364
2365                 if (!policy->cur) {
2366                         pr_debug("Driver did not initialize current freq\n");
2367                         policy->cur = new_policy.cur;
2368                 } else {
2369                         if (policy->cur != new_policy.cur && has_target())
2370                                 cpufreq_out_of_sync(policy, new_policy.cur);
2371                 }
2372         }
2373
2374         ret = cpufreq_set_policy(policy, &new_policy);
2375
2376 unlock:
2377         up_write(&policy->rwsem);
2378
2379         cpufreq_cpu_put(policy);
2380         return ret;
2381 }
2382 EXPORT_SYMBOL(cpufreq_update_policy);
2383
2384 static int cpufreq_cpu_callback(struct notifier_block *nfb,
2385                                         unsigned long action, void *hcpu)
2386 {
2387         unsigned int cpu = (unsigned long)hcpu;
2388         struct device *dev;
2389
2390         dev = get_cpu_device(cpu);
2391         if (dev) {
2392                 switch (action & ~CPU_TASKS_FROZEN) {
2393                 case CPU_ONLINE:
2394                         cpufreq_add_dev(dev, NULL);
2395                         break;
2396
2397                 case CPU_DOWN_PREPARE:
2398                         __cpufreq_remove_dev_prepare(dev, NULL);
2399                         break;
2400
2401                 case CPU_POST_DEAD:
2402                         __cpufreq_remove_dev_finish(dev, NULL);
2403                         break;
2404
2405                 case CPU_DOWN_FAILED:
2406                         cpufreq_add_dev(dev, NULL);
2407                         break;
2408                 }
2409         }
2410         return NOTIFY_OK;
2411 }
2412
2413 static struct notifier_block __refdata cpufreq_cpu_notifier = {
2414         .notifier_call = cpufreq_cpu_callback,
2415 };
2416
2417 /*********************************************************************
2418  *               BOOST                                               *
2419  *********************************************************************/
2420 static int cpufreq_boost_set_sw(int state)
2421 {
2422         struct cpufreq_frequency_table *freq_table;
2423         struct cpufreq_policy *policy;
2424         int ret = -EINVAL;
2425
2426         for_each_active_policy(policy) {
2427                 freq_table = cpufreq_frequency_get_table(policy->cpu);
2428                 if (freq_table) {
2429                         ret = cpufreq_frequency_table_cpuinfo(policy,
2430                                                         freq_table);
2431                         if (ret) {
2432                                 pr_err("%s: Policy frequency update failed\n",
2433                                        __func__);
2434                                 break;
2435                         }
2436                         policy->user_policy.max = policy->max;
2437                         __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
2438                 }
2439         }
2440
2441         return ret;
2442 }
2443
2444 int cpufreq_boost_trigger_state(int state)
2445 {
2446         unsigned long flags;
2447         int ret = 0;
2448
2449         if (cpufreq_driver->boost_enabled == state)
2450                 return 0;
2451
2452         write_lock_irqsave(&cpufreq_driver_lock, flags);
2453         cpufreq_driver->boost_enabled = state;
2454         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2455
2456         ret = cpufreq_driver->set_boost(state);
2457         if (ret) {
2458                 write_lock_irqsave(&cpufreq_driver_lock, flags);
2459                 cpufreq_driver->boost_enabled = !state;
2460                 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2461
2462                 pr_err("%s: Cannot %s BOOST\n",
2463                        __func__, state ? "enable" : "disable");
2464         }
2465
2466         return ret;
2467 }
2468
2469 int cpufreq_boost_supported(void)
2470 {
2471         if (likely(cpufreq_driver))
2472                 return cpufreq_driver->boost_supported;
2473
2474         return 0;
2475 }
2476 EXPORT_SYMBOL_GPL(cpufreq_boost_supported);
2477
2478 int cpufreq_boost_enabled(void)
2479 {
2480         return cpufreq_driver->boost_enabled;
2481 }
2482 EXPORT_SYMBOL_GPL(cpufreq_boost_enabled);
2483
2484 /*********************************************************************
2485  *               REGISTER / UNREGISTER CPUFREQ DRIVER                *
2486  *********************************************************************/
2487
2488 /**
2489  * cpufreq_register_driver - register a CPU Frequency driver
2490  * @driver_data: A struct cpufreq_driver containing the values#
2491  * submitted by the CPU Frequency driver.
2492  *
2493  * Registers a CPU Frequency driver to this core code. This code
2494  * returns zero on success, -EBUSY when another driver got here first
2495  * (and isn't unregistered in the meantime).
2496  *
2497  */
2498 int cpufreq_register_driver(struct cpufreq_driver *driver_data)
2499 {
2500         unsigned long flags;
2501         int ret;
2502
2503         if (cpufreq_disabled())
2504                 return -ENODEV;
2505
2506         if (!driver_data || !driver_data->verify || !driver_data->init ||
2507             !(driver_data->setpolicy || driver_data->target_index ||
2508                     driver_data->target) ||
2509              (driver_data->setpolicy && (driver_data->target_index ||
2510                     driver_data->target)) ||
2511              (!!driver_data->get_intermediate != !!driver_data->target_intermediate))
2512                 return -EINVAL;
2513
2514         pr_debug("trying to register driver %s\n", driver_data->name);
2515
2516         write_lock_irqsave(&cpufreq_driver_lock, flags);
2517         if (cpufreq_driver) {
2518                 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2519                 return -EEXIST;
2520         }
2521         cpufreq_driver = driver_data;
2522         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2523
2524         if (driver_data->setpolicy)
2525                 driver_data->flags |= CPUFREQ_CONST_LOOPS;
2526
2527         if (cpufreq_boost_supported()) {
2528                 /*
2529                  * Check if driver provides function to enable boost -
2530                  * if not, use cpufreq_boost_set_sw as default
2531                  */
2532                 if (!cpufreq_driver->set_boost)
2533                         cpufreq_driver->set_boost = cpufreq_boost_set_sw;
2534
2535                 ret = cpufreq_sysfs_create_file(&boost.attr);
2536                 if (ret) {
2537                         pr_err("%s: cannot register global BOOST sysfs file\n",
2538                                __func__);
2539                         goto err_null_driver;
2540                 }
2541         }
2542
2543         ret = subsys_interface_register(&cpufreq_interface);
2544         if (ret)
2545                 goto err_boost_unreg;
2546
2547         if (!(cpufreq_driver->flags & CPUFREQ_STICKY) &&
2548             list_empty(&cpufreq_policy_list)) {
2549                 /* if all ->init() calls failed, unregister */
2550                 pr_debug("%s: No CPU initialized for driver %s\n", __func__,
2551                          driver_data->name);
2552                 goto err_if_unreg;
2553         }
2554
2555         register_hotcpu_notifier(&cpufreq_cpu_notifier);
2556         pr_debug("driver %s up and running\n", driver_data->name);
2557
2558         return 0;
2559 err_if_unreg:
2560         subsys_interface_unregister(&cpufreq_interface);
2561 err_boost_unreg:
2562         if (cpufreq_boost_supported())
2563                 cpufreq_sysfs_remove_file(&boost.attr);
2564 err_null_driver:
2565         write_lock_irqsave(&cpufreq_driver_lock, flags);
2566         cpufreq_driver = NULL;
2567         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2568         return ret;
2569 }
2570 EXPORT_SYMBOL_GPL(cpufreq_register_driver);
2571
2572 /**
2573  * cpufreq_unregister_driver - unregister the current CPUFreq driver
2574  *
2575  * Unregister the current CPUFreq driver. Only call this if you have
2576  * the right to do so, i.e. if you have succeeded in initialising before!
2577  * Returns zero if successful, and -EINVAL if the cpufreq_driver is
2578  * currently not initialised.
2579  */
2580 int cpufreq_unregister_driver(struct cpufreq_driver *driver)
2581 {
2582         unsigned long flags;
2583
2584         if (!cpufreq_driver || (driver != cpufreq_driver))
2585                 return -EINVAL;
2586
2587         pr_debug("unregistering driver %s\n", driver->name);
2588
2589         subsys_interface_unregister(&cpufreq_interface);
2590         if (cpufreq_boost_supported())
2591                 cpufreq_sysfs_remove_file(&boost.attr);
2592
2593         unregister_hotcpu_notifier(&cpufreq_cpu_notifier);
2594
2595         down_write(&cpufreq_rwsem);
2596         write_lock_irqsave(&cpufreq_driver_lock, flags);
2597
2598         cpufreq_driver = NULL;
2599
2600         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2601         up_write(&cpufreq_rwsem);
2602
2603         return 0;
2604 }
2605 EXPORT_SYMBOL_GPL(cpufreq_unregister_driver);
2606
2607 /*
2608  * Stop cpufreq at shutdown to make sure it isn't holding any locks
2609  * or mutexes when secondary CPUs are halted.
2610  */
2611 static struct syscore_ops cpufreq_syscore_ops = {
2612         .shutdown = cpufreq_suspend,
2613 };
2614
2615 static int __init cpufreq_core_init(void)
2616 {
2617         if (cpufreq_disabled())
2618                 return -ENODEV;
2619
2620         cpufreq_global_kobject = kobject_create();
2621         BUG_ON(!cpufreq_global_kobject);
2622
2623         register_syscore_ops(&cpufreq_syscore_ops);
2624
2625         return 0;
2626 }
2627 core_initcall(cpufreq_core_init);