123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- /* SPDX-License-Identifier: LGPL-2.1+ */
- /* Copyright (C) 2022, Linaro Ltd - Daniel Lezcano <[email protected]> */
- #ifndef __LIBTHERMAL_H
- #define __LIBTHERMAL_H
- #include <linux/thermal.h>
- #ifndef LIBTHERMAL_API
- #define LIBTHERMAL_API __attribute__((visibility("default")))
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- struct thermal_sampling_ops {
- int (*tz_temp)(int tz_id, int temp, void *arg);
- };
- struct thermal_events_ops {
- int (*tz_create)(const char *name, int tz_id, void *arg);
- int (*tz_delete)(int tz_id, void *arg);
- int (*tz_enable)(int tz_id, void *arg);
- int (*tz_disable)(int tz_id, void *arg);
- int (*trip_high)(int tz_id, int trip_id, int temp, void *arg);
- int (*trip_low)(int tz_id, int trip_id, int temp, void *arg);
- int (*trip_add)(int tz_id, int trip_id, int type, int temp, int hyst, void *arg);
- int (*trip_change)(int tz_id, int trip_id, int type, int temp, int hyst, void *arg);
- int (*trip_delete)(int tz_id, int trip_id, void *arg);
- int (*cdev_add)(const char *name, int cdev_id, int max_state, void *arg);
- int (*cdev_delete)(int cdev_id, void *arg);
- int (*cdev_update)(int cdev_id, int cur_state, void *arg);
- int (*gov_change)(int tz_id, const char *gov_name, void *arg);
- };
- struct thermal_ops {
- struct thermal_sampling_ops sampling;
- struct thermal_events_ops events;
- };
- struct thermal_trip {
- int id;
- int type;
- int temp;
- int hyst;
- };
- struct thermal_zone {
- int id;
- int temp;
- char name[THERMAL_NAME_LENGTH];
- char governor[THERMAL_NAME_LENGTH];
- struct thermal_trip *trip;
- };
- struct thermal_cdev {
- int id;
- char name[THERMAL_NAME_LENGTH];
- int max_state;
- int min_state;
- int cur_state;
- };
- typedef enum {
- THERMAL_ERROR = -1,
- THERMAL_SUCCESS = 0,
- } thermal_error_t;
- struct thermal_handler;
- typedef int (*cb_tz_t)(struct thermal_zone *, void *);
- typedef int (*cb_tt_t)(struct thermal_trip *, void *);
- typedef int (*cb_tc_t)(struct thermal_cdev *, void *);
- LIBTHERMAL_API int for_each_thermal_zone(struct thermal_zone *tz, cb_tz_t cb, void *arg);
- LIBTHERMAL_API int for_each_thermal_trip(struct thermal_trip *tt, cb_tt_t cb, void *arg);
- LIBTHERMAL_API int for_each_thermal_cdev(struct thermal_cdev *cdev, cb_tc_t cb, void *arg);
- LIBTHERMAL_API struct thermal_zone *thermal_zone_find_by_name(struct thermal_zone *tz,
- const char *name);
- LIBTHERMAL_API struct thermal_zone *thermal_zone_find_by_id(struct thermal_zone *tz, int id);
- LIBTHERMAL_API struct thermal_zone *thermal_zone_discover(struct thermal_handler *th);
- LIBTHERMAL_API struct thermal_handler *thermal_init(struct thermal_ops *ops);
- LIBTHERMAL_API void thermal_exit(struct thermal_handler *th);
- /*
- * Netlink thermal events
- */
- LIBTHERMAL_API thermal_error_t thermal_events_exit(struct thermal_handler *th);
- LIBTHERMAL_API thermal_error_t thermal_events_init(struct thermal_handler *th);
- LIBTHERMAL_API thermal_error_t thermal_events_handle(struct thermal_handler *th, void *arg);
- LIBTHERMAL_API int thermal_events_fd(struct thermal_handler *th);
- /*
- * Netlink thermal commands
- */
- LIBTHERMAL_API thermal_error_t thermal_cmd_exit(struct thermal_handler *th);
- LIBTHERMAL_API thermal_error_t thermal_cmd_init(struct thermal_handler *th);
- LIBTHERMAL_API thermal_error_t thermal_cmd_get_tz(struct thermal_handler *th,
- struct thermal_zone **tz);
- LIBTHERMAL_API thermal_error_t thermal_cmd_get_cdev(struct thermal_handler *th,
- struct thermal_cdev **tc);
- LIBTHERMAL_API thermal_error_t thermal_cmd_get_trip(struct thermal_handler *th,
- struct thermal_zone *tz);
- LIBTHERMAL_API thermal_error_t thermal_cmd_get_governor(struct thermal_handler *th,
- struct thermal_zone *tz);
- LIBTHERMAL_API thermal_error_t thermal_cmd_get_temp(struct thermal_handler *th,
- struct thermal_zone *tz);
- /*
- * Netlink thermal samples
- */
- LIBTHERMAL_API thermal_error_t thermal_sampling_exit(struct thermal_handler *th);
- LIBTHERMAL_API thermal_error_t thermal_sampling_init(struct thermal_handler *th);
- LIBTHERMAL_API thermal_error_t thermal_sampling_handle(struct thermal_handler *th, void *arg);
- LIBTHERMAL_API int thermal_sampling_fd(struct thermal_handler *th);
- #endif /* __LIBTHERMAL_H */
- #ifdef __cplusplus
- }
- #endif
|