linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4] hwmon: Add driver for STMicroelectronics PM6764 Voltage Regulator
@ 2020-11-11  7:10 Charles
       [not found] ` <20201122153618.GA21246@roeck-us.net>
  0 siblings, 1 reply; 3+ messages in thread
From: Charles @ 2020-11-11  7:10 UTC (permalink / raw)
  To: Guenter Roeck, linux-kernel; +Cc: linux-hwmon, alan

Add the pmbus driver for the STMicroelectronics pm6764 voltage regulator.

the output voltage use the MFR_READ_VOUT 0xD4
vout value returned is linear11

Signed-off-by: Charles Hsu <hsu.yungteng@gmail.com>
---

v4:
  - Add pm6764tr to Documentation/hwmon/index.rst.
v3:
  - Add Documentation(Documentation/hwmon/pm6764tr.rst).
  - Fix include order.
v2:
  - Fix formatting.
  - Remove pmbus_do_remove.
  - Change from .probe to .probe_new.
v1:
  - Initial patchset.
---

  Documentation/hwmon/index.rst    |  1 +
  Documentation/hwmon/pm6764tr.rst | 33 ++++++++++++++
  drivers/hwmon/pmbus/Kconfig      |  9 ++++
  drivers/hwmon/pmbus/Makefile     |  1 +
  drivers/hwmon/pmbus/pm6764tr.c   | 78 ++++++++++++++++++++++++++++++++
  5 files changed, 122 insertions(+)
  create mode 100644 Documentation/hwmon/pm6764tr.rst
  create mode 100644 drivers/hwmon/pmbus/pm6764tr.c

diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
index b797db738225..1bbd05e41de4 100644
--- a/Documentation/hwmon/index.rst
+++ b/Documentation/hwmon/index.rst
@@ -144,6 +144,7 @@ Hardware Monitoring Kernel Drivers
     pc87360
     pc87427
     pcf8591
+   pm6764tr
     pmbus
     powr1220
     pxe1610
diff --git a/Documentation/hwmon/pm6764tr.rst 
b/Documentation/hwmon/pm6764tr.rst
new file mode 100644
index 000000000000..5e8092e39297
--- /dev/null
+++ b/Documentation/hwmon/pm6764tr.rst
@@ -0,0 +1,33 @@
+.. SPDX-License-Identifier: GPL-2.0-only
+
+Kernel driver pm6764tr
+======================
+
+Supported chips:
+
+  * ST PM6764TR
+
+    Prefix: 'pm6764tr'
+
+    Addresses scanned: -
+
+    Datasheet: http://www.st.com/resource/en/data_brief/pm6764.pdf
+
+Authors:
+    <hsu.yungteng@gmail.com>
+
+Description:
+------------
+
+This driver supports the STMicroelectronics PM6764TR chip. The PM6764TR 
is a high
+performance digital controller designed to power Intel’s VR12.5 
processors and memories.
+
+The device utilizes digital technology to implement all control and 
power management
+functions to provide maximum flexibility and performance. The NVM is 
embedded to store
+custom configurations. The PM6764TR device features up to 4-phase 
programmable operation.
+
+The PM6764TR supports power state transitions featuring VFDE, and 
programmable DPM
+maintaining the best efficiency over all loading conditions without 
compromising transient
+response. The device assures fast and independent protectionagainstload 
overcurrent,
+under/overvoltage and feedback disconnections.
+
diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
index a25faf69fce3..9c846facce9f 100644
--- a/drivers/hwmon/pmbus/Kconfig
+++ b/drivers/hwmon/pmbus/Kconfig
@@ -220,6 +220,15 @@ config SENSORS_MP2975
        This driver can also be built as a module. If so, the module will
        be called mp2975.

+config SENSORS_PM6764TR
+    tristate "ST PM6764TR"
+    help
+      If you say yes here you get hardware monitoring support for ST
+      PM6764TR.
+
+      This driver can also be built as a module. If so, the module will
+      be called pm6764tr.
+
  config SENSORS_PXE1610
      tristate "Infineon PXE1610"
      help
diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile
index 4c97ad0bd791..31ebdef5d4a6 100644
--- a/drivers/hwmon/pmbus/Makefile
+++ b/drivers/hwmon/pmbus/Makefile
@@ -25,6 +25,7 @@ obj-$(CONFIG_SENSORS_MAX31785)    += max31785.o
  obj-$(CONFIG_SENSORS_MAX34440)    += max34440.o
  obj-$(CONFIG_SENSORS_MAX8688)    += max8688.o
  obj-$(CONFIG_SENSORS_MP2975)    += mp2975.o
+obj-$(CONFIG_SENSORS_PM6764TR)    += pm6764tr.o
  obj-$(CONFIG_SENSORS_PXE1610)    += pxe1610.o
  obj-$(CONFIG_SENSORS_TPS40422)    += tps40422.o
  obj-$(CONFIG_SENSORS_TPS53679)    += tps53679.o
diff --git a/drivers/hwmon/pmbus/pm6764tr.c b/drivers/hwmon/pmbus/pm6764tr.c
new file mode 100644
index 000000000000..2ab68036bb0c
--- /dev/null
+++ b/drivers/hwmon/pmbus/pm6764tr.c
@@ -0,0 +1,78 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Hardware monitoring driver for STMicroelectronics digital controller 
PM6764TR
+ */
+
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/mutex.h>
+#include <linux/pmbus.h>
+#include <linux/slab.h>
+#include "pmbus.h"
+
+#define PM6764TR_PMBUS_READ_VOUT    0xD4
+
+static int pm6764tr_read_word_data(struct i2c_client *client, int page, 
int reg)
+{
+    int ret;
+
+    switch (reg) {
+    case PMBUS_VIRT_READ_VMON:
+        ret = pmbus_read_word_data(client, page, PM6764TR_PMBUS_READ_VOUT);
+        break;
+    default:
+        ret = -ENODATA;
+        break;
+    }
+    return ret;
+}
+
+static struct pmbus_driver_info pm6764tr_info = {
+    .pages = 1,
+    .format[PSC_VOLTAGE_IN] = linear,
+    .format[PSC_VOLTAGE_OUT] = vid,
+    .format[PSC_TEMPERATURE] = linear,
+    .format[PSC_CURRENT_OUT] = linear,
+    .format[PSC_POWER] = linear,
+    .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_IIN |  PMBUS_HAVE_PIN |
+        PMBUS_HAVE_IOUT | PMBUS_HAVE_POUT | PMBUS_HAVE_VMON |
+        PMBUS_HAVE_STATUS_IOUT | PMBUS_HAVE_STATUS_VOUT |
+        PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP,
+    .read_word_data = pm6764tr_read_word_data,
+};
+
+static int pm6764tr_probe(struct i2c_client *client,
+              const struct i2c_device_id *id)
+{
+    return pmbus_do_probe(client, id, &pm6764tr_info);
+}
+
+static const struct i2c_device_id pm6764tr_id[] = {
+    {"pm6764tr", 0},
+    {}
+};
+MODULE_DEVICE_TABLE(i2c, pm6764tr_id);
+
+static const struct of_device_id pm6764tr_of_match[] = {
+    {.compatible = "pm6764tr"},
+    {}
+};
+
+/* This is the driver that will be inserted */
+static struct i2c_driver pm6764tr_driver = {
+    .driver = {
+           .name = "pm6764tr",
+           .of_match_table = of_match_ptr(pm6764tr_of_match),
+           },
+    .probe_new = pm6764tr_probe,
+    .id_table = pm6764tr_id,
+};
+
+module_i2c_driver(pm6764tr_driver);
+
+MODULE_AUTHOR("Charles Hsu");
+MODULE_DESCRIPTION("PMBus driver for  ST PM6764TR");
+MODULE_LICENSE("GPL");
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v4] hwmon: Add driver for STMicroelectronics PM6764 Voltage Regulator
       [not found] ` <20201122153618.GA21246@roeck-us.net>
