mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
Update devfreq next for v6.2
Detailed description for this pull request: - Add a private governor_data for governor. The private governor_data is allocated and handled by governor regardless of passing the data from devfreq driver via devfreq_add_device. The added private governor keeps the governor own data when switching from userspace governor and other governors. - Replace code by using defined functions of device_match_of_node and devm_platform_get_and_ioremap_resource -----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEEsSpuqBtbWtRe4rLGnM3fLN7rz1MFAmON6vUWHGN3MDAuY2hv aUBzYW1zdW5nLmNvbQAKCRCczd8s3uvPU+D0D/98gnxW+K75j6sxYbPeqrryVEeD cVy51+pkbZ0nO05jTLFIqNDwp/FLatT6J31f15TRnT0KnDub+4z0xslegnoHqoJx o18q3+rPuWUBR3gZpAqhdTsyjLQArOd5OoOlmOVw0+xOZZgDRsl47JPIScx1giIi QPMZDNW7HoCPGoxCO5RoNGcpU9pqfhDuoCW2NtPEcSE2N3Gnu4JPh+sO3nQ+QWf8 Ci3q3zgnYTfj8WKJn9FTLE/HZN9EkhduS6ViN8yImeJ/BQK+tU2uodZXu+2bjXsb vl2G0kqy+uiBxTkTlNoJg6PQtxv5hdJs1AX1CW4a94zmGZhYQVr69/JZmN3sDOFL iPkD5oe8Z3f5oD/Y1uQc3QDBcdzB2M4jMWI24NPgBgyCsgAbeuJQRz3yuPJGeyPZ xoVil6nu6OyWzDAhZ6j/FhtlmTKvcUTScCR6TyPislAQUuzVFzwWDkDKX5seFwvq +lruVqWLJ1IEv3m++zJOOPE0TUfsz1M1QXPdWnMzjSj2FcrIuaKUEZLOJinsx1Ky /WQOQWZpdLzfmK+6W4DadnxCkoow3TU2LZL4tgyfPjQOzX0Q/wWWZULGT90BbdFY OffxBtYoQvVG93enmfHhf+MlWUky8SskI9x9JKAv+AXXTnGTB+665AO4LDGoJnRV J/IXAFU+hGlksfkirw== =yKhT -----END PGP SIGNATURE----- Merge tag 'devfreq-next-for-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux Pull devfreq updates for 6.2 from Chanwoo Choi: "- Add a private governor_data for governor. The private governor_data is allocated and handled by governor regardless of passing the data from devfreq driver via devfreq_add_device. The added private governor data keeps the governor own data when switching from userspace governor and other governors. - Replace code by using defined functions of device_match_of_node() and devm_platform_get_and_ioremap_resource()." * tag 'devfreq-next-for-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux: PM / devfreq: event: use devm_platform_get_and_ioremap_resource() PM / devfreq: event: Use device_match_of_node() PM / devfreq: Use device_match_of_node() PM/devfreq: governor: Add a private governor_data for governor
This commit is contained in:
commit
92e61c2e0c
|
|
@ -233,7 +233,7 @@ struct devfreq_event_dev *devfreq_event_get_edev_by_phandle(struct device *dev,
|
|||
|
||||
mutex_lock(&devfreq_event_list_lock);
|
||||
list_for_each_entry(edev, &devfreq_event_list, node) {
|
||||
if (edev->dev.parent && edev->dev.parent->of_node == node)
|
||||
if (edev->dev.parent && device_match_of_node(edev->dev.parent, node))
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -776,8 +776,7 @@ static void remove_sysfs_files(struct devfreq *devfreq,
|
|||
* @dev: the device to add devfreq feature.
|
||||
* @profile: device-specific profile to run devfreq.
|
||||
* @governor_name: name of the policy to choose frequency.
|
||||
* @data: private data for the governor. The devfreq framework does not
|
||||
* touch this value.
|
||||
* @data: devfreq driver pass to governors, governor should not change it.
|
||||
*/
|
||||
struct devfreq *devfreq_add_device(struct device *dev,
|
||||
struct devfreq_dev_profile *profile,
|
||||
|
|
@ -1011,8 +1010,7 @@ static void devm_devfreq_dev_release(struct device *dev, void *res)
|
|||
* @dev: the device to add devfreq feature.
|
||||
* @profile: device-specific profile to run devfreq.
|
||||
* @governor_name: name of the policy to choose frequency.
|
||||
* @data: private data for the governor. The devfreq framework does not
|
||||
* touch this value.
|
||||
* @data: devfreq driver pass to governors, governor should not change it.
|
||||
*
|
||||
* This function manages automatically the memory of devfreq device using device
|
||||
* resource management and simplify the free operation for memory of devfreq
|
||||
|
|
@ -1059,7 +1057,7 @@ struct devfreq *devfreq_get_devfreq_by_node(struct device_node *node)
|
|||
mutex_lock(&devfreq_list_lock);
|
||||
list_for_each_entry(devfreq, &devfreq_list, node) {
|
||||
if (devfreq->dev.parent
|
||||
&& devfreq->dev.parent->of_node == node) {
|
||||
&& device_match_of_node(devfreq->dev.parent, node)) {
|
||||
mutex_unlock(&devfreq_list_lock);
|
||||
return devfreq;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -214,8 +214,7 @@ static int exynos_nocp_parse_dt(struct platform_device *pdev,
|
|||
nocp->clk = NULL;
|
||||
|
||||
/* Maps the memory mapped IO to control nocp register */
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
base = devm_ioremap_resource(dev, res);
|
||||
base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
|
||||
if (IS_ERR(base))
|
||||
return PTR_ERR(base);
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ struct userspace_data {
|
|||
|
||||
static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
|
||||
{
|
||||
struct userspace_data *data = df->data;
|
||||
struct userspace_data *data = df->governor_data;
|
||||
|
||||
if (data->valid)
|
||||
*freq = data->user_frequency;
|
||||
|
|
@ -40,7 +40,7 @@ static ssize_t set_freq_store(struct device *dev, struct device_attribute *attr,
|
|||
int err = 0;
|
||||
|
||||
mutex_lock(&devfreq->lock);
|
||||
data = devfreq->data;
|
||||
data = devfreq->governor_data;
|
||||
|
||||
sscanf(buf, "%lu", &wanted);
|
||||
data->user_frequency = wanted;
|
||||
|
|
@ -60,7 +60,7 @@ static ssize_t set_freq_show(struct device *dev,
|
|||
int err = 0;
|
||||
|
||||
mutex_lock(&devfreq->lock);
|
||||
data = devfreq->data;
|
||||
data = devfreq->governor_data;
|
||||
|
||||
if (data->valid)
|
||||
err = sprintf(buf, "%lu\n", data->user_frequency);
|
||||
|
|
@ -91,7 +91,7 @@ static int userspace_init(struct devfreq *devfreq)
|
|||
goto out;
|
||||
}
|
||||
data->valid = false;
|
||||
devfreq->data = data;
|
||||
devfreq->governor_data = data;
|
||||
|
||||
err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
|
||||
out:
|
||||
|
|
@ -107,8 +107,8 @@ static void userspace_exit(struct devfreq *devfreq)
|
|||
if (devfreq->dev.kobj.sd)
|
||||
sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
|
||||
|
||||
kfree(devfreq->data);
|
||||
devfreq->data = NULL;
|
||||
kfree(devfreq->governor_data);
|
||||
devfreq->governor_data = NULL;
|
||||
}
|
||||
|
||||
static int devfreq_userspace_handler(struct devfreq *devfreq,
|
||||
|
|
|
|||
|
|
@ -152,8 +152,8 @@ struct devfreq_stats {
|
|||
* @max_state: count of entry present in the frequency table.
|
||||
* @previous_freq: previously configured frequency value.
|
||||
* @last_status: devfreq user device info, performance statistics
|
||||
* @data: Private data of the governor. The devfreq framework does not
|
||||
* touch this.
|
||||
* @data: devfreq driver pass to governors, governor should not change it.
|
||||
* @governor_data: private data for governors, devfreq core doesn't touch it.
|
||||
* @user_min_freq_req: PM QoS minimum frequency request from user (via sysfs)
|
||||
* @user_max_freq_req: PM QoS maximum frequency request from user (via sysfs)
|
||||
* @scaling_min_freq: Limit minimum frequency requested by OPP interface
|
||||
|
|
@ -193,7 +193,8 @@ struct devfreq {
|
|||
unsigned long previous_freq;
|
||||
struct devfreq_dev_status last_status;
|
||||
|
||||
void *data; /* private data for governors */
|
||||
void *data;
|
||||
void *governor_data;
|
||||
|
||||
struct dev_pm_qos_request user_min_freq_req;
|
||||
struct dev_pm_qos_request user_max_freq_req;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user