Update devfreq for 5.7
Detailed description for this pull request: 1. 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. -----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEEsSpuqBtbWtRe4rLGnM3fLN7rz1MFAl56nKcWHGN3MDAuY2hv aUBzYW1zdW5nLmNvbQAKCRCczd8s3uvPU03iEACeJnIMrP/rPjQOkyC8Te+HhKJG m2WDVNpJAdKCh/dg816bS2W0jGVMYkviLzkWQTymlussejZ25Ya1dynbKd/qjf6T JBLV5GZu+ISS1x3dahbL27RZqEwof9fzoB6V5gvXQOwFVap/NrJB43rQnv/CTHHK Zt1XNwCiWE3wehjiR4YGu/8PjsmsrY7EinBozjeXGhcDzHnI2qWopUeWcSl5vPOJ PjGkDxFomzUNp3jRgQEGWsoWiIQAbkdXb+gqfpTL1+N1pWp596+DWBalTHO8FKoa 4JfFd2xwOYupT8O+VUw98FrH3IkfnRd7CN0nzG4C+/dD0NHpHgKxAgKJTZcJfZ+D 2OdMpqEEEzwZMczOi0SSeO9FBU8fP83Ua/ceaGP1JYB6ABafwNQGu5n0qRIETpxD QIGTo+MP1+QWC8fucq8BmvYODlEH+/s6Qb5DywIOISAPW0H1m+CGCm5v04GmuhFO NxmI79x8huFxKnkr8TgHWNbVoWmsrzK0bEQs0Jcjb+d7p5PSNw7hmGvA9J5nAQzv iEdMrndyCMbeUgdZawbQYky3UTcGIz9jxYp7NZx3BPoZokasvoiCaSVZx9wveFxZ 4f/lLKf9OJEJ2B9m2fV9ukW0V6VfiXWrOL5NDXi8IsbnqxlApn3XvAAZsWRbP1NH KmyxKfW7Ol5FxpSNLQ== =VbOw -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
bc09c0654c
@ -550,14 +550,14 @@ out:
|
||||
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.
|
||||
* @delay: new polling interval to be set.
|
||||
*
|
||||
* 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 new_delay = *delay;
|
||||
@ -597,7 +597,7 @@ void devfreq_interval_update(struct devfreq *devfreq, unsigned int *delay)
|
||||
out:
|
||||
mutex_unlock(&devfreq->lock);
|
||||
}
|
||||
EXPORT_SYMBOL(devfreq_interval_update);
|
||||
EXPORT_SYMBOL(devfreq_update_interval);
|
||||
|
||||
/**
|
||||
* devfreq_notifier_call() - Notify that the device frequency requirements
|
||||
@ -705,13 +705,13 @@ static void devfreq_dev_release(struct device *dev)
|
||||
|
||||
if (dev_pm_qos_request_active(&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,
|
||||
"Failed to remove max_freq request: %d\n", err);
|
||||
}
|
||||
if (dev_pm_qos_request_active(&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,
|
||||
"Failed to remove min_freq request: %d\n", err);
|
||||
}
|
||||
@ -1424,7 +1424,7 @@ static ssize_t polling_interval_store(struct device *dev,
|
||||
if (ret != 1)
|
||||
return -EINVAL;
|
||||
|
||||
df->governor->event_handler(df, DEVFREQ_GOV_INTERVAL, &value);
|
||||
df->governor->event_handler(df, DEVFREQ_GOV_UPDATE_INTERVAL, &value);
|
||||
ret = count;
|
||||
|
||||
return ret;
|
||||
|
@ -18,7 +18,7 @@
|
||||
/* Devfreq events */
|
||||
#define DEVFREQ_GOV_START 0x1
|
||||
#define DEVFREQ_GOV_STOP 0x2
|
||||
#define DEVFREQ_GOV_INTERVAL 0x3
|
||||
#define DEVFREQ_GOV_UPDATE_INTERVAL 0x3
|
||||
#define DEVFREQ_GOV_SUSPEND 0x4
|
||||
#define DEVFREQ_GOV_RESUME 0x5
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
* @node: list node - contains registered devfreq governors
|
||||
* @name: Governor's name
|
||||
* @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
|
||||
* governor if value is set to 1.
|
||||
* @get_target_freq: Returns desired operating frequency for the device.
|
||||
@ -57,17 +57,16 @@ struct devfreq_governor {
|
||||
unsigned int event, void *data);
|
||||
};
|
||||
|
||||
extern void devfreq_monitor_start(struct devfreq *devfreq);
|
||||
extern void devfreq_monitor_stop(struct devfreq *devfreq);
|
||||
extern void devfreq_monitor_suspend(struct devfreq *devfreq);
|
||||
extern void devfreq_monitor_resume(struct devfreq *devfreq);
|
||||
extern void devfreq_interval_update(struct devfreq *devfreq,
|
||||
unsigned int *delay);
|
||||
void devfreq_monitor_start(struct devfreq *devfreq);
|
||||
void devfreq_monitor_stop(struct devfreq *devfreq);
|
||||
void devfreq_monitor_suspend(struct devfreq *devfreq);
|
||||
void devfreq_monitor_resume(struct devfreq *devfreq);
|
||||
void devfreq_update_interval(struct devfreq *devfreq, unsigned int *delay);
|
||||
|
||||
extern int devfreq_add_governor(struct devfreq_governor *governor);
|
||||
extern int devfreq_remove_governor(struct devfreq_governor *governor);
|
||||
int devfreq_add_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)
|
||||
{
|
||||
|
@ -96,8 +96,8 @@ static int devfreq_simple_ondemand_handler(struct devfreq *devfreq,
|
||||
devfreq_monitor_stop(devfreq);
|
||||
break;
|
||||
|
||||
case DEVFREQ_GOV_INTERVAL:
|
||||
devfreq_interval_update(devfreq, (unsigned int *)data);
|
||||
case DEVFREQ_GOV_UPDATE_INTERVAL:
|
||||
devfreq_update_interval(devfreq, (unsigned int *)data);
|
||||
break;
|
||||
|
||||
case DEVFREQ_GOV_SUSPEND:
|
||||
|
@ -131,7 +131,7 @@ static int devfreq_userspace_handler(struct devfreq *devfreq,
|
||||
}
|
||||
|
||||
static struct devfreq_governor devfreq_userspace = {
|
||||
.name = "userspace",
|
||||
.name = DEVFREQ_GOV_USERSPACE,
|
||||
.get_target_freq = devfreq_userspace_func,
|
||||
.event_handler = devfreq_userspace_handler,
|
||||
};
|
||||
|
@ -734,7 +734,7 @@ static int tegra_governor_event_handler(struct devfreq *devfreq,
|
||||
devfreq_monitor_stop(devfreq);
|
||||
break;
|
||||
|
||||
case DEVFREQ_GOV_INTERVAL:
|
||||
case DEVFREQ_GOV_UPDATE_INTERVAL:
|
||||
/*
|
||||
* ACTMON hardware supports up to 256 milliseconds for the
|
||||
* sampling period.
|
||||
@ -745,7 +745,7 @@ static int tegra_governor_event_handler(struct devfreq *devfreq,
|
||||
}
|
||||
|
||||
tegra_actmon_pause(tegra);
|
||||
devfreq_interval_update(devfreq, new_delay);
|
||||
devfreq_update_interval(devfreq, new_delay);
|
||||
ret = tegra_actmon_resume(tegra);
|
||||
break;
|
||||
|
||||
|
@ -158,7 +158,7 @@ struct devfreq_stats {
|
||||
* functions except for the context of callbacks defined in struct
|
||||
* devfreq_governor, the governor should protect its access with the
|
||||
* 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 list_head node;
|
||||
@ -201,24 +201,23 @@ struct devfreq_freqs {
|
||||
};
|
||||
|
||||
#if defined(CONFIG_PM_DEVFREQ)
|
||||
extern struct devfreq *devfreq_add_device(struct device *dev,
|
||||
struct devfreq_dev_profile *profile,
|
||||
const char *governor_name,
|
||||
void *data);
|
||||
extern int devfreq_remove_device(struct devfreq *devfreq);
|
||||
extern struct devfreq *devm_devfreq_add_device(struct device *dev,
|
||||
struct devfreq_dev_profile *profile,
|
||||
const char *governor_name,
|
||||
void *data);
|
||||
extern void devm_devfreq_remove_device(struct device *dev,
|
||||
struct devfreq *devfreq);
|
||||
struct devfreq *devfreq_add_device(struct device *dev,
|
||||
struct devfreq_dev_profile *profile,
|
||||
const char *governor_name,
|
||||
void *data);
|
||||
int devfreq_remove_device(struct devfreq *devfreq);
|
||||
struct devfreq *devm_devfreq_add_device(struct device *dev,
|
||||
struct devfreq_dev_profile *profile,
|
||||
const char *governor_name,
|
||||
void *data);
|
||||
void devm_devfreq_remove_device(struct device *dev, struct devfreq *devfreq);
|
||||
|
||||
/* Supposed to be called by PM callbacks */
|
||||
extern int devfreq_suspend_device(struct devfreq *devfreq);
|
||||
extern int devfreq_resume_device(struct devfreq *devfreq);
|
||||
int devfreq_suspend_device(struct devfreq *devfreq);
|
||||
int devfreq_resume_device(struct devfreq *devfreq);
|
||||
|
||||
extern void devfreq_suspend(void);
|
||||
extern void devfreq_resume(void);
|
||||
void devfreq_suspend(void);
|
||||
void devfreq_resume(void);
|
||||
|
||||
/**
|
||||
* update_devfreq() - Reevaluate the device and configure frequency
|
||||
@ -226,39 +225,38 @@ extern void devfreq_resume(void);
|
||||
*
|
||||
* 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. */
|
||||
extern struct dev_pm_opp *devfreq_recommended_opp(struct device *dev,
|
||||
unsigned long *freq, u32 flags);
|
||||
extern int devfreq_register_opp_notifier(struct device *dev,
|
||||
struct devfreq *devfreq);
|
||||
extern int devfreq_unregister_opp_notifier(struct device *dev,
|
||||
struct devfreq *devfreq);
|
||||
extern int devm_devfreq_register_opp_notifier(struct device *dev,
|
||||
struct devfreq *devfreq);
|
||||
extern void devm_devfreq_unregister_opp_notifier(struct device *dev,
|
||||
struct devfreq *devfreq);
|
||||
extern int devfreq_register_notifier(struct devfreq *devfreq,
|
||||
struct notifier_block *nb,
|
||||
unsigned int list);
|
||||
extern int devfreq_unregister_notifier(struct devfreq *devfreq,
|
||||
struct notifier_block *nb,
|
||||
unsigned int list);
|
||||
extern int devm_devfreq_register_notifier(struct device *dev,
|
||||
struct dev_pm_opp *devfreq_recommended_opp(struct device *dev,
|
||||
unsigned long *freq, u32 flags);
|
||||
int devfreq_register_opp_notifier(struct device *dev,
|
||||
struct devfreq *devfreq);
|
||||
int devfreq_unregister_opp_notifier(struct device *dev,
|
||||
struct devfreq *devfreq);
|
||||
int devm_devfreq_register_opp_notifier(struct device *dev,
|
||||
struct devfreq *devfreq);
|
||||
void devm_devfreq_unregister_opp_notifier(struct device *dev,
|
||||
struct devfreq *devfreq);
|
||||
int devfreq_register_notifier(struct devfreq *devfreq,
|
||||
struct notifier_block *nb,
|
||||
unsigned int list);
|
||||
int devfreq_unregister_notifier(struct devfreq *devfreq,
|
||||
struct notifier_block *nb,
|
||||
unsigned int list);
|
||||
int devm_devfreq_register_notifier(struct device *dev,
|
||||
struct devfreq *devfreq,
|
||||
struct notifier_block *nb,
|
||||
unsigned int list);
|
||||
extern void devm_devfreq_unregister_notifier(struct device *dev,
|
||||
void devm_devfreq_unregister_notifier(struct device *dev,
|
||||
struct devfreq *devfreq,
|
||||
struct notifier_block *nb,
|
||||
unsigned int list);
|
||||
extern struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev,
|
||||
int index);
|
||||
struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, int index);
|
||||
|
||||
#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
|
||||
* @upthreshold: If the load is over this value, the frequency jumps.
|
||||
* Specify 0 to use the default. Valid value = 0 to 100.
|
||||
@ -278,7 +276,7 @@ struct devfreq_simple_ondemand_data {
|
||||
|
||||
#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
|
||||
* @parent: the devfreq instance of parent device.
|
||||
* @get_target_freq: Optional callback, Returns desired operating frequency
|
||||
@ -311,9 +309,9 @@ struct devfreq_passive_data {
|
||||
|
||||
#else /* !CONFIG_PM_DEVFREQ */
|
||||
static inline struct devfreq *devfreq_add_device(struct device *dev,
|
||||
struct devfreq_dev_profile *profile,
|
||||
const char *governor_name,
|
||||
void *data)
|
||||
struct devfreq_dev_profile *profile,
|
||||
const char *governor_name,
|
||||
void *data)
|
||||
{
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
@ -350,31 +348,31 @@ static inline void devfreq_suspend(void) {}
|
||||
static inline void devfreq_resume(void) {}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
static inline int devfreq_register_opp_notifier(struct device *dev,
|
||||
struct devfreq *devfreq)
|
||||
struct devfreq *devfreq)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int devfreq_unregister_opp_notifier(struct device *dev,
|
||||
struct devfreq *devfreq)
|
||||
struct devfreq *devfreq)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int devm_devfreq_register_opp_notifier(struct device *dev,
|
||||
struct devfreq *devfreq)
|
||||
struct devfreq *devfreq)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
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,
|
||||
}
|
||||
|
||||
static inline int devm_devfreq_register_notifier(struct device *dev,
|
||||
struct devfreq *devfreq,
|
||||
struct notifier_block *nb,
|
||||
unsigned int list)
|
||||
struct devfreq *devfreq,
|
||||
struct notifier_block *nb,
|
||||
unsigned int list)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void devm_devfreq_unregister_notifier(struct device *dev,
|
||||
struct devfreq *devfreq,
|
||||
struct notifier_block *nb,
|
||||
unsigned int list)
|
||||
struct devfreq *devfreq,
|
||||
struct notifier_block *nb,
|
||||
unsigned int list)
|
||||
{
|
||||
}
|
||||
|
||||
static inline struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev,
|
||||
int index)
|
||||
int index)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user