diff --git a/xen/drivers/cpufreq/cpufreq.c b/xen/drivers/cpufreq/cpufreq.c index 567e9e95d2..81a187ba59 100644 --- a/xen/drivers/cpufreq/cpufreq.c +++ b/xen/drivers/cpufreq/cpufreq.c @@ -638,3 +638,18 @@ static int __init cpufreq_presmp_init(void) } presmp_initcall(cpufreq_presmp_init); +int __init cpufreq_register_driver(struct cpufreq_driver *driver_data) +{ + if ( !driver_data || !driver_data->init || + !driver_data->verify || !driver_data->exit || + (!driver_data->target == !driver_data->setpolicy) ) + return -EINVAL; + + if ( cpufreq_driver ) + return -EBUSY; + + cpufreq_driver = driver_data; + + register_cpu_notifier(&cpu_nfb); + return 0; +} diff --git a/xen/include/acpi/cpufreq/cpufreq.h b/xen/include/acpi/cpufreq/cpufreq.h index 1ec04ca2bd..48ad1d0004 100644 --- a/xen/include/acpi/cpufreq/cpufreq.h +++ b/xen/include/acpi/cpufreq/cpufreq.h @@ -170,32 +170,7 @@ struct cpufreq_driver { extern struct cpufreq_driver *cpufreq_driver; -static __inline__ -int cpufreq_register_driver(struct cpufreq_driver *driver_data) -{ - if (!driver_data || - !driver_data->init || - !driver_data->exit || - !driver_data->verify || - !driver_data->target) - return -EINVAL; - - if (cpufreq_driver) - return -EBUSY; - - cpufreq_driver = driver_data; - return 0; -} - -static __inline__ -int cpufreq_unregister_driver(struct cpufreq_driver *driver) -{ - if (!cpufreq_driver || (driver != cpufreq_driver)) - return -EINVAL; - - cpufreq_driver = NULL; - return 0; -} +int cpufreq_register_driver(struct cpufreq_driver *); static __inline__ void cpufreq_verify_within_limits(struct cpufreq_policy *policy,