* [PATCH v2 0/2] hwmon: pmbus: adm1266: add support @ 2020-03-25 13:06 alexandru.tachici 2020-03-25 13:06 ` [PATCH v2 1/2] " alexandru.tachici 2020-03-25 13:06 ` [PATCH v2 2/2] dt-bindings: hwmon: Add bindings for ADM1266 alexandru.tachici 0 siblings, 2 replies; 5+ messages in thread From: alexandru.tachici @ 2020-03-25 13:06 UTC (permalink / raw) To: linux-hwmon, linux-kernel, devicetree; +Cc: robh+dt, linux, Alexandru Tachici From: Alexandru Tachici <alexandru.tachici@analog.com> Add pmbus probing driver for the adm1266 Cascadable Super Sequencer with Margin Control and Fault Recording. Alexandru Tachici (2): hwmon: pmbus: adm1266: add support dt-bindings: hwmon: Add bindings for ADM1266 Changelog v1 -> v2: - removed multiple chips id checks as this driver will support only adm1266 - moved pmbus configurations in probe function - removed adm1266_config, adm1266_data, adm1266_block_wr - added adi,connected-adm1266 property to dt bindings .../bindings/hwmon/adi,adm1266.yaml | 57 +++++++++++++++++ Documentation/hwmon/adm1266.rst | 35 +++++++++++ drivers/hwmon/pmbus/Kconfig | 9 +++ drivers/hwmon/pmbus/Makefile | 1 + drivers/hwmon/pmbus/adm1266.c | 62 +++++++++++++++++++ 5 files changed, 164 insertions(+) create mode 100644 Documentation/devicetree/bindings/hwmon/adi,adm1266.yaml create mode 100644 Documentation/hwmon/adm1266.rst create mode 100644 drivers/hwmon/pmbus/adm1266.c -- 2.20.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/2] hwmon: pmbus: adm1266: add support 2020-03-25 13:06 [PATCH v2 0/2] hwmon: pmbus: adm1266: add support alexandru.tachici @ 2020-03-25 13:06 ` alexandru.tachici 2020-03-25 13:58 ` Guenter Roeck 2020-03-25 13:06 ` [PATCH v2 2/2] dt-bindings: hwmon: Add bindings for ADM1266 alexandru.tachici 1 sibling, 1 reply; 5+ messages in thread From: alexandru.tachici @ 2020-03-25 13:06 UTC (permalink / raw) To: linux-hwmon, linux-kernel, devicetree; +Cc: robh+dt, linux, Alexandru Tachici From: Alexandru Tachici <alexandru.tachici@analog.com> Add pmbus probing driver for the adm1266 Cascadable Super Sequencer with Margin Control and Fault Recording. Driver is using the pmbus_core, creating sysfs files under hwmon for inputs: vh1->vh4 and vp1->vp13. Signed-off-by: Alexandru Tachici <alexandru.tachici@analog.com> --- Documentation/hwmon/adm1266.rst | 35 +++++++++++++++++++ drivers/hwmon/pmbus/Kconfig | 9 +++++ drivers/hwmon/pmbus/Makefile | 1 + drivers/hwmon/pmbus/adm1266.c | 62 +++++++++++++++++++++++++++++++++ 4 files changed, 107 insertions(+) create mode 100644 Documentation/hwmon/adm1266.rst create mode 100644 drivers/hwmon/pmbus/adm1266.c diff --git a/Documentation/hwmon/adm1266.rst b/Documentation/hwmon/adm1266.rst new file mode 100644 index 000000000000..65662115750c --- /dev/null +++ b/Documentation/hwmon/adm1266.rst @@ -0,0 +1,35 @@ +Kernel driver adm1266 +===================== + +Supported chips: + * Analog Devices ADM1266 + Prefix: 'adm1266' + Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/ADM1266.pdf + +Author: Alexandru Tachici <alexandru.tachici@analog.com> + + +Description +----------- + +This driver supports hardware monitoring for Analog Devices ADM1266 sequencer. + +ADM1266 is a sequencer that features voltage readback from 17 channels via an +integrated 12 bit SAR ADC, accessed using a PMBus interface. + +The driver is a client driver to the core PMBus driver. Please see +Documentation/hwmon/pmbus for details on PMBus client drivers. + + +Sysfs entries +------------- + +The following attributes are supported. Limits are read-write, history reset +attributes are write-only, all other attributes are read-only. + +inX_label "voutx" +inX_input Measured voltage. +inX_min Minimum Voltage. +inX_max Maximum voltage. +inX_min_alarm Voltage low alarm. +inX_max_alarm Voltage high alarm. diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig index a9ea06204767..3096e46e2212 100644 --- a/drivers/hwmon/pmbus/Kconfig +++ b/drivers/hwmon/pmbus/Kconfig @@ -26,6 +26,15 @@ config SENSORS_PMBUS This driver can also be built as a module. If so, the module will be called pmbus. +config SENSORS_ADM1266 + tristate "Analog Devices ADM1266" + help + If you say yes here you get hardware monitoring support for Analog + Devices ADM1266 Cascadable Super Sequencer. + + This driver can also be built as a module. If so, the module will + be called adm1266. + config SENSORS_ADM1275 tristate "Analog Devices ADM1275 and compatibles" help diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile index 5feb45806123..ed38f6d6f845 100644 --- a/drivers/hwmon/pmbus/Makefile +++ b/drivers/hwmon/pmbus/Makefile @@ -5,6 +5,7 @@ obj-$(CONFIG_PMBUS) += pmbus_core.o obj-$(CONFIG_SENSORS_PMBUS) += pmbus.o +obj-$(CONFIG_SENSORS_ADM1266) += adm1266.o obj-$(CONFIG_SENSORS_ADM1275) += adm1275.o obj-$(CONFIG_SENSORS_BEL_PFE) += bel-pfe.o obj-$(CONFIG_SENSORS_IBM_CFFPS) += ibm-cffps.o diff --git a/drivers/hwmon/pmbus/adm1266.c b/drivers/hwmon/pmbus/adm1266.c new file mode 100644 index 000000000000..c1df21d564f3 --- /dev/null +++ b/drivers/hwmon/pmbus/adm1266.c @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * ADM1266 - Cascadable Super Sequencer with Margin + * Control and Fault Recording + * + * Copyright 2020 Analog Devices Inc. + */ + +#include <linux/i2c.h> +#include <linux/init.h> +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/slab.h> + +#include "pmbus.h" + +static int adm1266_probe(struct i2c_client *client, + const struct i2c_device_id *id) +{ + struct pmbus_driver_info *info; + u32 funcs; + int i; + + info = devm_kzalloc(&client->dev, sizeof(struct pmbus_driver_info), + GFP_KERNEL); + + info->pages = 17; + info->format[PSC_VOLTAGE_OUT] = linear; + funcs = PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT; + for (i = 0; i < info->pages; i++) + info->func[i] = funcs; + + return pmbus_do_probe(client, id, info); +} + +static const struct of_device_id adm1266_of_match[] = { + { .compatible = "adi,adm1266" }, + { }, +}; +MODULE_DEVICE_TABLE(of, adm1266_of_match); + +static const struct i2c_device_id adm1266_id[] = { + { "adm1266", 0 }, + { }, +}; +MODULE_DEVICE_TABLE(i2c, adm1266_id); + +static struct i2c_driver adm1266_driver = { + .driver = { + .name = "adm1266", + .of_match_table = adm1266_of_match, + }, + .probe = adm1266_probe, + .remove = pmbus_do_remove, + .id_table = adm1266_id, +}; + +module_i2c_driver(adm1266_driver); + +MODULE_AUTHOR("Alexandru Tachici <alexandru.tachici@analog.com>"); +MODULE_DESCRIPTION("PMBus driver for Analog Devices ADM1266"); +MODULE_LICENSE("GPL v2"); -- 2.20.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/2] hwmon: pmbus: adm1266: add support 2020-03-25 13:06 ` [PATCH v2 1/2] " alexandru.tachici @ 2020-03-25 13:58 ` Guenter Roeck 0 siblings, 0 replies; 5+ messages in thread From: Guenter Roeck @ 2020-03-25 13:58 UTC (permalink / raw) To: alexandru.tachici, linux-hwmon, linux-kernel, devicetree; +Cc: robh+dt Hi, On 3/25/20 6:06 AM, alexandru.tachici@analog.com wrote: > From: Alexandru Tachici <alexandru.tachici@analog.com> > > Add pmbus probing driver for the adm1266 Cascadable > Super Sequencer with Margin Control and Fault Recording. > Driver is using the pmbus_core, creating sysfs files > under hwmon for inputs: vh1->vh4 and vp1->vp13. > > Signed-off-by: Alexandru Tachici <alexandru.tachici@analog.com> It looks like the driver is reduced to just standard functionality. Can you try just adding the device ID to pmbus.c ? Thanks, Guenter > --- > Documentation/hwmon/adm1266.rst | 35 +++++++++++++++++++ > drivers/hwmon/pmbus/Kconfig | 9 +++++ > drivers/hwmon/pmbus/Makefile | 1 + > drivers/hwmon/pmbus/adm1266.c | 62 +++++++++++++++++++++++++++++++++ > 4 files changed, 107 insertions(+) > create mode 100644 Documentation/hwmon/adm1266.rst > create mode 100644 drivers/hwmon/pmbus/adm1266.c > > diff --git a/Documentation/hwmon/adm1266.rst b/Documentation/hwmon/adm1266.rst > new file mode 100644 > index 000000000000..65662115750c > --- /dev/null > +++ b/Documentation/hwmon/adm1266.rst > @@ -0,0 +1,35 @@ > +Kernel driver adm1266 > +===================== > + > +Supported chips: > + * Analog Devices ADM1266 > + Prefix: 'adm1266' > + Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/ADM1266.pdf > + > +Author: Alexandru Tachici <alexandru.tachici@analog.com> > + > + > +Description > +----------- > + > +This driver supports hardware monitoring for Analog Devices ADM1266 sequencer. > + > +ADM1266 is a sequencer that features voltage readback from 17 channels via an > +integrated 12 bit SAR ADC, accessed using a PMBus interface. > + > +The driver is a client driver to the core PMBus driver. Please see > +Documentation/hwmon/pmbus for details on PMBus client drivers. > + > + > +Sysfs entries > +------------- > + > +The following attributes are supported. Limits are read-write, history reset > +attributes are write-only, all other attributes are read-only. > + > +inX_label "voutx" > +inX_input Measured voltage. > +inX_min Minimum Voltage. > +inX_max Maximum voltage. > +inX_min_alarm Voltage low alarm. > +inX_max_alarm Voltage high alarm. > diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig > index a9ea06204767..3096e46e2212 100644 > --- a/drivers/hwmon/pmbus/Kconfig > +++ b/drivers/hwmon/pmbus/Kconfig > @@ -26,6 +26,15 @@ config SENSORS_PMBUS > This driver can also be built as a module. If so, the module will > be called pmbus. > > +config SENSORS_ADM1266 > + tristate "Analog Devices ADM1266" > + help > + If you say yes here you get hardware monitoring support for Analog > + Devices ADM1266 Cascadable Super Sequencer. > + > + This driver can also be built as a module. If so, the module will > + be called adm1266. > + > config SENSORS_ADM1275 > tristate "Analog Devices ADM1275 and compatibles" > help > diff --git a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile > index 5feb45806123..ed38f6d6f845 100644 > --- a/drivers/hwmon/pmbus/Makefile > +++ b/drivers/hwmon/pmbus/Makefile > @@ -5,6 +5,7 @@ > > obj-$(CONFIG_PMBUS) += pmbus_core.o > obj-$(CONFIG_SENSORS_PMBUS) += pmbus.o > +obj-$(CONFIG_SENSORS_ADM1266) += adm1266.o > obj-$(CONFIG_SENSORS_ADM1275) += adm1275.o > obj-$(CONFIG_SENSORS_BEL_PFE) += bel-pfe.o > obj-$(CONFIG_SENSORS_IBM_CFFPS) += ibm-cffps.o > diff --git a/drivers/hwmon/pmbus/adm1266.c b/drivers/hwmon/pmbus/adm1266.c > new file mode 100644 > index 000000000000..c1df21d564f3 > --- /dev/null > +++ b/drivers/hwmon/pmbus/adm1266.c > @@ -0,0 +1,62 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * ADM1266 - Cascadable Super Sequencer with Margin > + * Control and Fault Recording > + * > + * Copyright 2020 Analog Devices Inc. > + */ > + > +#include <linux/i2c.h> > +#include <linux/init.h> > +#include <linux/kernel.h> > +#include <linux/module.h> > +#include <linux/slab.h> > + > +#include "pmbus.h" > + > +static int adm1266_probe(struct i2c_client *client, > + const struct i2c_device_id *id) > +{ > + struct pmbus_driver_info *info; > + u32 funcs; > + int i; > + > + info = devm_kzalloc(&client->dev, sizeof(struct pmbus_driver_info), > + GFP_KERNEL); > + > + info->pages = 17; > + info->format[PSC_VOLTAGE_OUT] = linear; > + funcs = PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT; > + for (i = 0; i < info->pages; i++) > + info->func[i] = funcs; > + > + return pmbus_do_probe(client, id, info); > +} > + > +static const struct of_device_id adm1266_of_match[] = { > + { .compatible = "adi,adm1266" }, > + { }, > +}; > +MODULE_DEVICE_TABLE(of, adm1266_of_match); > + > +static const struct i2c_device_id adm1266_id[] = { > + { "adm1266", 0 }, > + { }, > +}; > +MODULE_DEVICE_TABLE(i2c, adm1266_id); > + > +static struct i2c_driver adm1266_driver = { > + .driver = { > + .name = "adm1266", > + .of_match_table = adm1266_of_match, > + }, > + .probe = adm1266_probe, > + .remove = pmbus_do_remove, > + .id_table = adm1266_id, > +}; > + > +module_i2c_driver(adm1266_driver); > + > +MODULE_AUTHOR("Alexandru Tachici <alexandru.tachici@analog.com>"); > +MODULE_DESCRIPTION("PMBus driver for Analog Devices ADM1266"); > +MODULE_LICENSE("GPL v2"); > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 2/2] dt-bindings: hwmon: Add bindings for ADM1266 2020-03-25 13:06 [PATCH v2 0/2] hwmon: pmbus: adm1266: add support alexandru.tachici 2020-03-25 13:06 ` [PATCH v2 1/2] " alexandru.tachici @ 2020-03-25 13:06 ` alexandru.tachici 2020-03-31 21:49 ` Rob Herring 1 sibling, 1 reply; 5+ messages in thread From: alexandru.tachici @ 2020-03-25 13:06 UTC (permalink / raw) To: linux-hwmon, linux-kernel, devicetree; +Cc: robh+dt, linux, Alexandru Tachici From: Alexandru Tachici <alexandru.tachici@analog.com> Add bindings for the Analog Devices ADM1266 sequencer. Signed-off-by: Alexandru Tachici <alexandru.tachici@analog.com> --- .../bindings/hwmon/adi,adm1266.yaml | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Documentation/devicetree/bindings/hwmon/adi,adm1266.yaml diff --git a/Documentation/devicetree/bindings/hwmon/adi,adm1266.yaml b/Documentation/devicetree/bindings/hwmon/adi,adm1266.yaml new file mode 100644 index 000000000000..157ec15ccfe1 --- /dev/null +++ b/Documentation/devicetree/bindings/hwmon/adi,adm1266.yaml @@ -0,0 +1,57 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/hwmon/adi,adm1266.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Analog Devices ADM1266 Cascadable Super Sequencer with Margin + Control and Fault Recording + +maintainers: + - Alexandru Tachici <alexandru.tachici@analog.com> + +description: | + Analog Devices ADM1266 Cascadable Super Sequencer with Margin + Control and Fault Recording. + https://www.analog.com/media/en/technical-documentation/data-sheets/ADM1266.pdf + +properties: + compatible: + enum: + - adi,adm1266 + + reg: + description: | + I2C address of slave device. + items: + minimum: 0x40 + maximum: 0x4F + + avcc-supply: + description: + Phandle to the Avcc power supply. + + adi,connected-adm1266: + description: | + Represents other ADM1266 devices cascaded through the IDB. Can be + cascaded with maximum 15 other adm1266s. + $ref: "/schemas/types.yaml#/definitions/phandle" + +required: + - compatible + - reg + +examples: + - | + i2c0 { + #address-cells = <1>; + #size-cells = <0>; + + adm1266@40 { + compatible = "adi,adm1266"; + reg = <0x40>; + #address-cells = <1>; + #size-cells = <0>; + }; + }; +... -- 2.20.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 2/2] dt-bindings: hwmon: Add bindings for ADM1266 2020-03-25 13:06 ` [PATCH v2 2/2] dt-bindings: hwmon: Add bindings for ADM1266 alexandru.tachici @ 2020-03-31 21:49 ` Rob Herring 0 siblings, 0 replies; 5+ messages in thread From: Rob Herring @ 2020-03-31 21:49 UTC (permalink / raw) To: alexandru.tachici Cc: linux-hwmon, linux-kernel, devicetree, robh+dt, linux, Alexandru Tachici On Wed, 25 Mar 2020 15:06:05 +0200, <alexandru.tachici@analog.com> wrote: > From: Alexandru Tachici <alexandru.tachici@analog.com> > > Add bindings for the Analog Devices ADM1266 sequencer. > > Signed-off-by: Alexandru Tachici <alexandru.tachici@analog.com> > --- > .../bindings/hwmon/adi,adm1266.yaml | 57 +++++++++++++++++++ > 1 file changed, 57 insertions(+) > create mode 100644 Documentation/devicetree/bindings/hwmon/adi,adm1266.yaml > Reviewed-by: Rob Herring <robh@kernel.org> ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-03-31 21:49 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-03-25 13:06 [PATCH v2 0/2] hwmon: pmbus: adm1266: add support alexandru.tachici 2020-03-25 13:06 ` [PATCH v2 1/2] " alexandru.tachici 2020-03-25 13:58 ` Guenter Roeck 2020-03-25 13:06 ` [PATCH v2 2/2] dt-bindings: hwmon: Add bindings for ADM1266 alexandru.tachici 2020-03-31 21:49 ` Rob Herring
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).