# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/iio/adc/microchip,mcp3564.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Microchip MCP346X and MCP356X ADC Family maintainers: - Marius Cristea description: | Bindings for the Microchip family of 153.6 ksps, Low-Noise 16/24-Bit Delta-Sigma ADCs with an SPI interface. Datasheet can be found here: Datasheet for MCP3561, MCP3562, MCP3564 can be found here: https://ww1.microchip.com/downloads/aemDocuments/documents/MSLD/ProductDocuments/DataSheets/MCP3561-2-4-Family-Data-Sheet-DS20006181C.pdf Datasheet for MCP3561R, MCP3562R, MCP3564R can be found here: https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP3561_2_4R-Data-Sheet-DS200006391C.pdf Datasheet for MCP3461, MCP3462, MCP3464 can be found here: https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP3461-2-4-Two-Four-Eight-Channel-153.6-ksps-Low-Noise-16-Bit-Delta-Sigma-ADC-Data-Sheet-20006180D.pdf Datasheet for MCP3461R, MCP3462R, MCP3464R can be found here: https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP3461-2-4R-Family-Data-Sheet-DS20006404C.pdf properties: compatible: enum: - microchip,mcp3461 - microchip,mcp3462 - microchip,mcp3464 - microchip,mcp3461r - microchip,mcp3462r - microchip,mcp3464r - microchip,mcp3561 - microchip,mcp3562 - microchip,mcp3564 - microchip,mcp3561r - microchip,mcp3562r - microchip,mcp3564r reg: maxItems: 1 spi-max-frequency: maximum: 20000000 spi-cpha: true spi-cpol: true vdd-supply: true avdd-supply: true clocks: description: Phandle and clock identifier for external sampling clock. If not specified, the internal crystal oscillator will be used. maxItems: 1 interrupts: description: IRQ line of the ADC maxItems: 1 drive-open-drain: description: Whether to drive the IRQ signal as push-pull (default) or open-drain. Note that the device requires this pin to become "high", otherwise it will stop converting. type: boolean vref-supply: description: Some devices have a specific reference voltage supplied on a different pin to the other supplies. Needed to be able to establish channel scaling unless there is also an internal reference available (e.g. mcp3564r). In case of "r" devices (e. g. mcp3564r), if it does not exists the internal reference will be used. microchip,hw-device-address: $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0 maximum: 3 description: The address is set on a per-device basis by fuses in the factory, configured on request. If not requested, the fuses are set for 0x1. The device address is part of the device markings to avoid potential confusion. This address is coded on two bits, so four possible addresses are available when multiple devices are present on the same SPI bus with only one Chip Select line for all devices. Each device communication starts by a CS falling edge, followed by the clocking of the device address (BITS[7:6] - top two bits of COMMAND BYTE which is first one on the wire). "#io-channel-cells": const: 1 "#address-cells": const: 1 "#size-cells": const: 0 patternProperties: "^channel@([0-9]|([1-7][0-9]))$": $ref: adc.yaml type: object unevaluatedProperties: false description: Represents the external channels which are connected to the ADC. properties: reg: description: The channel number in single-ended and differential mode. minimum: 0 maximum: 79 required: - reg dependencies: spi-cpol: [ spi-cpha ] spi-cpha: [ spi-cpol ] required: - compatible - reg - microchip,hw-device-address - spi-max-frequency allOf: - $ref: /schemas/spi/spi-peripheral-props.yaml# - # External vref, no internal reference if: properties: compatible: contains: enum: - microchip,mcp3461 - microchip,mcp3462 - microchip,mcp3464 - microchip,mcp3561 - microchip,mcp3562 - microchip,mcp3564 then: required: - vref-supply unevaluatedProperties: false examples: - | spi { #address-cells = <1>; #size-cells = <0>; adc@0 { compatible = "microchip,mcp3564r"; reg = <0>; vref-supply = <&vref_reg>; spi-cpha; spi-cpol; spi-max-frequency = <10000000>; microchip,hw-device-address = <1>; #address-cells = <1>; #size-cells = <0>; channel@0 { /* CH0 to AGND */ reg = <0>; label = "CH0"; }; channel@1 { /* CH1 to AGND */ reg = <1>; label = "CH1"; }; /* diff-channels */ channel@11 { reg = <11>; /* CN0, CN1 */ diff-channels = <0 1>; label = "CH0_CH1"; }; channel@22 { reg = <0x22>; /* CN1, CN2 */ diff-channels = <1 2>; label = "CH1_CH3"; }; channel@23 { reg = <0x23>; /* CN1, CN3 */ diff-channels = <1 3>; label = "CH1_CH3"; }; }; }; ...