Lines Matching +full:spi +full:- +full:mux

2  * wm8731.c  --  WM8731 ALSA SoC Audio driver
23 #include <linux/spi/spi.h>
82 if (wm8731->deemph) { in wm8731_set_deemph()
85 if (abs(wm8731_deemph[i] - wm8731->playback_fs) < in wm8731_set_deemph()
86 abs(wm8731_deemph[best] - wm8731->playback_fs)) in wm8731_set_deemph()
96 dev_dbg(codec->dev, "Set deemphasis %d (%dHz)\n", in wm8731_set_deemph()
108 ucontrol->value.enumerated.item[0] = wm8731->deemph; in wm8731_get_deemph()
118 int deemph = ucontrol->value.enumerated.item[0]; in wm8731_put_deemph()
122 return -EINVAL; in wm8731_put_deemph()
124 mutex_lock(&codec->mutex); in wm8731_put_deemph()
125 if (wm8731->deemph != deemph) { in wm8731_put_deemph()
126 wm8731->deemph = deemph; in wm8731_put_deemph()
132 mutex_unlock(&codec->mutex); in wm8731_put_deemph()
137 static const DECLARE_TLV_DB_SCALE(in_tlv, -3450, 150, 0);
138 static const DECLARE_TLV_DB_SCALE(sidetone_tlv, -1500, 300, 0);
139 static const DECLARE_TLV_DB_SCALE(out_tlv, -12100, 100, 1);
173 /* Input mux */
189 SND_SOC_DAPM_MUX("Input Mux", SND_SOC_NOPM, 0, 0, &wm8731_input_mux_controls),
200 struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(source->codec); in wm8731_check_osc()
202 return wm8731->sysclk_type == WM8731_SYSCLK_XTAL; in wm8731_check_osc()
222 /* input mux */
223 {"Input Mux", "Line In", "Line Input"},
224 {"Input Mux", "Mic", "Mic Bias"},
225 {"ADC", NULL, "Input Mux"},
292 struct snd_soc_codec *codec = dai->codec; in wm8731_hw_params()
295 int i = get_coeff(wm8731->sysclk, params_rate(params)); in wm8731_hw_params()
299 wm8731->playback_fs = params_rate(params); in wm8731_hw_params()
323 struct snd_soc_codec *codec = dai->codec; in wm8731_mute()
336 struct snd_soc_codec *codec = codec_dai->codec; in wm8731_set_dai_sysclk()
342 wm8731->sysclk_type = clk_id; in wm8731_set_dai_sysclk()
345 return -EINVAL; in wm8731_set_dai_sysclk()
354 wm8731->sysclk = freq; in wm8731_set_dai_sysclk()
357 return -EINVAL; in wm8731_set_dai_sysclk()
360 snd_soc_dapm_sync(&codec->dapm); in wm8731_set_dai_sysclk()
369 struct snd_soc_codec *codec = codec_dai->codec; in wm8731_set_dai_fmt()
380 return -EINVAL; in wm8731_set_dai_fmt()
400 return -EINVAL; in wm8731_set_dai_fmt()
417 return -EINVAL; in wm8731_set_dai_fmt()
438 if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) { in wm8731_set_bias_level()
439 ret = regulator_bulk_enable(ARRAY_SIZE(wm8731->supplies), in wm8731_set_bias_level()
440 wm8731->supplies); in wm8731_set_bias_level()
447 /* Clear PWROFF, gate CLKOUT, everything else as-is */ in wm8731_set_bias_level()
453 regulator_bulk_disable(ARRAY_SIZE(wm8731->supplies), in wm8731_set_bias_level()
454 wm8731->supplies); in wm8731_set_bias_level()
455 codec->cache_sync = 1; in wm8731_set_bias_level()
458 codec->dapm.bias_level = level; in wm8731_set_bias_level()
475 .name = "wm8731-hifi",
516 ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8731->control_type); in wm8731_probe()
518 dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret); in wm8731_probe()
522 for (i = 0; i < ARRAY_SIZE(wm8731->supplies); i++) in wm8731_probe()
523 wm8731->supplies[i].supply = wm8731_supply_names[i]; in wm8731_probe()
525 ret = regulator_bulk_get(codec->dev, ARRAY_SIZE(wm8731->supplies), in wm8731_probe()
526 wm8731->supplies); in wm8731_probe()
528 dev_err(codec->dev, "Failed to request supplies: %d\n", ret); in wm8731_probe()
532 ret = regulator_bulk_enable(ARRAY_SIZE(wm8731->supplies), in wm8731_probe()
533 wm8731->supplies); in wm8731_probe()
535 dev_err(codec->dev, "Failed to enable supplies: %d\n", ret); in wm8731_probe()
541 dev_err(codec->dev, "Failed to issue reset: %d\n", ret); in wm8731_probe()
557 regulator_bulk_disable(ARRAY_SIZE(wm8731->supplies), wm8731->supplies); in wm8731_probe()
562 regulator_bulk_disable(ARRAY_SIZE(wm8731->supplies), wm8731->supplies); in wm8731_probe()
564 regulator_bulk_free(ARRAY_SIZE(wm8731->supplies), wm8731->supplies); in wm8731_probe()
576 regulator_bulk_disable(ARRAY_SIZE(wm8731->supplies), wm8731->supplies); in wm8731_remove()
577 regulator_bulk_free(ARRAY_SIZE(wm8731->supplies), wm8731->supplies); in wm8731_remove()
607 static int __devinit wm8731_spi_probe(struct spi_device *spi) in wm8731_spi_probe() argument
614 return -ENOMEM; in wm8731_spi_probe()
616 wm8731->control_type = SND_SOC_SPI; in wm8731_spi_probe()
617 spi_set_drvdata(spi, wm8731); in wm8731_spi_probe()
619 ret = snd_soc_register_codec(&spi->dev, in wm8731_spi_probe()
626 static int __devexit wm8731_spi_remove(struct spi_device *spi) in wm8731_spi_remove() argument
628 snd_soc_unregister_codec(&spi->dev); in wm8731_spi_remove()
629 kfree(spi_get_drvdata(spi)); in wm8731_spi_remove()
653 return -ENOMEM; in wm8731_i2c_probe()
656 wm8731->control_type = SND_SOC_I2C; in wm8731_i2c_probe()
658 ret = snd_soc_register_codec(&i2c->dev, in wm8731_i2c_probe()
667 snd_soc_unregister_codec(&client->dev); in wm8731_i2c_remove()
703 printk(KERN_ERR "Failed to register WM8731 SPI driver: %d\n", in wm8731_modinit()