Lines Matching refs:codec

66 				  struct snd_soc_codec *codec);
68 struct snd_soc_codec *codec);
95 struct snd_soc_codec *codec; member
174 static inline unsigned int dac33_read_reg_cache(struct snd_soc_codec *codec, in dac33_read_reg_cache() argument
177 u8 *cache = codec->reg_cache; in dac33_read_reg_cache()
184 static inline void dac33_write_reg_cache(struct snd_soc_codec *codec, in dac33_write_reg_cache() argument
187 u8 *cache = codec->reg_cache; in dac33_write_reg_cache()
194 static int dac33_read(struct snd_soc_codec *codec, unsigned int reg, in dac33_read() argument
197 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_read()
204 val = i2c_smbus_read_byte_data(codec->control_data, value[0]); in dac33_read()
206 dev_err(codec->dev, "Read failed (%d)\n", val); in dac33_read()
207 value[0] = dac33_read_reg_cache(codec, reg); in dac33_read()
211 dac33_write_reg_cache(codec, reg, val); in dac33_read()
214 value[0] = dac33_read_reg_cache(codec, reg); in dac33_read()
220 static int dac33_write(struct snd_soc_codec *codec, unsigned int reg, in dac33_write() argument
223 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_write()
235 dac33_write_reg_cache(codec, data[0], data[1]); in dac33_write()
237 ret = codec->hw_write(codec->control_data, data, 2); in dac33_write()
239 dev_err(codec->dev, "Write failed (%d)\n", ret); in dac33_write()
247 static int dac33_write_locked(struct snd_soc_codec *codec, unsigned int reg, in dac33_write_locked() argument
250 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_write_locked()
254 ret = dac33_write(codec, reg, value); in dac33_write_locked()
261 static int dac33_write16(struct snd_soc_codec *codec, unsigned int reg, in dac33_write16() argument
264 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_write16()
278 dac33_write_reg_cache(codec, data[0], data[1]); in dac33_write16()
279 dac33_write_reg_cache(codec, data[0] + 1, data[2]); in dac33_write16()
284 ret = codec->hw_write(codec->control_data, data, 3); in dac33_write16()
286 dev_err(codec->dev, "Write failed (%d)\n", ret); in dac33_write16()
294 static void dac33_init_chip(struct snd_soc_codec *codec) in dac33_init_chip() argument
296 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_init_chip()
302 dac33_write(codec, DAC33_DAC_CTRL_A, DAC33_DACRATE(0)); in dac33_init_chip()
304 dac33_write(codec, DAC33_DAC_CTRL_B, DAC33_DACSRCR_RIGHT | in dac33_init_chip()
307 dac33_write(codec, DAC33_DAC_CTRL_C, 0x00); in dac33_init_chip()
311 dac33_write(codec, DAC33_ANA_VOL_SOFT_STEP_CTRL, DAC33_VOLCLKEN); in dac33_init_chip()
314 dac33_write(codec, DAC33_LDAC_DIG_VOL_CTRL, in dac33_init_chip()
315 dac33_read_reg_cache(codec, DAC33_LDAC_DIG_VOL_CTRL)); in dac33_init_chip()
316 dac33_write(codec, DAC33_RDAC_DIG_VOL_CTRL, in dac33_init_chip()
317 dac33_read_reg_cache(codec, DAC33_RDAC_DIG_VOL_CTRL)); in dac33_init_chip()
319 dac33_write(codec, DAC33_LINEL_TO_LLO_VOL, in dac33_init_chip()
320 dac33_read_reg_cache(codec, DAC33_LINEL_TO_LLO_VOL)); in dac33_init_chip()
321 dac33_write(codec, DAC33_LINER_TO_RLO_VOL, in dac33_init_chip()
322 dac33_read_reg_cache(codec, DAC33_LINER_TO_RLO_VOL)); in dac33_init_chip()
324 dac33_write(codec, DAC33_OUT_AMP_CTRL, in dac33_init_chip()
325 dac33_read_reg_cache(codec, DAC33_OUT_AMP_CTRL)); in dac33_init_chip()
327 dac33_write(codec, DAC33_LDAC_PWR_CTRL, in dac33_init_chip()
328 dac33_read_reg_cache(codec, DAC33_LDAC_PWR_CTRL)); in dac33_init_chip()
329 dac33_write(codec, DAC33_RDAC_PWR_CTRL, in dac33_init_chip()
330 dac33_read_reg_cache(codec, DAC33_RDAC_PWR_CTRL)); in dac33_init_chip()
333 static inline int dac33_read_id(struct snd_soc_codec *codec) in dac33_read_id() argument
339 ret = dac33_read(codec, DAC33_DEVICE_ID_MSB + i, &reg); in dac33_read_id()
347 static inline void dac33_soft_power(struct snd_soc_codec *codec, int power) in dac33_soft_power() argument
351 reg = dac33_read_reg_cache(codec, DAC33_PWR_CTRL); in dac33_soft_power()
357 dac33_write(codec, DAC33_PWR_CTRL, reg); in dac33_soft_power()
360 static inline void dac33_disable_digital(struct snd_soc_codec *codec) in dac33_disable_digital() argument
365 reg = dac33_read_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_B); in dac33_disable_digital()
367 dac33_write(codec, DAC33_SER_AUDIOIF_CTRL_B, reg); in dac33_disable_digital()
370 reg = dac33_read_reg_cache(codec, DAC33_PWR_CTRL); in dac33_disable_digital()
372 dac33_write(codec, DAC33_PWR_CTRL, reg); in dac33_disable_digital()
375 static int dac33_hard_power(struct snd_soc_codec *codec, int power) in dac33_hard_power() argument
377 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_hard_power()
384 dev_dbg(codec->dev, "Trying to set the same power state: %s\n", in dac33_hard_power()
393 dev_err(codec->dev, in dac33_hard_power()
403 dac33_soft_power(codec, 0); in dac33_hard_power()
410 dev_err(codec->dev, in dac33_hard_power()
426 struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); in dac33_playback_event() local
427 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_playback_event()
432 dac33_calculate_times(dac33->substream, codec); in dac33_playback_event()
433 dac33_prepare_chip(dac33->substream, codec); in dac33_playback_event()
437 dac33_disable_digital(codec); in dac33_playback_event()
446 struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); in dac33_get_fifo_mode() local
447 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_get_fifo_mode()
457 struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); in dac33_set_fifo_mode() local
458 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_set_fifo_mode()
464 if (snd_soc_codec_is_active(codec)) in dac33_set_fifo_mode()
625 static int dac33_set_bias_level(struct snd_soc_codec *codec, in dac33_set_bias_level() argument
636 if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) { in dac33_set_bias_level()
638 ret = dac33_hard_power(codec, 1); in dac33_set_bias_level()
642 dac33_init_chip(codec); in dac33_set_bias_level()
647 if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) in dac33_set_bias_level()
649 ret = dac33_hard_power(codec, 0); in dac33_set_bias_level()
654 codec->dapm.bias_level = level; in dac33_set_bias_level()
661 struct snd_soc_codec *codec = dac33->codec; in dac33_prefill_handler() local
667 dac33_write16(codec, DAC33_NSAMPLE_MSB, in dac33_prefill_handler()
676 dac33_write16(codec, DAC33_PREFILL_MSB, in dac33_prefill_handler()
682 dac33_write(codec, DAC33_FIFO_IRQ_MASK, DAC33_MAT); in dac33_prefill_handler()
692 dac33_write16(codec, DAC33_PREFILL_MSB, in dac33_prefill_handler()
696 dac33_write(codec, DAC33_FIFO_IRQ_MASK, DAC33_MUT); in dac33_prefill_handler()
699 dev_warn(codec->dev, "Unhandled FIFO mode: %d\n", in dac33_prefill_handler()
707 struct snd_soc_codec *codec = dac33->codec; in dac33_playback_handler() local
717 dac33_write16(codec, DAC33_NSAMPLE_MSB, in dac33_playback_handler()
724 dev_warn(codec->dev, "Unhandled FIFO mode: %d\n", in dac33_playback_handler()
732 struct snd_soc_codec *codec; in dac33_work() local
737 codec = dac33->codec; in dac33_work()
753 dac33_write(codec, DAC33_FIFO_IRQ_MASK, 0); in dac33_work()
756 reg = dac33_read_reg_cache(codec, DAC33_FIFO_CTRL_A); in dac33_work()
758 dac33_write(codec, DAC33_FIFO_CTRL_A, reg); in dac33_work()
766 struct snd_soc_codec *codec = dev; in dac33_interrupt_handler() local
767 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_interrupt_handler()
781 static void dac33_oscwait(struct snd_soc_codec *codec) in dac33_oscwait() argument
788 dac33_read(codec, DAC33_INT_OSC_STATUS, &reg); in dac33_oscwait()
791 dev_err(codec->dev, in dac33_oscwait()
798 struct snd_soc_codec *codec = dai->codec; in dac33_startup() local
799 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_startup()
810 struct snd_soc_codec *codec = dai->codec; in dac33_shutdown() local
811 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_shutdown()
822 struct snd_soc_codec *codec = dai->codec; in dac33_hw_params() local
823 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_hw_params()
831 dev_err(codec->dev, "unsupported rate %d\n", in dac33_hw_params()
846 dev_err(codec->dev, "unsupported width %d\n", in dac33_hw_params()
865 struct snd_soc_codec *codec) in dac33_prepare_chip() argument
867 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_prepare_chip()
879 dev_err(codec->dev, "unsupported rate %d\n", in dac33_prepare_chip()
885 aictrl_a = dac33_read_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_A); in dac33_prepare_chip()
888 fifoctrl_a = dac33_read_reg_cache(codec, DAC33_FIFO_CTRL_A); in dac33_prepare_chip()
901 dev_err(codec->dev, "unsupported format %d\n", in dac33_prepare_chip()
917 dac33_soft_power(codec, 0); in dac33_prepare_chip()
918 dac33_soft_power(codec, 1); in dac33_prepare_chip()
920 reg_tmp = dac33_read_reg_cache(codec, DAC33_INT_OSC_CTRL); in dac33_prepare_chip()
921 dac33_write(codec, DAC33_INT_OSC_CTRL, reg_tmp); in dac33_prepare_chip()
924 dac33_write16(codec, DAC33_INT_OSC_FREQ_RAT_A, oscset); in dac33_prepare_chip()
927 dac33_write(codec, DAC33_CALIB_TIME, 96); in dac33_prepare_chip()
930 dac33_write(codec, DAC33_INT_OSC_CTRL_B, DAC33_ADJTHRSHLD(2) | in dac33_prepare_chip()
934 dac33_write(codec, DAC33_INT_OSC_CTRL_C, DAC33_REFDIV(4)); in dac33_prepare_chip()
936 pwr_ctrl = dac33_read_reg_cache(codec, DAC33_PWR_CTRL); in dac33_prepare_chip()
938 dac33_write(codec, DAC33_PWR_CTRL, pwr_ctrl); in dac33_prepare_chip()
940 dac33_oscwait(codec); in dac33_prepare_chip()
945 dac33_write(codec, DAC33_ASRC_CTRL_A, DAC33_SRCLKDIV(1)); in dac33_prepare_chip()
946 dac33_write(codec, DAC33_ASRC_CTRL_B, 1); /* ??? */ in dac33_prepare_chip()
949 dac33_write16(codec, DAC33_SRC_REF_CLK_RATIO_A, ratioset); in dac33_prepare_chip()
952 dac33_write(codec, DAC33_INTP_CTRL_A, DAC33_INTPM_AHIGH); in dac33_prepare_chip()
956 dac33_write(codec, DAC33_ASRC_CTRL_A, DAC33_SRCBYP); in dac33_prepare_chip()
957 dac33_write(codec, DAC33_ASRC_CTRL_B, 0); /* ??? */ in dac33_prepare_chip()
963 dac33_write(codec, DAC33_FIFO_IRQ_MODE_B, in dac33_prepare_chip()
967 dac33_write(codec, DAC33_FIFO_IRQ_MODE_A, in dac33_prepare_chip()
975 aictrl_b = dac33_read_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_B); in dac33_prepare_chip()
1017 dac33_write(codec, DAC33_FIFO_CTRL_A, fifoctrl_a); in dac33_prepare_chip()
1018 dac33_write(codec, DAC33_SER_AUDIOIF_CTRL_A, aictrl_a); in dac33_prepare_chip()
1019 dac33_write(codec, DAC33_SER_AUDIOIF_CTRL_B, aictrl_b); in dac33_prepare_chip()
1031 dac33_write(codec, DAC33_SER_AUDIOIF_CTRL_C, in dac33_prepare_chip()
1035 dac33_write(codec, DAC33_SER_AUDIOIF_CTRL_C, 32); in dac33_prepare_chip()
1037 dac33_write(codec, DAC33_SER_AUDIOIF_CTRL_C, 16); in dac33_prepare_chip()
1041 dac33_write16(codec, DAC33_ATHR_MSB, in dac33_prepare_chip()
1049 dac33_write16(codec, DAC33_UTHR_MSB, DAC33_THRREG(dac33->uthr)); in dac33_prepare_chip()
1050 dac33_write16(codec, DAC33_LTHR_MSB, in dac33_prepare_chip()
1063 struct snd_soc_codec *codec) in dac33_calculate_times() argument
1065 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_calculate_times()
1122 struct snd_soc_codec *codec = dai->codec; in dac33_pcm_trigger() local
1123 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_pcm_trigger()
1154 struct snd_soc_codec *codec = dai->codec; in dac33_dai_delay() local
1155 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_dai_delay()
1287 dev_warn(codec->dev, "Unhandled FIFO mode: %d\n", in dac33_dai_delay()
1298 struct snd_soc_codec *codec = codec_dai->codec; in dac33_set_dai_sysclk() local
1299 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_set_dai_sysclk()
1302 ioc_reg = dac33_read_reg_cache(codec, DAC33_INT_OSC_CTRL); in dac33_set_dai_sysclk()
1303 asrcb_reg = dac33_read_reg_cache(codec, DAC33_ASRC_CTRL_B); in dac33_set_dai_sysclk()
1314 dev_err(codec->dev, "Invalid clock ID (%d)\n", clk_id); in dac33_set_dai_sysclk()
1319 dac33_write_reg_cache(codec, DAC33_INT_OSC_CTRL, ioc_reg); in dac33_set_dai_sysclk()
1320 dac33_write_reg_cache(codec, DAC33_ASRC_CTRL_B, asrcb_reg); in dac33_set_dai_sysclk()
1328 struct snd_soc_codec *codec = codec_dai->codec; in dac33_set_dai_fmt() local
1329 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_set_dai_fmt()
1332 aictrl_a = dac33_read_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_A); in dac33_set_dai_fmt()
1333 aictrl_b = dac33_read_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_B); in dac33_set_dai_fmt()
1343 dev_err(codec->dev, "FIFO mode requires master mode\n"); in dac33_set_dai_fmt()
1369 dev_err(codec->dev, "Unsupported format (%u)\n", in dac33_set_dai_fmt()
1374 dac33_write_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_A, aictrl_a); in dac33_set_dai_fmt()
1375 dac33_write_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_B, aictrl_b); in dac33_set_dai_fmt()
1380 static int dac33_soc_probe(struct snd_soc_codec *codec) in dac33_soc_probe() argument
1382 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_soc_probe()
1385 codec->control_data = dac33->control_data; in dac33_soc_probe()
1386 codec->hw_write = (hw_write_t) i2c_master_send; in dac33_soc_probe()
1387 dac33->codec = codec; in dac33_soc_probe()
1390 ret = dac33_hard_power(codec, 1); in dac33_soc_probe()
1392 dev_err(codec->dev, "Failed to power up codec: %d\n", ret); in dac33_soc_probe()
1395 ret = dac33_read_id(codec); in dac33_soc_probe()
1396 dac33_hard_power(codec, 0); in dac33_soc_probe()
1399 dev_err(codec->dev, "Failed to read chip ID: %d\n", ret); in dac33_soc_probe()
1408 codec->component.name, codec); in dac33_soc_probe()
1410 dev_err(codec->dev, "Could not request IRQ%d (%d)\n", in dac33_soc_probe()
1419 free_irq(dac33->irq, codec); in dac33_soc_probe()
1429 snd_soc_add_codec_controls(codec, dac33_mode_snd_controls, in dac33_soc_probe()
1436 static int dac33_soc_remove(struct snd_soc_codec *codec) in dac33_soc_remove() argument
1438 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_soc_remove()
1441 free_irq(dac33->irq, dac33->codec); in dac33_soc_remove()
1568 dac33_hard_power(dac33->codec, 0); in dac33_i2c_remove()