Commit bc09c065 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

Merge tag 'devfreq-next-for-5.7' of...

Merge tag 'devfreq-next-for-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux into pm-devfreq

Pull devfreq updates for v5.7 from Chanwoo Choi:

"Update devfreq code with minor issue:
 - Remove unneeded extern keyword from devfreq header file.
 - Change to DEVFREQ_GOV_UPDATE_INTERNAL event name because
   old DEVFREQ_GOV_INTERNAL name doesn't specify exactly what to do.
 - Fix handling code of return value of dev_pm_qos_remove_request().
 - Use constant name for userspace governor with DEVFREQ_GOV_USERSPACE.
 - Get rid of doc warnings and  fix typo."

* tag 'devfreq-next-for-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux:
  PM / devfreq: Get rid of some doc warnings
  PM / devfreq: Fix handling dev_pm_qos_remove_request result
  PM / devfreq: Fix a typo in a comment
  PM / devfreq: Change to DEVFREQ_GOV_UPDATE_INTERVAL event name
  PM / devfreq: Remove unneeded extern keyword
  PM / devfreq: Use constant name of userspace governor
parents 16fbf79b 7a51320e
...@@ -550,14 +550,14 @@ void devfreq_monitor_resume(struct devfreq *devfreq) ...@@ -550,14 +550,14 @@ void devfreq_monitor_resume(struct devfreq *devfreq)
EXPORT_SYMBOL(devfreq_monitor_resume); EXPORT_SYMBOL(devfreq_monitor_resume);
/** /**
* devfreq_interval_update() - Update device devfreq monitoring interval * devfreq_update_interval() - Update device devfreq monitoring interval
* @devfreq: the devfreq instance. * @devfreq: the devfreq instance.
* @delay: new polling interval to be set. * @delay: new polling interval to be set.
* *
* Helper function to set new load monitoring polling interval. Function * Helper function to set new load monitoring polling interval. Function
* to be called from governor in response to DEVFREQ_GOV_INTERVAL event. * to be called from governor in response to DEVFREQ_GOV_UPDATE_INTERVAL event.
*/ */
void devfreq_interval_update(struct devfreq *devfreq, unsigned int *delay) void devfreq_update_interval(struct devfreq *devfreq, unsigned int *delay)
{ {
unsigned int cur_delay = devfreq->profile->polling_ms; unsigned int cur_delay = devfreq->profile->polling_ms;
unsigned int new_delay = *delay; unsigned int new_delay = *delay;
...@@ -597,7 +597,7 @@ void devfreq_interval_update(struct devfreq *devfreq, unsigned int *delay) ...@@ -597,7 +597,7 @@ void devfreq_interval_update(struct devfreq *devfreq, unsigned int *delay)
out: out:
mutex_unlock(&devfreq->lock); mutex_unlock(&devfreq->lock);
} }
EXPORT_SYMBOL(devfreq_interval_update); EXPORT_SYMBOL(devfreq_update_interval);
/** /**
* devfreq_notifier_call() - Notify that the device frequency requirements * devfreq_notifier_call() - Notify that the device frequency requirements
...@@ -705,13 +705,13 @@ static void devfreq_dev_release(struct device *dev) ...@@ -705,13 +705,13 @@ static void devfreq_dev_release(struct device *dev)
if (dev_pm_qos_request_active(&devfreq->user_max_freq_req)) { if (dev_pm_qos_request_active(&devfreq->user_max_freq_req)) {
err = dev_pm_qos_remove_request(&devfreq->user_max_freq_req); err = dev_pm_qos_remove_request(&devfreq->user_max_freq_req);
if (err) if (err < 0)
dev_warn(dev->parent, dev_warn(dev->parent,
"Failed to remove max_freq request: %d\n", err); "Failed to remove max_freq request: %d\n", err);
} }
if (dev_pm_qos_request_active(&devfreq->user_min_freq_req)) { if (dev_pm_qos_request_active(&devfreq->user_min_freq_req)) {
err = dev_pm_qos_remove_request(&devfreq->user_min_freq_req); err = dev_pm_qos_remove_request(&devfreq->user_min_freq_req);
if (err) if (err < 0)
dev_warn(dev->parent, dev_warn(dev->parent,
"Failed to remove min_freq request: %d\n", err); "Failed to remove min_freq request: %d\n", err);
} }
...@@ -1424,7 +1424,7 @@ static ssize_t polling_interval_store(struct device *dev, ...@@ -1424,7 +1424,7 @@ static ssize_t polling_interval_store(struct device *dev,
if (ret != 1) if (ret != 1)
return -EINVAL; return -EINVAL;
df->governor->event_handler(df, DEVFREQ_GOV_INTERVAL, &value); df->governor->event_handler(df, DEVFREQ_GOV_UPDATE_INTERVAL, &value);
ret = count; ret = count;
return ret; return ret;
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
/* Devfreq events */ /* Devfreq events */
#define DEVFREQ_GOV_START 0x1 #define DEVFREQ_GOV_START 0x1
#define DEVFREQ_GOV_STOP 0x2 #define DEVFREQ_GOV_STOP 0x2
#define DEVFREQ_GOV_INTERVAL 0x3 #define DEVFREQ_GOV_UPDATE_INTERVAL 0x3
#define DEVFREQ_GOV_SUSPEND 0x4 #define DEVFREQ_GOV_SUSPEND 0x4
#define DEVFREQ_GOV_RESUME 0x5 #define DEVFREQ_GOV_RESUME 0x5
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
* @node: list node - contains registered devfreq governors * @node: list node - contains registered devfreq governors
* @name: Governor's name * @name: Governor's name
* @immutable: Immutable flag for governor. If the value is 1, * @immutable: Immutable flag for governor. If the value is 1,
* this govenror is never changeable to other governor. * this governor is never changeable to other governor.
* @interrupt_driven: Devfreq core won't schedule polling work for this * @interrupt_driven: Devfreq core won't schedule polling work for this
* governor if value is set to 1. * governor if value is set to 1.
* @get_target_freq: Returns desired operating frequency for the device. * @get_target_freq: Returns desired operating frequency for the device.
...@@ -57,17 +57,16 @@ struct devfreq_governor { ...@@ -57,17 +57,16 @@ struct devfreq_governor {
unsigned int event, void *data); unsigned int event, void *data);
}; };
extern void devfreq_monitor_start(struct devfreq *devfreq); void devfreq_monitor_start(struct devfreq *devfreq);
extern void devfreq_monitor_stop(struct devfreq *devfreq); void devfreq_monitor_stop(struct devfreq *devfreq);
extern void devfreq_monitor_suspend(struct devfreq *devfreq); void devfreq_monitor_suspend(struct devfreq *devfreq);
extern void devfreq_monitor_resume(struct devfreq *devfreq); void devfreq_monitor_resume(struct devfreq *devfreq);
extern void devfreq_interval_update(struct devfreq *devfreq, void devfreq_update_interval(struct devfreq *devfreq, unsigned int *delay);
unsigned int *delay);
extern int devfreq_add_governor(struct devfreq_governor *governor); int devfreq_add_governor(struct devfreq_governor *governor);
extern int devfreq_remove_governor(struct devfreq_governor *governor); int devfreq_remove_governor(struct devfreq_governor *governor);
extern int devfreq_update_status(struct devfreq *devfreq, unsigned long freq); int devfreq_update_status(struct devfreq *devfreq, unsigned long freq);
static inline int devfreq_update_stats(struct devfreq *df) static inline int devfreq_update_stats(struct devfreq *df)
{ {
......
...@@ -96,8 +96,8 @@ static int devfreq_simple_ondemand_handler(struct devfreq *devfreq, ...@@ -96,8 +96,8 @@ static int devfreq_simple_ondemand_handler(struct devfreq *devfreq,
devfreq_monitor_stop(devfreq); devfreq_monitor_stop(devfreq);
break; break;
case DEVFREQ_GOV_INTERVAL: case DEVFREQ_GOV_UPDATE_INTERVAL:
devfreq_interval_update(devfreq, (unsigned int *)data); devfreq_update_interval(devfreq, (unsigned int *)data);
break; break;
case DEVFREQ_GOV_SUSPEND: case DEVFREQ_GOV_SUSPEND:
......
...@@ -131,7 +131,7 @@ static int devfreq_userspace_handler(struct devfreq *devfreq, ...@@ -131,7 +131,7 @@ static int devfreq_userspace_handler(struct devfreq *devfreq,
} }
static struct devfreq_governor devfreq_userspace = { static struct devfreq_governor devfreq_userspace = {
.name = "userspace", .name = DEVFREQ_GOV_USERSPACE,
.get_target_freq = devfreq_userspace_func, .get_target_freq = devfreq_userspace_func,
.event_handler = devfreq_userspace_handler, .event_handler = devfreq_userspace_handler,
}; };
......
...@@ -734,7 +734,7 @@ static int tegra_governor_event_handler(struct devfreq *devfreq, ...@@ -734,7 +734,7 @@ static int tegra_governor_event_handler(struct devfreq *devfreq,
devfreq_monitor_stop(devfreq); devfreq_monitor_stop(devfreq);
break; break;
case DEVFREQ_GOV_INTERVAL: case DEVFREQ_GOV_UPDATE_INTERVAL:
/* /*
* ACTMON hardware supports up to 256 milliseconds for the * ACTMON hardware supports up to 256 milliseconds for the
* sampling period. * sampling period.
...@@ -745,7 +745,7 @@ static int tegra_governor_event_handler(struct devfreq *devfreq, ...@@ -745,7 +745,7 @@ static int tegra_governor_event_handler(struct devfreq *devfreq,
} }
tegra_actmon_pause(tegra); tegra_actmon_pause(tegra);
devfreq_interval_update(devfreq, new_delay); devfreq_update_interval(devfreq, new_delay);
ret = tegra_actmon_resume(tegra); ret = tegra_actmon_resume(tegra);
break; break;
......
...@@ -158,7 +158,7 @@ struct devfreq_stats { ...@@ -158,7 +158,7 @@ struct devfreq_stats {
* functions except for the context of callbacks defined in struct * functions except for the context of callbacks defined in struct
* devfreq_governor, the governor should protect its access with the * devfreq_governor, the governor should protect its access with the
* struct mutex lock in struct devfreq. A governor may use this mutex * struct mutex lock in struct devfreq. A governor may use this mutex
* to protect its own private data in void *data as well. * to protect its own private data in ``void *data`` as well.
*/ */
struct devfreq { struct devfreq {
struct list_head node; struct list_head node;
...@@ -201,24 +201,23 @@ struct devfreq_freqs { ...@@ -201,24 +201,23 @@ struct devfreq_freqs {
}; };
#if defined(CONFIG_PM_DEVFREQ) #if defined(CONFIG_PM_DEVFREQ)
extern struct devfreq *devfreq_add_device(struct device *dev, struct devfreq *devfreq_add_device(struct device *dev,
struct devfreq_dev_profile *profile, struct devfreq_dev_profile *profile,
const char *governor_name, const char *governor_name,
void *data); void *data);
extern int devfreq_remove_device(struct devfreq *devfreq); int devfreq_remove_device(struct devfreq *devfreq);
extern struct devfreq *devm_devfreq_add_device(struct device *dev, struct devfreq *devm_devfreq_add_device(struct device *dev,
struct devfreq_dev_profile *profile, struct devfreq_dev_profile *profile,
const char *governor_name, const char *governor_name,
void *data); void *data);
extern void devm_devfreq_remove_device(struct device *dev, void devm_devfreq_remove_device(struct device *dev, struct devfreq *devfreq);
struct devfreq *devfreq);
/* Supposed to be called by PM callbacks */ /* Supposed to be called by PM callbacks */
extern int devfreq_suspend_device(struct devfreq *devfreq); int devfreq_suspend_device(struct devfreq *devfreq);
extern int devfreq_resume_device(struct devfreq *devfreq); int devfreq_resume_device(struct devfreq *devfreq);
extern void devfreq_suspend(void); void devfreq_suspend(void);
extern void devfreq_resume(void); void devfreq_resume(void);
/** /**
* update_devfreq() - Reevaluate the device and configure frequency * update_devfreq() - Reevaluate the device and configure frequency
...@@ -226,39 +225,38 @@ extern void devfreq_resume(void); ...@@ -226,39 +225,38 @@ extern void devfreq_resume(void);
* *
* Note: devfreq->lock must be held * Note: devfreq->lock must be held
*/ */
extern int update_devfreq(struct devfreq *devfreq); int update_devfreq(struct devfreq *devfreq);
/* Helper functions for devfreq user device driver with OPP. */ /* Helper functions for devfreq user device driver with OPP. */
extern struct dev_pm_opp *devfreq_recommended_opp(struct device *dev, struct dev_pm_opp *devfreq_recommended_opp(struct device *dev,
unsigned long *freq, u32 flags); unsigned long *freq, u32 flags);
extern int devfreq_register_opp_notifier(struct device *dev, int devfreq_register_opp_notifier(struct device *dev,
struct devfreq *devfreq); struct devfreq *devfreq);
extern int devfreq_unregister_opp_notifier(struct device *dev, int devfreq_unregister_opp_notifier(struct device *dev,
struct devfreq *devfreq); struct devfreq *devfreq);
extern int devm_devfreq_register_opp_notifier(struct device *dev, int devm_devfreq_register_opp_notifier(struct device *dev,
struct devfreq *devfreq); struct devfreq *devfreq);
extern void devm_devfreq_unregister_opp_notifier(struct device *dev, void devm_devfreq_unregister_opp_notifier(struct device *dev,
struct devfreq *devfreq); struct devfreq *devfreq);
extern int devfreq_register_notifier(struct devfreq *devfreq, int devfreq_register_notifier(struct devfreq *devfreq,
struct notifier_block *nb, struct notifier_block *nb,
unsigned int list); unsigned int list);
extern int devfreq_unregister_notifier(struct devfreq *devfreq, int devfreq_unregister_notifier(struct devfreq *devfreq,
struct notifier_block *nb, struct notifier_block *nb,
unsigned int list); unsigned int list);
extern int devm_devfreq_register_notifier(struct device *dev, int devm_devfreq_register_notifier(struct device *dev,
struct devfreq *devfreq, struct devfreq *devfreq,
struct notifier_block *nb, struct notifier_block *nb,
unsigned int list); unsigned int list);
extern void devm_devfreq_unregister_notifier(struct device *dev, void devm_devfreq_unregister_notifier(struct device *dev,
struct devfreq *devfreq, struct devfreq *devfreq,
struct notifier_block *nb, struct notifier_block *nb,
unsigned int list); unsigned int list);
extern struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, int index);
int index);
#if IS_ENABLED(CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND) #if IS_ENABLED(CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND)
/** /**
* struct devfreq_simple_ondemand_data - void *data fed to struct devfreq * struct devfreq_simple_ondemand_data - ``void *data`` fed to struct devfreq
* and devfreq_add_device * and devfreq_add_device
* @upthreshold: If the load is over this value, the frequency jumps. * @upthreshold: If the load is over this value, the frequency jumps.
* Specify 0 to use the default. Valid value = 0 to 100. * Specify 0 to use the default. Valid value = 0 to 100.
...@@ -278,7 +276,7 @@ struct devfreq_simple_ondemand_data { ...@@ -278,7 +276,7 @@ struct devfreq_simple_ondemand_data {
#if IS_ENABLED(CONFIG_DEVFREQ_GOV_PASSIVE) #if IS_ENABLED(CONFIG_DEVFREQ_GOV_PASSIVE)
/** /**
* struct devfreq_passive_data - void *data fed to struct devfreq * struct devfreq_passive_data - ``void *data`` fed to struct devfreq
* and devfreq_add_device * and devfreq_add_device
* @parent: the devfreq instance of parent device. * @parent: the devfreq instance of parent device.
* @get_target_freq: Optional callback, Returns desired operating frequency * @get_target_freq: Optional callback, Returns desired operating frequency
...@@ -311,9 +309,9 @@ struct devfreq_passive_data { ...@@ -311,9 +309,9 @@ struct devfreq_passive_data {
#else /* !CONFIG_PM_DEVFREQ */ #else /* !CONFIG_PM_DEVFREQ */
static inline struct devfreq *devfreq_add_device(struct device *dev, static inline struct devfreq *devfreq_add_device(struct device *dev,
struct devfreq_dev_profile *profile, struct devfreq_dev_profile *profile,
const char *governor_name, const char *governor_name,
void *data) void *data)
{ {
return ERR_PTR(-ENOSYS); return ERR_PTR(-ENOSYS);
} }
...@@ -350,31 +348,31 @@ static inline void devfreq_suspend(void) {} ...@@ -350,31 +348,31 @@ static inline void devfreq_suspend(void) {}
static inline void devfreq_resume(void) {} static inline void devfreq_resume(void) {}
static inline struct dev_pm_opp *devfreq_recommended_opp(struct device *dev, static inline struct dev_pm_opp *devfreq_recommended_opp(struct device *dev,
unsigned long *freq, u32 flags) unsigned long *freq, u32 flags)
{ {
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
} }
static inline int devfreq_register_opp_notifier(struct device *dev, static inline int devfreq_register_opp_notifier(struct device *dev,
struct devfreq *devfreq) struct devfreq *devfreq)
{ {
return -EINVAL; return -EINVAL;
} }
static inline int devfreq_unregister_opp_notifier(struct device *dev, static inline int devfreq_unregister_opp_notifier(struct device *dev,
struct devfreq *devfreq) struct devfreq *devfreq)
{ {
return -EINVAL; return -EINVAL;
} }
static inline int devm_devfreq_register_opp_notifier(struct device *dev, static inline int devm_devfreq_register_opp_notifier(struct device *dev,
struct devfreq *devfreq) struct devfreq *devfreq)
{ {
return -EINVAL; return -EINVAL;
} }
static inline void devm_devfreq_unregister_opp_notifier(struct device *dev, static inline void devm_devfreq_unregister_opp_notifier(struct device *dev,
struct devfreq *devfreq) struct devfreq *devfreq)
{ {
} }
...@@ -393,22 +391,22 @@ static inline int devfreq_unregister_notifier(struct devfreq *devfreq, ...@@ -393,22 +391,22 @@ static inline int devfreq_unregister_notifier(struct devfreq *devfreq,
} }
static inline int devm_devfreq_register_notifier(struct device *dev, static inline int devm_devfreq_register_notifier(struct device *dev,
struct devfreq *devfreq, struct devfreq *devfreq,
struct notifier_block *nb, struct notifier_block *nb,
unsigned int list) unsigned int list)
{ {
return 0; return 0;
} }
static inline void devm_devfreq_unregister_notifier(struct device *dev, static inline void devm_devfreq_unregister_notifier(struct device *dev,
struct devfreq *devfreq, struct devfreq *devfreq,
struct notifier_block *nb, struct notifier_block *nb,
unsigned int list) unsigned int list)
{ {
} }
static inline struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, static inline struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev,
int index) int index)
{ {
return ERR_PTR(-ENODEV); return ERR_PTR(-ENODEV);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment