diff options
Diffstat (limited to 'drivers/base/cpu.c')
| -rw-r--r-- | drivers/base/cpu.c | 48 |
1 files changed, 8 insertions, 40 deletions
diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c index 78a9f57e48f3..60e2c4d36990 100644 --- a/drivers/base/cpu.c +++ b/drivers/base/cpu.c @@ -2,23 +2,18 @@ * drivers/base/cpu.c - basic CPU class support */ -#include <linux/device.h> +#include <linux/sysdev.h> #include <linux/module.h> #include <linux/init.h> #include <linux/cpu.h> -#include <linux/topology.h> +#include <asm/topology.h> -struct class cpu_class = { - .name = "cpu", +struct sysdev_class cpu_sysdev_class = { + set_kset_name("cpu"), }; -struct device_driver cpu_driver = { - .name = "cpu", - .bus = &system_bus_type, -}; - /* * register_cpu - Setup a driverfs device for a CPU. * @num - CPU number to use when creating the device. @@ -27,42 +22,15 @@ struct device_driver cpu_driver = { */ int __init register_cpu(struct cpu *cpu, int num, struct node *root) { - int retval; - cpu->node_id = cpu_to_node(num); - cpu->sysdev.name = "cpu"; cpu->sysdev.id = num; - if (root) - cpu->sysdev.root = &root->sysroot; - snprintf(cpu->sysdev.dev.name, DEVICE_NAME_SIZE, "CPU %u", num); - cpu->sysdev.dev.driver = &cpu_driver; - retval = sys_device_register(&cpu->sysdev); - if (retval) - return retval; - memset(&cpu->sysdev.class_dev, 0x00, sizeof(struct class_device)); - cpu->sysdev.class_dev.dev = &cpu->sysdev.dev; - cpu->sysdev.class_dev.class = &cpu_class; - snprintf(cpu->sysdev.class_dev.class_id, BUS_ID_SIZE, "cpu%d", num); - retval = class_device_register(&cpu->sysdev.class_dev); - if (retval) { - sys_device_unregister(&cpu->sysdev); - return retval; - } - return 0; + cpu->sysdev.cls = &cpu_sysdev_class; + return sys_device_register(&cpu->sysdev); } + int __init cpu_dev_init(void) { - int error; - - error = class_register(&cpu_class); - if (error) - goto out; - - error = driver_register(&cpu_driver); - if (error) - class_unregister(&cpu_class); -out: - return error; + return sysdev_class_register(&cpu_sysdev_class); } |
