mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-23 13:56:20 +00:00
thermal: Add support for TI LM74
LM74 is a SPI temperature sensor. Implement a driver to read temperature from it. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
This commit is contained in:
parent
ea208201a1
commit
c578728d2e
3 changed files with 59 additions and 0 deletions
|
@ -41,4 +41,10 @@ config TI_DRA7_THERMAL
|
||||||
Enable thermal support for for the Texas Instruments DRA752 SoC family.
|
Enable thermal support for for the Texas Instruments DRA752 SoC family.
|
||||||
The driver supports reading CPU temperature.
|
The driver supports reading CPU temperature.
|
||||||
|
|
||||||
|
config TI_LM74_THERMAL
|
||||||
|
bool "Temperature sensor driver for TI LM74 chip"
|
||||||
|
help
|
||||||
|
Enable thermal support for the Texas Instruments LM74 chip.
|
||||||
|
The driver supports reading CPU temperature.
|
||||||
|
|
||||||
endif # if DM_THERMAL
|
endif # if DM_THERMAL
|
||||||
|
|
|
@ -9,3 +9,4 @@ obj-$(CONFIG_IMX_THERMAL) += imx_thermal.o
|
||||||
obj-$(CONFIG_IMX_SCU_THERMAL) += imx_scu_thermal.o
|
obj-$(CONFIG_IMX_SCU_THERMAL) += imx_scu_thermal.o
|
||||||
obj-$(CONFIG_TI_DRA7_THERMAL) += ti-bandgap.o
|
obj-$(CONFIG_TI_DRA7_THERMAL) += ti-bandgap.o
|
||||||
obj-$(CONFIG_IMX_TMU) += imx_tmu.o
|
obj-$(CONFIG_IMX_TMU) += imx_tmu.o
|
||||||
|
obj-$(CONFIG_TI_LM74_THERMAL) += ti-lm74.o
|
||||||
|
|
52
drivers/thermal/ti-lm74.c
Normal file
52
drivers/thermal/ti-lm74.c
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
/*
|
||||||
|
* TI LM74 temperature sensor driver
|
||||||
|
*
|
||||||
|
* Copyright (C) 2024 CS GROUP France
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <dm.h>
|
||||||
|
#include <thermal.h>
|
||||||
|
#include <spi.h>
|
||||||
|
|
||||||
|
static int ti_lm74_get_temp(struct udevice *dev, int *temp)
|
||||||
|
{
|
||||||
|
char buf[2];
|
||||||
|
s16 raw;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = dm_spi_claim_bus(dev);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = dm_spi_xfer(dev, 16, NULL, buf, SPI_XFER_BEGIN | SPI_XFER_END);
|
||||||
|
|
||||||
|
dm_spi_release_bus(dev);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
raw = ((buf[0] << 8) + buf[1]) >> 3;
|
||||||
|
|
||||||
|
*temp = (((int)raw * 125) + 1000) / 2000;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct dm_thermal_ops ti_lm74_ops = {
|
||||||
|
.get_temp = ti_lm74_get_temp,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct udevice_id of_ti_lm74_match[] = {
|
||||||
|
{
|
||||||
|
.compatible = "ti,lm74",
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
};
|
||||||
|
|
||||||
|
U_BOOT_DRIVER(ti_bandgap_thermal) = {
|
||||||
|
.name = "ti_lm74_thermal",
|
||||||
|
.id = UCLASS_THERMAL,
|
||||||
|
.ops = &ti_lm74_ops,
|
||||||
|
.of_match = of_ti_lm74_match,
|
||||||
|
};
|
Loading…
Add table
Reference in a new issue