cpufreq.c (85f0e42bd65d01b351d561efb38e584d4c596553) | cpufreq.c (5c84c1b84bd80a735b2c7804e7be86d043fca595) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * linux/drivers/cpufreq/cpufreq.c 4 * 5 * Copyright (C) 2001 Russell King 6 * (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de> 7 * (C) 2013 Viresh Kumar <viresh.kumar@linaro.org> 8 * --- 1006 unchanged lines hidden (view full) --- 1015 if (cpumask_test_and_set_cpu(cpu, policy->real_cpus)) 1016 return; 1017 1018 dev_dbg(dev, "%s: Adding symlink\n", __func__); 1019 if (sysfs_create_link(&dev->kobj, &policy->kobj, "cpufreq")) 1020 dev_err(dev, "cpufreq symlink creation failed\n"); 1021} 1022 | 1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * linux/drivers/cpufreq/cpufreq.c 4 * 5 * Copyright (C) 2001 Russell King 6 * (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de> 7 * (C) 2013 Viresh Kumar <viresh.kumar@linaro.org> 8 * --- 1006 unchanged lines hidden (view full) --- 1015 if (cpumask_test_and_set_cpu(cpu, policy->real_cpus)) 1016 return; 1017 1018 dev_dbg(dev, "%s: Adding symlink\n", __func__); 1019 if (sysfs_create_link(&dev->kobj, &policy->kobj, "cpufreq")) 1020 dev_err(dev, "cpufreq symlink creation failed\n"); 1021} 1022 |
1023static void remove_cpu_dev_symlink(struct cpufreq_policy *policy, | 1023static void remove_cpu_dev_symlink(struct cpufreq_policy *policy, int cpu, |
1024 struct device *dev) 1025{ 1026 dev_dbg(dev, "%s: Removing symlink\n", __func__); 1027 sysfs_remove_link(&dev->kobj, "cpufreq"); | 1024 struct device *dev) 1025{ 1026 dev_dbg(dev, "%s: Removing symlink\n", __func__); 1027 sysfs_remove_link(&dev->kobj, "cpufreq"); |
1028 cpumask_clear_cpu(cpu, policy->real_cpus); |
|
1028} 1029 1030static int cpufreq_add_dev_interface(struct cpufreq_policy *policy) 1031{ 1032 struct freq_attr **drv_attr; 1033 int ret = 0; 1034 1035 /* set up files for this cpu device */ --- 491 unchanged lines hidden (view full) --- 1527 policy->cdev = of_cpufreq_cooling_register(policy); 1528 1529 pr_debug("initialization complete\n"); 1530 1531 return 0; 1532 1533out_destroy_policy: 1534 for_each_cpu(j, policy->real_cpus) | 1029} 1030 1031static int cpufreq_add_dev_interface(struct cpufreq_policy *policy) 1032{ 1033 struct freq_attr **drv_attr; 1034 int ret = 0; 1035 1036 /* set up files for this cpu device */ --- 491 unchanged lines hidden (view full) --- 1528 policy->cdev = of_cpufreq_cooling_register(policy); 1529 1530 pr_debug("initialization complete\n"); 1531 1532 return 0; 1533 1534out_destroy_policy: 1535 for_each_cpu(j, policy->real_cpus) |
1535 remove_cpu_dev_symlink(policy, get_cpu_device(j)); | 1536 remove_cpu_dev_symlink(policy, j, get_cpu_device(j)); |
1536 1537 up_write(&policy->rwsem); 1538 1539out_offline_policy: 1540 if (cpufreq_driver->offline) 1541 cpufreq_driver->offline(policy); 1542 1543out_exit_policy: --- 108 unchanged lines hidden (view full) --- 1652 struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu); 1653 1654 if (!policy) 1655 return; 1656 1657 if (cpu_online(cpu)) 1658 cpufreq_offline(cpu); 1659 | 1537 1538 up_write(&policy->rwsem); 1539 1540out_offline_policy: 1541 if (cpufreq_driver->offline) 1542 cpufreq_driver->offline(policy); 1543 1544out_exit_policy: --- 108 unchanged lines hidden (view full) --- 1653 struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu); 1654 1655 if (!policy) 1656 return; 1657 1658 if (cpu_online(cpu)) 1659 cpufreq_offline(cpu); 1660 |
1660 cpumask_clear_cpu(cpu, policy->real_cpus); 1661 remove_cpu_dev_symlink(policy, dev); | 1661 remove_cpu_dev_symlink(policy, cpu, dev); |
1662 1663 if (cpumask_empty(policy->real_cpus)) { 1664 /* We did light-weight exit earlier, do full tear down now */ 1665 if (cpufreq_driver->offline) 1666 cpufreq_driver->exit(policy); 1667 1668 cpufreq_policy_free(policy); 1669 } --- 1270 unchanged lines hidden --- | 1662 1663 if (cpumask_empty(policy->real_cpus)) { 1664 /* We did light-weight exit earlier, do full tear down now */ 1665 if (cpufreq_driver->offline) 1666 cpufreq_driver->exit(policy); 1667 1668 cpufreq_policy_free(policy); 1669 } --- 1270 unchanged lines hidden --- |