public inbox for devicetree@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/11] iio: adc: hx711: add HX710B support
@ 2026-04-29  5:45 Piyush Patle
  2026-04-29  5:45 ` [PATCH v5 01/11] dt-bindings: iio: adc: hx711: clean up existing binding text Piyush Patle
                   ` (11 more replies)
  0 siblings, 12 replies; 23+ messages in thread
From: Piyush Patle @ 2026-04-29  5:45 UTC (permalink / raw)
  To: ak, jic23
  Cc: dlechner, nuno.sa, andy, robh, krzk+dt, conor+dt, linux-iio,
	devicetree, linux-kernel

Add support for the AVIA HX710B ADC, a HX711-compatible converter with
the same GPIO interface but a different channel-selection model and a
fixed gain of 128.

Compared to v4, this series is split more finely to match the review
boundaries requested during review rather than because the feature
itself grew materially:

- the DT binding work is now split into cleanup of the existing HX711
  binding, HX711-only VSUP documentation, HX711-only RATE GPIO
  documentation, and the HX710B binding addition
- the driver refactoring is now split further so the trailing-pulse
  parameterization, loop-iterator cleanup, and hx711_reset() declaration
  cleanup all stand alone
- the Kconfig help text, file header, and MODULE_DESCRIPTION updates now
  sit adjacent to the final HX710B support patch instead of appearing in
  the middle of the refactor sequence

The resulting series is longer than v4, but each patch is narrower and
maps more directly to the requested review boundaries.

Tested on PocketBeagle2 with an HX710B breakout module. The device
probed successfully, all three channels returned stable raw readings,
and alternating reads confirmed channel switching between the
differential input and the DVDD-AVDD supply monitor path.

Build-tested with:
- make -s W=1 drivers/iio/adc/hx711.o
- make -s dt_binding_check \
  DT_SCHEMA_FILES=Documentation/devicetree/bindings/iio/adc/avia-hx711.yaml
- pahole -C hx711_chip_info drivers/iio/adc/hx711.o

pahole reports hx711_chip_info as 40 bytes with no internal holes. The
remaining 7 bytes are tail padding from 8-byte pointer alignment.

Changes in v5:
- Split the old combined DT binding patch into four patches as requested
  by Jonathan Cameron:
  existing HX711 text cleanup, VSUP, RATE GPIO, and HX710B support.
- Keep the HX710B binding patch limited to the new variant-specific
  properties and constraints.
- Require explicit vref-supply for HX710B nodes and use a single
  if/then/else schema block for the HX710B versus HX711 constraints.
- Split the trailing-pulse refactor from the hx711_read() loop-iterator
  cleanup.
- Add a standalone preparatory hx711_reset() variable-assignment cleanup
  patch as requested.
- Move linux/array_size.h and linux/dev_printk.h to the chip_info patch,
  and move linux/types.h to the final HX710B support patch where it is
  first needed.
- Fold the Kconfig help text, file header, and MODULE_DESCRIPTION
  updates into the final HX710B support patch so they stay adjacent to
  the new hardware support change.
- Keep patch 10 as a standalone preparatory cleanup because Andy
  Shevchenko explicitly asked for the hx711_reset() declaration and
  assignment split before the later HX710B change adds another local
  variable there.
- Add the preparatory rationale to the hx711_chip_info commit message
  and use "missing driver data" for the NULL match-data guard.
- Do not carry the earlier DT Reviewed-by tag because the binding
  changed materially again in v5.

Changes in v4:
- Fix the pre-existing global scale mutation bug (new patch 2 in v4,
  now patch 5).
- Split the v3 driver refactor into smaller independent patches as
  requested during review.
- Keep hx711_chip_info fields in their final order from introduction so
  the HX710B patch only appends new fields without reordering existing
  ones.
- Add vref-supply binding and driver support for the HX710B VREF pin.
- Add a third HX710B channel (27 pulses, differential 40 SPS) from
  Table 3 of the datasheet.
- Use .channel = 2 for the supply monitor to avoid clashing with
  .channel2 = 1 of the differential pair.
- Remove dvdd-supply from the HX710B forbidden list in the binding.
- Add the NULL guard on device_get_match_data().
- Fix checkpatch alignment in multi-line hx711_read() calls.

Changes in v3:
- Split the hx711_chip_info refactor from the HX710B feature patch.
- Fix signedness and update channel_set only after successful channel
  switching.
