Re: [PATCH v4 1/7] dt-bindings: iio: adc: avia-hx711: add avia,hx710b compatible

Piyush Patle
2026-04-27T22:36:49Z

On Mon, Apr 27, 2026 at 8:59 PM David Lechner <dlechner@baylibre.com> wrote:
>
> On 4/27/26 5:09 AM, Piyush Patle wrote:
> > The HX710B shares the same two-wire interface as the HX711 but differs
> > in its channel and gain model: gain is fixed at 128 and the number of
> > trailing PD_SCK pulses selects the input channel rather than the gain.
> >
> > Add avia,hx710b to the compatible enum. Document the chip differences
> > in the description and add chip-specific supply properties (dvdd-supply,
> > vsup-supply, vref-supply) and a rate-gpios property for the HX711 RATE
> > pin. Add allOf constraints that forbid HX711-only properties on HX710B
> > nodes and vice versa. Clarify the clock-frequency description to
> > reflect its actual purpose: controlling the SCK bit-bang timing.
>
> Krzysztof gave a Reviewed-by on the last revision [1], so you need to
> include that here or explain why you didn't pick it up. If you just make
> a trivial change, you can still pick it up. In this case though, I think
> that enough changes were made that it is worth having a DT maintainer have
> another look.
>
> https://lore.kernel.org/linux-iio/20260423-famous-tody-of-opposition-73c8af@quoll/
>

I did not carry the Reviewed-by because the binding changed majorly
in v4 (vref-supply added, dvdd-supply removed from the HX710B forbidden
list, new allOf block forbidding vref-supply on HX711).
I should have mentioned that in the cover letter; I’ll do that in v5.

