summaryrefslogtreecommitdiffstats
path: root/thermal_client.h
diff options
context:
space:
mode:
Diffstat (limited to 'thermal_client.h')
-rw-r--r--thermal_client.h76
1 files changed, 45 insertions, 31 deletions
diff --git a/thermal_client.h b/thermal_client.h
index 02e6911..e70d2ec 100644
--- a/thermal_client.h
+++ b/thermal_client.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2016, 2019, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -39,48 +39,48 @@ extern "C" {
/* Enum for supported fields */
enum supported_fields {
- UNKNOWN_FIELD = 0x0,
- DISABLE_FIELD = 0x1,
- SAMPLING_FIELD = 0x2,
- POLLING_DELAY_FIELD = SAMPLING_FIELD,
- THRESHOLDS_FIELD = 0x4,
- SET_POINT_FIELD = THRESHOLDS_FIELD,
- THRESHOLDS_CLR_FIELD = 0x8,
- SET_POINT_CLR_FIELD = THRESHOLDS_CLR_FIELD,
- ACTION_INFO_FIELD = 0x10,
- UPPER_LIMIT_FIELD = ACTION_INFO_FIELD,
- LOWER_LIMIT_FIELD = 0x20,
- PASSIVE_DELAY_FIELD = 0x40,
- SUPPORTED_FIELD_MAX = 0x80,
+ UNKNOWN_FIELD = 0x0,
+ DISABLE_FIELD = 0x1,
+ SAMPLING_FIELD = 0x2,
+ POLLING_DELAY_FIELD = SAMPLING_FIELD,
+ THRESHOLDS_FIELD = 0x4,
+ SET_POINT_FIELD = THRESHOLDS_FIELD,
+ THRESHOLDS_CLR_FIELD = 0x8,
+ SET_POINT_CLR_FIELD = THRESHOLDS_CLR_FIELD,
+ ACTION_INFO_FIELD = 0x10,
+ UPPER_LIMIT_FIELD = ACTION_INFO_FIELD,
+ LOWER_LIMIT_FIELD = 0x20,
+ PASSIVE_DELAY_FIELD = 0x40,
+ SUPPORTED_FIELD_MAX = 0x80,
};
enum field_data_type {
- FIELD_INT = 0,
- FIELD_STR,
- FIELD_INT_ARR,
- FIELD_ARR_STR,
- FIELD_ARR_INT_ARR,
- FIELD_MAX
+ FIELD_INT = 0,
+ FIELD_STR,
+ FIELD_INT_ARR,
+ FIELD_ARR_STR,
+ FIELD_ARR_INT_ARR,
+ FIELD_MAX
};
struct action_info_data {
- int info[MAX_ACTIONS];
- uint32_t num_actions;
+ int info[MAX_ACTIONS];
+ uint32_t num_actions;
};
struct field_data {
- char *field_name;
- enum field_data_type data_type;
- uint32_t num_data;
- void *data;
+ char *field_name;
+ enum field_data_type data_type;
+ uint32_t num_data;
+ void *data;
};
struct config_instance {
- char *cfg_desc;
- char *algo_type;
- unsigned int fields_mask; /* mask set by client to request to adjust supported fields */
- uint32_t num_fields;
- struct field_data *fields;
+ char *cfg_desc;
+ char *algo_type;
+ unsigned int fields_mask; /* mask set by client to request to adjust supported fields */
+ uint32_t num_fields;
+ struct field_data *fields;
};
int thermal_client_config_query(char *algo_type, struct config_instance **configs);
@@ -91,6 +91,20 @@ int thermal_client_register_callback(char *client_name, int (*callback)(int , vo
int thermal_client_request(char *client_name, int req_data);
void thermal_client_unregister_callback(int client_cb_handle);
+/* APIs for bandwidth clients to send/clear bandwidth perf levels to thermal-engine */
+int thermal_bandwidth_client_request(char *client_name, int req_data);
+void thermal_bandwidth_client_cancel_request(char *client_name);
+
+/* Inline API to combine two 15 bit bw inputs into single int variable and return the same */
+static inline int thermal_bandwidth_client_merge_input_info(int bw_score, int uc_id)
+{
+ if (bw_score < 0 || bw_score > 0x7fff ||
+ uc_id < 0 || uc_id > 0x7fff)
+ return -1;
+
+ return (((uc_id & 0x7fff) << 0x10) | (bw_score & 0x7fff));
+}
+
#ifdef __cplusplus
}
#endif