@ 2020-11-26  0:50   ` Charles
  2020-11-26  1:29     ` Guenter Roeck
  0 siblings, 1 reply; 3+ messages in thread
From: Charles @ 2020-11-26  0:50 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: linux-kernel, linux-hwmon, alan

On 22/11/2020 下午11:36, Guenter Roeck wrote:
> On Wed, Nov 11, 2020 at 03:10:08PM +0800, Charles wrote:
>> Add the pmbus driver for the STMicroelectronics pm6764 voltage regulator.
>>
>> the output voltage use the MFR_READ_VOUT 0xD4
>> vout value returned is linear11
>>
>> Signed-off-by: Charles Hsu <hsu.yungteng@gmail.com>
> Please fix all checkpatch errors and warnings before resubmitting,
> and make sure that your e-mail agent does not corrupt the patch.
>
> Guenter
>

There is still a warning can't fix.

Device tree bindings should be their own patch, right?

I'm not sure which patch should I submit first.

WARNING: DT compatible string "pm6764tr" appears un-documented -- check 
./Documentation/devicetree/bindings/
#189: FILE: drivers/hwmon/pmbus/pm6764tr.c:60:

+    {.compatible = "pm6764tr"},


>> ---
>>
>> v4:
>>    - Add pm6764tr to Documentation/hwmon/index.rst.
>> v3:
>>    - Add Documentation(Documentation/hwmon/pm6764tr.rst).
>>    - Fix include order.
>> v2:
>>    - Fix formatting.
>>    - Remove pmbus_do_remove.
>>    - Change from .probe to .probe_new.
>> v1:
>>    - Initial patchset.
>> ---
>>
>>    Documentation/hwmon/index.rst    |  1 +
>>    Documentation/hwmon/pm6764tr.rst | 33 ++++++++++++++
>>    drivers/hwmon/pmbus/Kconfig      |  9 ++++
>>    drivers/hwmon/pmbus/Makefile     |  1 +
>>    drivers/hwmon/pmbus/pm6764tr.c   | 78 ++++++++++++++++++++++++++++++++
>>    5 files changed, 122 insertions(+)
>>    create mode 100644 Documentation/hwmon/pm6764tr.rst
>>    create mode 100644 drivers/hwmon/pmbus/pm6764tr.c
>>
>> +MODULE_DESCRIPTION("PMBus driver for  ST PM6764TR");
>> +MODULE_LICENSE("GPL");
>>
>> diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
>> index b797db738225..1bbd05e41de4 100644
>> --- a/Documentation/hwmon/index.rst
>> +++ b/Documentation/hwmon/index.rst
>> @@ -144,6 +144,7 @@ Hardware Monitoring Kernel Drivers
>>       pc87360
>>       pc87427
>>       pcf8591
>> +   pm6764tr
>>       pmbus
>>       powr1220
>>       pxe1610
>> diff --git a/Documentation/hwmon/pm6764tr.rst
>> b/Documentation/hwmon/pm6764tr.rst
>> new file mode 100644
>> index 000000000000..5e8092e39297
>> --- /dev/null
>> +++ b/Documentation/hwmon/pm6764tr.rst
>> @@ -0,0 +1,33 @@
>> +.. SPDX-License-Identifier: GPL-2.0-only
>> +
>> +Kernel driver pm6764tr
>> +======================
>> +
>> +Supported chips:
>> +
>> +  * ST PM6764TR
>> +
>> +    Prefix: 'pm6764tr'
>> +
>> +    Addresses scanned: -
>> +
>> +    Datasheet: http://www.st.com/resource/en/data_brief/pm6764.pdf
>> +
>> +Authors:
>> +    <hsu.yungteng@gmail.com>
>> +
>> +Description:
>> +------------
>> +
>> +This driver supports the STMicroelectronics PM6764TR chip. The PM6764TR
>> is a high
>> +performance digital controller designed to power Intel’s VR12.5
>> processors and memories.
>> +
>> +The device utilizes digital technology to implement all control and
>> power management
>> +functions to provide maximum flexibility and performance. The NVM is
>> embedded to store
>> +custom configurations. The PM6764TR device features up to 4-phase
>> programmable operation.
>> +
>> +The PM6764TR supports power state transitions featuring VFDE, and
>> programmable DPM
>> +maintaining the best efficiency over all loading conditions without
>> compromising transient
>> +response. The device assures fast and independent protectionagainstload
>> overcurrent,
>> +under/overvoltage and feedback disconnections.
>> +
>> diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
>> index a25faf69fce3..9c846facce9f 100644
>> --- a/drivers/hwmon/pmbus/Kconfig
>> +++ b/drivers/hwmon/pmbus/Kconfig
>> @@ -220,6 +220,15 @@ config SENSORS_MP2975
>>          This driver can also be built as a module. If so, the module will
>>          be called mp2975.
>>
>> +config SENSORS_PM6764TR
>> +    tristate "ST PM6764TR"
>> +    help
>> +      If you say yes here you get hardware monitoring support for ST
>> +      PM6764TR.
>> +
>> +      This driver can also be built as a module. If so, the module will
>> +      be called pm6764tr.
>> +
>>    config SENSORS_PXE1610
>>        tristate "Infineon PXE1610"
>>        help
>> diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile
>> index 4c97ad0bd791..31ebdef5d4a6 100644
>> --- a/drivers/hwmon/pmbus/Makefile
>> +++ b/drivers/hwmon/pmbus/Makefile
>> @@ -25,6 +25,7 @@ obj-$(CONFIG_SENSORS_MAX31785)    += max31785.o
>>    obj-$(CONFIG_SENSORS_MAX34440)    += max34440.o
>>    obj-$(CONFIG_SENSORS_MAX8688)    += max8688.o
>>    obj-$(CONFIG_SENSORS_MP2975)    += mp2975.o
>> +obj-$(CONFIG_SENSORS_PM6764TR)    += pm6764tr.o
>>    obj-$(CONFIG_SENSORS_PXE1610)    += pxe1610.o
>>    obj-$(CONFIG_SENSORS_TPS40422)    += tps40422.o
>>    obj-$(CONFIG_SENSORS_TPS53679)    += tps53679.o
>> diff --git a/drivers/hwmon/pmbus/pm6764tr.c b/drivers/hwmon/pmbus/pm6764tr.c
>> new file mode 100644
>> index 000000000000..2ab68036bb0c
>> --- /dev/null
>> +++ b/drivers/hwmon/pmbus/pm6764tr.c
>> @@ -0,0 +1,78 @@
>> +// SPDX-License-Identifier: GPL-2.0+
>> +/*
>> + * Hardware monitoring driver for STMicroelectronics digital controller
>> PM6764TR
>> + */
>> +
>> +#include <linux/err.h>
>> +#include <linux/i2c.h>
>> +#include <linux/init.h>
>> +#include <linux/kernel.h>
>> +#include <linux/module.h>
>> +#include <linux/mutex.h>
>> +#include <linux/pmbus.h>
>> +#include <linux/slab.h>
>> +#include "pmbus.h"
>> +
>> +#define PM6764TR_PMBUS_READ_VOUT    0xD4
>> +
>> +static int pm6764tr_read_word_data(struct i2c_client *client, int page,
>> int reg)
>> +{
>> +    int ret;
>> +
>> +    switch (reg) {
>> +    case PMBUS_VIRT_READ_VMON:
>> +        ret = pmbus_read_word_data(client, page, PM6764TR_PMBUS_READ_VOUT);
>> +        break;
>> +    default:
>> +        ret = -ENODATA;
>> +        break;
>> +    }
>> +    return ret;
>> +}
>> +
>> +static struct pmbus_driver_info pm6764tr_info = {
>> +    .pages = 1,
>> +    .format[PSC_VOLTAGE_IN] = linear,
>> +    .format[PSC_VOLTAGE_OUT] = vid,
>> +    .format[PSC_TEMPERATURE] = linear,
>> +    .format[PSC_CURRENT_OUT] = linear,
>> +    .format[PSC_POWER] = linear,
>> +    .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_IIN |  PMBUS_HAVE_PIN |
>> +        PMBUS_HAVE_IOUT | PMBUS_HAVE_POUT | PMBUS_HAVE_VMON |
>> +        PMBUS_HAVE_STATUS_IOUT | PMBUS_HAVE_STATUS_VOUT |
>> +        PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP,
>> +    .read_word_data = pm6764tr_read_word_data,
>> +};
>> +
>> +static int pm6764tr_probe(struct i2c_client *client,
>> +              const struct i2c_device_id *id)
>> +{
>> +    return pmbus_do_probe(client, id, &pm6764tr_info);
>> +}
>> +
>> +static const struct i2c_device_id pm6764tr_id[] = {
>> +    {"pm6764tr", 0},
>> +    {}
>> +};
>> +MODULE_DEVICE_TABLE(i2c, pm6764tr_id);
>> +
>> +static const struct of_device_id pm6764tr_of_match[] = {
>> +    {.compatible = "pm6764tr"},
>> +    {}
>> +};
>> +
>> +/* This is the driver that will be inserted */
>> +static struct i2c_driver pm6764tr_driver = {
>> +    .driver = {
>> +           .name = "pm6764tr",
>> +           .of_match_table = of_match_ptr(pm6764tr_of_match),
>> +           },
>> +    .probe_new = pm6764tr_probe,
>> +    .id_table = pm6764tr_id,
>> +};
>> +
>> +module_i2c_driver(pm6764tr_driver);
>> +
>> +MODULE_AUTHOR("Charles Hsu");



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v4] hwmon: Add driver for STMicroelectronics PM6764 Voltage Regulator
  2020-11-26  0:50   ` Charles
@ 2020-11-26  1:29     ` Guenter Roeck
  0 siblings, 0 replies; 3+ messages in thread
