diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..fc1ebe7
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,10 @@
+LOCAL_PATH:= $(call my-dir)
+
+ifeq ($(TARGET_USES_QSSI),true)
+include $(CLEAR_VARS)
+
+LOCAL_COPY_HEADERS_TO := thermal-engine
+LOCAL_COPY_HEADERS := ./thermal_client.h
+
+include $(BUILD_COPY_HEADERS)
+endif
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..901b443
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,31 @@
+Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted (subject to the limitations in the
+disclaimer below) provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+   * Redistributions in binary form must reproduce the above
+     copyright notice, this list of conditions and the following
+     disclaimer in the documentation and/or other materials provided
+     with the distribution.
+
+   * Neither the name of The Linux Foundation nor the names of its
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
+GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
+HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/thermal_client.h b/thermal_client.h
new file mode 100644
index 0000000..b41f139
--- /dev/null
+++ b/thermal_client.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2016, 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
+ * met:
+ * *    * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *     * Neither the name of The Linux Foundation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <cutils/properties.h>
+#ifndef __THERMAL_CLIENT_H__
+#define __THERMAL_CLIENT_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAX_ACTIONS  (32)
+
+/* Enum for supported fields */
+enum supported_fields {
+	UNKNOWN_FIELD = 0x0,
+	DISABLE_FIELD = 0x1,
+	SAMPLING_FIELD = 0x2,
+	THRESHOLDS_FIELD = 0x4,
+	SET_POINT_FIELD = THRESHOLDS_FIELD,
+	THRESHOLDS_CLR_FIELD = 0x8,
+	SET_POINT_CLR_FIELD = THRESHOLDS_CLR_FIELD,
+	ACTION_INFO_FIELD = 0x10,
+	SUPPORTED_FIELD_MAX = 0x20,
+};
+
+enum field_data_type {
+	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;
+};
+
+struct field_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;
+};
+
+int thermal_client_config_query(char *algo_type, struct config_instance **configs);
+void thermal_client_config_cleanup(struct config_instance *configs, unsigned int config_size);
+int thermal_client_config_set(struct config_instance *configs, unsigned int config_size);
+
+int thermal_client_register_callback(char *client_name, int (*callback)(int , void *, void *), void *data);
+int thermal_client_request(char *client_name, int req_data);
+void thermal_client_unregister_callback(int client_cb_handle);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __THERMAL_CLIENT_H__ */
