diff options
Diffstat (limited to 'drivers/cpufreq/cpufreq.c')
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 79581fab82d6..5efd5550f4ca 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -828,11 +828,8 @@ static int cpufreq_add_dev (struct sys_device * sys_dev) | |||
828 | memcpy(&new_policy, policy, sizeof(struct cpufreq_policy)); | 828 | memcpy(&new_policy, policy, sizeof(struct cpufreq_policy)); |
829 | 829 | ||
830 | /* prepare interface data */ | 830 | /* prepare interface data */ |
831 | policy->kobj.parent = &sys_dev->kobj; | 831 | ret = kobject_init_and_add(&policy->kobj, &ktype_cpufreq, &sys_dev->kobj, |
832 | policy->kobj.ktype = &ktype_cpufreq; | 832 | "cpufreq"); |
833 | kobject_set_name(&policy->kobj, "cpufreq"); | ||
834 | |||
835 | ret = kobject_register(&policy->kobj); | ||
836 | if (ret) { | 833 | if (ret) { |
837 | unlock_policy_rwsem_write(cpu); | 834 | unlock_policy_rwsem_write(cpu); |
838 | goto err_out_driver_exit; | 835 | goto err_out_driver_exit; |
@@ -902,6 +899,7 @@ static int cpufreq_add_dev (struct sys_device * sys_dev) | |||
902 | goto err_out_unregister; | 899 | goto err_out_unregister; |
903 | } | 900 | } |
904 | 901 | ||
902 | kobject_uevent(&policy->kobj, KOBJ_ADD); | ||
905 | module_put(cpufreq_driver->owner); | 903 | module_put(cpufreq_driver->owner); |
906 | dprintk("initialization complete\n"); | 904 | dprintk("initialization complete\n"); |
907 | cpufreq_debug_enable_ratelimit(); | 905 | cpufreq_debug_enable_ratelimit(); |
@@ -915,7 +913,7 @@ err_out_unregister: | |||
915 | cpufreq_cpu_data[j] = NULL; | 913 | cpufreq_cpu_data[j] = NULL; |
916 | spin_unlock_irqrestore(&cpufreq_driver_lock, flags); | 914 | spin_unlock_irqrestore(&cpufreq_driver_lock, flags); |
917 | 915 | ||
918 | kobject_unregister(&policy->kobj); | 916 | kobject_put(&policy->kobj); |
919 | wait_for_completion(&policy->kobj_unregister); | 917 | wait_for_completion(&policy->kobj_unregister); |
920 | 918 | ||
921 | err_out_driver_exit: | 919 | err_out_driver_exit: |
@@ -1032,8 +1030,6 @@ static int __cpufreq_remove_dev (struct sys_device * sys_dev) | |||
1032 | 1030 | ||
1033 | unlock_policy_rwsem_write(cpu); | 1031 | unlock_policy_rwsem_write(cpu); |
1034 | 1032 | ||
1035 | kobject_unregister(&data->kobj); | ||
1036 | |||
1037 | kobject_put(&data->kobj); | 1033 | kobject_put(&data->kobj); |
1038 | 1034 | ||
1039 | /* we need to make sure that the underlying kobj is actually | 1035 | /* we need to make sure that the underlying kobj is actually |