- Keep HX710B scale based on the documented fixed gain of 128.
- Add direct ARRAY_SIZE/types includes where needed and use pahole to
  verify hx711_chip_info layout.
- Rework Kconfig/header/module description wording for compatible ADCs.
- DT binding: restore the example node name to weight, drop the extra
  HX710B example used earlier, and avoid repeating the clock-frequency
  default text.

Changes in v2:
- DT binding: add dvdd-supply, vsup-supply, and rate-gpios; clarify
  clock-frequency as SCK bit-bang timing; remove the dead vendor URL.
- Driver: fix the HX710B pulse-count bug ({25,26}->{1,2} trailing
  pulses), move pulse counts to chan->address, add fixed-gain support,
  and pass iio_chan_spec * directly where needed.

Piyush Patle (11):
  dt-bindings: iio: adc: hx711: clean up existing binding text
  dt-bindings: iio: adc: hx711: add VSUP supply property
  dt-bindings: iio: adc: hx711: add RATE GPIO property
  dt-bindings: iio: adc: hx711: add HX710B support
  iio: adc: hx711: move scale computation to per-device storage
  iio: adc: hx711: introduce hx711_chip_info structure
  iio: adc: hx711: pass trailing pulse count into hx711_read
  iio: adc: hx711: localize loop iterators in hx711_read
  iio: adc: hx711: pass iio_chan_spec to hx711_reset_read
  iio: adc: hx711: split hx711_reset variable assignment
  iio: adc: hx711: add support for HX710B

 .../bindings/iio/adc/avia-hx711.yaml          |  77 ++++-
 drivers/iio/adc/Kconfig                       |   8 +-
 drivers/iio/adc/hx711.c                       | 296 ++++++++++++++----
 3 files changed, 305 insertions(+), 76 deletions(-)

-- 
2.43.0

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

end of thread, other threads:[~2026-05-04 15:56 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-29  5:45 [PATCH v5 0/11] iio: adc: hx711: add HX710B support Piyush Patle
2026-04-29  5:45 ` [PATCH v5 01/11] dt-bindings: iio: adc: hx711: clean up existing binding text Piyush Patle
2026-04-29  5:45 ` [PATCH v5 02/11] dt-bindings: iio: adc: hx711: add VSUP supply property Piyush Patle
2026-04-29  5:45 ` [PATCH v5 03/11] dt-bindings: iio: adc: hx711: add RATE GPIO property Piyush Patle
2026-04-29  5:45 ` [PATCH v5 04/11] dt-bindings: iio: adc: hx711: add HX710B support Piyush Patle
2026-04-29  5:45 ` [PATCH v5 05/11] iio: adc: hx711: move scale computation to per-device storage Piyush Patle
2026-04-29 18:41   ` Andy Shevchenko
2026-04-29  5:45 ` [PATCH v5 06/11] iio: adc: hx711: introduce hx711_chip_info structure Piyush Patle
2026-04-29 18:44   ` Andy Shevchenko
2026-04-29  5:45 ` [PATCH v5 07/11] iio: adc: hx711: pass trailing pulse count into hx711_read Piyush Patle
2026-04-29 18:53   ` Andy Shevchenko
2026-04-29  5:45 ` [PATCH v5 08/11] iio: adc: hx711: localize loop iterators in hx711_read Piyush Patle
2026-04-29 15:01   ` Joshua Crofts
2026-04-29 18:51     ` Andy Shevchenko
2026-04-29 18:49   ` Andy Shevchenko
2026-04-29  5:45 ` [PATCH v5 09/11] iio: adc: hx711: pass iio_chan_spec to hx711_reset_read Piyush Patle
2026-04-29 18:54   ` Andy Shevchenko
2026-04-29  5:45 ` [PATCH v5 10/11] iio: adc: hx711: split hx711_reset variable assignment Piyush Patle
2026-04-29 18:55   ` Andy Shevchenko
2026-04-29  5:45 ` [PATCH v5 11/11] iio: adc: hx711: add support for HX710B Piyush Patle
2026-04-29 19:06   ` Andy Shevchenko
2026-05-04 15:56     ` Jonathan Cameron
2026-04-29 19:08 ` [PATCH v5 0/11] iio: adc: hx711: add HX710B support Andy Shevchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox