1*66a6dcc2SJonathan Cameron# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*66a6dcc2SJonathan Cameron%YAML 1.2
3*66a6dcc2SJonathan Cameron---
4*66a6dcc2SJonathan Cameron$id: http://devicetree.org/schemas/iio/adc/envelope-detector.yaml#
5*66a6dcc2SJonathan Cameron$schema: http://devicetree.org/meta-schemas/core.yaml#
6*66a6dcc2SJonathan Cameron
7*66a6dcc2SJonathan Camerontitle: ADC envelope detector using a DAC and a comparator
8*66a6dcc2SJonathan Cameron
9*66a6dcc2SJonathan Cameronmaintainers:
10*66a6dcc2SJonathan Cameron  - Peter Rosin <peda@axentia.se>
11*66a6dcc2SJonathan Cameron
12*66a6dcc2SJonathan Camerondescription: |
13*66a6dcc2SJonathan Cameron  The DAC is used to find the peak level of an alternating voltage input
14*66a6dcc2SJonathan Cameron  signal by a binary search using the output of a comparator wired to
15*66a6dcc2SJonathan Cameron  an interrupt pin. Like so:
16*66a6dcc2SJonathan Cameron                          _
17*66a6dcc2SJonathan Cameron                         | \
18*66a6dcc2SJonathan Cameron    input +------>-------|+ \
19*66a6dcc2SJonathan Cameron                         |   \
20*66a6dcc2SJonathan Cameron           .-------.     |    }---.
21*66a6dcc2SJonathan Cameron           |       |     |   /    |
22*66a6dcc2SJonathan Cameron           |    dac|-->--|- /     |
23*66a6dcc2SJonathan Cameron           |       |     |_/      |
24*66a6dcc2SJonathan Cameron           |       |              |
25*66a6dcc2SJonathan Cameron           |       |              |
26*66a6dcc2SJonathan Cameron           |    irq|------<-------'
27*66a6dcc2SJonathan Cameron           |       |
28*66a6dcc2SJonathan Cameron           '-------'
29*66a6dcc2SJonathan Cameron
30*66a6dcc2SJonathan Cameronproperties:
31*66a6dcc2SJonathan Cameron  compatible:
32*66a6dcc2SJonathan Cameron    const: axentia,tse850-envelope-detector
33*66a6dcc2SJonathan Cameron
34*66a6dcc2SJonathan Cameron  io-channels:
35*66a6dcc2SJonathan Cameron    maxItems: 1
36*66a6dcc2SJonathan Cameron    description: Channel node of the dac to be used for comparator input.
37*66a6dcc2SJonathan Cameron
38*66a6dcc2SJonathan Cameron  io-channel-names:
39*66a6dcc2SJonathan Cameron    const: dac
40*66a6dcc2SJonathan Cameron
41*66a6dcc2SJonathan Cameron  interrupts:
42*66a6dcc2SJonathan Cameron    maxItems: 1
43*66a6dcc2SJonathan Cameron
44*66a6dcc2SJonathan Cameron  interrupt-names:
45*66a6dcc2SJonathan Cameron    const: comp
46*66a6dcc2SJonathan Cameron
47*66a6dcc2SJonathan Cameronrequired:
48*66a6dcc2SJonathan Cameron  - compatible
49*66a6dcc2SJonathan Cameron  - io-channels
50*66a6dcc2SJonathan Cameron  - io-channel-names
51*66a6dcc2SJonathan Cameron  - interrupts
52*66a6dcc2SJonathan Cameron  - interrupt-names
53*66a6dcc2SJonathan Cameron
54*66a6dcc2SJonathan CameronadditionalProperties: false
55*66a6dcc2SJonathan Cameron
56*66a6dcc2SJonathan Cameronexamples:
57*66a6dcc2SJonathan Cameron  - |
58*66a6dcc2SJonathan Cameron    #include <dt-bindings/interrupt-controller/irq.h>
59*66a6dcc2SJonathan Cameron    i2c {
60*66a6dcc2SJonathan Cameron        #address-cells = <1>;
61*66a6dcc2SJonathan Cameron        #size-cells = <0>;
62*66a6dcc2SJonathan Cameron        dpot: dpot@28 {
63*66a6dcc2SJonathan Cameron            compatible = "microchip,mcp4651-104";
64*66a6dcc2SJonathan Cameron            reg = <0x28>;
65*66a6dcc2SJonathan Cameron            #io-channel-cells = <1>;
66*66a6dcc2SJonathan Cameron        };
67*66a6dcc2SJonathan Cameron    };
68*66a6dcc2SJonathan Cameron
69*66a6dcc2SJonathan Cameron    dac: dac {
70*66a6dcc2SJonathan Cameron        compatible = "dpot-dac";
71*66a6dcc2SJonathan Cameron        vref-supply = <&reg_3v3>;
72*66a6dcc2SJonathan Cameron        io-channels = <&dpot 0>;
73*66a6dcc2SJonathan Cameron        io-channel-names = "dpot";
74*66a6dcc2SJonathan Cameron        #io-channel-cells = <1>;
75*66a6dcc2SJonathan Cameron    };
76*66a6dcc2SJonathan Cameron
77*66a6dcc2SJonathan Cameron    envelope-detector {
78*66a6dcc2SJonathan Cameron        compatible = "axentia,tse850-envelope-detector";
79*66a6dcc2SJonathan Cameron        io-channels = <&dac 0>;
80*66a6dcc2SJonathan Cameron        io-channel-names = "dac";
81*66a6dcc2SJonathan Cameron
82*66a6dcc2SJonathan Cameron        interrupt-parent = <&gpio>;
83*66a6dcc2SJonathan Cameron        interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
84*66a6dcc2SJonathan Cameron        interrupt-names = "comp";
85*66a6dcc2SJonathan Cameron    };
86*66a6dcc2SJonathan Cameron...
87