forked from Minki/linux
thermal/drivers/core: Use governor table to initialize
Now that the governor table is in place and the macro allows to browse the table, declare the governor so the entry is added in the governor table in the init section. The [un]register_thermal_governors function does no longer need to use the exported [un]register thermal governor's specific function which in turn call the [un]register_thermal_governor. The governors are fully self-encapsulated. The cyclic dependency is no longer needed, remove it. Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Signed-off-by: Zhang Rui <rui.zhang@intel.com>
This commit is contained in:
parent
980af75ede
commit
57c5b2ec90
@ -117,14 +117,4 @@ static struct thermal_governor thermal_gov_fair_share = {
|
||||
.name = "fair_share",
|
||||
.throttle = fair_share_throttle,
|
||||
};
|
||||
|
||||
int thermal_gov_fair_share_register(void)
|
||||
{
|
||||
return thermal_register_governor(&thermal_gov_fair_share);
|
||||
}
|
||||
|
||||
void thermal_gov_fair_share_unregister(void)
|
||||
{
|
||||
thermal_unregister_governor(&thermal_gov_fair_share);
|
||||
}
|
||||
|
||||
THERMAL_GOVERNOR_DECLARE(thermal_gov_fair_share);
|
||||
|
@ -116,13 +116,4 @@ static struct thermal_governor thermal_gov_bang_bang = {
|
||||
.name = "bang_bang",
|
||||
.throttle = bang_bang_control,
|
||||
};
|
||||
|
||||
int thermal_gov_bang_bang_register(void)
|
||||
{
|
||||
return thermal_register_governor(&thermal_gov_bang_bang);
|
||||
}
|
||||
|
||||
void thermal_gov_bang_bang_unregister(void)
|
||||
{
|
||||
thermal_unregister_governor(&thermal_gov_bang_bang);
|
||||
}
|
||||
THERMAL_GOVERNOR_DECLARE(thermal_gov_bang_bang);
|
||||
|
@ -651,13 +651,4 @@ static struct thermal_governor thermal_gov_power_allocator = {
|
||||
.unbind_from_tz = power_allocator_unbind,
|
||||
.throttle = power_allocator_throttle,
|
||||
};
|
||||
|
||||
int thermal_gov_power_allocator_register(void)
|
||||
{
|
||||
return thermal_register_governor(&thermal_gov_power_allocator);
|
||||
}
|
||||
|
||||
void thermal_gov_power_allocator_unregister(void)
|
||||
{
|
||||
thermal_unregister_governor(&thermal_gov_power_allocator);
|
||||
}
|
||||
THERMAL_GOVERNOR_DECLARE(thermal_gov_power_allocator);
|
||||
|
@ -206,13 +206,4 @@ static struct thermal_governor thermal_gov_step_wise = {
|
||||
.name = "step_wise",
|
||||
.throttle = step_wise_throttle,
|
||||
};
|
||||
|
||||
int thermal_gov_step_wise_register(void)
|
||||
{
|
||||
return thermal_register_governor(&thermal_gov_step_wise);
|
||||
}
|
||||
|
||||
void thermal_gov_step_wise_unregister(void)
|
||||
{
|
||||
thermal_unregister_governor(&thermal_gov_step_wise);
|
||||
}
|
||||
THERMAL_GOVERNOR_DECLARE(thermal_gov_step_wise);
|
||||
|
@ -243,36 +243,42 @@ int thermal_build_list_of_policies(char *buf)
|
||||
return count;
|
||||
}
|
||||
|
||||
static int __init thermal_register_governors(void)
|
||||
{
|
||||
int result;
|
||||
|
||||
result = thermal_gov_step_wise_register();
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
result = thermal_gov_fair_share_register();
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
result = thermal_gov_bang_bang_register();
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
result = thermal_gov_user_space_register();
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
return thermal_gov_power_allocator_register();
|
||||
}
|
||||
|
||||
static void __init thermal_unregister_governors(void)
|
||||
{
|
||||
thermal_gov_step_wise_unregister();
|
||||
thermal_gov_fair_share_unregister();
|
||||
thermal_gov_bang_bang_unregister();
|
||||
thermal_gov_user_space_unregister();
|
||||
thermal_gov_power_allocator_unregister();
|
||||
struct thermal_governor **governor;
|
||||
|
||||
for_each_governor_table(governor)
|
||||
thermal_unregister_governor(*governor);
|
||||
}
|
||||
|
||||
static int __init thermal_register_governors(void)
|
||||
{
|
||||
int ret = 0;
|
||||
struct thermal_governor **governor;
|
||||
|
||||
for_each_governor_table(governor) {
|
||||
ret = thermal_register_governor(*governor);
|
||||
if (ret) {
|
||||
pr_err("Failed to register governor: '%s'",
|
||||
(*governor)->name);
|
||||
break;
|
||||
}
|
||||
|
||||
pr_info("Registered thermal governor '%s'",
|
||||
(*governor)->name);
|
||||
}
|
||||
|
||||
if (ret) {
|
||||
struct thermal_governor **gov;
|
||||
|
||||
for_each_governor_table(gov) {
|
||||
if (gov == governor)
|
||||
break;
|
||||
thermal_unregister_governor(*gov);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -89,46 +89,6 @@ thermal_cooling_device_stats_update(struct thermal_cooling_device *cdev,
|
||||
unsigned long new_state) {}
|
||||
#endif /* CONFIG_THERMAL_STATISTICS */
|
||||
|
||||
#ifdef CONFIG_THERMAL_GOV_STEP_WISE
|
||||
int thermal_gov_step_wise_register(void);
|
||||
void thermal_gov_step_wise_unregister(void);
|
||||
#else
|
||||
static inline int thermal_gov_step_wise_register(void) { return 0; }
|
||||
static inline void thermal_gov_step_wise_unregister(void) {}
|
||||
#endif /* CONFIG_THERMAL_GOV_STEP_WISE */
|
||||
|
||||
#ifdef CONFIG_THERMAL_GOV_FAIR_SHARE
|
||||
int thermal_gov_fair_share_register(void);
|
||||
void thermal_gov_fair_share_unregister(void);
|
||||
#else
|
||||
static inline int thermal_gov_fair_share_register(void) { return 0; }
|
||||
static inline void thermal_gov_fair_share_unregister(void) {}
|
||||
#endif /* CONFIG_THERMAL_GOV_FAIR_SHARE */
|
||||
|
||||
#ifdef CONFIG_THERMAL_GOV_BANG_BANG
|
||||
int thermal_gov_bang_bang_register(void);
|
||||
void thermal_gov_bang_bang_unregister(void);
|
||||
#else
|
||||
static inline int thermal_gov_bang_bang_register(void) { return 0; }
|
||||
static inline void thermal_gov_bang_bang_unregister(void) {}
|
||||
#endif /* CONFIG_THERMAL_GOV_BANG_BANG */
|
||||
|
||||
#ifdef CONFIG_THERMAL_GOV_USER_SPACE
|
||||
int thermal_gov_user_space_register(void);
|
||||
void thermal_gov_user_space_unregister(void);
|
||||
#else
|
||||
static inline int thermal_gov_user_space_register(void) { return 0; }
|
||||
static inline void thermal_gov_user_space_unregister(void) {}
|
||||
#endif /* CONFIG_THERMAL_GOV_USER_SPACE */
|
||||
|
||||
#ifdef CONFIG_THERMAL_GOV_POWER_ALLOCATOR
|
||||
int thermal_gov_power_allocator_register(void);
|
||||
void thermal_gov_power_allocator_unregister(void);
|
||||
#else
|
||||
static inline int thermal_gov_power_allocator_register(void) { return 0; }
|
||||
static inline void thermal_gov_power_allocator_unregister(void) {}
|
||||
#endif /* CONFIG_THERMAL_GOV_POWER_ALLOCATOR */
|
||||
|
||||
/* device tree support */
|
||||
#ifdef CONFIG_THERMAL_OF
|
||||
int of_parse_thermal_zones(void);
|
||||
|
@ -44,14 +44,4 @@ static struct thermal_governor thermal_gov_user_space = {
|
||||
.name = "user_space",
|
||||
.throttle = notify_user_space,
|
||||
};
|
||||
|
||||
int thermal_gov_user_space_register(void)
|
||||
{
|
||||
return thermal_register_governor(&thermal_gov_user_space);
|
||||
}
|
||||
|
||||
void thermal_gov_user_space_unregister(void)
|
||||
{
|
||||
thermal_unregister_governor(&thermal_gov_user_space);
|
||||
}
|
||||
|
||||
THERMAL_GOVERNOR_DECLARE(thermal_gov_user_space);
|
||||
|
Loading…
Reference in New Issue
Block a user