Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 374555
b: refs/heads/master
c: 80a26a5
h: refs/heads/master
i:
  374553: 9b12d1c
  374551: 07d7778
v: v3
  • Loading branch information
Zhang Rui committed Apr 14, 2013
1 parent 5cee14f commit 54f1e62
Show file tree
Hide file tree
Showing 9 changed files with 85 additions and 67 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5fc024ab474de7d5798b7ad85f3df260dbab1353
refs/heads/master: 80a26a5c22b90a82b8696cb72c1d09d525ada53e
8 changes: 0 additions & 8 deletions trunk/Documentation/thermal/sysfs-api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -379,11 +379,3 @@ platform data is provided, this uses the step_wise throttling policy.
This function serves as an arbitrator to set the state of a cooling
device. It sets the cooling device to the deepest cooling state if
possible.

5.5:thermal_register_governor:
This function lets the various thermal governors to register themselves
with the Thermal framework. At run time, depending on a zone's platform
data, a particular governor is used for throttling.

5.6:thermal_unregister_governor:
This function unregisters a governor from the thermal framework.
6 changes: 3 additions & 3 deletions trunk/drivers/thermal/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ obj-$(CONFIG_THERMAL) += thermal_sys.o
thermal_sys-y += thermal_core.o

# governors
obj-$(CONFIG_THERMAL_GOV_FAIR_SHARE) += fair_share.o
obj-$(CONFIG_THERMAL_GOV_STEP_WISE) += step_wise.o
obj-$(CONFIG_THERMAL_GOV_USER_SPACE) += user_space.o
thermal_sys-$(CONFIG_THERMAL_GOV_FAIR_SHARE) += fair_share.o
thermal_sys-$(CONFIG_THERMAL_GOV_STEP_WISE) += step_wise.o
thermal_sys-$(CONFIG_THERMAL_GOV_USER_SPACE) += user_space.o

# cpufreq cooling
obj-$(CONFIG_CPU_THERMAL) += cpu_cooling.o
Expand Down
15 changes: 2 additions & 13 deletions trunk/drivers/thermal/fair_share.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/

#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include <linux/module.h>
#include <linux/thermal.h>

#include "thermal_core.h"
Expand Down Expand Up @@ -111,23 +108,15 @@ static int fair_share_throttle(struct thermal_zone_device *tz, int trip)
static struct thermal_governor thermal_gov_fair_share = {
.name = "fair_share",
.throttle = fair_share_throttle,
.owner = THIS_MODULE,
};

static int __init thermal_gov_fair_share_init(void)
int thermal_gov_fair_share_register(void)
{
return thermal_register_governor(&thermal_gov_fair_share);
}

static void __exit thermal_gov_fair_share_exit(void)
void thermal_gov_fair_share_unregister(void)
{
thermal_unregister_governor(&thermal_gov_fair_share);
}

/* This should load after thermal framework */
fs_initcall(thermal_gov_fair_share_init);
module_exit(thermal_gov_fair_share_exit);

MODULE_AUTHOR("Durgadoss R");
MODULE_DESCRIPTION("A simple weight based thermal throttling governor");
MODULE_LICENSE("GPL");
16 changes: 2 additions & 14 deletions trunk/drivers/thermal/step_wise.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/

#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include <linux/module.h>
#include <linux/thermal.h>

#include "thermal_core.h"
Expand Down Expand Up @@ -186,23 +183,14 @@ static int step_wise_throttle(struct thermal_zone_device *tz, int trip)
static struct thermal_governor thermal_gov_step_wise = {
.name = "step_wise",
.throttle = step_wise_throttle,
.owner = THIS_MODULE,
};

static int __init thermal_gov_step_wise_init(void)
int thermal_gov_step_wise_register(void)
{
return thermal_register_governor(&thermal_gov_step_wise);
}

static void __exit thermal_gov_step_wise_exit(void)
void thermal_gov_step_wise_unregister(void)
{
thermal_unregister_governor(&thermal_gov_step_wise);
}

/* This should load after thermal framework */
fs_initcall(thermal_gov_step_wise_init);
module_exit(thermal_gov_step_wise_exit);

MODULE_AUTHOR("Durgadoss R");
MODULE_DESCRIPTION("A step-by-step thermal throttling governor");
MODULE_LICENSE("GPL");
59 changes: 48 additions & 11 deletions trunk/drivers/thermal/thermal_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@ int thermal_register_governor(struct thermal_governor *governor)

return err;
}
EXPORT_SYMBOL_GPL(thermal_register_governor);

