static int __init cpuquiet_init(void)
{
- return cpuquiet_add_class_sysfs(&cpu_sysdev_class);
+ return cpuquiet_add_interface(cpu_subsys.dev_root);
}
core_initcall(cpuquiet_init);
#ifndef __DRIVER_CPUQUIET_H
#define __DRIVER_CPUQUIET_H
-#include <linux/sysdev.h>
+#include <linux/device.h>
extern struct mutex cpuquiet_lock;
extern struct cpuquiet_governor *cpuquiet_curr_governor;
extern struct list_head cpuquiet_governors;
-int cpuquiet_add_class_sysfs(struct sysdev_class *cls);
+int cpuquiet_add_interface(struct device *dev);
struct cpuquiet_governor *cpuquiet_find_governor(const char *str);
int cpuquiet_switch_governor(struct cpuquiet_governor *gov);
struct cpuquiet_governor *cpuquiet_get_first_governor(void);
struct cpuquiet_driver *cpuquiet_get_driver(void);
-void cpuquiet_add_dev(struct sys_device *sys_dev, unsigned int cpu);
+void cpuquiet_add_dev(struct device *dev, unsigned int cpu);
void cpuquiet_remove_dev(unsigned int cpu);
int cpuquiet_cpu_kobject_init(struct kobject *kobj, struct kobj_type *type,
char *name, int cpu);
bool was_up = stat->up_down_count & 0x1;
if (was_up)
- stat->time_up_total = cputime64_add(stat->time_up_total,
- cputime64_sub(cur_jiffies, stat->last_update));
+ stat->time_up_total += cur_jiffies - stat->last_update;
if (was_up != up)
stat->up_down_count++;
{
int err = -EBUSY;
unsigned int cpu;
- struct sys_device *sys_dev;
+ struct device *dev;
u64 cur_jiffies;
if (!drv)
stats[cpu].last_update = cur_jiffies;
if (cpu_online(cpu))
stats[cpu].up_down_count = 1;
- sys_dev = get_cpu_sysdev(cpu);
- if (sys_dev) {
- cpuquiet_add_dev(sys_dev, cpu);
+ dev = get_cpu_device(cpu);
+ if (dev) {
+ cpuquiet_add_dev(dev, cpu);
cpuquiet_cpu_kobject_init(&stats[cpu].cpu_kobject,
&ktype_cpu_stats, "stats", cpu);
}
#include <linux/cpumask.h>
#include <linux/module.h>
#include <linux/cpufreq.h>
-#include <linux/pm_qos_params.h>
+#include <linux/pm_qos.h>
#include <linux/jiffies.h>
#include <linux/slab.h>
#include <linux/cpu.h>
return err;
}
-int cpuquiet_add_class_sysfs(struct sysdev_class *cls)
+int cpuquiet_add_interface(struct device *dev)
{
int err;
return -ENOMEM;
err = kobject_init_and_add(cpuquiet_global_kobject,
- &ktype_cpuquiet_sysfs, &cls->kset.kobj, "cpuquiet");
+ &ktype_cpuquiet_sysfs, &dev->kobj, "cpuquiet");
if (!err)
kobject_uevent(cpuquiet_global_kobject, KOBJ_ADD);
.default_attrs = cpuquiet_default_cpu_attrs,
};
-void cpuquiet_add_dev(struct sys_device *sys_dev, unsigned int cpu)
+void cpuquiet_add_dev(struct device *device, unsigned int cpu)
{
struct cpuquiet_dev *dev;
int err;
dev->cpu = cpu;
cpuquiet_cpu_devices[cpu] = dev;
err = kobject_init_and_add(&dev->kobj, &ktype_cpuquiet,
- &sys_dev->kobj, "cpuquiet");
+ &device->kobj, "cpuquiet");
if (!err)
kobject_uevent(&dev->kobj, KOBJ_ADD);
}