Skip to content
112 changes: 112 additions & 0 deletions Documentation/devicetree/bindings/iio/adc/adi,hmcad15xx.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright 2025 Analog Devices Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/adi,hmcad15xx.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Analog Devices HMCAD15xx High-Speed ADC

maintainers:
- Paul Pop <paul.pop@analog.com>

description: |
The HMCAD1511 and HMCAD1520 are high-speed analog-to-digital converters
with LVDS outputs. The HMCAD1511 is a 12-bit ADC supporting up to 1 GSPS
in single-channel mode. The HMCAD1520 is a 14-bit ADC supporting up to
105 MSPS in quad-channel precision mode.

Both devices support flexible channel configurations:
- Single channel: highest sample rate
- Dual channel: half sample rate per channel
- Quad channel: quarter sample rate per channel

The driver supports 8-bit, 12-bit, and 14-bit resolution modes with
appropriate LVDS output configurations.

https://www.ti.com/product/HMCAD1511
https://www.ti.com/product/HMCAD1520

properties:
compatible:
const: adi,hmcad15xx

reg:
maxItems: 1

clocks:
maxItems: 1
description:
ADC input clock. Maximum frequency depends on resolution and channel
configuration.

clock-names:
const: clk

reset-gpios:
maxItems: 1
description:
Active low GPIO for hardware reset.

pd-gpios:
maxItems: 1
description:
Active high GPIO for power down control.

adi,num-channels:
$ref: /schemas/types.yaml#/definitions/uint32
enum: [1, 2, 4]
default: 1
description:
Number of ADC channels to enable. Affects sample rate per channel.

adi,resolution:
$ref: /schemas/types.yaml#/definitions/uint32
enum: [8, 12, 14]
default: 8
description: |
ADC resolution in bits.
8-bit: High-speed mode, up to 1000/500/250 MSPS for 1/2/4 channels
12-bit: Mid-speed mode, up to 660/330/165 MSPS for 1/2/4 channels
14-bit: Precision mode, dual 8-bit LVDS, up to 105 MSPS

adi,pol-mask:
$ref: /schemas/types.yaml#/definitions/uint32
default: 0
description:
8-bit polarity mask for LVDS data lanes. Each bit controls the
polarity inversion of one LVDS lane. Used to compensate for PCB
routing constraints.

allOf:
- $ref: /schemas/spi/spi-peripheral-props.yaml#

required:
- compatible
- reg
- clocks
- clock-names

unevaluatedProperties: false

examples:
- |
#include <dt-bindings/gpio/gpio.h>

spi {
#address-cells = <1>;
#size-cells = <0>;

adc@0 {
compatible = "adi,hmcad15xx";
reg = <0>;
clocks = <&adc_clk>;
clock-names = "clk";
reset-gpios = <&gpio0 87 GPIO_ACTIVE_LOW>;
pd-gpios = <&gpio0 86 GPIO_ACTIVE_HIGH>;
adi,num-channels = <1>;
adi,resolution = <12>;
adi,pol-mask = <239>;
};
};
...
8 changes: 8 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -10549,6 +10549,14 @@ F: lib/test_hmm*
F: mm/hmm*
F: tools/testing/selftests/mm/*hmm*

HMCAD15XX IIO ADC DRIVER
M: Paul Pop <paul.pop@analog.com>
L: linux-iio@vger.kernel.org
S: Supported
W: https://ez.analog.com/linux-software-drivers
F: Documentation/devicetree/bindings/iio/adc/adi,hmcad15xx.yaml
F: drivers/iio/adc/hmcad15xx.c

HONEYWELL HSC030PA PRESSURE SENSOR SERIES IIO DRIVER
M: Petre Rodan <petre.rodan@subdimension.ro>
L: linux-iio@vger.kernel.org
Expand Down
1 change: 1 addition & 0 deletions drivers/iio/Kconfig.adi
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ config IIO_ALL_ADI_DRIVERS
imply AD8366
imply ADA4250
imply HMC425
imply HMCAD15XX
imply AD5270
imply AD5360
imply AD5380
Expand Down
15 changes: 15 additions & 0 deletions drivers/iio/adc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -902,6 +902,21 @@ config FSL_MX25_ADC
Generic Conversion Queue driver used for general purpose ADC in the
MX25. This driver supports single measurements using the MX25 ADC.

config HMCAD15XX
tristate "Analog Devices HMCAD15XX ADC"
depends on SPI
select CF_AXI_ADC
help
Say yes here to build support for Analog Devices HMCAD1511 and
HMCAD1520 high-speed analog-to-digital converters with LVDS outputs.
The HMCAD1511 is a 12-bit ADC supporting up to 1 GSPS in single-channel
mode. The HMCAD1520 is a 14-bit ADC supporting up to 105 MSPS in
quad-channel precision mode. Both devices support flexible 1/2/4
channel configurations with 8-bit, 12-bit, or 14-bit resolution modes.

To compile this driver as a module, choose M here: the module will
be called hmcad15xx.

config HI8435
tristate "Holt Integrated Circuits HI-8435 threshold detector"
select IIO_TRIGGERED_EVENT
Expand Down
1 change: 1 addition & 0 deletions drivers/iio/adc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ obj-$(CONFIG_ENVELOPE_DETECTOR) += envelope-detector.o
obj-$(CONFIG_EP93XX_ADC) += ep93xx_adc.o
obj-$(CONFIG_EXYNOS_ADC) += exynos_adc.o
obj-$(CONFIG_FSL_MX25_ADC) += fsl-imx25-gcq.o
obj-$(CONFIG_HMCAD15XX) += hmcad15xx.o
obj-$(CONFIG_HI8435) += hi8435.o
obj-$(CONFIG_HX711) += hx711.o
obj-$(CONFIG_IMX7D_ADC) += imx7d_adc.o
Expand Down
3 changes: 3 additions & 0 deletions drivers/iio/adc/cf_axi_adc.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@
#define ADI_DRP_RDATA(x) (((x) & 0xFFFF) << 0)
#define ADI_TO_DRP_RDATA(x) (((x) >> 0) & 0xFFFF)

#define ADI_REG_ADC_CONFIG_WR 0x0080
#define ADI_REG_ADC_CONFIG_RD 0x0084

#define ADI_REG_DMA_STATUS 0x0088
#define ADI_DMA_OVF (1 << 2)
#define ADI_DMA_UNF (1 << 1)
Expand Down
Loading