From: Guenter Roeck @ 2020-11-26  1:29 UTC (permalink / raw)
  To: Charles; +Cc: linux-kernel, linux-hwmon, alan

On Thu, Nov 26, 2020 at 08:50:37AM +0800, Charles wrote:
> On 22/11/2020 下午11:36, Guenter Roeck wrote:
> > On Wed, Nov 11, 2020 at 03:10:08PM +0800, Charles wrote:
> > > Add the pmbus driver for the STMicroelectronics pm6764 voltage regulator.
> > > 
> > > the output voltage use the MFR_READ_VOUT 0xD4
> > > vout value returned is linear11
> > > 
> > > Signed-off-by: Charles Hsu <hsu.yungteng@gmail.com>
> > Please fix all checkpatch errors and warnings before resubmitting,
> > and make sure that your e-mail agent does not corrupt the patch.
> > 
> > Guenter
> > 
> 
> There is still a warning can't fix.
> 
> Device tree bindings should be their own patch, right?
> 
> I'm not sure which patch should I submit first.
> 
> WARNING: DT compatible string "pm6764tr" appears un-documented -- check
> ./Documentation/devicetree/bindings/
> #189: FILE: drivers/hwmon/pmbus/pm6764tr.c:60:
> 
> +    {.compatible = "pm6764tr"},

