Re: [PATCH 1/2] dt-bindings: hwmon: Introduce ADS71x8

From: Conor Dooley
Date: Fri Aug 30 2024 - 09:14:36 EST


Hey Tobias, Guenter, Jonathan,

On Fri, Aug 30, 2024 at 11:49:53AM +0000, Sperling, Tobias wrote:
> From b2e04ce5500faf274654be5284be9db4f3abefce Mon Sep 17 00:00:00 2001
> From: Tobias Sperling <tobias.sperling@xxxxxxxxxxx>
> Date: Fri, 23 Aug 2024 12:08:33 +0200
> Subject: [PATCH 1/2] dt-bindings: hwmon: Introduce ADS71x8
>
> Add documentation for the driver of ADS7128 and ADS7138 12-bit, 8-channel
> analog-to-digital converters. These ADCs have a wide operating range and
> a wide feature set. Communication is based on an I2C interface.
> The driver provides the functionality of manually reading single channels
> or sequentially reading all channels automatically.
>
> Signed-off-by: Tobias Sperling <tobias.sperling@xxxxxxxxxxx>
> ---
> .../devicetree/bindings/hwmon/ti,ads71x8.yaml | 85 +++++++++++

If this is a "generic" adc, why is it going into hwmon?
I would have expected this to be in iio/adc, and use more typical adc
bindings, even if the driver is in hwmon.

Guenter/Jonathan wdyt?

> Documentation/hwmon/ads71x8.rst | 140 ++++++++++++++++++
> Documentation/hwmon/index.rst | 1 +

And these two documents are not dt-bindings, so they should either be in
their own commit or alongside the driver. Not sure how Guenter likes
things.

> 3 files changed, 226 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/hwmon/ti,ads71x8.yaml

> create mode 100644 Documentation/hwmon/ads71x8.rst
>
> diff --git a/Documentation/devicetree/bindings/hwmon/ti,ads71x8.yaml b/Documentation/devicetree/bindings/hwmon/ti,ads71x8.yaml
> new file mode 100644
> index 000000000000..e422c4ebd207
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/ti,ads71x8.yaml

Please make the filename match a compatible.

> @@ -0,0 +1,85 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +
> +$id: http://devicetree.org/schemas/hwmon/ti,ads71x8.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Texas Instruments ADS7128/ADS7138 Analog to Digital Converter (ADC)
> +
> +maintainers:
> + - None

Nice trick..

> +description: |
> + The ADS7128 is 12-Bit, 8-Channel Sampling Analog to Digital Converter (ADC)
> + with an I2C interface.
> +
> + Datasheets:
> + https://www.ti.com/product/ADS7128
> + https://www.ti.com/product/ADS7138
> +
> +properties:
> + compatible:
> + enum:
> + - ti,ads7128
> + - ti,ads7138
> +
> + reg:
> + maxItems: 1
> +
> + avdd-supply:

There's also a dvdd on the ads7128.

> + description:
> + The regulator used as analog supply voltage as well as reference voltage.
> +
> + ti,mode:
> + $ref: /schemas/types.yaml#/definitions/uint8
> + description: |
> + Operation mode
> + Mode 0 - Manual mode. A channel is only sampled when the according input
> + in the sysfs is read.
> + Mode 1 - Auto mode. All channels are automatically sampled sequentially.
> + Reading an input returns the last valid sample. In this mode further
> + features like statistics and interrupts are available.
> + default: 0

I don't think this ti,mode property is suitable for bindings. sysfs is a
linux implementation detail, when to do sampling is an implementation
detail of your driver. Bindings are only supposed to describe properties
of the hardware, not set software policy.

> +
> + ti,interval:
> + $ref: /schemas/types.yaml#/definitions/uint16
> + description: |
> + Only considered in mode 1!
> + Interval in microseconds a new sample is triggered. Is set to closest
> + possible interval, see datasheet.

For iio devices, this is usually set from userspace, not from
devicetree, because it is usually not a hardware property, but rather
something a user may want to change at runtime.

> + default: 1
> +
> + interrupts:
> + description: |
> + Only considered in mode 1!
> + Interrupt specifier the device's ALERT pin is connected to. Level must be
> + IRQ_TYPE_LEVEL_LOW. If not configured the digital window comparator (DWC)
> + is not available.
> + maxItems: 1

You've got 8 channels on the device, so I would be expecting to see
these described here, with a reference to adc.yaml, even if the only
suitable property is "label".

> +
> +required:
> + - compatible
> + - reg
> + - avdd-supply
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/interrupt-controller/irq.h>
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + ads7138@10 {

This should just be "dac@".

> + compatible = "ti,ads7138";
> + reg = <0x10>;
> + avdd-supply = <&reg_stb_3v3>;
> + ti,mode = /bits/ 8 <1>;
> + ti,interval = /bits/ 16 <1000>;
> + interrupt-parent = <&gpio2>;
> + interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
> + status = "okay";
> + };
> + };
oCheers,
Conor.

Attachment: signature.asc
Description: PGP signature