diff --git a/thermal_client.h b/thermal_client.h
index 93eea81..b8f0ca2 100644
--- a/thermal_client.h
+++ b/thermal_client.h
@@ -39,48 +39,48 @@
 
 /* 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);
@@ -95,6 +95,16 @@
 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
