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 ---