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, ®); 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 (snd_soc_codec_get_bias_level(codec) == 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 (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) in dac33_set_bias_level()
649 ret = dac33_hard_power(codec, 0); in dac33_set_bias_level()
660 struct snd_soc_codec *codec = dac33->codec; in dac33_prefill_handler() local
666 dac33_write16(codec, DAC33_NSAMPLE_MSB, in dac33_prefill_handler()
675 dac33_write16(codec, DAC33_PREFILL_MSB, in dac33_prefill_handler()
681 dac33_write(codec, DAC33_FIFO_IRQ_MASK, DAC33_MAT); in dac33_prefill_handler()
691 dac33_write16(codec, DAC33_PREFILL_MSB, in dac33_prefill_handler()
695 dac33_write(codec, DAC33_FIFO_IRQ_MASK, DAC33_MUT); in dac33_prefill_handler()
698 dev_warn(codec->dev, "Unhandled FIFO mode: %d\n", in dac33_prefill_handler()
706 struct snd_soc_codec *codec = dac33->codec; in dac33_playback_handler() local
716 dac33_write16(codec, DAC33_NSAMPLE_MSB, in dac33_playback_handler()
723 dev_warn(codec->dev, "Unhandled FIFO mode: %d\n", in dac33_playback_handler()
731 struct snd_soc_codec *codec; in dac33_work() local
736 codec = dac33->codec; in dac33_work()
752 dac33_write(codec, DAC33_FIFO_IRQ_MASK, 0); in dac33_work()
755 reg = dac33_read_reg_cache(codec, DAC33_FIFO_CTRL_A); in dac33_work()
757 dac33_write(codec, DAC33_FIFO_CTRL_A, reg); in dac33_work()
765 struct snd_soc_codec *codec = dev; in dac33_interrupt_handler() local
766 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_interrupt_handler()
780 static void dac33_oscwait(struct snd_soc_codec *codec) in dac33_oscwait() argument
787 dac33_read(codec, DAC33_INT_OSC_STATUS, ®); in dac33_oscwait()
790 dev_err(codec->dev, in dac33_oscwait()
797 struct snd_soc_codec *codec = dai->codec; in dac33_startup() local
798 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_startup()
809 struct snd_soc_codec *codec = dai->codec; in dac33_shutdown() local
810 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_shutdown()
821 struct snd_soc_codec *codec = dai->codec; in dac33_hw_params() local
822 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_hw_params()
830 dev_err(codec->dev, "unsupported rate %d\n", in dac33_hw_params()
845 dev_err(codec->dev, "unsupported width %d\n", in dac33_hw_params()
864 struct snd_soc_codec *codec) in dac33_prepare_chip() argument
866 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_prepare_chip()
878 dev_err(codec->dev, "unsupported rate %d\n", in dac33_prepare_chip()
884 aictrl_a = dac33_read_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_A); in dac33_prepare_chip()
887 fifoctrl_a = dac33_read_reg_cache(codec, DAC33_FIFO_CTRL_A); in dac33_prepare_chip()
900 dev_err(codec->dev, "unsupported format %d\n", in dac33_prepare_chip()
916 dac33_soft_power(codec, 0); in dac33_prepare_chip()
917 dac33_soft_power(codec, 1); in dac33_prepare_chip()
919 reg_tmp = dac33_read_reg_cache(codec, DAC33_INT_OSC_CTRL); in dac33_prepare_chip()
920 dac33_write(codec, DAC33_INT_OSC_CTRL, reg_tmp); in dac33_prepare_chip()
923 dac33_write16(codec, DAC33_INT_OSC_FREQ_RAT_A, oscset); in dac33_prepare_chip()
926 dac33_write(codec, DAC33_CALIB_TIME, 96); in dac33_prepare_chip()
929 dac33_write(codec, DAC33_INT_OSC_CTRL_B, DAC33_ADJTHRSHLD(2) | in dac33_prepare_chip()
933 dac33_write(codec, DAC33_INT_OSC_CTRL_C, DAC33_REFDIV(4)); in dac33_prepare_chip()
935 pwr_ctrl = dac33_read_reg_cache(codec, DAC33_PWR_CTRL); in dac33_prepare_chip()
937 dac33_write(codec, DAC33_PWR_CTRL, pwr_ctrl); in dac33_prepare_chip()
939 dac33_oscwait(codec); in dac33_prepare_chip()
944 dac33_write(codec, DAC33_ASRC_CTRL_A, DAC33_SRCLKDIV(1)); in dac33_prepare_chip()
945 dac33_write(codec, DAC33_ASRC_CTRL_B, 1); /* ??? */ in dac33_prepare_chip()
948 dac33_write16(codec, DAC33_SRC_REF_CLK_RATIO_A, ratioset); in dac33_prepare_chip()
951 dac33_write(codec, DAC33_INTP_CTRL_A, DAC33_INTPM_AHIGH); in dac33_prepare_chip()
955 dac33_write(codec, DAC33_ASRC_CTRL_A, DAC33_SRCBYP); in dac33_prepare_chip()
956 dac33_write(codec, DAC33_ASRC_CTRL_B, 0); /* ??? */ in dac33_prepare_chip()
962 dac33_write(codec, DAC33_FIFO_IRQ_MODE_B, in dac33_prepare_chip()
966 dac33_write(codec, DAC33_FIFO_IRQ_MODE_A, in dac33_prepare_chip()
974 aictrl_b = dac33_read_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_B); in dac33_prepare_chip()
1016 dac33_write(codec, DAC33_FIFO_CTRL_A, fifoctrl_a); in dac33_prepare_chip()
1017 dac33_write(codec, DAC33_SER_AUDIOIF_CTRL_A, aictrl_a); in dac33_prepare_chip()
1018 dac33_write(codec, DAC33_SER_AUDIOIF_CTRL_B, aictrl_b); in dac33_prepare_chip()
1030 dac33_write(codec, DAC33_SER_AUDIOIF_CTRL_C, in dac33_prepare_chip()
1034 dac33_write(codec, DAC33_SER_AUDIOIF_CTRL_C, 32); in dac33_prepare_chip()
1036 dac33_write(codec, DAC33_SER_AUDIOIF_CTRL_C, 16); in dac33_prepare_chip()
1040 dac33_write16(codec, DAC33_ATHR_MSB, in dac33_prepare_chip()
1048 dac33_write16(codec, DAC33_UTHR_MSB, DAC33_THRREG(dac33->uthr)); in dac33_prepare_chip()
1049 dac33_write16(codec, DAC33_LTHR_MSB, in dac33_prepare_chip()
1062 struct snd_soc_codec *codec) in dac33_calculate_times() argument
1064 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_calculate_times()
1121 struct snd_soc_codec *codec = dai->codec; in dac33_pcm_trigger() local
1122 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_pcm_trigger()
1153 struct snd_soc_codec *codec = dai->codec; in dac33_dai_delay() local
1154 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_dai_delay()
1286 dev_warn(codec->dev, "Unhandled FIFO mode: %d\n", in dac33_dai_delay()
1297 struct snd_soc_codec *codec = codec_dai->codec; in dac33_set_dai_sysclk() local
1298 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_set_dai_sysclk()
1301 ioc_reg = dac33_read_reg_cache(codec, DAC33_INT_OSC_CTRL); in dac33_set_dai_sysclk()
1302 asrcb_reg = dac33_read_reg_cache(codec, DAC33_ASRC_CTRL_B); in dac33_set_dai_sysclk()
1313 dev_err(codec->dev, "Invalid clock ID (%d)\n", clk_id); in dac33_set_dai_sysclk()
1318 dac33_write_reg_cache(codec, DAC33_INT_OSC_CTRL, ioc_reg); in dac33_set_dai_sysclk()
1319 dac33_write_reg_cache(codec, DAC33_ASRC_CTRL_B, asrcb_reg); in dac33_set_dai_sysclk()
1327 struct snd_soc_codec *codec = codec_dai->codec; in dac33_set_dai_fmt() local
1328 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_set_dai_fmt()
1331 aictrl_a = dac33_read_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_A); in dac33_set_dai_fmt()
1332 aictrl_b = dac33_read_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_B); in dac33_set_dai_fmt()
1342 dev_err(codec->dev, "FIFO mode requires master mode\n"); in dac33_set_dai_fmt()
1368 dev_err(codec->dev, "Unsupported format (%u)\n", in dac33_set_dai_fmt()
1373 dac33_write_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_A, aictrl_a); in dac33_set_dai_fmt()
1374 dac33_write_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_B, aictrl_b); in dac33_set_dai_fmt()
1379 static int dac33_soc_probe(struct snd_soc_codec *codec) in dac33_soc_probe() argument
1381 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_soc_probe()
1384 codec->control_data = dac33->control_data; in dac33_soc_probe()
1385 codec->hw_write = (hw_write_t) i2c_master_send; in dac33_soc_probe()
1386 dac33->codec = codec; in dac33_soc_probe()
1389 ret = dac33_hard_power(codec, 1); in dac33_soc_probe()
1391 dev_err(codec->dev, "Failed to power up codec: %d\n", ret); in dac33_soc_probe()
1394 ret = dac33_read_id(codec); in dac33_soc_probe()
1395 dac33_hard_power(codec, 0); in dac33_soc_probe()
1398 dev_err(codec->dev, "Failed to read chip ID: %d\n", ret); in dac33_soc_probe()
1407 codec->component.name, codec); in dac33_soc_probe()
1409 dev_err(codec->dev, "Could not request IRQ%d (%d)\n", in dac33_soc_probe()
1418 free_irq(dac33->irq, codec); in dac33_soc_probe()
1428 snd_soc_add_codec_controls(codec, dac33_mode_snd_controls, in dac33_soc_probe()
1435 static int dac33_soc_remove(struct snd_soc_codec *codec) in dac33_soc_remove() argument
1437 struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); in dac33_soc_remove()
1440 free_irq(dac33->irq, dac33->codec); in dac33_soc_remove()
1567 dac33_hard_power(dac33->codec, 0); in dac33_i2c_remove()