^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) CS42L42 audio CODEC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) Required properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) - compatible : "cirrus,cs42l42"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) - reg : the I2C address of the device for I2C.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) - VP-supply, VCP-supply, VD_FILT-supply, VL-supply, VA-supply :
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) power supplies for the device, as covered in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) Documentation/devicetree/bindings/regulator/regulator.txt.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Optional properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) - reset-gpios : a GPIO spec for the reset pin. If specified, it will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) deasserted before communication to the codec starts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) - interrupts : IRQ line info CS42L42.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) (See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) for further information relating to interrupt properties)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) - cirrus,ts-inv : Boolean property. For jacks that invert the tip sense
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) polarity. Normal jacks will short tip sense pin to HS1 when headphones are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) plugged in and leave tip sense floating when not plugged in. Inverting jacks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) short tip sense when unplugged and float when plugged in.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 0 = (Default) Non-inverted
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 1 = Inverted
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) - cirrus,ts-dbnc-rise : Debounce the rising edge of TIP_SENSE_PLUG. With no
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) debounce, the tip sense pin might be noisy on a plug event.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 0 - 0ms,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 1 - 125ms,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 2 - 250ms,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 3 - 500ms,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 4 - 750ms,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 5 - (Default) 1s,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 6 - 1.25s,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 7 - 1.5s,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) - cirrus,ts-dbnc-fall : Debounce the falling edge of TIP_SENSE_UNPLUG.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) With no debounce, the tip sense pin might be noisy on an unplug event.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 0 - 0ms,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 1 - 125ms,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 2 - 250ms,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 3 - 500ms,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 4 - 750ms,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 5 - (Default) 1s,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 6 - 1.25s,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 7 - 1.5s,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) - cirrus,btn-det-init-dbnce : This sets how long the driver sleeps after
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) enabling button detection interrupts. After auto-detection and before
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) servicing button interrupts, the HS bias needs time to settle. If you
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) don't wait, there is possibility for erroneous button interrupt.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 0ms - 200ms,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) Default = 100ms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) - cirrus,btn-det-event-dbnce : This sets how long the driver delays after
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) receiving a button press interrupt. With level detect interrupts, you want
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) to wait a small amount of time to make sure the button press is making a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) clean connection with the bias resistors.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) 0ms - 20ms,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) Default = 10ms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) - cirrus,bias-lvls : For a level-detect headset button scheme, each button
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) will bias the mic pin to a certain voltage. To determine which button was
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) pressed, the driver will compare this biased voltage to sequential,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) decreasing voltages and will stop when a comparator is tripped,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) indicating a comparator voltage < bias voltage. This value represents a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) percentage of the internally generated HS bias voltage. For different
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) hardware setups, a designer might want to tweak this. This is an array of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) descending values for the comparator voltage.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) Array of 4 values
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) Each 0-63
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) < x1 x2 x3 x4 >
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) Default = < 15 8 4 1>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) Example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) cs42l42: cs42l42@48 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) compatible = "cirrus,cs42l42";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) reg = <0x48>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) VA-supply = <&dummy_vreg>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) VP-supply = <&dummy_vreg>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) VCP-supply = <&dummy_vreg>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) VD_FILT-supply = <&dummy_vreg>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) VL-supply = <&dummy_vreg>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) reset-gpios = <&axi_gpio_0 1 0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) interrupt-parent = <&gpio0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) interrupts = <55 8>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) cirrus,ts-inv = <0x00>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) cirrus,ts-dbnc-rise = <0x05>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) cirrus,ts-dbnc-fall = <0x00>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) cirrus,btn-det-init-dbnce = <100>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) cirrus,btn-det-event-dbnce = <10>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) cirrus,bias-lvls = <0x0F 0x08 0x04 0x01>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) cirrus,hs-bias-ramp-rate = <0x02>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) };