> >
> > Signed-off-by: Piyush Patle <piyushpatle228@gmail.com>
> > ---
> > Changes in v4:
> > - Add vref-supply for the HX710B VREF reference voltage pin.
> > - Remove dvdd-supply from the HX710B forbidden properties list; the
> > HX710B has a DVDD supply and the DVDD-AVDD channel relies on it.
> > - Add allOf block forbidding vref-supply on HX711 nodes.
> > - Add an HX710B example showing vref-supply.
> > - Update description: avoid specific channel-number references in
> > hardware text.
> >
> > Changes in v3:
> > - Drop the vref-supply mention from avdd-supply; no such binding
> > property exists.
> > - Drop the clock-frequency sentence that repeated the schema default.
> > - Restore the example node name to weight.
> > - Remove the separate HX710B example.
> >
> > Changes in v2:
> > - Remove driver implementation details from the description and describe
> > hardware behaviour only.
> > - Drop unrelated punctuation cleanup.
> > - Add dvdd-supply and vsup-supply optional properties for HX711.
> > - Add rate-gpios optional property for the HX711 RATE pin and forbid it
> > on HX710B.
> > - Add the allOf if/then block forbidding HX711-only properties on
> > HX710B nodes.
> > - Clarify clock-frequency as SCK bit-bang timing, not a crystal or
> > external clock input.
> > - Sort compatible enum alphabetically.
> > - Remove redundant example comments.
> > - Update the HX711 example to exercise rate-gpios.
> > ---
> > .../bindings/iio/adc/avia-hx711.yaml | 82 +++++++++++++++----
> > 1 file changed, 67 insertions(+), 15 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/iio/adc/avia-hx711.yaml b/Documentation/devicetree/bindings/iio/adc/avia-hx711.yaml
> > index 9c57eb13f892..fddd296bfaca 100644
> > --- a/Documentation/devicetree/bindings/iio/adc/avia-hx711.yaml
> > +++ b/Documentation/devicetree/bindings/iio/adc/avia-hx711.yaml
> > @@ -4,49 +4,91 @@
> > $id: http://devicetree.org/schemas/iio/adc/avia-hx711.yaml#
> > $schema: http://devicetree.org/meta-schemas/core.yaml#
> >
> > -title: AVIA HX711 ADC chip for weight cells
> > +title: AVIA HX711 and HX710B ADCs
> >
> > maintainers:
> > - Andreas Klinger <ak@it-klinger.de>
> >
> > description: |
> > - Bit-banging driver using two GPIOs:
> > - - sck-gpio gives a clock to the sensor with 24 cycles for data retrieval
> > - and up to 3 cycles for selection of the input channel and gain for the
> > - next measurement
> > - - dout-gpio is the sensor data the sensor responds to the clock
> > + The HX711 is a 24-bit ADC with selectable gain (32/64/128) and two
> > + differential input channels. Channel A supports gain 64 and 128;
> > + channel B supports gain 32.
> >
> > - Specifications about the driver can be found at:
> > - http://www.aviaic.com/ENProducts.aspx
> > + The HX710B is a 24-bit ADC with fixed gain of 128. One input measures
> > + the differential voltage between the two input pins; a second measures
> > + the DVDD-AVDD supply voltage difference for battery level detection.
> >
> > properties:
> > compatible:
> > enum:
> > + - avia,hx710b
> > - avia,hx711
> >
> > sck-gpios:
> > description:
> > - Definition of the GPIO for the clock (output). In the datasheet it is
> > - named PD_SCK
> > + GPIO for the clock output (PD_SCK in the datasheet).
> > maxItems: 1
> >
> > dout-gpios:
> > description:
> > - Definition of the GPIO for the data-out sent by the sensor in
> > - response to the clock (input).
> > - See Documentation/devicetree/bindings/gpio/gpio.txt for information
> > - on how to specify a consumer gpio.
> > + GPIO for the data output from the sensor (DOUT in the datasheet).
> > maxItems: 1
> >
> > avdd-supply:
> > description:
> > - Definition of the regulator used as analog supply
> > + Analog supply voltage (AVDD). Also serves as the voltage reference on
> > + both chips.
> > +
> > + dvdd-supply:
> > + description:
> > + Digital supply voltage (DVDD). For the HX710B, DVDD must be greater
> > + than or equal to AVDD. When DVDD is a battery rail and AVDD is a
> > + regulated supply, one channel monitors the DVDD-AVDD difference for
> > + battery level detection.
> > +
> > + vsup-supply:
> > + description:
> > + Supply voltage for the on-chip regulator (VSUP). HX711 only.
> > +
> > + vref-supply:
> > + description:
> > + Reference voltage input (VREF). HX710B only. When omitted, the driver
> > + assumes VREF is tied to AVDD on the board.
> > +
> > + rate-gpios:
> > + description:
> > + GPIO connected to the RATE pin (HX711 only). When driven low the
> > + output data rate is 10 SPS; when driven high it is 80 SPS. If
> > + omitted the RATE pin state is determined by the board wiring.
> > + maxItems: 1
> >
> > clock-frequency:
> > + description:
> > + Controls the SCK bit-bang timing. The value is used to derive the
> > + delay between SCK edges; keep the SCK high time below 60 us to
> > + avoid triggering chip power-down mode.
> > minimum: 20000
> > maximum: 2500000
> > default: 400000
> >
> > +allOf:
> > + - if:
> > + properties:
> > + compatible:
> > + const: avia,hx710b
> > + then:
> > + properties:
> > + vsup-supply: false
> > + rate-gpios: false
> > +
> > + - if:
>
> Could just be else:
>
> Probably OK either way though.
>
Will switch the second allOf block to `else:` in v5.

> > + properties:
> > + compatible:
> > + const: avia,hx711
> > + then:
> > + properties:
> > + vref-supply: false
> > +
> > required:
> > - compatible
> > - sck-gpios
> > @@ -62,6 +104,16 @@ examples:
> > compatible = "avia,hx711";
> > sck-gpios = <&gpio3 10 GPIO_ACTIVE_HIGH>;
> > dout-gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
> > + rate-gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
> > avdd-supply = <&avdd>;
> > clock-frequency = <100000>;
> > };
> > + - |
> > + #include <dt-bindings/gpio/gpio.h>
> > + weight {
> > + compatible = "avia,hx710b";
> > + sck-gpios = <&gpio3 10 GPIO_ACTIVE_HIGH>;
> > + dout-gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
> > + avdd-supply = <&avdd>;
> > + vref-supply = <&vref>;
> > + };
>