Merge branch 'powercap'
Merge Dynamic Thermal Power Management (DTPM) changes for 5.18-rc1: - Add DTPM hierarchy description (Daniel Lezcano). - Change the locking scheme in DTPM (Daniel Lezcano). - Fix dtpm_cpu cleanup at exit time and missing virtual DTPM pointer release (Daniel Lezcano). - Make dtpm_node_callback[] static (kernel test robot). - Fix spelling mistake "initialze" -> "initialize" in dtpm_create_hierarchy() (Colin Ian King). * powercap: powercap: DTPM: Fix spelling mistake "initialze" -> "initialize" powercap: DTPM: dtpm_node_callback[] can be static dtpm/soc/rk3399: Add the ability to unload the module powercap/dtpm_cpu: Add exit function powercap/dtpm: Move the 'root' reset place powercap/dtpm: Destroy hierarchy function powercap/dtpm: Fixup kfree for virtual node powercap/dtpm_cpu: Reset per_cpu variable in the release function powercap/dtpm: Change locking scheme rockchip/soc/drivers: Add DTPM description for rk3399 powercap/drivers/dtpm: Add dtpm devfreq with energy model support powercap/drivers/dtpm: Add CPU DT initialization support powercap/drivers/dtpm: Add hierarchy creation powercap/drivers/dtpm: Convert the init table section to a simple array
This commit is contained in:
commit
ac9f31096b
11 changed files with 638 additions and 113 deletions
|
|
@ -32,28 +32,25 @@ struct dtpm_ops {
|
|||
void (*release)(struct dtpm *);
|
||||
};
|
||||
|
||||
typedef int (*dtpm_init_t)(void);
|
||||
struct device_node;
|
||||
|
||||
struct dtpm_descr {
|
||||
dtpm_init_t init;
|
||||
struct dtpm_subsys_ops {
|
||||
const char *name;
|
||||
int (*init)(void);
|
||||
void (*exit)(void);
|
||||
int (*setup)(struct dtpm *, struct device_node *);
|
||||
};
|
||||
|
||||
/* Init section thermal table */
|
||||
extern struct dtpm_descr __dtpm_table[];
|
||||
extern struct dtpm_descr __dtpm_table_end[];
|
||||
enum DTPM_NODE_TYPE {
|
||||
DTPM_NODE_VIRTUAL = 0,
|
||||
DTPM_NODE_DT,
|
||||
};
|
||||
|
||||
#define DTPM_TABLE_ENTRY(name, __init) \
|
||||
static struct dtpm_descr __dtpm_table_entry_##name \
|
||||
__used __section("__dtpm_table") = { \
|
||||
.init = __init, \
|
||||
}
|
||||
|
||||
#define DTPM_DECLARE(name, init) DTPM_TABLE_ENTRY(name, init)
|
||||
|
||||
#define for_each_dtpm_table(__dtpm) \
|
||||
for (__dtpm = __dtpm_table; \
|
||||
__dtpm < __dtpm_table_end; \
|
||||
__dtpm++)
|
||||
struct dtpm_node {
|
||||
enum DTPM_NODE_TYPE type;
|
||||
const char *name;
|
||||
struct dtpm_node *parent;
|
||||
};
|
||||
|
||||
static inline struct dtpm *to_dtpm(struct powercap_zone *zone)
|
||||
{
|
||||
|
|
@ -70,4 +67,7 @@ void dtpm_unregister(struct dtpm *dtpm);
|
|||
|
||||
int dtpm_register(const char *name, struct dtpm *dtpm, struct dtpm *parent);
|
||||
|
||||
int dtpm_create_hierarchy(struct of_device_id *dtpm_match_table);
|
||||
|
||||
void dtpm_destroy_hierarchy(void);
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue