^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) Nuvoton NAU8825 audio codec
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) This device supports I2C only.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) Required properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) - compatible : Must be "nuvoton,nau8825"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) - reg : the I2C address of the device. This is either 0x1a (CSB=0) or 0x1b (CSB=1).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) Optional properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) - nuvoton,jkdet-enable: Enable jack detection via JKDET pin.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) - nuvoton,jkdet-pull-enable: Enable JKDET pin pull. If set - pin pull enabled,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) otherwise pin in high impedance state.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) - nuvoton,jkdet-pull-up: Pull-up JKDET pin. If set then JKDET pin is pull up, otherwise pull down.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) - nuvoton,jkdet-polarity: JKDET pin polarity. 0 - active high, 1 - active low.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) - nuvoton,vref-impedance: VREF Impedance selection
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 0 - Open
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 1 - 25 kOhm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 2 - 125 kOhm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 3 - 2.5 kOhm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) - nuvoton,micbias-voltage: Micbias voltage level.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 0 - VDDA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 1 - VDDA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 2 - VDDA * 1.1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 3 - VDDA * 1.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 4 - VDDA * 1.3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 5 - VDDA * 1.4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 6 - VDDA * 1.53
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 7 - VDDA * 1.53
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) - nuvoton,sar-threshold-num: Number of buttons supported
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) - nuvoton,sar-threshold: Impedance threshold for each button. Array that contains up to 8 buttons configuration. SAR value is calculated as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) SAR = 255 * MICBIAS / SAR_VOLTAGE * R / (2000 + R)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) where MICBIAS is configured by 'nuvoton,micbias-voltage', SAR_VOLTAGE is configured by 'nuvoton,sar-voltage', R - button impedance.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) Refer datasheet section 10.2 for more information about threshold calculation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) - nuvoton,sar-hysteresis: Button impedance measurement hysteresis.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) - nuvoton,sar-voltage: Reference voltage for button impedance measurement.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 0 - VDDA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 1 - VDDA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 2 - VDDA * 1.1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 3 - VDDA * 1.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 4 - VDDA * 1.3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 5 - VDDA * 1.4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 6 - VDDA * 1.53
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 7 - VDDA * 1.53
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) - nuvoton,sar-compare-time: SAR compare time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 0 - 500 ns
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 1 - 1 us
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 2 - 2 us
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 3 - 4 us
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) - nuvoton,sar-sampling-time: SAR sampling time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 0 - 2 us
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 1 - 4 us
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 2 - 8 us
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) 3 - 16 us
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) - nuvoton,short-key-debounce: Button short key press debounce time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 0 - 30 ms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 1 - 50 ms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 2 - 100 ms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) 3 - 30 ms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) - nuvoton,jack-insert-debounce: number from 0 to 7 that sets debounce time to 2^(n+2) ms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) - nuvoton,jack-eject-debounce: number from 0 to 7 that sets debounce time to 2^(n+2) ms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) - nuvoton,crosstalk-enable: make crosstalk function enable if set.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) - clocks: list of phandle and clock specifier pairs according to common clock bindings for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) clocks described in clock-names
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) - clock-names: should include "mclk" for the MCLK master clock
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) Example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) headset: nau8825@1a {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) compatible = "nuvoton,nau8825";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) reg = <0x1a>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) interrupt-parent = <&gpio>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) interrupts = <TEGRA_GPIO(E, 6) IRQ_TYPE_LEVEL_LOW>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) nuvoton,jkdet-enable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) nuvoton,jkdet-pull-enable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) nuvoton,jkdet-pull-up;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) nuvoton,jkdet-polarity = <GPIO_ACTIVE_LOW>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) nuvoton,vref-impedance = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) nuvoton,micbias-voltage = <6>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) // Setup 4 buttons impedance according to Android specification
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) nuvoton,sar-threshold-num = <4>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) nuvoton,sar-threshold = <0xc 0x1e 0x38 0x60>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) nuvoton,sar-hysteresis = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) nuvoton,sar-voltage = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) nuvoton,sar-compare-time = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) nuvoton,sar-sampling-time = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) nuvoton,short-key-debounce = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) nuvoton,jack-insert-debounce = <7>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) nuvoton,jack-eject-debounce = <7>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) nuvoton,crosstalk-enable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) clock-names = "mclk";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) clocks = <&tegra_pmc TEGRA_PMC_CLK_OUT_2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) };