]> asedeno.scripts.mit.edu Git - linux.git/blob - drivers/devfreq/devfreq.c
Merge tag 'gcc-plugins-v5.2-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel...
[linux.git] / drivers / devfreq / devfreq.c
1 /*
2  * devfreq: Generic Dynamic Voltage and Frequency Scaling (DVFS) Framework
3  *          for Non-CPU Devices.
4  *
5  * Copyright (C) 2011 Samsung Electronics
6  *      MyungJoo Ham <myungjoo.ham@samsung.com>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as
10  * published by the Free Software Foundation.
11  */
12
13 #include <linux/kernel.h>
14 #include <linux/kmod.h>
15 #include <linux/sched.h>
16 #include <linux/errno.h>
17 #include <linux/err.h>
18 #include <linux/init.h>
19 #include <linux/export.h>
20 #include <linux/slab.h>
21 #include <linux/stat.h>
22 #include <linux/pm_opp.h>
23 #include <linux/devfreq.h>
24 #include <linux/workqueue.h>
25 #include <linux/platform_device.h>
26 #include <linux/list.h>
27 #include <linux/printk.h>
28 #include <linux/hrtimer.h>
29 #include <linux/of.h>
30 #include "governor.h"
31
32 #define CREATE_TRACE_POINTS
33 #include <trace/events/devfreq.h>
34
35 static struct class *devfreq_class;
36
37 /*
38  * devfreq core provides delayed work based load monitoring helper
39  * functions. Governors can use these or can implement their own
40  * monitoring mechanism.
41  */
42 static struct workqueue_struct *devfreq_wq;
43
44 /* The list of all device-devfreq governors */
45 static LIST_HEAD(devfreq_governor_list);
46 /* The list of all device-devfreq */
47 static LIST_HEAD(devfreq_list);
48 static DEFINE_MUTEX(devfreq_list_lock);
49
50 /**
51  * find_device_devfreq() - find devfreq struct using device pointer
52  * @dev:        device pointer used to lookup device devfreq.
53  *
54  * Search the list of device devfreqs and return the matched device's
55  * devfreq info. devfreq_list_lock should be held by the caller.
56  */
57 static struct devfreq *find_device_devfreq(struct device *dev)
58 {
59         struct devfreq *tmp_devfreq;
60
61         if (IS_ERR_OR_NULL(dev)) {
62                 pr_err("DEVFREQ: %s: Invalid parameters\n", __func__);
63                 return ERR_PTR(-EINVAL);
64         }
65         WARN(!mutex_is_locked(&devfreq_list_lock),
66              "devfreq_list_lock must be locked.");
67
68         list_for_each_entry(tmp_devfreq, &devfreq_list, node) {
69                 if (tmp_devfreq->dev.parent == dev)
70                         return tmp_devfreq;
71         }
72
73         return ERR_PTR(-ENODEV);
74 }
75
76 static unsigned long find_available_min_freq(struct devfreq *devfreq)
77 {
78         struct dev_pm_opp *opp;
79         unsigned long min_freq = 0;
80
81         opp = dev_pm_opp_find_freq_ceil(devfreq->dev.parent, &min_freq);
82         if (IS_ERR(opp))
83                 min_freq = 0;
84         else
85                 dev_pm_opp_put(opp);
86
87         return min_freq;
88 }
89
90 static unsigned long find_available_max_freq(struct devfreq *devfreq)
91 {
92         struct dev_pm_opp *opp;
93         unsigned long max_freq = ULONG_MAX;
94
95         opp = dev_pm_opp_find_freq_floor(devfreq->dev.parent, &max_freq);
96         if (IS_ERR(opp))
97                 max_freq = 0;
98         else
99                 dev_pm_opp_put(opp);
100
101         return max_freq;
102 }
103
104 /**
105  * devfreq_get_freq_level() - Lookup freq_table for the frequency
106  * @devfreq:    the devfreq instance
107  * @freq:       the target frequency
108  */
109 static int devfreq_get_freq_level(struct devfreq *devfreq, unsigned long freq)
110 {
111         int lev;
112
113         for (lev = 0; lev < devfreq->profile->max_state; lev++)
114                 if (freq == devfreq->profile->freq_table[lev])
115                         return lev;
116
117         return -EINVAL;
118 }
119
120 static int set_freq_table(struct devfreq *devfreq)
121 {
122         struct devfreq_dev_profile *profile = devfreq->profile;
123         struct dev_pm_opp *opp;
124         unsigned long freq;
125         int i, count;
126
127         /* Initialize the freq_table from OPP table */
128         count = dev_pm_opp_get_opp_count(devfreq->dev.parent);
129         if (count <= 0)
130                 return -EINVAL;
131
132         profile->max_state = count;
133         profile->freq_table = devm_kcalloc(devfreq->dev.parent,
134                                         profile->max_state,
135                                         sizeof(*profile->freq_table),
136                                         GFP_KERNEL);
137         if (!profile->freq_table) {
138                 profile->max_state = 0;
139                 return -ENOMEM;
140         }
141
142         for (i = 0, freq = 0; i < profile->max_state; i++, freq++) {
143                 opp = dev_pm_opp_find_freq_ceil(devfreq->dev.parent, &freq);
144                 if (IS_ERR(opp)) {
145                         devm_kfree(devfreq->dev.parent, profile->freq_table);
146                         profile->max_state = 0;
147                         return PTR_ERR(opp);
148                 }
149                 dev_pm_opp_put(opp);
150                 profile->freq_table[i] = freq;
151         }
152
153         return 0;
154 }
155
156 /**
157  * devfreq_update_status() - Update statistics of devfreq behavior
158  * @devfreq:    the devfreq instance
159  * @freq:       the update target frequency
160  */
161 int devfreq_update_status(struct devfreq *devfreq, unsigned long freq)
162 {
163         int lev, prev_lev, ret = 0;
164         unsigned long cur_time;
165
166         cur_time = jiffies;
167
168         /* Immediately exit if previous_freq is not initialized yet. */
169         if (!devfreq->previous_freq)
170                 goto out;
171
172         prev_lev = devfreq_get_freq_level(devfreq, devfreq->previous_freq);
173         if (prev_lev < 0) {
174                 ret = prev_lev;
175                 goto out;
176         }
177
178         devfreq->time_in_state[prev_lev] +=
179                          cur_time - devfreq->last_stat_updated;
180
181         lev = devfreq_get_freq_level(devfreq, freq);
182         if (lev < 0) {
183                 ret = lev;
184                 goto out;
185         }
186
187         if (lev != prev_lev) {
188                 devfreq->trans_table[(prev_lev *
189                                 devfreq->profile->max_state) + lev]++;
190                 devfreq->total_trans++;
191         }
192
193 out:
194         devfreq->last_stat_updated = cur_time;
195         return ret;
196 }
197 EXPORT_SYMBOL(devfreq_update_status);
198
199 /**
200  * find_devfreq_governor() - find devfreq governor from name
201  * @name:       name of the governor
202  *
203  * Search the list of devfreq governors and return the matched
204  * governor's pointer. devfreq_list_lock should be held by the caller.
205  */
206 static struct devfreq_governor *find_devfreq_governor(const char *name)
207 {
208         struct devfreq_governor *tmp_governor;
209
210         if (IS_ERR_OR_NULL(name)) {
211                 pr_err("DEVFREQ: %s: Invalid parameters\n", __func__);
212                 return ERR_PTR(-EINVAL);
213         }
214         WARN(!mutex_is_locked(&devfreq_list_lock),
215              "devfreq_list_lock must be locked.");
216
217         list_for_each_entry(tmp_governor, &devfreq_governor_list, node) {
218                 if (!strncmp(tmp_governor->name, name, DEVFREQ_NAME_LEN))
219                         return tmp_governor;
220         }
221
222         return ERR_PTR(-ENODEV);
223 }
224
225 /**
226  * try_then_request_governor() - Try to find the governor and request the
227  *                               module if is not found.
228  * @name:       name of the governor
229  *
230  * Search the list of devfreq governors and request the module and try again
231  * if is not found. This can happen when both drivers (the governor driver
232  * and the driver that call devfreq_add_device) are built as modules.
233  * devfreq_list_lock should be held by the caller. Returns the matched
234  * governor's pointer or an error pointer.
235  */
236 static struct devfreq_governor *try_then_request_governor(const char *name)
237 {
238         struct devfreq_governor *governor;
239         int err = 0;
240
241         if (IS_ERR_OR_NULL(name)) {
242                 pr_err("DEVFREQ: %s: Invalid parameters\n", __func__);
243                 return ERR_PTR(-EINVAL);
244         }
245         WARN(!mutex_is_locked(&devfreq_list_lock),
246              "devfreq_list_lock must be locked.");
247
248         governor = find_devfreq_governor(name);
249         if (IS_ERR(governor)) {
250                 mutex_unlock(&devfreq_list_lock);
251
252                 if (!strncmp(name, DEVFREQ_GOV_SIMPLE_ONDEMAND,
253                              DEVFREQ_NAME_LEN))
254                         err = request_module("governor_%s", "simpleondemand");
255                 else
256                         err = request_module("governor_%s", name);
257                 /* Restore previous state before return */
258                 mutex_lock(&devfreq_list_lock);
259                 if (err)
260                         return ERR_PTR(err);
261
262                 governor = find_devfreq_governor(name);
263         }
264
265         return governor;
266 }
267
268 static int devfreq_notify_transition(struct devfreq *devfreq,
269                 struct devfreq_freqs *freqs, unsigned int state)
270 {
271         if (!devfreq)
272                 return -EINVAL;
273
274         switch (state) {
275         case DEVFREQ_PRECHANGE:
276                 srcu_notifier_call_chain(&devfreq->transition_notifier_list,
277                                 DEVFREQ_PRECHANGE, freqs);
278                 break;
279
280         case DEVFREQ_POSTCHANGE:
281                 srcu_notifier_call_chain(&devfreq->transition_notifier_list,
282                                 DEVFREQ_POSTCHANGE, freqs);
283                 break;
284         default:
285                 return -EINVAL;
286         }
287
288         return 0;
289 }
290
291 static int devfreq_set_target(struct devfreq *devfreq, unsigned long new_freq,
292                               u32 flags)
293 {
294         struct devfreq_freqs freqs;
295         unsigned long cur_freq;
296         int err = 0;
297
298         if (devfreq->profile->get_cur_freq)
299                 devfreq->profile->get_cur_freq(devfreq->dev.parent, &cur_freq);
300         else
301                 cur_freq = devfreq->previous_freq;
302
303         freqs.old = cur_freq;
304         freqs.new = new_freq;
305         devfreq_notify_transition(devfreq, &freqs, DEVFREQ_PRECHANGE);
306
307         err = devfreq->profile->target(devfreq->dev.parent, &new_freq, flags);
308         if (err) {
309                 freqs.new = cur_freq;
310                 devfreq_notify_transition(devfreq, &freqs, DEVFREQ_POSTCHANGE);
311                 return err;
312         }
313
314         freqs.new = new_freq;
315         devfreq_notify_transition(devfreq, &freqs, DEVFREQ_POSTCHANGE);
316
317         if (devfreq_update_status(devfreq, new_freq))
318                 dev_err(&devfreq->dev,
319                         "Couldn't update frequency transition information.\n");
320
321         devfreq->previous_freq = new_freq;
322
323         if (devfreq->suspend_freq)
324                 devfreq->resume_freq = cur_freq;
325
326         return err;
327 }
328
329 /* Load monitoring helper functions for governors use */
330
331 /**
332  * update_devfreq() - Reevaluate the device and configure frequency.
333  * @devfreq:    the devfreq instance.
334  *
335  * Note: Lock devfreq->lock before calling update_devfreq
336  *       This function is exported for governors.
337  */
338 int update_devfreq(struct devfreq *devfreq)
339 {
340         unsigned long freq, min_freq, max_freq;
341         int err = 0;
342         u32 flags = 0;
343
344         if (!mutex_is_locked(&devfreq->lock)) {
345                 WARN(true, "devfreq->lock must be locked by the caller.\n");
346                 return -EINVAL;
347         }
348
349         if (!devfreq->governor)
350                 return -EINVAL;
351
352         /* Reevaluate the proper frequency */
353         err = devfreq->governor->get_target_freq(devfreq, &freq);
354         if (err)
355                 return err;
356
357         /*
358          * Adjust the frequency with user freq, QoS and available freq.
359          *
360          * List from the highest priority
361          * max_freq
362          * min_freq
363          */
364         max_freq = min(devfreq->scaling_max_freq, devfreq->max_freq);
365         min_freq = max(devfreq->scaling_min_freq, devfreq->min_freq);
366
367         if (freq < min_freq) {
368                 freq = min_freq;
369                 flags &= ~DEVFREQ_FLAG_LEAST_UPPER_BOUND; /* Use GLB */
370         }
371         if (freq > max_freq) {
372                 freq = max_freq;
373                 flags |= DEVFREQ_FLAG_LEAST_UPPER_BOUND; /* Use LUB */
374         }
375
376         return devfreq_set_target(devfreq, freq, flags);
377
378 }
379 EXPORT_SYMBOL(update_devfreq);
380
381 /**
382  * devfreq_monitor() - Periodically poll devfreq objects.
383  * @work:       the work struct used to run devfreq_monitor periodically.
384  *
385  */
386 static void devfreq_monitor(struct work_struct *work)
387 {
388         int err;
389         struct devfreq *devfreq = container_of(work,
390                                         struct devfreq, work.work);
391
392         mutex_lock(&devfreq->lock);
393         err = update_devfreq(devfreq);
394         if (err)
395                 dev_err(&devfreq->dev, "dvfs failed with (%d) error\n", err);
396
397         queue_delayed_work(devfreq_wq, &devfreq->work,
398                                 msecs_to_jiffies(devfreq->profile->polling_ms));
399         mutex_unlock(&devfreq->lock);
400
401         trace_devfreq_monitor(devfreq);
402 }
403
404 /**
405  * devfreq_monitor_start() - Start load monitoring of devfreq instance
406  * @devfreq:    the devfreq instance.
407  *
408  * Helper function for starting devfreq device load monitoing. By
409  * default delayed work based monitoring is supported. Function
410  * to be called from governor in response to DEVFREQ_GOV_START
411  * event when device is added to devfreq framework.
412  */
413 void devfreq_monitor_start(struct devfreq *devfreq)
414 {
415         INIT_DEFERRABLE_WORK(&devfreq->work, devfreq_monitor);
416         if (devfreq->profile->polling_ms)
417                 queue_delayed_work(devfreq_wq, &devfreq->work,
418                         msecs_to_jiffies(devfreq->profile->polling_ms));
419 }
420 EXPORT_SYMBOL(devfreq_monitor_start);
421
422 /**
423  * devfreq_monitor_stop() - Stop load monitoring of a devfreq instance
424  * @devfreq:    the devfreq instance.
425  *
426  * Helper function to stop devfreq device load monitoing. Function
427  * to be called from governor in response to DEVFREQ_GOV_STOP
428  * event when device is removed from devfreq framework.
429  */
430 void devfreq_monitor_stop(struct devfreq *devfreq)
431 {
432         cancel_delayed_work_sync(&devfreq->work);
433 }
434 EXPORT_SYMBOL(devfreq_monitor_stop);
435
436 /**
437  * devfreq_monitor_suspend() - Suspend load monitoring of a devfreq instance
438  * @devfreq:    the devfreq instance.
439  *
440  * Helper function to suspend devfreq device load monitoing. Function
441  * to be called from governor in response to DEVFREQ_GOV_SUSPEND
442  * event or when polling interval is set to zero.
443  *
444  * Note: Though this function is same as devfreq_monitor_stop(),
445  * intentionally kept separate to provide hooks for collecting
446  * transition statistics.
447  */
448 void devfreq_monitor_suspend(struct devfreq *devfreq)
449 {
450         mutex_lock(&devfreq->lock);
451         if (devfreq->stop_polling) {
452                 mutex_unlock(&devfreq->lock);
453                 return;
454         }
455
456         devfreq_update_status(devfreq, devfreq->previous_freq);
457         devfreq->stop_polling = true;
458         mutex_unlock(&devfreq->lock);
459         cancel_delayed_work_sync(&devfreq->work);
460 }
461 EXPORT_SYMBOL(devfreq_monitor_suspend);
462
463 /**
464  * devfreq_monitor_resume() - Resume load monitoring of a devfreq instance
465  * @devfreq:    the devfreq instance.
466  *
467  * Helper function to resume devfreq device load monitoing. Function
468  * to be called from governor in response to DEVFREQ_GOV_RESUME
469  * event or when polling interval is set to non-zero.
470  */
471 void devfreq_monitor_resume(struct devfreq *devfreq)
472 {
473         unsigned long freq;
474
475         mutex_lock(&devfreq->lock);
476         if (!devfreq->stop_polling)
477                 goto out;
478
479         if (!delayed_work_pending(&devfreq->work) &&
480                         devfreq->profile->polling_ms)
481                 queue_delayed_work(devfreq_wq, &devfreq->work,
482                         msecs_to_jiffies(devfreq->profile->polling_ms));
483
484         devfreq->last_stat_updated = jiffies;
485         devfreq->stop_polling = false;
486
487         if (devfreq->profile->get_cur_freq &&
488                 !devfreq->profile->get_cur_freq(devfreq->dev.parent, &freq))
489                 devfreq->previous_freq = freq;
490
491 out:
492         mutex_unlock(&devfreq->lock);
493 }
494 EXPORT_SYMBOL(devfreq_monitor_resume);
495
496 /**
497  * devfreq_interval_update() - Update device devfreq monitoring interval
498  * @devfreq:    the devfreq instance.
499  * @delay:      new polling interval to be set.
500  *
501  * Helper function to set new load monitoring polling interval. Function
502  * to be called from governor in response to DEVFREQ_GOV_INTERVAL event.
503  */
504 void devfreq_interval_update(struct devfreq *devfreq, unsigned int *delay)
505 {
506         unsigned int cur_delay = devfreq->profile->polling_ms;
507         unsigned int new_delay = *delay;
508
509         mutex_lock(&devfreq->lock);
510         devfreq->profile->polling_ms = new_delay;
511
512         if (devfreq->stop_polling)
513                 goto out;
514
515         /* if new delay is zero, stop polling */
516         if (!new_delay) {
517                 mutex_unlock(&devfreq->lock);
518                 cancel_delayed_work_sync(&devfreq->work);
519                 return;
520         }
521
522         /* if current delay is zero, start polling with new delay */
523         if (!cur_delay) {
524                 queue_delayed_work(devfreq_wq, &devfreq->work,
525                         msecs_to_jiffies(devfreq->profile->polling_ms));
526                 goto out;
527         }
528
529         /* if current delay is greater than new delay, restart polling */
530         if (cur_delay > new_delay) {
531                 mutex_unlock(&devfreq->lock);
532                 cancel_delayed_work_sync(&devfreq->work);
533                 mutex_lock(&devfreq->lock);
534                 if (!devfreq->stop_polling)
535                         queue_delayed_work(devfreq_wq, &devfreq->work,
536                                 msecs_to_jiffies(devfreq->profile->polling_ms));
537         }
538 out:
539         mutex_unlock(&devfreq->lock);
540 }
541 EXPORT_SYMBOL(devfreq_interval_update);
542
543 /**
544  * devfreq_notifier_call() - Notify that the device frequency requirements
545  *                           has been changed out of devfreq framework.
546  * @nb:         the notifier_block (supposed to be devfreq->nb)
547  * @type:       not used
548  * @devp:       not used
549  *
550  * Called by a notifier that uses devfreq->nb.
551  */
552 static int devfreq_notifier_call(struct notifier_block *nb, unsigned long type,
553                                  void *devp)
554 {
555         struct devfreq *devfreq = container_of(nb, struct devfreq, nb);
556         int ret;
557
558         mutex_lock(&devfreq->lock);
559
560         devfreq->scaling_min_freq = find_available_min_freq(devfreq);
561         if (!devfreq->scaling_min_freq) {
562                 mutex_unlock(&devfreq->lock);
563                 return -EINVAL;
564         }
565
566         devfreq->scaling_max_freq = find_available_max_freq(devfreq);
567         if (!devfreq->scaling_max_freq) {
568                 mutex_unlock(&devfreq->lock);
569                 return -EINVAL;
570         }
571
572         ret = update_devfreq(devfreq);
573         mutex_unlock(&devfreq->lock);
574
575         return ret;
576 }
577
578 /**
579  * devfreq_dev_release() - Callback for struct device to release the device.
580  * @dev:        the devfreq device
581  *
582  * Remove devfreq from the list and release its resources.
583  */
584 static void devfreq_dev_release(struct device *dev)
585 {
586         struct devfreq *devfreq = to_devfreq(dev);
587
588         mutex_lock(&devfreq_list_lock);
589         if (IS_ERR(find_device_devfreq(devfreq->dev.parent))) {
590                 mutex_unlock(&devfreq_list_lock);
591                 dev_warn(&devfreq->dev, "releasing devfreq which doesn't exist\n");
592                 return;
593         }
594         list_del(&devfreq->node);
595         mutex_unlock(&devfreq_list_lock);
596
597         if (devfreq->profile->exit)
598                 devfreq->profile->exit(devfreq->dev.parent);
599
600         mutex_destroy(&devfreq->lock);
601         kfree(devfreq);
602 }
603
604 /**
605  * devfreq_add_device() - Add devfreq feature to the device
606  * @dev:        the device to add devfreq feature.
607  * @profile:    device-specific profile to run devfreq.
608  * @governor_name:      name of the policy to choose frequency.
609  * @data:       private data for the governor. The devfreq framework does not
610  *              touch this value.
611  */
612 struct devfreq *devfreq_add_device(struct device *dev,
613                                    struct devfreq_dev_profile *profile,
614                                    const char *governor_name,
615                                    void *data)
616 {
617         struct devfreq *devfreq;
618         struct devfreq_governor *governor;
619         static atomic_t devfreq_no = ATOMIC_INIT(-1);
620         int err = 0;
621
622         if (!dev || !profile || !governor_name) {
623                 dev_err(dev, "%s: Invalid parameters.\n", __func__);
624                 return ERR_PTR(-EINVAL);
625         }
626
627         mutex_lock(&devfreq_list_lock);
628         devfreq = find_device_devfreq(dev);
629         mutex_unlock(&devfreq_list_lock);
630         if (!IS_ERR(devfreq)) {
631                 dev_err(dev, "%s: Unable to create devfreq for the device.\n",
632                         __func__);
633                 err = -EINVAL;
634                 goto err_out;
635         }
636
637         devfreq = kzalloc(sizeof(struct devfreq), GFP_KERNEL);
638         if (!devfreq) {
639                 err = -ENOMEM;
640                 goto err_out;
641         }
642
643         mutex_init(&devfreq->lock);
644         mutex_lock(&devfreq->lock);
645         devfreq->dev.parent = dev;
646         devfreq->dev.class = devfreq_class;
647         devfreq->dev.release = devfreq_dev_release;
648         devfreq->profile = profile;
649         strncpy(devfreq->governor_name, governor_name, DEVFREQ_NAME_LEN);
650         devfreq->previous_freq = profile->initial_freq;
651         devfreq->last_status.current_frequency = profile->initial_freq;
652         devfreq->data = data;
653         devfreq->nb.notifier_call = devfreq_notifier_call;
654
655         if (!devfreq->profile->max_state && !devfreq->profile->freq_table) {
656                 mutex_unlock(&devfreq->lock);
657                 err = set_freq_table(devfreq);
658                 if (err < 0)
659                         goto err_dev;
660                 mutex_lock(&devfreq->lock);
661         }
662
663         devfreq->scaling_min_freq = find_available_min_freq(devfreq);
664         if (!devfreq->scaling_min_freq) {
665                 mutex_unlock(&devfreq->lock);
666                 err = -EINVAL;
667                 goto err_dev;
668         }
669         devfreq->min_freq = devfreq->scaling_min_freq;
670
671         devfreq->scaling_max_freq = find_available_max_freq(devfreq);
672         if (!devfreq->scaling_max_freq) {
673                 mutex_unlock(&devfreq->lock);
674                 err = -EINVAL;
675                 goto err_dev;
676         }
677         devfreq->max_freq = devfreq->scaling_max_freq;
678
679         devfreq->suspend_freq = dev_pm_opp_get_suspend_opp_freq(dev);
680         atomic_set(&devfreq->suspend_count, 0);
681
682         dev_set_name(&devfreq->dev, "devfreq%d",
683                                 atomic_inc_return(&devfreq_no));
684         err = device_register(&devfreq->dev);
685         if (err) {
686                 mutex_unlock(&devfreq->lock);
687                 put_device(&devfreq->dev);
688                 goto err_out;
689         }
690
691         devfreq->trans_table = devm_kzalloc(&devfreq->dev,
692                         array3_size(sizeof(unsigned int),
693                                     devfreq->profile->max_state,
694                                     devfreq->profile->max_state),
695                         GFP_KERNEL);
696         if (!devfreq->trans_table) {
697                 mutex_unlock(&devfreq->lock);
698                 err = -ENOMEM;
699                 goto err_devfreq;
700         }
701
702         devfreq->time_in_state = devm_kcalloc(&devfreq->dev,
703                         devfreq->profile->max_state,
704                         sizeof(unsigned long),
705                         GFP_KERNEL);
706         if (!devfreq->time_in_state) {
707                 mutex_unlock(&devfreq->lock);
708                 err = -ENOMEM;
709                 goto err_devfreq;
710         }
711
712         devfreq->last_stat_updated = jiffies;
713
714         srcu_init_notifier_head(&devfreq->transition_notifier_list);
715
716         mutex_unlock(&devfreq->lock);
717
718         mutex_lock(&devfreq_list_lock);
719
720         governor = try_then_request_governor(devfreq->governor_name);
721         if (IS_ERR(governor)) {
722                 dev_err(dev, "%s: Unable to find governor for the device\n",
723                         __func__);
724                 err = PTR_ERR(governor);
725                 goto err_init;
726         }
727
728         devfreq->governor = governor;
729         err = devfreq->governor->event_handler(devfreq, DEVFREQ_GOV_START,
730                                                 NULL);
731         if (err) {
732                 dev_err(dev, "%s: Unable to start governor for the device\n",
733                         __func__);
734                 goto err_init;
735         }
736
737         list_add(&devfreq->node, &devfreq_list);
738
739         mutex_unlock(&devfreq_list_lock);
740
741         return devfreq;
742
743 err_init:
744         mutex_unlock(&devfreq_list_lock);
745 err_devfreq:
746         devfreq_remove_device(devfreq);
747         devfreq = NULL;
748 err_dev:
749         kfree(devfreq);
750 err_out:
751         return ERR_PTR(err);
752 }
753 EXPORT_SYMBOL(devfreq_add_device);
754
755 /**
756  * devfreq_remove_device() - Remove devfreq feature from a device.
757  * @devfreq:    the devfreq instance to be removed
758  *
759  * The opposite of devfreq_add_device().
760  */
761 int devfreq_remove_device(struct devfreq *devfreq)
762 {
763         if (!devfreq)
764                 return -EINVAL;
765
766         if (devfreq->governor)
767                 devfreq->governor->event_handler(devfreq,
768                                                  DEVFREQ_GOV_STOP, NULL);
769         device_unregister(&devfreq->dev);
770
771         return 0;
772 }
773 EXPORT_SYMBOL(devfreq_remove_device);
774
775 static int devm_devfreq_dev_match(struct device *dev, void *res, void *data)
776 {
777         struct devfreq **r = res;
778
779         if (WARN_ON(!r || !*r))
780                 return 0;
781
782         return *r == data;
783 }
784
785 static void devm_devfreq_dev_release(struct device *dev, void *res)
786 {
787         devfreq_remove_device(*(struct devfreq **)res);
788 }
789
790 /**
791  * devm_devfreq_add_device() - Resource-managed devfreq_add_device()
792  * @dev:        the device to add devfreq feature.
793  * @profile:    device-specific profile to run devfreq.
794  * @governor_name:      name of the policy to choose frequency.
795  * @data:       private data for the governor. The devfreq framework does not
796  *              touch this value.
797  *
798  * This function manages automatically the memory of devfreq device using device
799  * resource management and simplify the free operation for memory of devfreq
800  * device.
801  */
802 struct devfreq *devm_devfreq_add_device(struct device *dev,
803                                         struct devfreq_dev_profile *profile,
804                                         const char *governor_name,
805                                         void *data)
806 {
807         struct devfreq **ptr, *devfreq;
808
809         ptr = devres_alloc(devm_devfreq_dev_release, sizeof(*ptr), GFP_KERNEL);
810         if (!ptr)
811                 return ERR_PTR(-ENOMEM);
812
813         devfreq = devfreq_add_device(dev, profile, governor_name, data);
814         if (IS_ERR(devfreq)) {
815                 devres_free(ptr);
816                 return devfreq;
817         }
818
819         *ptr = devfreq;
820         devres_add(dev, ptr);
821
822         return devfreq;
823 }
824 EXPORT_SYMBOL(devm_devfreq_add_device);
825
826 #ifdef CONFIG_OF
827 /*
828  * devfreq_get_devfreq_by_phandle - Get the devfreq device from devicetree
829  * @dev - instance to the given device
830  * @index - index into list of devfreq
831  *
832  * return the instance of devfreq device
833  */
834 struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, int index)
835 {
836         struct device_node *node;
837         struct devfreq *devfreq;
838
839         if (!dev)
840                 return ERR_PTR(-EINVAL);
841
842         if (!dev->of_node)
843                 return ERR_PTR(-EINVAL);
844
845         node = of_parse_phandle(dev->of_node, "devfreq", index);
846         if (!node)
847                 return ERR_PTR(-ENODEV);
848
849         mutex_lock(&devfreq_list_lock);
850         list_for_each_entry(devfreq, &devfreq_list, node) {
851                 if (devfreq->dev.parent
852                         && devfreq->dev.parent->of_node == node) {
853                         mutex_unlock(&devfreq_list_lock);
854                         of_node_put(node);
855                         return devfreq;
856                 }
857         }
858         mutex_unlock(&devfreq_list_lock);
859         of_node_put(node);
860
861         return ERR_PTR(-EPROBE_DEFER);
862 }
863 #else
864 struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, int index)
865 {
866         return ERR_PTR(-ENODEV);
867 }
868 #endif /* CONFIG_OF */
869 EXPORT_SYMBOL_GPL(devfreq_get_devfreq_by_phandle);
870
871 /**
872  * devm_devfreq_remove_device() - Resource-managed devfreq_remove_device()
873  * @dev:        the device to add devfreq feature.
874  * @devfreq:    the devfreq instance to be removed
875  */
876 void devm_devfreq_remove_device(struct device *dev, struct devfreq *devfreq)
877 {
878         WARN_ON(devres_release(dev, devm_devfreq_dev_release,
879                                devm_devfreq_dev_match, devfreq));
880 }
881 EXPORT_SYMBOL(devm_devfreq_remove_device);
882
883 /**
884  * devfreq_suspend_device() - Suspend devfreq of a device.
885  * @devfreq: the devfreq instance to be suspended
886  *
887  * This function is intended to be called by the pm callbacks
888  * (e.g., runtime_suspend, suspend) of the device driver that
889  * holds the devfreq.
890  */
891 int devfreq_suspend_device(struct devfreq *devfreq)
892 {
893         int ret;
894
895         if (!devfreq)
896                 return -EINVAL;
897
898         if (atomic_inc_return(&devfreq->suspend_count) > 1)
899                 return 0;
900
901         if (devfreq->governor) {
902                 ret = devfreq->governor->event_handler(devfreq,
903                                         DEVFREQ_GOV_SUSPEND, NULL);
904                 if (ret)
905                         return ret;
906         }
907
908         if (devfreq->suspend_freq) {
909                 ret = devfreq_set_target(devfreq, devfreq->suspend_freq, 0);
910                 if (ret)
911                         return ret;
912         }
913
914         return 0;
915 }
916 EXPORT_SYMBOL(devfreq_suspend_device);
917
918 /**
919  * devfreq_resume_device() - Resume devfreq of a device.
920  * @devfreq: the devfreq instance to be resumed
921  *
922  * This function is intended to be called by the pm callbacks
923  * (e.g., runtime_resume, resume) of the device driver that
924  * holds the devfreq.
925  */
926 int devfreq_resume_device(struct devfreq *devfreq)
927 {
928         int ret;
929
930         if (!devfreq)
931                 return -EINVAL;
932
933         if (atomic_dec_return(&devfreq->suspend_count) >= 1)
934                 return 0;
935
936         if (devfreq->resume_freq) {
937                 ret = devfreq_set_target(devfreq, devfreq->resume_freq, 0);
938                 if (ret)
939                         return ret;
940         }
941
942         if (devfreq->governor) {
943                 ret = devfreq->governor->event_handler(devfreq,
944                                         DEVFREQ_GOV_RESUME, NULL);
945                 if (ret)
946                         return ret;
947         }
948
949         return 0;
950 }
951 EXPORT_SYMBOL(devfreq_resume_device);
952
953 /**
954  * devfreq_suspend() - Suspend devfreq governors and devices
955  *
956  * Called during system wide Suspend/Hibernate cycles for suspending governors
957  * and devices preserving the state for resume. On some platforms the devfreq
958  * device must have precise state (frequency) after resume in order to provide
959  * fully operating setup.
960  */
961 void devfreq_suspend(void)
962 {
963         struct devfreq *devfreq;
964         int ret;
965
966         mutex_lock(&devfreq_list_lock);
967         list_for_each_entry(devfreq, &devfreq_list, node) {
968                 ret = devfreq_suspend_device(devfreq);
969                 if (ret)
970                         dev_err(&devfreq->dev,
971                                 "failed to suspend devfreq device\n");
972         }
973         mutex_unlock(&devfreq_list_lock);
974 }
975
976 /**
977  * devfreq_resume() - Resume devfreq governors and devices
978  *
979  * Called during system wide Suspend/Hibernate cycle for resuming governors and
980  * devices that are suspended with devfreq_suspend().
981  */
982 void devfreq_resume(void)
983 {
984         struct devfreq *devfreq;
985         int ret;
986
987         mutex_lock(&devfreq_list_lock);
988         list_for_each_entry(devfreq, &devfreq_list, node) {
989                 ret = devfreq_resume_device(devfreq);
990                 if (ret)
991                         dev_warn(&devfreq->dev,
992                                  "failed to resume devfreq device\n");
993         }
994         mutex_unlock(&devfreq_list_lock);
995 }
996
997 /**
998  * devfreq_add_governor() - Add devfreq governor
999  * @governor:   the devfreq governor to be added
1000  */
1001 int devfreq_add_governor(struct devfreq_governor *governor)
1002 {
1003         struct devfreq_governor *g;
1004         struct devfreq *devfreq;
1005         int err = 0;
1006
1007         if (!governor) {
1008                 pr_err("%s: Invalid parameters.\n", __func__);
1009                 return -EINVAL;
1010         }
1011
1012         mutex_lock(&devfreq_list_lock);
1013         g = find_devfreq_governor(governor->name);
1014         if (!IS_ERR(g)) {
1015                 pr_err("%s: governor %s already registered\n", __func__,
1016                        g->name);
1017                 err = -EINVAL;
1018                 goto err_out;
1019         }
1020
1021         list_add(&governor->node, &devfreq_governor_list);
1022
1023         list_for_each_entry(devfreq, &devfreq_list, node) {
1024                 int ret = 0;
1025                 struct device *dev = devfreq->dev.parent;
1026
1027                 if (!strncmp(devfreq->governor_name, governor->name,
1028                              DEVFREQ_NAME_LEN)) {
1029                         /* The following should never occur */
1030                         if (devfreq->governor) {
1031                                 dev_warn(dev,
1032                                          "%s: Governor %s already present\n",
1033                                          __func__, devfreq->governor->name);
1034                                 ret = devfreq->governor->event_handler(devfreq,
1035                                                         DEVFREQ_GOV_STOP, NULL);
1036                                 if (ret) {
1037                                         dev_warn(dev,
1038                                                  "%s: Governor %s stop = %d\n",
1039                                                  __func__,
1040                                                  devfreq->governor->name, ret);
1041                                 }
1042                                 /* Fall through */
1043                         }
1044                         devfreq->governor = governor;
1045                         ret = devfreq->governor->event_handler(devfreq,
1046                                                 DEVFREQ_GOV_START, NULL);
1047                         if (ret) {
1048                                 dev_warn(dev, "%s: Governor %s start=%d\n",
1049                                          __func__, devfreq->governor->name,
1050                                          ret);
1051                         }
1052                 }
1053         }
1054
1055 err_out:
1056         mutex_unlock(&devfreq_list_lock);
1057
1058         return err;
1059 }
1060 EXPORT_SYMBOL(devfreq_add_governor);
1061
1062 /**
1063  * devfreq_remove_governor() - Remove devfreq feature from a device.
1064  * @governor:   the devfreq governor to be removed
1065  */
1066 int devfreq_remove_governor(struct devfreq_governor *governor)
1067 {
1068         struct devfreq_governor *g;
1069         struct devfreq *devfreq;
1070         int err = 0;
1071
1072         if (!governor) {
1073                 pr_err("%s: Invalid parameters.\n", __func__);
1074                 return -EINVAL;
1075         }
1076
1077         mutex_lock(&devfreq_list_lock);
1078         g = find_devfreq_governor(governor->name);
1079         if (IS_ERR(g)) {
1080                 pr_err("%s: governor %s not registered\n", __func__,
1081                        governor->name);
1082                 err = PTR_ERR(g);
1083                 goto err_out;
1084         }
1085         list_for_each_entry(devfreq, &devfreq_list, node) {
1086                 int ret;
1087                 struct device *dev = devfreq->dev.parent;
1088
1089                 if (!strncmp(devfreq->governor_name, governor->name,
1090                              DEVFREQ_NAME_LEN)) {
1091                         /* we should have a devfreq governor! */
1092                         if (!devfreq->governor) {
1093                                 dev_warn(dev, "%s: Governor %s NOT present\n",
1094                                          __func__, governor->name);
1095                                 continue;
1096                                 /* Fall through */
1097                         }
1098                         ret = devfreq->governor->event_handler(devfreq,
1099                                                 DEVFREQ_GOV_STOP, NULL);
1100                         if (ret) {
1101                                 dev_warn(dev, "%s: Governor %s stop=%d\n",
1102                                          __func__, devfreq->governor->name,
1103                                          ret);
1104                         }
1105                         devfreq->governor = NULL;
1106                 }
1107         }
1108
1109         list_del(&governor->node);
1110 err_out:
1111         mutex_unlock(&devfreq_list_lock);
1112
1113         return err;
1114 }
1115 EXPORT_SYMBOL(devfreq_remove_governor);
1116
1117 static ssize_t governor_show(struct device *dev,
1118                              struct device_attribute *attr, char *buf)
1119 {
1120         if (!to_devfreq(dev)->governor)
1121                 return -EINVAL;
1122
1123         return sprintf(buf, "%s\n", to_devfreq(dev)->governor->name);
1124 }
1125
1126 static ssize_t governor_store(struct device *dev, struct device_attribute *attr,
1127                               const char *buf, size_t count)
1128 {
1129         struct devfreq *df = to_devfreq(dev);
1130         int ret;
1131         char str_governor[DEVFREQ_NAME_LEN + 1];
1132         const struct devfreq_governor *governor, *prev_governor;
1133
1134         ret = sscanf(buf, "%" __stringify(DEVFREQ_NAME_LEN) "s", str_governor);
1135         if (ret != 1)
1136                 return -EINVAL;
1137
1138         mutex_lock(&devfreq_list_lock);
1139         governor = try_then_request_governor(str_governor);
1140         if (IS_ERR(governor)) {
1141                 ret = PTR_ERR(governor);
1142                 goto out;
1143         }
1144         if (df->governor == governor) {
1145                 ret = 0;
1146                 goto out;
1147         } else if ((df->governor && df->governor->immutable) ||
1148                                         governor->immutable) {
1149                 ret = -EINVAL;
1150                 goto out;
1151         }
1152
1153         if (df->governor) {
1154                 ret = df->governor->event_handler(df, DEVFREQ_GOV_STOP, NULL);
1155                 if (ret) {
1156                         dev_warn(dev, "%s: Governor %s not stopped(%d)\n",
1157                                  __func__, df->governor->name, ret);
1158                         goto out;
1159                 }
1160         }
1161         prev_governor = df->governor;
1162         df->governor = governor;
1163         strncpy(df->governor_name, governor->name, DEVFREQ_NAME_LEN);
1164         ret = df->governor->event_handler(df, DEVFREQ_GOV_START, NULL);
1165         if (ret) {
1166                 dev_warn(dev, "%s: Governor %s not started(%d)\n",
1167                          __func__, df->governor->name, ret);
1168                 df->governor = prev_governor;
1169                 strncpy(df->governor_name, prev_governor->name,
1170                         DEVFREQ_NAME_LEN);
1171                 ret = df->governor->event_handler(df, DEVFREQ_GOV_START, NULL);
1172                 if (ret) {
1173                         dev_err(dev,
1174                                 "%s: reverting to Governor %s failed (%d)\n",
1175                                 __func__, df->governor_name, ret);
1176                         df->governor = NULL;
1177                 }
1178         }
1179 out:
1180         mutex_unlock(&devfreq_list_lock);
1181
1182         if (!ret)
1183                 ret = count;
1184         return ret;
1185 }
1186 static DEVICE_ATTR_RW(governor);
1187
1188 static ssize_t available_governors_show(struct device *d,
1189                                         struct device_attribute *attr,
1190                                         char *buf)
1191 {
1192         struct devfreq *df = to_devfreq(d);
1193         ssize_t count = 0;
1194
1195         mutex_lock(&devfreq_list_lock);
1196
1197         /*
1198          * The devfreq with immutable governor (e.g., passive) shows
1199          * only own governor.
1200          */
1201         if (df->governor->immutable) {
1202                 count = scnprintf(&buf[count], DEVFREQ_NAME_LEN,
1203                                   "%s ", df->governor_name);
1204         /*
1205          * The devfreq device shows the registered governor except for
1206          * immutable governors such as passive governor .
1207          */
1208         } else {
1209                 struct devfreq_governor *governor;
1210
1211                 list_for_each_entry(governor, &devfreq_governor_list, node) {
1212                         if (governor->immutable)
1213                                 continue;
1214                         count += scnprintf(&buf[count], (PAGE_SIZE - count - 2),
1215                                            "%s ", governor->name);
1216                 }
1217         }
1218
1219         mutex_unlock(&devfreq_list_lock);
1220
1221         /* Truncate the trailing space */
1222         if (count)
1223                 count--;
1224
1225         count += sprintf(&buf[count], "\n");
1226
1227         return count;
1228 }
1229 static DEVICE_ATTR_RO(available_governors);
1230
1231 static ssize_t cur_freq_show(struct device *dev, struct device_attribute *attr,
1232                              char *buf)
1233 {
1234         unsigned long freq;
1235         struct devfreq *devfreq = to_devfreq(dev);
1236
1237         if (devfreq->profile->get_cur_freq &&
1238                 !devfreq->profile->get_cur_freq(devfreq->dev.parent, &freq))
1239                 return sprintf(buf, "%lu\n", freq);
1240
1241         return sprintf(buf, "%lu\n", devfreq->previous_freq);
1242 }
1243 static DEVICE_ATTR_RO(cur_freq);
1244
1245 static ssize_t target_freq_show(struct device *dev,
1246                                 struct device_attribute *attr, char *buf)
1247 {
1248         return sprintf(buf, "%lu\n", to_devfreq(dev)->previous_freq);
1249 }
1250 static DEVICE_ATTR_RO(target_freq);
1251
1252 static ssize_t polling_interval_show(struct device *dev,
1253                                      struct device_attribute *attr, char *buf)
1254 {
1255         return sprintf(buf, "%d\n", to_devfreq(dev)->profile->polling_ms);
1256 }
1257
1258 static ssize_t polling_interval_store(struct device *dev,
1259                                       struct device_attribute *attr,
1260                                       const char *buf, size_t count)
1261 {
1262         struct devfreq *df = to_devfreq(dev);
1263         unsigned int value;
1264         int ret;
1265
1266         if (!df->governor)
1267                 return -EINVAL;
1268
1269         ret = sscanf(buf, "%u", &value);
1270         if (ret != 1)
1271                 return -EINVAL;
1272
1273         df->governor->event_handler(df, DEVFREQ_GOV_INTERVAL, &value);
1274         ret = count;
1275
1276         return ret;
1277 }
1278 static DEVICE_ATTR_RW(polling_interval);
1279
1280 static ssize_t min_freq_store(struct device *dev, struct device_attribute *attr,
1281                               const char *buf, size_t count)
1282 {
1283         struct devfreq *df = to_devfreq(dev);
1284         unsigned long value;
1285         int ret;
1286
1287         ret = sscanf(buf, "%lu", &value);
1288         if (ret != 1)
1289                 return -EINVAL;
1290
1291         mutex_lock(&df->lock);
1292
1293         if (value) {
1294                 if (value > df->max_freq) {
1295                         ret = -EINVAL;
1296                         goto unlock;
1297                 }
1298         } else {
1299                 unsigned long *freq_table = df->profile->freq_table;
1300
1301                 /* Get minimum frequency according to sorting order */
1302                 if (freq_table[0] < freq_table[df->profile->max_state - 1])
1303                         value = freq_table[0];
1304                 else
1305                         value = freq_table[df->profile->max_state - 1];
1306         }
1307
1308         df->min_freq = value;
1309         update_devfreq(df);
1310         ret = count;
1311 unlock:
1312         mutex_unlock(&df->lock);
1313         return ret;
1314 }
1315
1316 static ssize_t min_freq_show(struct device *dev, struct device_attribute *attr,
1317                              char *buf)
1318 {
1319         struct devfreq *df = to_devfreq(dev);
1320
1321         return sprintf(buf, "%lu\n", max(df->scaling_min_freq, df->min_freq));
1322 }
1323
1324 static ssize_t max_freq_store(struct device *dev, struct device_attribute *attr,
1325                               const char *buf, size_t count)
1326 {
1327         struct devfreq *df = to_devfreq(dev);
1328         unsigned long value;
1329         int ret;
1330
1331         ret = sscanf(buf, "%lu", &value);
1332         if (ret != 1)
1333                 return -EINVAL;
1334
1335         mutex_lock(&df->lock);
1336
1337         if (value) {
1338                 if (value < df->min_freq) {
1339                         ret = -EINVAL;
1340                         goto unlock;
1341                 }
1342         } else {
1343                 unsigned long *freq_table = df->profile->freq_table;
1344
1345                 /* Get maximum frequency according to sorting order */
1346                 if (freq_table[0] < freq_table[df->profile->max_state - 1])
1347                         value = freq_table[df->profile->max_state - 1];
1348                 else
1349                         value = freq_table[0];
1350         }
1351
1352         df->max_freq = value;
1353         update_devfreq(df);
1354         ret = count;
1355 unlock:
1356         mutex_unlock(&df->lock);
1357         return ret;
1358 }
1359 static DEVICE_ATTR_RW(min_freq);
1360
1361 static ssize_t max_freq_show(struct device *dev, struct device_attribute *attr,
1362                              char *buf)
1363 {
1364         struct devfreq *df = to_devfreq(dev);
1365
1366         return sprintf(buf, "%lu\n", min(df->scaling_max_freq, df->max_freq));
1367 }
1368 static DEVICE_ATTR_RW(max_freq);
1369
1370 static ssize_t available_frequencies_show(struct device *d,
1371                                           struct device_attribute *attr,
1372                                           char *buf)
1373 {
1374         struct devfreq *df = to_devfreq(d);
1375         ssize_t count = 0;
1376         int i;
1377
1378         mutex_lock(&df->lock);
1379
1380         for (i = 0; i < df->profile->max_state; i++)
1381                 count += scnprintf(&buf[count], (PAGE_SIZE - count - 2),
1382                                 "%lu ", df->profile->freq_table[i]);
1383
1384         mutex_unlock(&df->lock);
1385         /* Truncate the trailing space */
1386         if (count)
1387                 count--;
1388
1389         count += sprintf(&buf[count], "\n");
1390
1391         return count;
1392 }
1393 static DEVICE_ATTR_RO(available_frequencies);
1394
1395 static ssize_t trans_stat_show(struct device *dev,
1396                                struct device_attribute *attr, char *buf)
1397 {
1398         struct devfreq *devfreq = to_devfreq(dev);
1399         ssize_t len;
1400         int i, j;
1401         unsigned int max_state = devfreq->profile->max_state;
1402
1403         if (!devfreq->stop_polling &&
1404                         devfreq_update_status(devfreq, devfreq->previous_freq))
1405                 return 0;
1406         if (max_state == 0)
1407                 return sprintf(buf, "Not Supported.\n");
1408
1409         len = sprintf(buf, "     From  :   To\n");
1410         len += sprintf(buf + len, "           :");
1411         for (i = 0; i < max_state; i++)
1412                 len += sprintf(buf + len, "%10lu",
1413                                 devfreq->profile->freq_table[i]);
1414
1415         len += sprintf(buf + len, "   time(ms)\n");
1416
1417         for (i = 0; i < max_state; i++) {
1418                 if (devfreq->profile->freq_table[i]
1419                                         == devfreq->previous_freq) {
1420                         len += sprintf(buf + len, "*");
1421                 } else {
1422                         len += sprintf(buf + len, " ");
1423                 }
1424                 len += sprintf(buf + len, "%10lu:",
1425                                 devfreq->profile->freq_table[i]);
1426                 for (j = 0; j < max_state; j++)
1427                         len += sprintf(buf + len, "%10u",
1428                                 devfreq->trans_table[(i * max_state) + j]);
1429                 len += sprintf(buf + len, "%10u\n",
1430                         jiffies_to_msecs(devfreq->time_in_state[i]));
1431         }
1432
1433         len += sprintf(buf + len, "Total transition : %u\n",
1434                                         devfreq->total_trans);
1435         return len;
1436 }
1437 static DEVICE_ATTR_RO(trans_stat);
1438
1439 static struct attribute *devfreq_attrs[] = {
1440         &dev_attr_governor.attr,
1441         &dev_attr_available_governors.attr,
1442         &dev_attr_cur_freq.attr,
1443         &dev_attr_available_frequencies.attr,
1444         &dev_attr_target_freq.attr,
1445         &dev_attr_polling_interval.attr,
1446         &dev_attr_min_freq.attr,
1447         &dev_attr_max_freq.attr,
1448         &dev_attr_trans_stat.attr,
1449         NULL,
1450 };
1451 ATTRIBUTE_GROUPS(devfreq);
1452
1453 static int __init devfreq_init(void)
1454 {
1455         devfreq_class = class_create(THIS_MODULE, "devfreq");
1456         if (IS_ERR(devfreq_class)) {
1457                 pr_err("%s: couldn't create class\n", __FILE__);
1458                 return PTR_ERR(devfreq_class);
1459         }
1460
1461         devfreq_wq = create_freezable_workqueue("devfreq_wq");
1462         if (!devfreq_wq) {
1463                 class_destroy(devfreq_class);
1464                 pr_err("%s: couldn't create workqueue\n", __FILE__);
1465                 return -ENOMEM;
1466         }
1467         devfreq_class->dev_groups = devfreq_groups;
1468
1469         return 0;
1470 }
1471 subsys_initcall(devfreq_init);
1472
1473 /*
1474  * The following are helper functions for devfreq user device drivers with
1475  * OPP framework.
1476  */
1477
1478 /**
1479  * devfreq_recommended_opp() - Helper function to get proper OPP for the
1480  *                           freq value given to target callback.
1481  * @dev:        The devfreq user device. (parent of devfreq)
1482  * @freq:       The frequency given to target function
1483  * @flags:      Flags handed from devfreq framework.
1484  *
1485  * The callers are required to call dev_pm_opp_put() for the returned OPP after
1486  * use.
1487  */
1488 struct dev_pm_opp *devfreq_recommended_opp(struct device *dev,
1489                                            unsigned long *freq,
1490                                            u32 flags)
1491 {
1492         struct dev_pm_opp *opp;
1493
1494         if (flags & DEVFREQ_FLAG_LEAST_UPPER_BOUND) {
1495                 /* The freq is an upper bound. opp should be lower */
1496                 opp = dev_pm_opp_find_freq_floor(dev, freq);
1497
1498                 /* If not available, use the closest opp */
1499                 if (opp == ERR_PTR(-ERANGE))
1500                         opp = dev_pm_opp_find_freq_ceil(dev, freq);
1501         } else {
1502                 /* The freq is an lower bound. opp should be higher */
1503                 opp = dev_pm_opp_find_freq_ceil(dev, freq);
1504
1505                 /* If not available, use the closest opp */
1506                 if (opp == ERR_PTR(-ERANGE))
1507                         opp = dev_pm_opp_find_freq_floor(dev, freq);
1508         }
1509
1510         return opp;
1511 }
1512 EXPORT_SYMBOL(devfreq_recommended_opp);
1513
1514 /**
1515  * devfreq_register_opp_notifier() - Helper function to get devfreq notified
1516  *                                   for any changes in the OPP availability
1517  *                                   changes
1518  * @dev:        The devfreq user device. (parent of devfreq)
1519  * @devfreq:    The devfreq object.
1520  */
1521 int devfreq_register_opp_notifier(struct device *dev, struct devfreq *devfreq)
1522 {
1523         return dev_pm_opp_register_notifier(dev, &devfreq->nb);
1524 }
1525 EXPORT_SYMBOL(devfreq_register_opp_notifier);
1526
1527 /**
1528  * devfreq_unregister_opp_notifier() - Helper function to stop getting devfreq
1529  *                                     notified for any changes in the OPP
1530  *                                     availability changes anymore.
1531  * @dev:        The devfreq user device. (parent of devfreq)
1532  * @devfreq:    The devfreq object.
1533  *
1534  * At exit() callback of devfreq_dev_profile, this must be included if
1535  * devfreq_recommended_opp is used.
1536  */
1537 int devfreq_unregister_opp_notifier(struct device *dev, struct devfreq *devfreq)
1538 {
1539         return dev_pm_opp_unregister_notifier(dev, &devfreq->nb);
1540 }
1541 EXPORT_SYMBOL(devfreq_unregister_opp_notifier);
1542
1543 static void devm_devfreq_opp_release(struct device *dev, void *res)
1544 {
1545         devfreq_unregister_opp_notifier(dev, *(struct devfreq **)res);
1546 }
1547
1548 /**
1549  * devm_devfreq_register_opp_notifier() - Resource-managed
1550  *                                        devfreq_register_opp_notifier()
1551  * @dev:        The devfreq user device. (parent of devfreq)
1552  * @devfreq:    The devfreq object.
1553  */
1554 int devm_devfreq_register_opp_notifier(struct device *dev,
1555                                        struct devfreq *devfreq)
1556 {
1557         struct devfreq **ptr;
1558         int ret;
1559
1560         ptr = devres_alloc(devm_devfreq_opp_release, sizeof(*ptr), GFP_KERNEL);
1561         if (!ptr)
1562                 return -ENOMEM;
1563
1564         ret = devfreq_register_opp_notifier(dev, devfreq);
1565         if (ret) {
1566                 devres_free(ptr);
1567                 return ret;
1568         }
1569
1570         *ptr = devfreq;
1571         devres_add(dev, ptr);
1572
1573         return 0;
1574 }
1575 EXPORT_SYMBOL(devm_devfreq_register_opp_notifier);
1576
1577 /**
1578  * devm_devfreq_unregister_opp_notifier() - Resource-managed
1579  *                                          devfreq_unregister_opp_notifier()
1580  * @dev:        The devfreq user device. (parent of devfreq)
1581  * @devfreq:    The devfreq object.
1582  */
1583 void devm_devfreq_unregister_opp_notifier(struct device *dev,
1584                                          struct devfreq *devfreq)
1585 {
1586         WARN_ON(devres_release(dev, devm_devfreq_opp_release,
1587                                devm_devfreq_dev_match, devfreq));
1588 }
1589 EXPORT_SYMBOL(devm_devfreq_unregister_opp_notifier);
1590
1591 /**
1592  * devfreq_register_notifier() - Register a driver with devfreq
1593  * @devfreq:    The devfreq object.
1594  * @nb:         The notifier block to register.
1595  * @list:       DEVFREQ_TRANSITION_NOTIFIER.
1596  */
1597 int devfreq_register_notifier(struct devfreq *devfreq,
1598                               struct notifier_block *nb,
1599                               unsigned int list)
1600 {
1601         int ret = 0;
1602
1603         if (!devfreq)
1604                 return -EINVAL;
1605
1606         switch (list) {
1607         case DEVFREQ_TRANSITION_NOTIFIER:
1608                 ret = srcu_notifier_chain_register(
1609                                 &devfreq->transition_notifier_list, nb);
1610                 break;
1611         default:
1612                 ret = -EINVAL;
1613         }
1614
1615         return ret;
1616 }
1617 EXPORT_SYMBOL(devfreq_register_notifier);
1618
1619 /*
1620  * devfreq_unregister_notifier() - Unregister a driver with devfreq
1621  * @devfreq:    The devfreq object.
1622  * @nb:         The notifier block to be unregistered.
1623  * @list:       DEVFREQ_TRANSITION_NOTIFIER.
1624  */
1625 int devfreq_unregister_notifier(struct devfreq *devfreq,
1626                                 struct notifier_block *nb,
1627                                 unsigned int list)
1628 {
1629         int ret = 0;
1630
1631         if (!devfreq)
1632                 return -EINVAL;
1633
1634         switch (list) {
1635         case DEVFREQ_TRANSITION_NOTIFIER:
1636                 ret = srcu_notifier_chain_unregister(
1637                                 &devfreq->transition_notifier_list, nb);
1638                 break;
1639         default:
1640                 ret = -EINVAL;
1641         }
1642
1643         return ret;
1644 }
1645 EXPORT_SYMBOL(devfreq_unregister_notifier);
1646
1647 struct devfreq_notifier_devres {
1648         struct devfreq *devfreq;
1649         struct notifier_block *nb;
1650         unsigned int list;
1651 };
1652
1653 static void devm_devfreq_notifier_release(struct device *dev, void *res)
1654 {
1655         struct devfreq_notifier_devres *this = res;
1656
1657         devfreq_unregister_notifier(this->devfreq, this->nb, this->list);
1658 }
1659
1660 /**
1661  * devm_devfreq_register_notifier()
1662         - Resource-managed devfreq_register_notifier()
1663  * @dev:        The devfreq user device. (parent of devfreq)
1664  * @devfreq:    The devfreq object.
1665  * @nb:         The notifier block to be unregistered.
1666  * @list:       DEVFREQ_TRANSITION_NOTIFIER.
1667  */
1668 int devm_devfreq_register_notifier(struct device *dev,
1669                                 struct devfreq *devfreq,
1670                                 struct notifier_block *nb,
1671                                 unsigned int list)
1672 {
1673         struct devfreq_notifier_devres *ptr;
1674         int ret;
1675
1676         ptr = devres_alloc(devm_devfreq_notifier_release, sizeof(*ptr),
1677                                 GFP_KERNEL);
1678         if (!ptr)
1679                 return -ENOMEM;
1680
1681         ret = devfreq_register_notifier(devfreq, nb, list);
1682         if (ret) {
1683                 devres_free(ptr);
1684                 return ret;
1685         }
1686
1687         ptr->devfreq = devfreq;
1688         ptr->nb = nb;
1689         ptr->list = list;
1690         devres_add(dev, ptr);
1691
1692         return 0;
1693 }
1694 EXPORT_SYMBOL(devm_devfreq_register_notifier);
1695
1696 /**
1697  * devm_devfreq_unregister_notifier()
1698         - Resource-managed devfreq_unregister_notifier()
1699  * @dev:        The devfreq user device. (parent of devfreq)
1700  * @devfreq:    The devfreq object.
1701  * @nb:         The notifier block to be unregistered.
1702  * @list:       DEVFREQ_TRANSITION_NOTIFIER.
1703  */
1704 void devm_devfreq_unregister_notifier(struct device *dev,
1705                                       struct devfreq *devfreq,
1706                                       struct notifier_block *nb,
1707                                       unsigned int list)
1708 {
1709         WARN_ON(devres_release(dev, devm_devfreq_notifier_release,
1710                                devm_devfreq_dev_match, devfreq));
1711 }
1712 EXPORT_SYMBOL(devm_devfreq_unregister_notifier);