lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 8 Sep 2022 11:20:22 -0700 From: Guenter Roeck <linux@...ck-us.net> To: Duke Du <dukedu83@...il.com>, jdelvare@...e.com, corbet@....net, linux-hwmon@...r.kernel.org, linux-doc@...r.kernel.org, linux-kernel@...r.kernel.org Cc: fran.hsu@...ntatw.com, george.hung@...ntatw.com, charles.hsu@...ntatw.com, duke.du@...ntatw.com Subject: Re: [PATCH v4] hwmon: Add driver for the TEXAS TPS546D24 Buck Converter. On 9/7/22 23:13, Duke Du wrote: > From: Duke Du <dukedu83@...il.com> > > Add the pmbus driver for TEXAS tps546d24 Buck Converter. > The vout mode of tps546d24 supported relative data format, > which is not meet for the original driver (pmbus.c). "which is not supported by the PMBus core" > > Signed-off-by: Duke Du <dukedu83@...il.com> > --- > Change in v1: > Initial patchset. > Change in v2: > Correct the tps546d24.rst format. > Change in v3: > 1. Modify the patch description. > 2. Put the change log between the dashes and diffstat. > Change in v4: > 1. Modify the patch description. > 2. Clear the bit 7 of PMBUS_VOUT_MODE to change the mode from relative > to absolute. > 3. Add the vendor prefix. > --- > --- > Documentation/hwmon/index.rst | 1 + > Documentation/hwmon/tps546d24.rst | 35 ++++++++++++++++++++++ > MAINTAINERS | 7 +++++ > drivers/hwmon/pmbus/Kconfig | 9 ++++++ > drivers/hwmon/pmbus/Makefile | 1 + > drivers/hwmon/pmbus/tps546d24.c | 63 +++++++++++++++++++++++++++++++++++++++ > 6 files changed, 116 insertions(+) > create mode 100644 Documentation/hwmon/tps546d24.rst > create mode 100644 drivers/hwmon/pmbus/tps546d24.c > > diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst > index f7113b0..d3eede4 100644 > --- a/Documentation/hwmon/index.rst > +++ b/Documentation/hwmon/index.rst > @@ -205,6 +205,7 @@ Hardware Monitoring Kernel Drivers > tps23861 > tps40422 > tps53679 > + tps546d24 > twl4030-madc-hwmon > ucd9000 > ucd9200 > diff --git a/Documentation/hwmon/tps546d24.rst b/Documentation/hwmon/tps546d24.rst > new file mode 100644 > index 0000000..3061fd8 > --- /dev/null > +++ b/Documentation/hwmon/tps546d24.rst > @@ -0,0 +1,35 @@ > +.. SPDX-License-Identifier: GPL-2.0-only > + > +Kernel driver tps546d24 > +====================== > + > +Supported chips: > + > + * TI TPS546D24 > + > + Prefix: 'tps546d24' > + > + Addresses scanned: - > + > + Datasheet: https://www.ti.com/lit/gpn/tps546d24 > + > +Author: Duke Du <dukedu83@...il.com> > + > + > +Description > +----------- > + > +The TPS546D24A is a highly integrated, non-isolated DC/DC converter capable > +of high frequency operation and 40-A current output from a 7-mm x 5-mm > +package. > + > +Two, three, and four TPS546D24A devices can be interconnected > +to provide up to 160 A on a single output. The device has an option to > +overdrive the internal 5-V LDO with an external 5-V supply via the VDD5 > +pin to improve efficiency and reduce power dissipation of the converter. > + > + > +Platform data support > +--------------------- > + > +The driver supports standard PMBus driver platform data. > diff --git a/MAINTAINERS b/MAINTAINERS > index 8a5012b..fa2d4fb 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -20583,6 +20583,13 @@ Q: https://patchwork.kernel.org/project/linux-integrity/list/ > T: git git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git > F: drivers/char/tpm/ > > +TPS546D24 DRIVER > +M: Duke Du <dukedu83@...il.com> > +L: linux-hwmon@...r.kernel.org > +S: Maintained > +F: Documentation/hwmon/tps546d24.rst > +F: drivers/hwmon/pmbus/tps546d24.c > + > TRACING > M: Steven Rostedt <rostedt@...dmis.org> > M: Ingo Molnar <mingo@...hat.com> > diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig > index 951e4a9..89668af 100644 > --- a/drivers/hwmon/pmbus/Kconfig > +++ b/drivers/hwmon/pmbus/Kconfig > @@ -397,6 +397,15 @@ config SENSORS_TPS53679 > This driver can also be built as a module. If so, the module will > be called tps53679. > > +config SENSORS_TPS546D24 > + tristate "TPS546D24" > + help > + If you say yes here you get hardware monitoring support for TEXAS > + TPS546D24. > + > + This driver can also be built as a module. If so, the module will > + be called tps546d24 > + > config SENSORS_UCD9000 > tristate "TI UCD90120, UCD90124, UCD90160, UCD90320, UCD9090, UCD90910" > help > diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile > index e2fe86f..0002dbe 100644 > --- a/drivers/hwmon/pmbus/Makefile > +++ b/drivers/hwmon/pmbus/Makefile > @@ -41,6 +41,7 @@ obj-$(CONFIG_SENSORS_Q54SJ108A2) += q54sj108a2.o > obj-$(CONFIG_SENSORS_STPDDC60) += stpddc60.o > obj-$(CONFIG_SENSORS_TPS40422) += tps40422.o > obj-$(CONFIG_SENSORS_TPS53679) += tps53679.o > +obj-$(CONFIG_SENSORS_TPS546D24) += tps546d24.o > obj-$(CONFIG_SENSORS_UCD9000) += ucd9000.o > obj-$(CONFIG_SENSORS_UCD9200) += ucd9200.o > obj-$(CONFIG_SENSORS_XDPE122) += xdpe12284.o > diff --git a/drivers/hwmon/pmbus/tps546d24.c b/drivers/hwmon/pmbus/tps546d24.c > new file mode 100644 > index 0000000..84f3dc9 > --- /dev/null > +++ b/drivers/hwmon/pmbus/tps546d24.c > @@ -0,0 +1,63 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Hardware monitoring driver for TEXAS TPS546D24 buck converter > + */ > + > +#include <linux/err.h> > +#include <linux/i2c.h> > +#include <linux/init.h> > +#include <linux/kernel.h> > +#include <linux/module.h> > +#include <linux/pmbus.h> > +#include "pmbus.h" > + > +static struct pmbus_driver_info tps546d24_info = { > + .pages = 1, > + .format[PSC_VOLTAGE_IN] = linear, > + .format[PSC_VOLTAGE_OUT] = linear, > + .format[PSC_TEMPERATURE] = linear, > + .format[PSC_CURRENT_OUT] = linear, > + .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_IIN > + | PMBUS_HAVE_IOUT | PMBUS_HAVE_VOUT > + | PMBUS_HAVE_STATUS_IOUT | PMBUS_HAVE_STATUS_VOUT > + | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, > +}; > + > +static int tps546d24_probe(struct i2c_client *client) > +{ > + int reg; > + > + reg = i2c_smbus_read_byte_data(client, PMBUS_VOUT_MODE); > + if (reg > 0x80) This does not cover reg == 0x80, and does not handle errors. I would suggest something like if (reg < 0) return reg; if (reg & 0x80) { int err; err = i2c_smbus_write_byte_data(client, PMBUS_VOUT_MODE, reg & 0x7f); if (err < 0) return err; } return pmbus_do_probe(client, &tps546d24_info); Thanks, Guenter > + i2c_smbus_write_byte_data(client, PMBUS_VOUT_MODE, reg & 0x7f); > + return pmbus_do_probe(client, &tps546d24_info); > +} > + > +static const struct i2c_device_id tps546d24_id[] = { > + {"tps546d24", 0}, > + {} > +}; > +MODULE_DEVICE_TABLE(i2c, tps546d24_id); > + > +static const struct of_device_id tps546d24_of_match[] = { > + {.compatible = "ti,tps546d24"}, > + {} > +}; > +MODULE_DEVICE_TABLE(of, tps546d24_of_match); > + > +/* This is the driver that will be inserted */ > +static struct i2c_driver tps546d24_driver = { > + .driver = { > + .name = "tps546d24", > + .of_match_table = of_match_ptr(tps546d24_of_match), > + }, > + .probe_new = tps546d24_probe, > + .id_table = tps546d24_id, > +}; > + > +module_i2c_driver(tps546d24_driver); > + > +MODULE_AUTHOR("Duke Du <dukedu83@...il.com>"); > +MODULE_DESCRIPTION("PMBus driver for TI tps546d24"); > +MODULE_LICENSE("GPL"); > +MODULE_IMPORT_NS(PMBUS);
Powered by blists - more mailing lists