1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/nuvoton,nau8824.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: NAU8824 audio CODEC
8
9maintainers:
10  - John Hsu <KCHSU0@nuvoton.com>
11
12allOf:
13  - $ref: dai-common.yaml#
14
15properties:
16  compatible:
17    enum:
18      - nuvoton,nau8824
19
20  reg:
21    maxItems: 1
22
23  '#sound-dai-cells':
24    const: 0
25
26  clocks:
27    items:
28      - description: The phandle of the master clock to the CODEC
29
30  clock-names:
31    items:
32      - const: mclk
33
34  interrupts:
35    maxItems: 1
36
37  nuvoton,jkdet-polarity:
38    $ref: /schemas/types.yaml#/definitions/uint32
39    description:
40      JKDET pin polarity.
41    enum:
42      - 0 # active high
43      - 1 # active low
44    default: 1
45
46  nuvoton,vref-impedance:
47    $ref: /schemas/types.yaml#/definitions/uint32
48    description:
49      VREF Impedance selection.
50    enum:
51      - 0 # Open
52      - 1 # 25 kOhm
53      - 2 # 125 kOhm
54      - 3 # 2.5 kOhm
55    default: 2
56
57  nuvoton,micbias-voltage:
58    $ref: /schemas/types.yaml#/definitions/uint32
59    description:
60      Micbias voltage level.
61    enum:
62      - 0 # VDDA
63      - 1 # VDDA
64      - 2 # VDDA * 1.1
65      - 3 # VDDA * 1.2
66      - 4 # VDDA * 1.3
67      - 5 # VDDA * 1.4
68      - 6 # VDDA * 1.53
69      - 7 # VDDA * 1.53
70    default: 6
71
72  nuvoton,sar-threshold-num:
73    $ref: /schemas/types.yaml#/definitions/uint32
74    description:
75      Number of buttons supported.
76    minimum: 1
77    maximum: 8
78    default: 4
79
80  nuvoton,sar-threshold:
81    $ref: /schemas/types.yaml#/definitions/uint32-array
82    description:
83      Impedance threshold for each button. Array that contains up to 8 buttons
84      configuration. SAR value is calculated as
85      SAR = 255 * MICBIAS / SAR_VOLTAGE * R / (2000 + R) where MICBIAS is
86      configured by 'nuvoton,micbias-voltage', SAR_VOLTAGE is configured by
87      'nuvoton,sar-voltage', R - button impedance.
88      Refer datasheet section 10.2 for more information about threshold
89      calculation.
90    minItems: 1
91    maxItems: 8
92    items:
93      minimum: 0
94      maximum: 255
95
96  nuvoton,sar-hysteresis:
97    $ref: /schemas/types.yaml#/definitions/uint32
98    description:
99      Button impedance measurement hysteresis.
100    default: 0
101
102  nuvoton,sar-voltage:
103    $ref: /schemas/types.yaml#/definitions/uint32
104    description:
105      Reference voltage for button impedance measurement.
106    enum:
107      - 0 # VDDA
108      - 1 # VDDA
109      - 2 # VDDA * 1.1
110      - 3 # VDDA * 1.2
111      - 4 # VDDA * 1.3
112      - 5 # VDDA * 1.4
113      - 6 # VDDA * 1.53
114      - 7 # VDDA * 1.53
115    default: 6
116
117  nuvoton,sar-compare-time:
118    $ref: /schemas/types.yaml#/definitions/uint32
119    description:
120      SAR compare time.
121    enum:
122      - 0 # 500ns
123      - 1 # 1us
124      - 2 # 2us
125      - 3 # 4us
126    default: 1
127
128  nuvoton,sar-sampling-time:
129    $ref: /schemas/types.yaml#/definitions/uint32
130    description:
131      SAR sampling time.
132    enum:
133      - 0 # 2us
134      - 1 # 4us
135      - 2 # 8us
136      - 3 # 16us
137    default: 1
138
139  nuvoton,short-key-debounce:
140    $ref: /schemas/types.yaml#/definitions/uint32
141    description:
142      Button short key press debounce time.
143    enum:
144      - 0 # 30 ms
145      - 1 # 50 ms
146      - 2 # 100 ms
147    default: 0
148
149  nuvoton,jack-eject-debounce:
150    $ref: /schemas/types.yaml#/definitions/uint32
151    description:
152      Jack ejection debounce time.
153    enum:
154      - 0 # 0 ms
155      - 1 # 1 ms
156      - 2 # 10 ms
157    default: 1
158
159required:
160  - compatible
161  - reg
162
163unevaluatedProperties: false
164
165examples:
166  - |
167    #include <dt-bindings/gpio/gpio.h>
168    #include <dt-bindings/interrupt-controller/irq.h>
169    i2c {
170        #address-cells = <1>;
171        #size-cells = <0>;
172        codec@1a {
173            #sound-dai-cells = <0>;
174            compatible = "nuvoton,nau8824";
175            reg = <0x1a>;
176            interrupt-parent = <&gpio>;
177            interrupts = <38 IRQ_TYPE_LEVEL_LOW>;
178            nuvoton,vref-impedance = <2>;
179            nuvoton,micbias-voltage = <6>;
180            nuvoton,sar-threshold-num = <4>;
181            // Setup 4 buttons impedance according to Android specification
182            nuvoton,sar-threshold = <0xc 0x1e 0x38 0x60>;
183            nuvoton,sar-hysteresis = <0>;
184            nuvoton,sar-voltage = <6>;
185            nuvoton,sar-compare-time = <1>;
186            nuvoton,sar-sampling-time = <1>;
187            nuvoton,short-key-debounce = <0>;
188            nuvoton,jack-eject-debounce = <1>;
189        };
190    };
191