mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
hwmon: (pmbus/tda38740) Add driver for Infineon TDA38740/TDA38725
Add a PMBus driver for Infineon TDA38740 and TDA38725 single-voltage synchronous buck regulators. Signed-off-by: Colin Huang <u8813345@gmail.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Link: https://patch.msgid.link/20260918-add-tda38740-and-tda38725-v6-2-a8b11018d850@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
ea863d7834
commit
3f02ddc377
|
|
@ -267,6 +267,7 @@ Hardware Monitoring Kernel Drivers
|
|||
sy7636a-hwmon
|
||||
tc654
|
||||
tc74
|
||||
tda38740
|
||||
thmc50
|
||||
tmp102
|
||||
tmp103
|
||||
|
|
|
|||
65
Documentation/hwmon/tda38740.rst
Normal file
65
Documentation/hwmon/tda38740.rst
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
====================================
|
||||
Kernel driver tda38740
|
||||
====================================
|
||||
|
||||
Supported chips:
|
||||
* Infineon TDA38740
|
||||
* Infineon TDA38725
|
||||
|
||||
Prefix: 'tda38740'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
Datasheet:
|
||||
https://www.infineon.com/row/public/documents/24/49/infineon-tda38740-tda38725-datasheet-en.pdf
|
||||
|
||||
Author: Colin Huang <u8813345@gmail.com>
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
The TDA38740 and TDA38725 are single-output synchronous buck regulators with a
|
||||
PMBus interface. They expose basic voltage, current, power and temperature
|
||||
telemetry through the standard PMBus hwmon interfaces.
|
||||
|
||||
Sysfs entries
|
||||
-------------
|
||||
|
||||
======================= =======================================================
|
||||
curr1_alarm Input current alarm
|
||||
curr1_input Measured input current
|
||||
curr1_label "iin"
|
||||
|
||||
curr2_crit Critical maximum output current
|
||||
curr2_crit_alarm Output current critical high alarm
|
||||
curr2_input Measured output current
|
||||
curr2_label "iout"
|
||||
|
||||
in1_crit Critical maximum input voltage
|
||||
in1_crit_alarm Input voltage critical high alarm
|
||||
in1_input Measured input voltage
|
||||
in1_label "vin"
|
||||
|
||||
in2_crit Critical maximum output voltage
|
||||
in2_crit_alarm Output voltage critical high alarm
|
||||
in2_input Measured output voltage
|
||||
in2_label "vout"
|
||||
in2_lcrit Critical minimum output voltage
|
||||
in2_lcrit_alarm Output voltage critical low alarm
|
||||
|
||||
power1_alarm Input power alarm
|
||||
power1_input Measured input power
|
||||
power1_label "pin"
|
||||
|
||||
power2_input Measured output power
|
||||
power2_label "pout"
|
||||
|
||||
temp1_crit Critical high temperature
|
||||
temp1_crit_alarm Chip temperature critical high alarm
|
||||
temp1_input Measured temperature
|
||||
temp1_max Maximum temperature
|
||||
temp1_max_alarm Chip temperature high alarm
|
||||
======================= =======================================================
|
||||
|
||||
|
|
@ -782,6 +782,15 @@ config SENSORS_TDA38640_REGULATOR
|
|||
If you say yes here you get regulator support for Infineon
|
||||
TDA38640 as regulator.
|
||||
|
||||
config SENSORS_TDA38740
|
||||
tristate "Infineon TDA38725/TDA38740"
|
||||
help
|
||||
If you say yes here you get hardware monitoring support for Infineon
|
||||
TDA38725 and TDA38740.
|
||||
|
||||
This driver can also be built as a module. If so, the module will
|
||||
be called tda38740.
|
||||
|
||||
config SENSORS_TPS25990
|
||||
tristate "TI TPS25990"
|
||||
help
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ obj-$(CONFIG_SENSORS_STEF48H28) += stef48h28.o
|
|||
obj-$(CONFIG_SENSORS_SQ24860) += sq24860.o
|
||||
obj-$(CONFIG_SENSORS_STPDDC60) += stpddc60.o
|
||||
obj-$(CONFIG_SENSORS_TDA38640) += tda38640.o
|
||||
obj-$(CONFIG_SENSORS_TDA38740) += tda38740.o
|
||||
obj-$(CONFIG_SENSORS_TPS25990) += tps25990.o
|
||||
obj-$(CONFIG_SENSORS_TPS40422) += tps40422.o
|
||||
obj-$(CONFIG_SENSORS_TPS53679) += tps53679.o
|
||||
|
|
|
|||
64
drivers/hwmon/pmbus/tda38740.c
Normal file
64
drivers/hwmon/pmbus/tda38740.c
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Hardware monitoring driver for Infineon TDA38725/TDA38740
|
||||
*
|
||||
* Copyright (c) 2023 9elements GmbH
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/err.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include "pmbus.h"
|
||||
|
||||
static struct pmbus_driver_info tda38740_info = {
|
||||
.pages = 1,
|
||||
.format[PSC_VOLTAGE_IN] = linear,
|
||||
.format[PSC_VOLTAGE_OUT] = linear,
|
||||
.format[PSC_CURRENT_OUT] = linear,
|
||||
.format[PSC_CURRENT_IN] = linear,
|
||||
.format[PSC_POWER] = linear,
|
||||
.format[PSC_TEMPERATURE] = linear,
|
||||
.func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT
|
||||
| PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP
|
||||
| PMBUS_HAVE_IIN
|
||||
| PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT
|
||||
| PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT
|
||||
| PMBUS_HAVE_POUT | PMBUS_HAVE_PIN,
|
||||
};
|
||||
|
||||
static int tda38740_probe(struct i2c_client *client)
|
||||
{
|
||||
return pmbus_do_probe(client, &tda38740_info);
|
||||
}
|
||||
|
||||
static const struct i2c_device_id tda38740_id[] = {
|
||||
{ .name = "tda38725"},
|
||||
{ .name = "tda38740"},
|
||||
{}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, tda38740_id);
|
||||
|
||||
static const struct of_device_id tda38740_of_match[] = {
|
||||
{ .compatible = "infineon,tda38725"},
|
||||
{ .compatible = "infineon,tda38740"},
|
||||
{}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, tda38740_of_match);
|
||||
|
||||
static struct i2c_driver tda38740_driver = {
|
||||
.driver = {
|
||||
.name = "tda38740",
|
||||
.of_match_table = tda38740_of_match,
|
||||
},
|
||||
.probe = tda38740_probe,
|
||||
.id_table = tda38740_id,
|
||||
};
|
||||
|
||||
module_i2c_driver(tda38740_driver);
|
||||
|
||||
MODULE_DESCRIPTION("PMBus driver for Infineon TDA38725/TDA38740");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS("PMBUS");
|
||||
Loading…
Reference in New Issue
Block a user