void thermal_unregister_governor(struct thermal_governor *governor)
{
Expand Down Expand Up @@ -127,7 +126,6 @@ void thermal_unregister_governor(struct thermal_governor *governor)
mutex_unlock(&thermal_governor_lock);
return;
}
EXPORT_SYMBOL_GPL(thermal_unregister_governor);

static int get_idr(struct idr *idr, struct mutex *lock, int *id)
{
Expand Down Expand Up @@ -1858,30 +1856,69 @@ static inline int genetlink_init(void) { return 0; }
static inline void genetlink_exit(void) {}
#endif /* !CONFIG_NET */

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;

return thermal_gov_user_space_register();
}

static void thermal_unregister_governors(void)
{
thermal_gov_step_wise_unregister();
thermal_gov_fair_share_unregister();
thermal_gov_user_space_unregister();
}

static int __init thermal_init(void)
{
int result = 0;
int result;

result = thermal_register_governors();
if (result)
goto error;

result = class_register(&thermal_class);
if (result) {
idr_destroy(&thermal_tz_idr);
idr_destroy(&thermal_cdev_idr);
mutex_destroy(&thermal_idr_lock);
mutex_destroy(&thermal_list_lock);
return result;
}
if (result)
goto unregister_governors;

result = genetlink_init();
if (result)
goto unregister_class;

return 0;

unregister_governors:
thermal_unregister_governors();
unregister_class:
class_unregister(&thermal_class);
error:
idr_destroy(&thermal_tz_idr);
idr_destroy(&thermal_cdev_idr);
mutex_destroy(&thermal_idr_lock);
mutex_destroy(&thermal_list_lock);
mutex_destroy(&thermal_governor_lock);
return result;
}

static void __exit thermal_exit(void)
{
genetlink_exit();
class_unregister(&thermal_class);
thermal_unregister_governors();
idr_destroy(&thermal_tz_idr);
idr_destroy(&thermal_cdev_idr);
mutex_destroy(&thermal_idr_lock);
mutex_destroy(&thermal_list_lock);
genetlink_exit();
mutex_destroy(&thermal_governor_lock);
}

fs_initcall(thermal_init);
Expand Down
27 changes: 27 additions & 0 deletions trunk/drivers/thermal/thermal_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,31 @@ struct thermal_instance {
struct list_head cdev_node; /* node in cdev->thermal_instances */
};

int thermal_register_governor(struct thermal_governor *);
void thermal_unregister_governor(struct thermal_governor *);

#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_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 */

#endif /* __THERMAL_CORE_H__ */
15 changes: 2 additions & 13 deletions trunk/drivers/thermal/user_space.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/

#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include <linux/module.h>
#include <linux/thermal.h>

#include "thermal_core.h"
Expand All @@ -46,23 +43,15 @@ static int notify_user_space(struct thermal_zone_device *tz, int trip)
static struct thermal_governor thermal_gov_user_space = {
.name = "user_space",
.throttle = notify_user_space,
.owner = THIS_MODULE,
};

static int __init thermal_gov_user_space_init(void)
int thermal_gov_user_space_register(void)
{
return thermal_register_governor(&thermal_gov_user_space);
}

static void __exit thermal_gov_user_space_exit(void)
void thermal_gov_user_space_unregister(void)
{
thermal_unregister_governor(&thermal_gov_user_space);
}

/* This should load after thermal framework */
fs_initcall(thermal_gov_user_space_init);
module_exit(thermal_gov_user_space_exit);

MODULE_AUTHOR("Durgadoss R");
MODULE_DESCRIPTION("A user space Thermal notifier");
MODULE_LICENSE("GPL");
4 changes: 0 additions & 4 deletions trunk/include/linux/thermal.h
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,6 @@ struct thermal_governor {
char name[THERMAL_NAME_LENGTH];
int (*throttle)(struct thermal_zone_device *tz, int trip);
struct list_head governor_list;
struct module *owner;
};

/* Structure that holds binding parameters for a zone */
Expand Down Expand Up @@ -247,9 +246,6 @@ struct thermal_instance *get_thermal_instance(struct thermal_zone_device *,
void thermal_cdev_update(struct thermal_cooling_device *);
void notify_thermal_framework(struct thermal_zone_device *, int);

int thermal_register_governor(struct thermal_governor *);
void thermal_unregister_governor(struct thermal_governor *);

#ifdef CONFIG_NET
extern int thermal_generate_netlink_event(struct thermal_zone_device *tz,
enum events event);
Expand Down

0 comments on commit 54f1e62

Please sign in to comment.