Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ASoC: codecs: qualcomm move gain to S8_TLV

Merge series from Srinivas Kandagatla <srinivas.kandagatla@linaro.org>:

Move all the digital and IIR gains form using SX_TLV to S8_TLV,
these gains are actually 8 bit gains with 7th signed bit and
ranges from -84dB to +40dB

Tested on DB410c with Headset playback

+59 -68
+23 -23
sound/soc/codecs/msm8916-wcd-digital.c
··· 328 328 static const struct snd_kcontrol_new rx2_mix2_inp1_mux = SOC_DAPM_ENUM( 329 329 "RX2 MIX2 INP1 Mux", rx2_mix2_inp1_chain_enum); 330 330 331 - /* Digital Gain control -38.4 dB to +38.4 dB in 0.3 dB steps */ 332 - static const DECLARE_TLV_DB_SCALE(digital_gain, -3840, 30, 0); 331 + /* Digital Gain control -84 dB to +40 dB in 1 dB steps */ 332 + static const DECLARE_TLV_DB_SCALE(digital_gain, -8400, 100, -8400); 333 333 334 334 /* Cutoff Freq for High Pass Filter at -3dB */ 335 335 static const char * const hpf_cutoff_text[] = { ··· 510 510 511 511 static const struct snd_kcontrol_new msm8916_wcd_digital_snd_controls[] = { 512 512 SOC_SINGLE_S8_TLV("RX1 Digital Volume", LPASS_CDC_RX1_VOL_CTL_B2_CTL, 513 - -128, 127, digital_gain), 513 + -84, 40, digital_gain), 514 514 SOC_SINGLE_S8_TLV("RX2 Digital Volume", LPASS_CDC_RX2_VOL_CTL_B2_CTL, 515 - -128, 127, digital_gain), 515 + -84, 40, digital_gain), 516 516 SOC_SINGLE_S8_TLV("RX3 Digital Volume", LPASS_CDC_RX3_VOL_CTL_B2_CTL, 517 - -128, 127, digital_gain), 517 + -84, 40, digital_gain), 518 518 SOC_SINGLE_S8_TLV("TX1 Digital Volume", LPASS_CDC_TX1_VOL_CTL_GAIN, 519 - -128, 127, digital_gain), 519 + -84, 40, digital_gain), 520 520 SOC_SINGLE_S8_TLV("TX2 Digital Volume", LPASS_CDC_TX2_VOL_CTL_GAIN, 521 - -128, 127, digital_gain), 521 + -84, 40, digital_gain), 522 522 SOC_ENUM("TX1 HPF Cutoff", tx1_hpf_cutoff_enum), 523 523 SOC_ENUM("TX2 HPF Cutoff", tx2_hpf_cutoff_enum), 524 524 SOC_SINGLE("TX1 HPF Switch", LPASS_CDC_TX1_MUX_CTL, 3, 1, 0), ··· 553 553 WCD_IIR_FILTER_CTL("IIR2 Band3", IIR2, BAND3), 554 554 WCD_IIR_FILTER_CTL("IIR2 Band4", IIR2, BAND4), 555 555 WCD_IIR_FILTER_CTL("IIR2 Band5", IIR2, BAND5), 556 - SOC_SINGLE_SX_TLV("IIR1 INP1 Volume", LPASS_CDC_IIR1_GAIN_B1_CTL, 557 - 0, -84, 40, digital_gain), 558 - SOC_SINGLE_SX_TLV("IIR1 INP2 Volume", LPASS_CDC_IIR1_GAIN_B2_CTL, 559 - 0, -84, 40, digital_gain), 560 - SOC_SINGLE_SX_TLV("IIR1 INP3 Volume", LPASS_CDC_IIR1_GAIN_B3_CTL, 561 - 0, -84, 40, digital_gain), 562 - SOC_SINGLE_SX_TLV("IIR1 INP4 Volume", LPASS_CDC_IIR1_GAIN_B4_CTL, 563 - 0, -84, 40, digital_gain), 564 - SOC_SINGLE_SX_TLV("IIR2 INP1 Volume", LPASS_CDC_IIR2_GAIN_B1_CTL, 565 - 0, -84, 40, digital_gain), 566 - SOC_SINGLE_SX_TLV("IIR2 INP2 Volume", LPASS_CDC_IIR2_GAIN_B2_CTL, 567 - 0, -84, 40, digital_gain), 568 - SOC_SINGLE_SX_TLV("IIR2 INP3 Volume", LPASS_CDC_IIR2_GAIN_B3_CTL, 569 - 0, -84, 40, digital_gain), 570 - SOC_SINGLE_SX_TLV("IIR2 INP4 Volume", LPASS_CDC_IIR2_GAIN_B4_CTL, 571 - 0, -84, 40, digital_gain), 556 + SOC_SINGLE_S8_TLV("IIR1 INP1 Volume", LPASS_CDC_IIR1_GAIN_B1_CTL, 557 + -84, 40, digital_gain), 558 + SOC_SINGLE_S8_TLV("IIR1 INP2 Volume", LPASS_CDC_IIR1_GAIN_B2_CTL, 559 + -84, 40, digital_gain), 560 + SOC_SINGLE_S8_TLV("IIR1 INP3 Volume", LPASS_CDC_IIR1_GAIN_B3_CTL, 561 + -84, 40, digital_gain), 562 + SOC_SINGLE_S8_TLV("IIR1 INP4 Volume", LPASS_CDC_IIR1_GAIN_B4_CTL, 563 + -84, 40, digital_gain), 564 + SOC_SINGLE_S8_TLV("IIR2 INP1 Volume", LPASS_CDC_IIR2_GAIN_B1_CTL, 565 + -84, 40, digital_gain), 566 + SOC_SINGLE_S8_TLV("IIR2 INP2 Volume", LPASS_CDC_IIR2_GAIN_B2_CTL, 567 + -84, 40, digital_gain), 568 + SOC_SINGLE_S8_TLV("IIR2 INP3 Volume", LPASS_CDC_IIR2_GAIN_B3_CTL, 569 + -84, 40, digital_gain), 570 + SOC_SINGLE_S8_TLV("IIR2 INP4 Volume", LPASS_CDC_IIR2_GAIN_B4_CTL, 571 + -84, 40, digital_gain), 572 572 573 573 }; 574 574
+36 -45
sound/soc/codecs/wcd9335.c
··· 2253 2253 2254 2254 static const struct snd_kcontrol_new wcd9335_snd_controls[] = { 2255 2255 /* -84dB min - 40dB max */ 2256 - SOC_SINGLE_SX_TLV("RX0 Digital Volume", WCD9335_CDC_RX0_RX_VOL_CTL, 2257 - 0, -84, 40, digital_gain), 2258 - SOC_SINGLE_SX_TLV("RX1 Digital Volume", WCD9335_CDC_RX1_RX_VOL_CTL, 2259 - 0, -84, 40, digital_gain), 2260 - SOC_SINGLE_SX_TLV("RX2 Digital Volume", WCD9335_CDC_RX2_RX_VOL_CTL, 2261 - 0, -84, 40, digital_gain), 2262 - SOC_SINGLE_SX_TLV("RX3 Digital Volume", WCD9335_CDC_RX3_RX_VOL_CTL, 2263 - 0, -84, 40, digital_gain), 2264 - SOC_SINGLE_SX_TLV("RX4 Digital Volume", WCD9335_CDC_RX4_RX_VOL_CTL, 2265 - 0, -84, 40, digital_gain), 2266 - SOC_SINGLE_SX_TLV("RX5 Digital Volume", WCD9335_CDC_RX5_RX_VOL_CTL, 2267 - 0, -84, 40, digital_gain), 2268 - SOC_SINGLE_SX_TLV("RX6 Digital Volume", WCD9335_CDC_RX6_RX_VOL_CTL, 2269 - 0, -84, 40, digital_gain), 2270 - SOC_SINGLE_SX_TLV("RX7 Digital Volume", WCD9335_CDC_RX7_RX_VOL_CTL, 2271 - 0, -84, 40, digital_gain), 2272 - SOC_SINGLE_SX_TLV("RX8 Digital Volume", WCD9335_CDC_RX8_RX_VOL_CTL, 2273 - 0, -84, 40, digital_gain), 2274 - SOC_SINGLE_SX_TLV("RX0 Mix Digital Volume", 2275 - WCD9335_CDC_RX0_RX_VOL_MIX_CTL, 2276 - 0, -84, 40, digital_gain), 2277 - SOC_SINGLE_SX_TLV("RX1 Mix Digital Volume", 2278 - WCD9335_CDC_RX1_RX_VOL_MIX_CTL, 2279 - 0, -84, 40, digital_gain), 2280 - SOC_SINGLE_SX_TLV("RX2 Mix Digital Volume", 2281 - WCD9335_CDC_RX2_RX_VOL_MIX_CTL, 2282 - 0, -84, 40, digital_gain), 2283 - SOC_SINGLE_SX_TLV("RX3 Mix Digital Volume", 2284 - WCD9335_CDC_RX3_RX_VOL_MIX_CTL, 2285 - 0, -84, 40, digital_gain), 2286 - SOC_SINGLE_SX_TLV("RX4 Mix Digital Volume", 2287 - WCD9335_CDC_RX4_RX_VOL_MIX_CTL, 2288 - 0, -84, 40, digital_gain), 2289 - SOC_SINGLE_SX_TLV("RX5 Mix Digital Volume", 2290 - WCD9335_CDC_RX5_RX_VOL_MIX_CTL, 2291 - 0, -84, 40, digital_gain), 2292 - SOC_SINGLE_SX_TLV("RX6 Mix Digital Volume", 2293 - WCD9335_CDC_RX6_RX_VOL_MIX_CTL, 2294 - 0, -84, 40, digital_gain), 2295 - SOC_SINGLE_SX_TLV("RX7 Mix Digital Volume", 2296 - WCD9335_CDC_RX7_RX_VOL_MIX_CTL, 2297 - 0, -84, 40, digital_gain), 2298 - SOC_SINGLE_SX_TLV("RX8 Mix Digital Volume", 2299 - WCD9335_CDC_RX8_RX_VOL_MIX_CTL, 2300 - 0, -84, 40, digital_gain), 2256 + SOC_SINGLE_S8_TLV("RX0 Digital Volume", WCD9335_CDC_RX0_RX_VOL_CTL, 2257 + -84, 40, digital_gain), 2258 + SOC_SINGLE_S8_TLV("RX1 Digital Volume", WCD9335_CDC_RX1_RX_VOL_CTL, 2259 + -84, 40, digital_gain), 2260 + SOC_SINGLE_S8_TLV("RX2 Digital Volume", WCD9335_CDC_RX2_RX_VOL_CTL, 2261 + -84, 40, digital_gain), 2262 + SOC_SINGLE_S8_TLV("RX3 Digital Volume", WCD9335_CDC_RX3_RX_VOL_CTL, 2263 + -84, 40, digital_gain), 2264 + SOC_SINGLE_S8_TLV("RX4 Digital Volume", WCD9335_CDC_RX4_RX_VOL_CTL, 2265 + -84, 40, digital_gain), 2266 + SOC_SINGLE_S8_TLV("RX5 Digital Volume", WCD9335_CDC_RX5_RX_VOL_CTL, 2267 + -84, 40, digital_gain), 2268 + SOC_SINGLE_S8_TLV("RX6 Digital Volume", WCD9335_CDC_RX6_RX_VOL_CTL, 2269 + -84, 40, digital_gain), 2270 + SOC_SINGLE_S8_TLV("RX7 Digital Volume", WCD9335_CDC_RX7_RX_VOL_CTL, 2271 + -84, 40, digital_gain), 2272 + SOC_SINGLE_S8_TLV("RX8 Digital Volume", WCD9335_CDC_RX8_RX_VOL_CTL, 2273 + -84, 40, digital_gain), 2274 + SOC_SINGLE_S8_TLV("RX0 Mix Digital Volume", WCD9335_CDC_RX0_RX_VOL_MIX_CTL, 2275 + -84, 40, digital_gain), 2276 + SOC_SINGLE_S8_TLV("RX1 Mix Digital Volume", WCD9335_CDC_RX1_RX_VOL_MIX_CTL, 2277 + -84, 40, digital_gain), 2278 + SOC_SINGLE_S8_TLV("RX2 Mix Digital Volume", WCD9335_CDC_RX2_RX_VOL_MIX_CTL, 2279 + -84, 40, digital_gain), 2280 + SOC_SINGLE_S8_TLV("RX3 Mix Digital Volume", WCD9335_CDC_RX3_RX_VOL_MIX_CTL, 2281 + -84, 40, digital_gain), 2282 + SOC_SINGLE_S8_TLV("RX4 Mix Digital Volume", WCD9335_CDC_RX4_RX_VOL_MIX_CTL, 2283 + -84, 40, digital_gain), 2284 + SOC_SINGLE_S8_TLV("RX5 Mix Digital Volume", WCD9335_CDC_RX5_RX_VOL_MIX_CTL, 2285 + -84, 40, digital_gain), 2286 + SOC_SINGLE_S8_TLV("RX6 Mix Digital Volume", WCD9335_CDC_RX6_RX_VOL_MIX_CTL, 2287 + -84, 40, digital_gain), 2288 + SOC_SINGLE_S8_TLV("RX7 Mix Digital Volume", WCD9335_CDC_RX7_RX_VOL_MIX_CTL, 2289 + -84, 40, digital_gain), 2290 + SOC_SINGLE_S8_TLV("RX8 Mix Digital Volume", WCD9335_CDC_RX8_RX_VOL_MIX_CTL, 2291 + -84, 40, digital_gain), 2301 2292 SOC_ENUM("RX INT0_1 HPF cut off", cf_int0_1_enum), 2302 2293 SOC_ENUM("RX INT0_2 HPF cut off", cf_int0_2_enum), 2303 2294 SOC_ENUM("RX INT1_1 HPF cut off", cf_int1_1_enum),