aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/tlv320aic32x4.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/codecs/tlv320aic32x4.c')
-rw-r--r--sound/soc/codecs/tlv320aic32x4.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/sound/soc/codecs/tlv320aic32x4.c b/sound/soc/codecs/tlv320aic32x4.c
index 1d9b117345a3..6ea662db2410 100644
--- a/sound/soc/codecs/tlv320aic32x4.c
+++ b/sound/soc/codecs/tlv320aic32x4.c
@@ -450,16 +450,16 @@ static int aic32x4_hw_params(struct snd_pcm_substream *substream,
450 450
451 data = snd_soc_read(codec, AIC32X4_IFACE1); 451 data = snd_soc_read(codec, AIC32X4_IFACE1);
452 data = data & ~(3 << 4); 452 data = data & ~(3 << 4);
453 switch (params_format(params)) { 453 switch (params_width(params)) {
454 case SNDRV_PCM_FORMAT_S16_LE: 454 case 16:
455 break; 455 break;
456 case SNDRV_PCM_FORMAT_S20_3LE: 456 case 20:
457 data |= (AIC32X4_WORD_LEN_20BITS << AIC32X4_DOSRMSB_SHIFT); 457 data |= (AIC32X4_WORD_LEN_20BITS << AIC32X4_DOSRMSB_SHIFT);
458 break; 458 break;
459 case SNDRV_PCM_FORMAT_S24_LE: 459 case 24:
460 data |= (AIC32X4_WORD_LEN_24BITS << AIC32X4_DOSRMSB_SHIFT); 460 data |= (AIC32X4_WORD_LEN_24BITS << AIC32X4_DOSRMSB_SHIFT);
461 break; 461 break;
462 case SNDRV_PCM_FORMAT_S32_LE: 462 case 32:
463 data |= (AIC32X4_WORD_LEN_32BITS << AIC32X4_DOSRMSB_SHIFT); 463 data |= (AIC32X4_WORD_LEN_32BITS << AIC32X4_DOSRMSB_SHIFT);
464 break; 464 break;
465 } 465 }
@@ -626,32 +626,33 @@ static int aic32x4_probe(struct snd_soc_codec *codec)
626 snd_soc_write(codec, AIC32X4_MICBIAS, AIC32X4_MICBIAS_LDOIN | 626 snd_soc_write(codec, AIC32X4_MICBIAS, AIC32X4_MICBIAS_LDOIN |
627 AIC32X4_MICBIAS_2075V); 627 AIC32X4_MICBIAS_2075V);
628 } 628 }
629 if (aic32x4->power_cfg & AIC32X4_PWR_AVDD_DVDD_WEAK_DISABLE) { 629 if (aic32x4->power_cfg & AIC32X4_PWR_AVDD_DVDD_WEAK_DISABLE)
630 snd_soc_write(codec, AIC32X4_PWRCFG, AIC32X4_AVDDWEAKDISABLE); 630 snd_soc_write(codec, AIC32X4_PWRCFG, AIC32X4_AVDDWEAKDISABLE);
631 }
632 631
633 tmp_reg = (aic32x4->power_cfg & AIC32X4_PWR_AIC32X4_LDO_ENABLE) ? 632 tmp_reg = (aic32x4->power_cfg & AIC32X4_PWR_AIC32X4_LDO_ENABLE) ?
634 AIC32X4_LDOCTLEN : 0; 633 AIC32X4_LDOCTLEN : 0;
635 snd_soc_write(codec, AIC32X4_LDOCTL, tmp_reg); 634 snd_soc_write(codec, AIC32X4_LDOCTL, tmp_reg);
636 635
637 tmp_reg = snd_soc_read(codec, AIC32X4_CMMODE); 636 tmp_reg = snd_soc_read(codec, AIC32X4_CMMODE);
638 if (aic32x4->power_cfg & AIC32X4_PWR_CMMODE_LDOIN_RANGE_18_36) { 637 if (aic32x4->power_cfg & AIC32X4_PWR_CMMODE_LDOIN_RANGE_18_36)
639 tmp_reg |= AIC32X4_LDOIN_18_36; 638 tmp_reg |= AIC32X4_LDOIN_18_36;
640 } 639 if (aic32x4->power_cfg & AIC32X4_PWR_CMMODE_HP_LDOIN_POWERED)
641 if (aic32x4->power_cfg & AIC32X4_PWR_CMMODE_HP_LDOIN_POWERED) {
642 tmp_reg |= AIC32X4_LDOIN2HP; 640 tmp_reg |= AIC32X4_LDOIN2HP;
643 }
644 snd_soc_write(codec, AIC32X4_CMMODE, tmp_reg); 641 snd_soc_write(codec, AIC32X4_CMMODE, tmp_reg);
645 642
646 /* Mic PGA routing */ 643 /* Mic PGA routing */
647 if (aic32x4->micpga_routing & AIC32X4_MICPGA_ROUTE_LMIC_IN2R_10K) 644 if (aic32x4->micpga_routing & AIC32X4_MICPGA_ROUTE_LMIC_IN2R_10K)
648 snd_soc_write(codec, AIC32X4_LMICPGANIN, AIC32X4_LMICPGANIN_IN2R_10K); 645 snd_soc_write(codec, AIC32X4_LMICPGANIN,
646 AIC32X4_LMICPGANIN_IN2R_10K);
649 else 647 else
650 snd_soc_write(codec, AIC32X4_LMICPGANIN, AIC32X4_LMICPGANIN_CM1L_10K); 648 snd_soc_write(codec, AIC32X4_LMICPGANIN,
649 AIC32X4_LMICPGANIN_CM1L_10K);
651 if (aic32x4->micpga_routing & AIC32X4_MICPGA_ROUTE_RMIC_IN1L_10K) 650 if (aic32x4->micpga_routing & AIC32X4_MICPGA_ROUTE_RMIC_IN1L_10K)
652 snd_soc_write(codec, AIC32X4_RMICPGANIN, AIC32X4_RMICPGANIN_IN1L_10K); 651 snd_soc_write(codec, AIC32X4_RMICPGANIN,
652 AIC32X4_RMICPGANIN_IN1L_10K);
653 else 653 else
654 snd_soc_write(codec, AIC32X4_RMICPGANIN, AIC32X4_RMICPGANIN_CM1R_10K); 654 snd_soc_write(codec, AIC32X4_RMICPGANIN,
655 AIC32X4_RMICPGANIN_CM1R_10K);
655 656
656 aic32x4_set_bias_level(codec, SND_SOC_BIAS_STANDBY); 657 aic32x4_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
657 658