1*4882a593SmuzhiyunCS35L36 Speaker Amplifier 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunRequired properties: 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun - compatible : "cirrus,cs35l36" 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun - reg : the I2C address of the device for I2C 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun - VA-supply, VP-supply : power supplies for the device, 10*4882a593Smuzhiyun as covered in 11*4882a593Smuzhiyun Documentation/devicetree/bindings/regulator/regulator.txt. 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun - cirrus,boost-ctl-millivolt : Boost Voltage Value. Configures the boost 14*4882a593Smuzhiyun converter's output voltage in mV. The range is from 2550mV to 12000mV with 15*4882a593Smuzhiyun increments of 50mV. 16*4882a593Smuzhiyun (Default) VP 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun - cirrus,boost-peak-milliamp : Boost-converter peak current limit in mA. 19*4882a593Smuzhiyun Configures the peak current by monitoring the current through the boost FET. 20*4882a593Smuzhiyun Range starts at 1600mA and goes to a maximum of 4500mA with increments of 21*4882a593Smuzhiyun 50mA. 22*4882a593Smuzhiyun (Default) 4.50 Amps 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun - cirrus,boost-ind-nanohenry : Inductor estimation LBST reference value. 25*4882a593Smuzhiyun Seeds the digital boost converter's inductor estimation block with the initial 26*4882a593Smuzhiyun inductance value to reference. 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun 1000 = 1uH (Default) 29*4882a593Smuzhiyun 1200 = 1.2uH 30*4882a593Smuzhiyun 31*4882a593SmuzhiyunOptional properties: 32*4882a593Smuzhiyun - cirrus,multi-amp-mode : Boolean to determine if there are more than 33*4882a593Smuzhiyun one amplifier in the system. If more than one it is best to Hi-Z the ASP 34*4882a593Smuzhiyun port to prevent bus contention on the output signal 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun - cirrus,boost-ctl-select : Boost conerter control source selection. 37*4882a593Smuzhiyun Selects the source of the BST_CTL target VBST voltage for the boost 38*4882a593Smuzhiyun converter to generate. 39*4882a593Smuzhiyun 0x00 - Control Port Value 40*4882a593Smuzhiyun 0x01 - Class H Tracking (Default) 41*4882a593Smuzhiyun 0x10 - MultiDevice Sync Value 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun - cirrus,amp-pcm-inv : Boolean to determine Amplifier will invert incoming 44*4882a593Smuzhiyun PCM data 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun - cirrus,imon-pol-inv : Boolean to determine Amplifier will invert the 47*4882a593Smuzhiyun polarity of outbound IMON feedback data 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun - cirrus,vmon-pol-inv : Boolean to determine Amplifier will invert the 50*4882a593Smuzhiyun polarity of outbound VMON feedback data 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun - cirrus,dcm-mode-enable : Boost converter automatic DCM Mode enable. 53*4882a593Smuzhiyun This enables the digital boost converter to operate in a low power 54*4882a593Smuzhiyun (Discontinuous Conduction) mode during low loading conditions. 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun - cirrus,weak-fet-disable : Boolean : The strength of the output drivers is 57*4882a593Smuzhiyun reduced when operating in a Weak-FET Drive Mode and must not be used to drive 58*4882a593Smuzhiyun a large load. 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun - cirrus,classh-wk-fet-delay : Weak-FET entry delay. Controls the delay 61*4882a593Smuzhiyun (in ms) before the Class H algorithm switches to the weak-FET voltage 62*4882a593Smuzhiyun (after the audio falls and remains below the value specified in WKFET_AMP_THLD). 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun 0 = 0ms 65*4882a593Smuzhiyun 1 = 5ms 66*4882a593Smuzhiyun 2 = 10ms 67*4882a593Smuzhiyun 3 = 50ms 68*4882a593Smuzhiyun 4 = 100ms (Default) 69*4882a593Smuzhiyun 5 = 200ms 70*4882a593Smuzhiyun 6 = 500ms 71*4882a593Smuzhiyun 7 = 1000ms 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun - cirrus,classh-weak-fet-thld-millivolt : Weak-FET amplifier drive threshold. 74*4882a593Smuzhiyun Configures the signal threshold at which the PWM output stage enters 75*4882a593Smuzhiyun weak-FET operation. The range is 50mV to 700mV in 50mV increments. 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun - cirrus,temp-warn-threshold : Amplifier overtemperature warning threshold. 78*4882a593Smuzhiyun Configures the threshold at which the overtemperature warning condition occurs. 79*4882a593Smuzhiyun When the threshold is met, the overtemperature warning attenuation is applied 80*4882a593Smuzhiyun and the TEMP_WARN_EINT interrupt status bit is set. 81*4882a593Smuzhiyun If TEMP_WARN_MASK = 0, INTb is asserted. 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun 0 = 105C 84*4882a593Smuzhiyun 1 = 115C 85*4882a593Smuzhiyun 2 = 125C (Default) 86*4882a593Smuzhiyun 3 = 135C 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun - cirrus,irq-drive-select : Selects the driver type of the selected interrupt 89*4882a593Smuzhiyun output. 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun 0 = Open-drain 92*4882a593Smuzhiyun 1 = Push-pull (Default) 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun - cirrus,irq-gpio-select : Selects the pin to serve as the programmable 95*4882a593Smuzhiyun interrupt output. 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun 0 = PDM_DATA / SWIRE_SD / INT (Default) 98*4882a593Smuzhiyun 1 = GPIO 99*4882a593Smuzhiyun 100*4882a593SmuzhiyunOptional properties for the "cirrus,vpbr-config" Sub-node 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun - cirrus,vpbr-en : VBST brownout prevention enable. Configures whether the 103*4882a593Smuzhiyun VBST brownout prevention algorithm is enabled or disabled. 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun 0 = VBST brownout prevention disabled (default) 106*4882a593Smuzhiyun 1 = VBST brownout prevention enabled 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun See Section 7.31.1 VPBR Config for configuration options & further details 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun - cirrus,vpbr-thld : Initial VPBR threshold. Configures the VP brownout 111*4882a593Smuzhiyun threshold voltage 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun - cirrus,cirrus,vpbr-atk-rate : Attenuation attack step rate. Configures the 114*4882a593Smuzhiyun amount delay between consecutive volume attenuation steps when a brownout 115*4882a593Smuzhiyun condition is present and the VP brownout condition is in an attacking state. 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun - cirrus,vpbr-atk-vol : VP brownout prevention step size. Configures the VP 118*4882a593Smuzhiyun brownout prevention attacking attenuation step size when operating in either 119*4882a593Smuzhiyun digital volume or analog gain modes. 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun - cirrus,vpbr-max-attn : Maximum attenuation that the VP brownout prevention 122*4882a593Smuzhiyun can apply to the audio signal. 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun - cirrus,vpbr-wait : Configures the delay time between a brownout condition 125*4882a593Smuzhiyun no longer being present and the VP brownout prevention entering an attenuation 126*4882a593Smuzhiyun release state. 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun - cirrus,vpbr-rel-rate : Attenuation release step rate. Configures the delay 129*4882a593Smuzhiyun between consecutive volume attenuation release steps when a brownout condition 130*4882a593Smuzhiyun is not longer present and the VP brownout is in an attenuation release state. 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun - cirrus,vpbr-mute-en : During the attack state, if the vpbr-max-attn value 133*4882a593Smuzhiyun is reached, the error condition still remains, and this bit is set, the audio 134*4882a593Smuzhiyun is muted. 135*4882a593Smuzhiyun 136*4882a593SmuzhiyunExample: 137*4882a593Smuzhiyun 138*4882a593Smuzhiyuncs35l36: cs35l36@40 { 139*4882a593Smuzhiyun compatible = "cirrus,cs35l36"; 140*4882a593Smuzhiyun reg = <0x40>; 141*4882a593Smuzhiyun VA-supply = <&dummy_vreg>; 142*4882a593Smuzhiyun VP-supply = <&dummy_vreg>; 143*4882a593Smuzhiyun reset-gpios = <&gpio0 54 0>; 144*4882a593Smuzhiyun interrupt-parent = <&gpio8>; 145*4882a593Smuzhiyun interrupts = <3 IRQ_TYPE_LEVEL_LOW>; 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun cirrus,boost-ind-nanohenry = <1000>; 148*4882a593Smuzhiyun cirrus,boost-ctl-millivolt = <10000>; 149*4882a593Smuzhiyun cirrus,boost-peak-milliamp = <4500>; 150*4882a593Smuzhiyun cirrus,boost-ctl-select = <0x00>; 151*4882a593Smuzhiyun cirrus,weak-fet-delay = <0x04>; 152*4882a593Smuzhiyun cirrus,weak-fet-thld = <0x01>; 153*4882a593Smuzhiyun cirrus,temp-warn-threshold = <0x01>; 154*4882a593Smuzhiyun cirrus,multi-amp-mode; 155*4882a593Smuzhiyun cirrus,irq-drive-select = <0x01>; 156*4882a593Smuzhiyun cirrus,irq-gpio-select = <0x01>; 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun cirrus,vpbr-config { 159*4882a593Smuzhiyun cirrus,vpbr-en = <0x00>; 160*4882a593Smuzhiyun cirrus,vpbr-thld = <0x05>; 161*4882a593Smuzhiyun cirrus,vpbr-atk-rate = <0x02>; 162*4882a593Smuzhiyun cirrus,vpbr-atk-vol = <0x01>; 163*4882a593Smuzhiyun cirrus,vpbr-max-attn = <0x09>; 164*4882a593Smuzhiyun cirrus,vpbr-wait = <0x01>; 165*4882a593Smuzhiyun cirrus,vpbr-rel-rate = <0x05>; 166*4882a593Smuzhiyun cirrus,vpbr-mute-en = <0x00>; 167*4882a593Smuzhiyun }; 168*4882a593Smuzhiyun}; 169