[openwrt/openwrt] mpc85xx: HiveAP-330: add tmp125 temperature sensor

LEDE Commits lede-commits at lists.infradead.org
Fri Feb 25 09:27:40 PST 2022


chunkeey pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/8144f9c665327cae94a4e4b27ed3789d3777f978

commit 8144f9c665327cae94a4e4b27ed3789d3777f978
Author: Christian Lamparter <chunkeey at gmail.com>
AuthorDate: Thu Feb 17 21:15:54 2022 +0100

    mpc85xx: HiveAP-330: add tmp125 temperature sensor
    
    the Aerohive HiveAP-330 and HiveAP-350 come equipped
    with an TI TMP125 temperature chip. This patch wires
    up the necessary support for this sensor and exposes
    it through hwmon / thermal sensor framework. Upstream
    support is coming, but it has to go through hwmon-next
    first.
    
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 ...mon-next-hwmon-lm70-Add-ti-tmp125-support.patch | 71 ++++++++++++++++++++++
 .../files/arch/powerpc/boot/dts/hiveap-330.dts     |  9 +++
 target/linux/mpc85xx/image/p1020.mk                |  2 +-
 3 files changed, 81 insertions(+), 1 deletion(-)

diff --git a/target/linux/generic/backport-5.10/870-hwmon-next-hwmon-lm70-Add-ti-tmp125-support.patch b/target/linux/generic/backport-5.10/870-hwmon-next-hwmon-lm70-Add-ti-tmp125-support.patch
new file mode 100644
index 0000000000..fabf177628
--- /dev/null
+++ b/target/linux/generic/backport-5.10/870-hwmon-next-hwmon-lm70-Add-ti-tmp125-support.patch
@@ -0,0 +1,71 @@
+From 31d8f414e1596ba54a4315418e4c0086fda9e428 Mon Sep 17 00:00:00 2001
+From: Christian Lamparter <chunkeey at gmail.com>
+Date: Fri, 18 Feb 2022 10:06:43 +0100
+Subject: hwmon: (lm70) Add ti,tmp125 support
+
+The TMP125 is a 2 degree Celsius accurate Digital
+Temperature Sensor with a SPI interface.
+
+The temperature register is a 16-bit, read-only register.
+The MSB (Bit 15) is a leading zero and never set. Bits 14
+to 5 are the 1+9 temperature data bits in a two's
+complement format. Bits 4 to 0 are useless copies of
+Bit 5 value and therefore ignored.
+
+Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
+Link: https://lore.kernel.org/r/43b19cbd4e7f51e9509e561b02b5d8d0e7079fac.1645175187.git.chunkeey@gmail.com
+Signed-off-by: Guenter Roeck <linux at roeck-us.net>
+---
+--- a/drivers/hwmon/lm70.c
++++ b/drivers/hwmon/lm70.c
+@@ -34,6 +34,7 @@
+ #define LM70_CHIP_LM71		2	/* NS LM71 */
+ #define LM70_CHIP_LM74		3	/* NS LM74 */
+ #define LM70_CHIP_TMP122	4	/* TI TMP122/TMP124 */
++#define LM70_CHIP_TMP125	5	/* TI TMP125 */
+ 
+ struct lm70 {
+ 	struct spi_device *spi;
+@@ -87,6 +88,12 @@ static ssize_t temp1_input_show(struct d
+ 	 * LM71:
+ 	 * 14 bits of 2's complement data, discard LSB 2 bits,
+ 	 * resolution 0.0312 degrees celsius.
++	 *
++	 * TMP125:
++	 * MSB/D15 is a leading zero. D14 is the sign-bit. This is
++	 * followed by 9 temperature bits (D13..D5) in 2's complement
++	 * data format with a resolution of 0.25 degrees celsius per unit.
++	 * LSB 5 bits (D4..D0) share the same value as D5 and get discarded.
+ 	 */
+ 	switch (p_lm70->chip) {
+ 	case LM70_CHIP_LM70:
+@@ -102,6 +109,10 @@ static ssize_t temp1_input_show(struct d
+ 	case LM70_CHIP_LM71:
+ 		val = ((int)raw / 4) * 3125 / 100;
+ 		break;
++
++	case LM70_CHIP_TMP125:
++		val = (sign_extend32(raw, 14) / 32) * 250;
++		break;
+ 	}
+ 
+ 	status = sprintf(buf, "%d\n", val); /* millidegrees Celsius */
+@@ -136,6 +147,10 @@ static const struct of_device_id lm70_of
+ 		.data = (void *) LM70_CHIP_TMP122,
+ 	},
+ 	{
++		.compatible = "ti,tmp125",
++		.data = (void *) LM70_CHIP_TMP125,
++	},
++	{
+ 		.compatible = "ti,lm71",
+ 		.data = (void *) LM70_CHIP_LM71,
+ 	},
+@@ -184,6 +199,7 @@ static const struct spi_device_id lm70_i
+ 	{ "lm70",   LM70_CHIP_LM70 },
+ 	{ "tmp121", LM70_CHIP_TMP121 },
+ 	{ "tmp122", LM70_CHIP_TMP122 },
++	{ "tmp125", LM70_CHIP_TMP125 },
+ 	{ "lm71",   LM70_CHIP_LM71 },
+ 	{ "lm74",   LM70_CHIP_LM74 },
+ 	{ },
diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts
index bb2f2d0827..ccf60eaeed 100644
--- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts
+++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts
@@ -24,6 +24,7 @@
 		led-running = &led_power_green;
 		led-upgrade = &led_fault_red;
 		label-mac-device = &enet0;
+		spi0 = &spi0;
 	};
 
 	memory {
@@ -113,6 +114,14 @@
 	board_soc: soc: soc at ffe00000 {
 		ranges = <0x0 0x0 0xffe00000 0x100000>;
 
+		spi0: spi at 7000 {
+			temperature-sensor at 1 {
+				compatible = "ti,tmp125";
+				reg = <1>;
+				spi-max-frequency = <5000000>;
+			};
+		};
+
 		i2c at 3100 {
 			tpm at 29 {
 				compatible = "atmel,at97sc3204t";
diff --git a/target/linux/mpc85xx/image/p1020.mk b/target/linux/mpc85xx/image/p1020.mk
index a50b489df1..64cad1ad9c 100644
--- a/target/linux/mpc85xx/image/p1020.mk
+++ b/target/linux/mpc85xx/image/p1020.mk
@@ -15,7 +15,7 @@ define Device/aerohive_hiveap-330
   DEVICE_MODEL := HiveAP-330
   DEVICE_ALT0_VENDOR := Aerohive
   DEVICE_ALT0_MODEL := HiveAP-350
-  DEVICE_PACKAGES := kmod-tpm-i2c-atmel
+  DEVICE_PACKAGES := kmod-tpm-i2c-atmel kmod-hwmon-lm70
   BLOCKSIZE := 128k
   KERNEL := kernel-bin | uImage none
   KERNEL_INITRAMFS := kernel-bin | MultiImage none



More information about the lede-commits mailing list