At the very least that neds to be something like "stm,pm6764tr", assuming that
"stm" is the abbreviation commonly used for STMicroelectronics devices.

The binding should probably be added to the trivial devices list.
It does not really matter which patch comes first.

Guenter

> 
> 
> > > ---
> > > 
> > > v4:
> > >    - Add pm6764tr to Documentation/hwmon/index.rst.
> > > v3:
> > >    - Add Documentation(Documentation/hwmon/pm6764tr.rst).
> > >    - Fix include order.
> > > v2:
> > >    - Fix formatting.
> > >    - Remove pmbus_do_remove.
> > >    - Change from .probe to .probe_new.
> > > v1:
> > >    - Initial patchset.
> > > ---
> > > 
> > >    Documentation/hwmon/index.rst    |  1 +
> > >    Documentation/hwmon/pm6764tr.rst | 33 ++++++++++++++
> > >    drivers/hwmon/pmbus/Kconfig      |  9 ++++
> > >    drivers/hwmon/pmbus/Makefile     |  1 +
> > >    drivers/hwmon/pmbus/pm6764tr.c   | 78 ++++++++++++++++++++++++++++++++
> > >    5 files changed, 122 insertions(+)
> > >    create mode 100644 Documentation/hwmon/pm6764tr.rst
> > >    create mode 100644 drivers/hwmon/pmbus/pm6764tr.c
> > > 
> > > +MODULE_DESCRIPTION("PMBus driver for  ST PM6764TR");
> > > +MODULE_LICENSE("GPL");
> > > 
> > > diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
> > > index b797db738225..1bbd05e41de4 100644
> > > --- a/Documentation/hwmon/index.rst
> > > +++ b/Documentation/hwmon/index.rst
> > > @@ -144,6 +144,7 @@ Hardware Monitoring Kernel Drivers
> > >       pc87360
> > >       pc87427
> > >       pcf8591
> > > +   pm6764tr
> > >       pmbus
> > >       powr1220
> > >       pxe1610
> > > diff --git a/Documentation/hwmon/pm6764tr.rst
> > > b/Documentation/hwmon/pm6764tr.rst
> > > new file mode 100644
> > > index 000000000000..5e8092e39297
> > > --- /dev/null
> > > +++ b/Documentation/hwmon/pm6764tr.rst
> > > @@ -0,0 +1,33 @@
> > > +.. SPDX-License-Identifier: GPL-2.0-only
> > > +
> > > +Kernel driver pm6764tr
> > > +======================
> > > +
> > > +Supported chips:
> > > +
> > > +  * ST PM6764TR
> > > +
> > > +    Prefix: 'pm6764tr'
> > > +
> > > +    Addresses scanned: -
> > > +
> > > +    Datasheet: http://www.st.com/resource/en/data_brief/pm6764.pdf
> > > +
> > > +Authors:
> > > +    <hsu.yungteng@gmail.com>
> > > +
> > > +Description:
> > > +------------
> > > +
> > > +This driver supports the STMicroelectronics PM6764TR chip. The PM6764TR
> > > is a high
> > > +performance digital controller designed to power Intel’s VR12.5
> > > processors and memories.
> > > +
> > > +The device utilizes digital technology to implement all control and
> > > power management
> > > +functions to provide maximum flexibility and performance. The NVM is
> > > embedded to store
> > > +custom configurations. The PM6764TR device features up to 4-phase
> > > programmable operation.
> > > +
> > > +The PM6764TR supports power state transitions featuring VFDE, and
> > > programmable DPM
> > > +maintaining the best efficiency over all loading conditions without
> > > compromising transient
> > > +response. The device assures fast and independent protectionagainstload
> > > overcurrent,
> > > +under/overvoltage and feedback disconnections.
> > > +
> > > diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
> > > index a25faf69fce3..9c846facce9f 100644
> > > --- a/drivers/hwmon/pmbus/Kconfig
> > > +++ b/drivers/hwmon/pmbus/Kconfig
> > > @@ -220,6 +220,15 @@ config SENSORS_MP2975
> > >          This driver can also be built as a module. If so, the module will
> > >          be called mp2975.
> > > 
> > > +config SENSORS_PM6764TR
> > > +    tristate "ST PM6764TR"
> > > +    help
> > > +      If you say yes here you get hardware monitoring support for ST
> > > +      PM6764TR.
> > > +
> > > +      This driver can also be built as a module. If so, the module will
> > > +      be called pm6764tr.
> > > +
> > >    config SENSORS_PXE1610
> > >        tristate "Infineon PXE1610"
> > >        help
> > > diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile
> > > index 4c97ad0bd791..31ebdef5d4a6 100644
> > > --- a/drivers/hwmon/pmbus/Makefile
> > > +++ b/drivers/hwmon/pmbus/Makefile
> > > @@ -25,6 +25,7 @@ obj-$(CONFIG_SENSORS_MAX31785)    += max31785.o
> > >    obj-$(CONFIG_SENSORS_MAX34440)    += max34440.o
> > >    obj-$(CONFIG_SENSORS_MAX8688)    += max8688.o
> > >    obj-$(CONFIG_SENSORS_MP2975)    += mp2975.o
> > > +obj-$(CONFIG_SENSORS_PM6764TR)    += pm6764tr.o
> > >    obj-$(CONFIG_SENSORS_PXE1610)    += pxe1610.o
> > >    obj-$(CONFIG_SENSORS_TPS40422)    += tps40422.o
> > >    obj-$(CONFIG_SENSORS_TPS53679)    += tps53679.o
> > > diff --git a/drivers/hwmon/pmbus/pm6764tr.c b/drivers/hwmon/pmbus/pm6764tr.c
> > > new file mode 100644
> > > index 000000000000..2ab68036bb0c
> > > --- /dev/null
> > > +++ b/drivers/hwmon/pmbus/pm6764tr.c
> > > @@ -0,0 +1,78 @@
> > > +// SPDX-License-Identifier: GPL-2.0+
> > > +/*
> > > + * Hardware monitoring driver for STMicroelectronics digital controller
> > > PM6764TR
> > > + */
> > > +
> > > +#include <linux/err.h>
> > > +#include <linux/i2c.h>
> > > +#include <linux/init.h>
> > > +#include <linux/kernel.h>
> > > +#include <linux/module.h>
> > > +#include <linux/mutex.h>
> > > +#include <linux/pmbus.h>
> > > +#include <linux/slab.h>
> > > +#include "pmbus.h"
> > > +
> > > +#define PM6764TR_PMBUS_READ_VOUT    0xD4
> > > +
> > > +static int pm6764tr_read_word_data(struct i2c_client *client, int page,
> > > int reg)
> > > +{
> > > +    int ret;
> > > +
> > > +    switch (reg) {
> > > +    case PMBUS_VIRT_READ_VMON:
> > > +        ret = pmbus_read_word_data(client, page, PM6764TR_PMBUS_READ_VOUT);
> > > +        break;
> > > +    default:
> > > +        ret = -ENODATA;
> > > +        break;
> > > +    }
> > > +    return ret;
> > > +}
> > > +
> > > +static struct pmbus_driver_info pm6764tr_info = {
> > > +    .pages = 1,
> > > +    .format[PSC_VOLTAGE_IN] = linear,
> > > +    .format[PSC_VOLTAGE_OUT] = vid,
> > > +    .format[PSC_TEMPERATURE] = linear,
> > > +    .format[PSC_CURRENT_OUT] = linear,
> > > +    .format[PSC_POWER] = linear,
> > > +    .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_IIN |  PMBUS_HAVE_PIN |
> > > +        PMBUS_HAVE_IOUT | PMBUS_HAVE_POUT | PMBUS_HAVE_VMON |
> > > +        PMBUS_HAVE_STATUS_IOUT | PMBUS_HAVE_STATUS_VOUT |
> > > +        PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP,
> > > +    .read_word_data = pm6764tr_read_word_data,
> > > +};
> > > +
> > > +static int pm6764tr_probe(struct i2c_client *client,
> > > +              const struct i2c_device_id *id)
> > > +{
> > > +    return pmbus_do_probe(client, id, &pm6764tr_info);
> > > +}
> > > +
> > > +static const struct i2c_device_id pm6764tr_id[] = {
> > > +    {"pm6764tr", 0},
> > > +    {}
> > > +};
> > > +MODULE_DEVICE_TABLE(i2c, pm6764tr_id);
> > > +
> > > +static const struct of_device_id pm6764tr_of_match[] = {
> > > +    {.compatible = "pm6764tr"},
> > > +    {}
> > > +};
> > > +
> > > +/* This is the driver that will be inserted */
> > > +static struct i2c_driver pm6764tr_driver = {
> > > +    .driver = {
> > > +           .name = "pm6764tr",
> > > +           .of_match_table = of_match_ptr(pm6764tr_of_match),
> > > +           },
> > > +    .probe_new = pm6764tr_probe,
> > > +    .id_table = pm6764tr_id,
> > > +};
> > > +
> > > +module_i2c_driver(pm6764tr_driver);
> > > +
> > > +MODULE_AUTHOR("Charles Hsu");
> 
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-11-26  1:29 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-11  7:10 [PATCH v4] hwmon: Add driver for STMicroelectronics PM6764 Voltage Regulator Charles
     [not found] ` <20201122153618.GA21246@roeck-us.net>
2020-11-26  0:50   ` Charles
2020-11-26  1:29     ` Guenter Roeck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).