Lines Matching refs:codec

265 static inline int aic32x4_change_page(struct snd_soc_codec *codec,
268 struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec);
275 ret = codec->hw_write(codec->control_data, data, 2);
284 static int aic32x4_write(struct snd_soc_codec *codec, unsigned int reg,
287 struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec);
295 return aic32x4_change_page(codec, val);
298 ret = aic32x4_change_page(codec, page);
306 if (codec->hw_write(codec->control_data, data, 2) == 2)
312 static unsigned int aic32x4_read(struct snd_soc_codec *codec, unsigned int reg)
314 struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec);
320 ret = aic32x4_change_page(codec, page);
324 return i2c_smbus_read_byte_data(codec->control_data, fixed_reg & 0xff);
341 static int aic32x4_add_widgets(struct snd_soc_codec *codec)
343 snd_soc_dapm_new_controls(&codec->dapm, aic32x4_dapm_widgets,
346 snd_soc_dapm_add_routes(&codec->dapm, aic32x4_dapm_routes,
349 snd_soc_dapm_new_widgets(&codec->dapm);
356 struct snd_soc_codec *codec = codec_dai->codec;
357 struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec);
372 struct snd_soc_codec *codec = codec_dai->codec;
373 struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec);
378 iface_reg_1 = snd_soc_read(codec, AIC32X4_IFACE1);
380 iface_reg_2 = snd_soc_read(codec, AIC32X4_IFACE2);
382 iface_reg_3 = snd_soc_read(codec, AIC32X4_IFACE3);
424 snd_soc_write(codec, AIC32X4_IFACE1, iface_reg_1);
425 snd_soc_write(codec, AIC32X4_IFACE2, iface_reg_2);
426 snd_soc_write(codec, AIC32X4_IFACE3, iface_reg_3);
434 struct snd_soc_codec *codec = dai->codec;
435 struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec);
446 snd_soc_write(codec, AIC32X4_CLKMUX, AIC32X4_PLLCLKIN);
447 snd_soc_write(codec, AIC32X4_IFACE3, AIC32X4_DACMOD2BCLK);
450 data = snd_soc_read(codec, AIC32X4_PLLPR);
452 snd_soc_write(codec, AIC32X4_PLLPR,
455 snd_soc_write(codec, AIC32X4_PLLJ, aic32x4_divs[i].pll_j);
457 snd_soc_write(codec, AIC32X4_PLLDMSB, (aic32x4_divs[i].pll_d >> 8));
458 snd_soc_write(codec, AIC32X4_PLLDLSB,
462 data = snd_soc_read(codec, AIC32X4_NDAC);
464 snd_soc_write(codec, AIC32X4_NDAC, data | aic32x4_divs[i].ndac);
467 data = snd_soc_read(codec, AIC32X4_MDAC);
469 snd_soc_write(codec, AIC32X4_MDAC, data | aic32x4_divs[i].mdac);
472 snd_soc_write(codec, AIC32X4_DOSRMSB, aic32x4_divs[i].dosr >> 8);
473 snd_soc_write(codec, AIC32X4_DOSRLSB,
477 data = snd_soc_read(codec, AIC32X4_NADC);
479 snd_soc_write(codec, AIC32X4_NADC, data | aic32x4_divs[i].nadc);
482 data = snd_soc_read(codec, AIC32X4_MADC);
484 snd_soc_write(codec, AIC32X4_MADC, data | aic32x4_divs[i].madc);
487 snd_soc_write(codec, AIC32X4_AOSR, aic32x4_divs[i].aosr);
490 data = snd_soc_read(codec, AIC32X4_BCLKN);
492 snd_soc_write(codec, AIC32X4_BCLKN, data | aic32x4_divs[i].blck_N);
494 data = snd_soc_read(codec, AIC32X4_IFACE1);
509 snd_soc_write(codec, AIC32X4_IFACE1, data);
516 struct snd_soc_codec *codec = dai->codec;
519 dac_reg = snd_soc_read(codec, AIC32X4_DACMUTE) & ~AIC32X4_MUTEON;
521 snd_soc_write(codec, AIC32X4_DACMUTE, dac_reg | AIC32X4_MUTEON);
523 snd_soc_write(codec, AIC32X4_DACMUTE, dac_reg);
527 static int aic32x4_set_bias_level(struct snd_soc_codec *codec,
530 struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec);
537 value = snd_soc_read(codec, AIC32X4_PLLPR);
538 snd_soc_write(codec, AIC32X4_PLLPR,
542 value = snd_soc_read(codec, AIC32X4_NDAC);
543 snd_soc_write(codec, AIC32X4_NDAC,
547 value = snd_soc_read(codec, AIC32X4_MDAC);
548 snd_soc_write(codec, AIC32X4_MDAC,
552 value = snd_soc_read(codec, AIC32X4_NADC);
553 snd_soc_write(codec, AIC32X4_NADC,
557 value = snd_soc_read(codec, AIC32X4_MADC);
558 snd_soc_write(codec, AIC32X4_MADC,
562 value = snd_soc_read(codec, AIC32X4_BCLKN);
563 snd_soc_write(codec, AIC32X4_BCLKN,
572 value = snd_soc_read(codec, AIC32X4_PLLPR);
573 snd_soc_write(codec, AIC32X4_PLLPR,
577 value = snd_soc_read(codec, AIC32X4_NDAC);
578 snd_soc_write(codec, AIC32X4_NDAC,
582 value = snd_soc_read(codec, AIC32X4_MDAC);
583 snd_soc_write(codec, AIC32X4_MDAC,
587 value = snd_soc_read(codec, AIC32X4_NADC);
588 snd_soc_write(codec, AIC32X4_NADC,
592 value = snd_soc_read(codec, AIC32X4_MADC);
593 snd_soc_write(codec, AIC32X4_MADC,
595 value = snd_soc_read(codec, AIC32X4_BCLKN);
598 snd_soc_write(codec, AIC32X4_BCLKN,
605 codec->dapm.bias_level = level;
638 static int aic32x4_suspend(struct snd_soc_codec *codec, pm_message_t state)
640 aic32x4_set_bias_level(codec, SND_SOC_BIAS_OFF);
644 static int aic32x4_resume(struct snd_soc_codec *codec)
646 aic32x4_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
650 static int aic32x4_probe(struct snd_soc_codec *codec)
652 struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec);
655 codec->hw_write = (hw_write_t) i2c_master_send;
656 codec->control_data = aic32x4->control_data;
658 snd_soc_write(codec, AIC32X4_RESET, 0x01);
662 snd_soc_write(codec, AIC32X4_MICBIAS, AIC32X4_MICBIAS_LDOIN |
666 snd_soc_write(codec, AIC32X4_PWRCFG, AIC32X4_AVDDWEAKDISABLE);
669 snd_soc_write(codec, AIC32X4_LDOCTL, AIC32X4_LDOCTLEN);
671 tmp_reg = snd_soc_read(codec, AIC32X4_CMMODE);
678 snd_soc_write(codec, AIC32X4_CMMODE, tmp_reg);
682 snd_soc_write(codec, AIC32X4_DACSETUP, AIC32X4_LDAC2RCHN | AIC32X4_RDAC2LCHN);
684 snd_soc_write(codec, AIC32X4_DACSETUP, AIC32X4_LDAC2LCHN | AIC32X4_RDAC2RCHN);
689 snd_soc_write(codec, AIC32X4_LMICPGANIN, AIC32X4_LMICPGANIN_IN2R_10K);
692 snd_soc_write(codec, AIC32X4_RMICPGANIN, AIC32X4_RMICPGANIN_IN1L_10K);
695 aic32x4_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
696 snd_soc_add_controls(codec, aic32x4_snd_controls,
698 aic32x4_add_widgets(codec);
703 static int aic32x4_remove(struct snd_soc_codec *codec)
705 aic32x4_set_bias_level(codec, SND_SOC_BIAS_OFF);
792 MODULE_DESCRIPTION("ASoC tlv320aic32x4 codec driver");