# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause %YAML 1.2 --- $id: http://devicetree.org/schemas/sound/nuvoton,nau8825.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: NAU8825 audio CODEC maintainers: - John Hsu <KCHSU0@nuvoton.com> allOf: - $ref: dai-common.yaml# properties: compatible: enum: - nuvoton,nau8825 reg: maxItems: 1 interrupts: maxItems: 1 nuvoton,jkdet-enable: description: Enable jack detection via JKDET pin. type: boolean nuvoton,jkdet-pull-enable: description: Enable JKDET pin pull. If set - pin pull enabled, otherwise pin in high impedance state. type: boolean nuvoton,jkdet-pull-up: description: Pull-up JKDET pin. If set then JKDET pin is pull up, otherwise pull down. type: boolean nuvoton,jkdet-polarity: $ref: /schemas/types.yaml#/definitions/uint32 description: JKDET pin polarity. enum: - 0 # active high - 1 # active low default: 1 nuvoton,vref-impedance: $ref: /schemas/types.yaml#/definitions/uint32 description: VREF Impedance selection. enum: - 0 # Open - 1 # 25 kOhm - 2 # 125 kOhm - 3 # 2.5 kOhm default: 2 nuvoton,micbias-voltage: $ref: /schemas/types.yaml#/definitions/uint32 description: Micbias voltage level. enum: - 0 # VDDA - 1 # VDDA - 2 # VDDA * 1.1 - 3 # VDDA * 1.2 - 4 # VDDA * 1.3 - 5 # VDDA * 1.4 - 6 # VDDA * 1.53 - 7 # VDDA * 1.53 default: 6 nuvoton,sar-threshold-num: $ref: /schemas/types.yaml#/definitions/uint32 description: Number of buttons supported. minimum: 1 maximum: 4 default: 4 nuvoton,sar-threshold: $ref: /schemas/types.yaml#/definitions/uint32-array description: Impedance threshold for each button. Array that contains up to 8 buttons configuration. SAR value is calculated as SAR = 255 * MICBIAS / SAR_VOLTAGE * R / (2000 + R) where MICBIAS is configured by 'nuvoton,micbias-voltage', SAR_VOLTAGE is configured by 'nuvoton,sar-voltage', R - button impedance. Refer datasheet section 10.2 for more information about threshold calculation. minItems: 1 maxItems: 4 items: minimum: 0 maximum: 255 nuvoton,sar-hysteresis: $ref: /schemas/types.yaml#/definitions/uint32 description: Button impedance measurement hysteresis. default: 0 nuvoton,sar-voltage: $ref: /schemas/types.yaml#/definitions/uint32 description: Reference voltage for button impedance measurement. enum: - 0 # VDDA - 1 # VDDA - 2 # VDDA * 1.1 - 3 # VDDA * 1.2 - 4 # VDDA * 1.3 - 5 # VDDA * 1.4 - 6 # VDDA * 1.53 - 7 # VDDA * 1.53 default: 6 nuvoton,sar-compare-time: $ref: /schemas/types.yaml#/definitions/uint32 description: SAR compare time. enum: - 0 # 500 ns - 1 # 1 us - 2 # 2 us - 3 # 4 us default: 1 nuvoton,sar-sampling-time: $ref: /schemas/types.yaml#/definitions/uint32 description: SAR sampling time. enum: - 0 # 2 us - 1 # 4 us - 2 # 8 us - 3 # 16 us default: 1 nuvoton,short-key-debounce: $ref: /schemas/types.yaml#/definitions/uint32 description: Button short key press debounce time. enum: - 0 # 30 ms - 1 # 50 ms - 2 # 100 ms - 3 # 30 ms default: 3 nuvoton,jack-insert-debounce: $ref: /schemas/types.yaml#/definitions/uint32 description: number from 0 to 7 that sets debounce time to 2^(n+2) ms. maximum: 7 default: 7 nuvoton,jack-eject-debounce: $ref: /schemas/types.yaml#/definitions/uint32 description: number from 0 to 7 that sets debounce time to 2^(n+2) ms maximum: 7 default: 0 nuvoton,crosstalk-enable: description: make crosstalk function enable if set. type: boolean nuvoton,adcout-drive-strong: description: make the drive strength of ADCOUT IO PIN strong if set. Otherwise, the drive keeps normal strength. type: boolean nuvoton,adc-delay-ms: description: Delay (in ms) to make input path stable and avoid pop noise. The default value is 125 and range between 125 to 500 ms. minimum: 125 maximum: 500 default: 125 clocks: maxItems: 1 clock-names: items: - const: mclk '#sound-dai-cells': const: 0 required: - compatible - reg unevaluatedProperties: false examples: - | #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/interrupt-controller/irq.h> i2c { #address-cells = <1>; #size-cells = <0>; codec@1a { #sound-dai-cells = <0>; compatible = "nuvoton,nau8825"; reg = <0x1a>; interrupt-parent = <&gpio>; interrupts = <38 IRQ_TYPE_LEVEL_LOW>; nuvoton,jkdet-enable; nuvoton,jkdet-pull-enable; nuvoton,jkdet-pull-up; nuvoton,jkdet-polarity = <GPIO_ACTIVE_LOW>; nuvoton,vref-impedance = <2>; nuvoton,micbias-voltage = <6>; // Setup 4 buttons impedance according to Android specification nuvoton,sar-threshold-num = <4>; nuvoton,sar-threshold = <0xc 0x1e 0x38 0x60>; nuvoton,sar-hysteresis = <1>; nuvoton,sar-voltage = <0>; nuvoton,sar-compare-time = <0>; nuvoton,sar-sampling-time = <0>; nuvoton,short-key-debounce = <2>; nuvoton,jack-insert-debounce = <7>; nuvoton,jack-eject-debounce = <7>; nuvoton,crosstalk-enable; clock-names = "mclk"; clocks = <&tegra_pmc 1>; }; };