DM: thermal: Add imx thermal DM driver

Add a new thermal uclass for thermal sensor and implement the imx
thermal driver basing on this uclass.

Signed-off-by: Ye.Li <B37916@freescale.com>
Acked-by: Stefano Babic <sbabic@denx.de>
diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h
index a8944c9..202f59b 100644
--- a/include/dm/uclass-id.h
+++ b/include/dm/uclass-id.h
@@ -28,6 +28,7 @@
 	UCLASS_SPI_GENERIC,	/* Generic SPI flash target */
 	UCLASS_SPI_FLASH,	/* SPI flash */
 	UCLASS_CROS_EC,	/* Chrome OS EC */
+	UCLASS_THERMAL,		/* Thermal sensor */
 
 	UCLASS_COUNT,
 	UCLASS_INVALID = -1,
diff --git a/include/imx_thermal.h b/include/imx_thermal.h
new file mode 100644
index 0000000..be13652
--- /dev/null
+++ b/include/imx_thermal.h
@@ -0,0 +1,17 @@
+/*
+ *
+ * (C) Copyright 2014 Freescale Semiconductor, Inc
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#ifndef _IMX_THERMAL_H_
+#define _IMX_THERMAL_H_
+
+struct imx_thermal_plat {
+	void *regs;
+	int fuse_bank;
+	int fuse_word;
+};
+
+#endif	/* _IMX_THERMAL_H_ */
diff --git a/include/thermal.h b/include/thermal.h
new file mode 100644
index 0000000..5d6101b
--- /dev/null
+++ b/include/thermal.h
@@ -0,0 +1,42 @@
+/*
+ *
+ * (C) Copyright 2014 Freescale Semiconductor, Inc
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#ifndef _THERMAL_H_
+#define _THERMAL_H_
+
+#include <dm.h>
+
+int thermal_get_temp(struct udevice *dev, int *temp);
+
+/**
+ * struct struct dm_thermal_ops - Driver model Thermal operations
+ *
+ * The uclass interface is implemented by all Thermal devices which use
+ * driver model.
+ */
+struct dm_thermal_ops {
+	/**
+	 * Get the current temperature
+	 *
+	 * The device provided is the slave device. It's parent controller
+	 * will be used to provide the communication.
+	 *
+	 * This must be called before doing any transfers with a Thermal slave.
+	 * It will enable and initialize any Thermal hardware as necessary,
+	 * and make sure that the SCK line is in the correct idle state. It is
+	 * not allowed to claim the same bus for several slaves without
+	 * releasing the bus in between.
+	 *
+	 * @dev:	The Thermal device
+	 *
+	 * Returns: 0 if the bus was claimed successfully, or a negative value
+	 * if it wasn't.
+	 */
+	int (*get_temp)(struct udevice *dev, int *temp);
+};
+
+#endif	/* _THERMAL_H_ */