mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
![Daniel Lezcano](/assets/img/avatar_default.png)
The init table section is freed after the system booted. However the next changes will make per module the DTPM description, so the table won't be accessible when the module is loaded. In order to fix that, we should move the table to the data section where there are very few entries and that makes strange to add it there. The main goal of the table was to keep self-encapsulated code and we can keep it almost as it by using an array instead. Suggested-by: Ulf Hansson <ulf.hansson@linaro.org> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Link: https://lore.kernel.org/r/20220128163537.212248-2-daniel.lezcano@linaro.org
55 lines
1.1 KiB
C
55 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (C) 2020 Linaro Ltd
|
|
*
|
|
* Author: Daniel Lezcano <daniel.lezcano@linaro.org>
|
|
*/
|
|
#ifndef ___DTPM_H__
|
|
#define ___DTPM_H__
|
|
|
|
#include <linux/powercap.h>
|
|
|
|
#define MAX_DTPM_DESCR 8
|
|
#define MAX_DTPM_CONSTRAINTS 1
|
|
|
|
struct dtpm {
|
|
struct powercap_zone zone;
|
|
struct dtpm *parent;
|
|
struct list_head sibling;
|
|
struct list_head children;
|
|
struct dtpm_ops *ops;
|
|
unsigned long flags;
|
|
u64 power_limit;
|
|
u64 power_max;
|
|
u64 power_min;
|
|
int weight;
|
|
};
|
|
|
|
struct dtpm_ops {
|
|
u64 (*set_power_uw)(struct dtpm *, u64);
|
|
u64 (*get_power_uw)(struct dtpm *);
|
|
int (*update_power_uw)(struct dtpm *);
|
|
void (*release)(struct dtpm *);
|
|
};
|
|
|
|
struct dtpm_subsys_ops {
|
|
const char *name;
|
|
int (*init)(void);
|
|
};
|
|
|
|
static inline struct dtpm *to_dtpm(struct powercap_zone *zone)
|
|
{
|
|
return container_of(zone, struct dtpm, zone);
|
|
}
|
|
|
|
int dtpm_update_power(struct dtpm *dtpm);
|
|
|
|
int dtpm_release_zone(struct powercap_zone *pcz);
|
|
|
|
void dtpm_init(struct dtpm *dtpm, struct dtpm_ops *ops);
|
|
|
|
void dtpm_unregister(struct dtpm *dtpm);
|
|
|
|
int dtpm_register(const char *name, struct dtpm *dtpm, struct dtpm *parent);
|
|
|
|
#endif
|