diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad5940.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad5940.yaml
new file mode 100644
index 000000000000..f7f034fdd8ec
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/adc/adi,ad5940.yaml
@@ -0,0 +1,240 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright 2019 Analog Devices Inc.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/bindings/iio/adc/adi,ad5940.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices AD5940 Device Tree Bindings
+
+maintainers:
+  - Song Qiang <songqiang1304521@gmail.com>
+
+description: |
+  Analog Devices AD5940 High Precision, Impedance, and Electrochemical Front End.
+    https://www.analog.com/media/en/technical-documentation/data-sheets/AD5940.pdf
+
+properties:
+  compatible:
+    enum:
+      - adi,ad5940
+
+  reg:
+    maxItems: 1
+
+  vref-supply:
+    description:
+      The regulator to be used to supply the reference voltage.
+    maxItems: 1
+
+  adi,interrupt-io:
+    description:
+      Output GPIO index of interrupt controller of AD5940.
+    maxItems: 1
+    allOf:
+      - $ref: /schemas/types.yaml#/definitions/uint32
+      - enum: [0, 3, 6, 7]
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - adi,interrupt-io
+
+patternProperties:
+  # 'channel@0-255'
+  "^channel@([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$":
+    type: object
+    description: |
+      Represents the external channels which are connected to the ADC.
+      See Documentation/devicetree/bindings/iio/adc/adc.txt.
+    properties:
+      reg:
+        description:
+          Index of this channel, must be starting from 0.
+        maxItems: 1
+
+      diff-channels:
+        description:
+          Positive input and negtive input of the ADC buffer of this channel.
+          Input candidates are defined in include/dt-bindings/iio/adc/adi,ad5940.h.
+        minItems: 2
+        maxItems: 2
+        items:
+          - description: Positive input channel
+          - enum:
+            - AD5940_ADC_INPUTP_EXCITATION
+            - AD5940_ADC_INPUTP_FLOATING
+            - AD5940_ADC_INPUTP_HSTIA
+            - AD5940_ADC_INPUTP_LPTIA_LP
+            - AD5940_ADC_INPUTP_AIN0
+            - AD5940_ADC_INPUTP_AIN1
+            - AD5940_ADC_INPUTP_AIN2
+            - AD5940_ADC_INPUTP_AIN3
+            - AD5940_ADC_INPUTP_AVDD_2
+            - AD5940_ADC_INPUTP_DVDD_2
+            - AD5940_ADC_INPUTP_AVDD_REG_2
+            - AD5940_ADC_INPUTP_TEMP
+            - AD5940_ADC_INPUTP_VBIAS_CAP
+            - AD5940_ADC_INPUTP_DE0
+            - AD5940_ADC_INPUTP_SE0
+            - AD5940_ADC_INPUTP_VREF_2V5_2
+            - AD5940_ADC_INPUTP_VREF_1V82
+            - AD5940_ADC_INPUTP_P_TEMP_N
+            - AD5940_ADC_INPUTP_AIN4
+            - AD5940_ADC_INPUTP_AIN6
+            - AD5940_ADC_INPUTP_VZERO
+            - AD5940_ADC_INPUTP_VBIAS0
+            - AD5940_ADC_INPUTP_VCE0
+            - AD5940_ADC_INPUTP_VRE0
+            - AD5940_ADC_INPUTP_VCE0_2
+            - AD5940_ADC_INPUTP_LPTIA
+            - AD5940_ADC_INPUTP_AGND_REF
+
+          - description: Negtive input channel
+          - enum:
+              # Negtive input candidates
+              - AD5940_ADC_INPUTN_FLOATING
+              - AD5940_ADC_INPUTN_HSTIA
+              - AD5940_ADC_INPUTN_LPTIA
+              - AD5940_ADC_INPUTN_AIN0
+              - AD5940_ADC_INPUTN_AIN1
+              - AD5940_ADC_INPUTN_AIN2
+              - AD5940_ADC_INPUTN_AIN3
+              - AD5940_ADC_INPUTN_VBIAS_CA8
+              - AD5940_ADC_INPUTN_TEMP_N
+              - AD5940_ADC_INPUTN_AIN4
+              - AD5940_ADC_INPUTN_AIN6
+              - AD5940_ADC_INPUTN_VZERO
+              - AD5940_ADC_INPUTN_VBIAS0
+              - AD5940_ADC_INPUTN_EXCITATION
+
+      channel-name:
+        description:
+          Any string format name you would like to assign to this channel.
+        maxItems: 1
+
+    required:
+      - reg
+      - diff-channels
+      - channel-name
+
+examples:
+  - |
+    ad5940: ad5940@0 {
+      compatible = "adi,ad5940";
+      reg = <0>;
+      spi-max-frequency = <16000000>;
+      vref-supply = <&adc_vref>;
+      interrupt-parent = <&gpio>;
+      interrupts = <24 2>;
+
+      adi,interrupt-io = <0>;
+
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      channel@0 {
+        reg = <0>;
+        diff-channels = <AD5940_ADC_INPUTP_VCE0
+                         AD5940_ADC_INPUTN_VBIAS0>;
+        channel-name = "Vce-Vbias";
+      };
+
+      channel@1 {
+        reg = <1>;
+        diff-channels = <AD5940_ADC_INPUTP_VRE0
+                         AD5940_ADC_INPUTN_VBIAS0>;
+        channel-name = "Vre-Vbias";
+      };
+
+      channel@2 {
+        reg = <2>;
+        diff-channels = <AD5940_ADC_INPUTP_SE0
+                         AD5940_ADC_INPUTN_VBIAS0>;
+        channel-name = "Vse-Vbias";
+      };
+
+      channel@3 {
+        reg = <3>;
+        diff-channels = <AD5940_ADC_INPUTP_DE0
+                         AD5940_ADC_INPUTN_VBIAS0>;
+        channel-name = "Vde-Vbias";
+      };
+
+      channel@4 {
+        reg = <4>;
+        diff-channels = <AD5940_ADC_INPUTP_AIN0
+                         AD5940_ADC_INPUTN_VBIAS0>;
+        channel-name = "ain0-Vbias";
+      };
+
+      channel@5 {
+        reg = <5>;
+        diff-channels = <AD5940_ADC_INPUTP_AIN1
+                         AD5940_ADC_INPUTN_VBIAS0>;
+        channel-name = "ain1-Vbias";
+      };
+
+      channel@6 {
+        reg = <6>;
+        diff-channels = <AD5940_ADC_INPUTP_AIN2
+                         AD5940_ADC_INPUTN_VBIAS0>;
+        channel-name = "ain2-Vbias";
+      };
+
+      channel@7 {
+        reg = <7>;
+        diff-channels = <AD5940_ADC_INPUTP_AIN3
+                         AD5940_ADC_INPUTN_VBIAS0>;
+        channel-name = "ain3-Vbias";
+      };
+
+      channel@8 {
+        reg = <8>;
+        diff-channels = <AD5940_ADC_INPUTP_AIN4
+                         AD5940_ADC_INPUTN_VBIAS0>;
+        channel-name = "ain4-Vbias";
+      };
+
+      channel@9 {
+        reg = <9>;
+        diff-channels = <AD5940_ADC_INPUTP_AIN6
+                         AD5940_ADC_INPUTN_VBIAS0>;
+        channel-name = "ain6-Vbias";
+      };
+
+      channel@10 {
+        reg = <10>;
+        diff-channels = <AD5940_ADC_INPUTP_LPTIA_LP
+                         AD5940_ADC_INPUTN_LPTIA>;
+        channel-name = "Low power TIA DC";
+      };
+
+      channel@11 {
+        reg = <11>;
+        diff-channels = <AD5940_ADC_INPUTP_LPTIA
+                         AD5940_ADC_INPUTN_LPTIA>;
+        channel-name = "Low power TIA AC";
+      };
+
+      channel@12 {
+        reg = <12>;
+        diff-channels = <AD5940_ADC_INPUTP_HSTIA
+                         AD5940_ADC_INPUTN_HSTIA>;
+        channel-name = "High Speed TIA";
+      };
+
+      channel@13 {
+        reg = <13>;
+        diff-channels = <AD5940_ADC_INPUTP_TEMP
+                         AD5940_ADC_INPUTN_VBIAS0>;
+        channel-name = "Temperature";
+      };
+    };
diff --git a/include/dt-bindings/iio/adc/adi,ad5940.h b/include/dt-bindings/iio/adc/adi,ad5940.h
new file mode 100644
index 000000000000..c17826f2f654
--- /dev/null
+++ b/include/dt-bindings/iio/adc/adi,ad5940.h
@@ -0,0 +1,52 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * This header provides constants for configuring the AD5940 AFE
+ */
+
+#ifndef _DT_BINDINGS_IIO_ADC_AD5940_H
+#define _DT_BINDINGS_IIO_ADC_AD5940_H
+
+#define AD5940_ADC_INPUTN_FLOATING	0
+#define AD5940_ADC_INPUTN_HSTIA		1
+#define AD5940_ADC_INPUTN_LPTIA		2
+#define AD5940_ADC_INPUTN_AIN0		4
+#define AD5940_ADC_INPUTN_AIN1		5
+#define AD5940_ADC_INPUTN_AIN2		6
+#define AD5940_ADC_INPUTN_AIN3		7
+#define AD5940_ADC_INPUTN_VBIAS_CA8	10
+#define AD5940_ADC_INPUTN_TEMP_N	11
+#define AD5940_ADC_INPUTN_AIN4		12
+#define AD5940_ADC_INPUTN_AIN6		14
+#define AD5940_ADC_INPUTN_VZERO		16
+#define AD5940_ADC_INPUTN_VBIAS0	17
+#define AD5940_ADC_INPUTN_EXCITATION	20
+
+#define AD5940_ADC_INPUTP_FLOATING	0
+#define AD5940_ADC_INPUTP_HSTIA		1
+#define AD5940_ADC_INPUTP_LPTIA_LP	2
+#define AD5940_ADC_INPUTP_AIN0		4
+#define AD5940_ADC_INPUTP_AIN1		5
+#define AD5940_ADC_INPUTP_AIN2		6
+#define AD5940_ADC_INPUTP_AIN3		7
+#define AD5940_ADC_INPUTP_AVDD_2	8
+#define AD5940_ADC_INPUTP_DVDD_2	9
+#define AD5940_ADC_INPUTP_AVDD_REG_2	10
+#define AD5940_ADC_INPUTP_TEMP		11
+#define AD5940_ADC_INPUTP_VBIAS_CAP	12
+#define AD5940_ADC_INPUTP_DE0		13
+#define AD5940_ADC_INPUTP_SE0		14
+#define AD5940_ADC_INPUTP_VREF_2V5_2	16
+#define AD5940_ADC_INPUTP_VREF_1V82	18
+#define AD5940_ADC_INPUTP_P_TEMP_N	19
+#define AD5940_ADC_INPUTP_AIN4		20
+#define AD5940_ADC_INPUTP_AIN6		22
+#define AD5940_ADC_INPUTP_VZERO		23
+#define AD5940_ADC_INPUTP_VBIAS0	24
+#define AD5940_ADC_INPUTP_VCE0		25
+#define AD5940_ADC_INPUTP_VRE0		26
+#define AD5940_ADC_INPUTP_VCE0_2	31
+#define AD5940_ADC_INPUTP_LPTIA		33
+#define AD5940_ADC_INPUTP_AGND_REF	35
+#define AD5940_ADC_INPUTP_EXCITATION	36
+
+#endif /* _DT_BINDINGS_IIO_ADC_AD5940 */
