Searched refs:rt5677 (Results 1 - 9 of 9) sorted by relevance

/linux-4.4.14/sound/soc/codecs/
H A Drt5677.c2 * rt5677.c -- RT5677 ALSA SoC audio codec driver
33 #include "rt5677.h"
34 #include "rt5677-spi.h"
547 * @rt5677: Private Data.
554 static int rt5677_dsp_mode_i2c_write_addr(struct rt5677_priv *rt5677, rt5677_dsp_mode_i2c_write_addr() argument
557 struct snd_soc_codec *codec = rt5677->codec; rt5677_dsp_mode_i2c_write_addr()
560 mutex_lock(&rt5677->dsp_cmd_lock); rt5677_dsp_mode_i2c_write_addr()
562 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_ADDR_MSB, rt5677_dsp_mode_i2c_write_addr()
569 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_ADDR_LSB, rt5677_dsp_mode_i2c_write_addr()
576 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_DATA_MSB, rt5677_dsp_mode_i2c_write_addr()
583 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_DATA_LSB, rt5677_dsp_mode_i2c_write_addr()
590 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_OP_CODE, rt5677_dsp_mode_i2c_write_addr()
598 mutex_unlock(&rt5677->dsp_cmd_lock); rt5677_dsp_mode_i2c_write_addr()
605 * rt5677: Private Data.
613 struct rt5677_priv *rt5677, unsigned int addr, unsigned int *value) rt5677_dsp_mode_i2c_read_addr()
615 struct snd_soc_codec *codec = rt5677->codec; rt5677_dsp_mode_i2c_read_addr()
619 mutex_lock(&rt5677->dsp_cmd_lock); rt5677_dsp_mode_i2c_read_addr()
621 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_ADDR_MSB, rt5677_dsp_mode_i2c_read_addr()
628 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_ADDR_LSB, rt5677_dsp_mode_i2c_read_addr()
635 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_OP_CODE, rt5677_dsp_mode_i2c_read_addr()
642 regmap_read(rt5677->regmap_physical, RT5677_DSP_I2C_DATA_MSB, &msb); rt5677_dsp_mode_i2c_read_addr()
643 regmap_read(rt5677->regmap_physical, RT5677_DSP_I2C_DATA_LSB, &lsb); rt5677_dsp_mode_i2c_read_addr()
647 mutex_unlock(&rt5677->dsp_cmd_lock); rt5677_dsp_mode_i2c_read_addr()
654 * rt5677: Private Data.
661 static int rt5677_dsp_mode_i2c_write(struct rt5677_priv *rt5677, rt5677_dsp_mode_i2c_write() argument
664 return rt5677_dsp_mode_i2c_write_addr(rt5677, 0x18020000 + reg * 2, rt5677_dsp_mode_i2c_write()
678 struct rt5677_priv *rt5677, unsigned int reg, unsigned int *value) rt5677_dsp_mode_i2c_read()
680 int ret = rt5677_dsp_mode_i2c_read_addr(rt5677, 0x18020000 + reg * 2, rt5677_dsp_mode_i2c_read()
690 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_set_dsp_mode() local
693 regmap_update_bits(rt5677->regmap, RT5677_PWR_DSP1, 0x2, 0x2); rt5677_set_dsp_mode()
694 rt5677->is_dsp_mode = true; rt5677_set_dsp_mode()
696 regmap_update_bits(rt5677->regmap, RT5677_PWR_DSP1, 0x2, 0x0); rt5677_set_dsp_mode()
697 rt5677->is_dsp_mode = false; rt5677_set_dsp_mode()
703 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_set_dsp_vad() local
713 regcache_cache_only(rt5677->regmap, false); rt5677_set_dsp_vad()
714 regcache_cache_bypass(rt5677->regmap, true); rt5677_set_dsp_vad()
716 regmap_update_bits(rt5677->regmap, RT5677_DIG_MISC, 0x1, 0x1); rt5677_set_dsp_vad()
717 regmap_update_bits(rt5677->regmap, rt5677_set_dsp_vad()
719 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG1, rt5677_set_dsp_vad()
721 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, rt5677_set_dsp_vad()
723 switch (rt5677->type) { rt5677_set_dsp_vad()
725 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, rt5677_set_dsp_vad()
727 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK2, rt5677_set_dsp_vad()
734 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK2, rt5677_set_dsp_vad()
741 regmap_write(rt5677->regmap, RT5677_PWR_DSP2, 0x07ff); rt5677_set_dsp_vad()
742 regmap_write(rt5677->regmap, RT5677_PWR_DSP1, 0x07fd); rt5677_set_dsp_vad()
745 ret = request_firmware(&rt5677->fw1, RT5677_FIRMWARE1, rt5677_set_dsp_vad()
748 rt5677_spi_write_firmware(0x50000000, rt5677->fw1); rt5677_set_dsp_vad()
749 release_firmware(rt5677->fw1); rt5677_set_dsp_vad()
752 ret = request_firmware(&rt5677->fw2, RT5677_FIRMWARE2, rt5677_set_dsp_vad()
755 rt5677_spi_write_firmware(0x60000000, rt5677->fw2); rt5677_set_dsp_vad()
756 release_firmware(rt5677->fw2); rt5677_set_dsp_vad()
759 regmap_update_bits(rt5677->regmap, RT5677_PWR_DSP1, 0x1, 0x0); rt5677_set_dsp_vad()
761 regcache_cache_bypass(rt5677->regmap, false); rt5677_set_dsp_vad()
762 regcache_cache_only(rt5677->regmap, true); rt5677_set_dsp_vad()
766 regcache_cache_only(rt5677->regmap, false); rt5677_set_dsp_vad()
767 regcache_cache_bypass(rt5677->regmap, true); rt5677_set_dsp_vad()
769 regmap_update_bits(rt5677->regmap, RT5677_PWR_DSP1, 0x1, 0x1); rt5677_set_dsp_vad()
771 regmap_write(rt5677->regmap, RT5677_PWR_DSP1, 0x0001); rt5677_set_dsp_vad()
773 regmap_write(rt5677->regmap, RT5677_RESET, 0x10ec); rt5677_set_dsp_vad()
775 regcache_cache_bypass(rt5677->regmap, false); rt5677_set_dsp_vad()
776 regcache_mark_dirty(rt5677->regmap); rt5677_set_dsp_vad()
777 regcache_sync(rt5677->regmap); rt5677_set_dsp_vad()
805 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); rt5677_dsp_vad_get() local
807 ucontrol->value.integer.value[0] = rt5677->dsp_vad_en; rt5677_dsp_vad_get()
816 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); rt5677_dsp_vad_put() local
819 rt5677->dsp_vad_en = !!ucontrol->value.integer.value[0]; rt5677_dsp_vad_put()
822 rt5677_set_dsp_vad(codec, rt5677->dsp_vad_en); rt5677_dsp_vad_put()
917 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); set_dmic_clk() local
920 rate = rt5677->sysclk / rl6231_get_pre_div(rt5677->regmap, set_dmic_clk()
926 regmap_update_bits(rt5677->regmap, RT5677_DMIC_CTRL1, set_dmic_clk()
935 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); is_sys_clk_from_pll() local
938 regmap_read(rt5677->regmap, RT5677_GLB_CLK1, &val); is_sys_clk_from_pll()
950 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); is_using_asrc() local
1017 regmap_read(rt5677->regmap, reg, &val); is_using_asrc()
1033 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); can_use_asrc() local
1035 if (rt5677->sysclk > rt5677->lrck[RT5677_AIF1] * 384) can_use_asrc()
1058 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_sel_asrc_clk_src() local
1106 regmap_update_bits(rt5677->regmap, RT5677_ASRC_3, asrc3_mask, rt5677_sel_asrc_clk_src()
1135 regmap_update_bits(rt5677->regmap, RT5677_ASRC_4, asrc4_mask, rt5677_sel_asrc_clk_src()
1164 regmap_update_bits(rt5677->regmap, RT5677_ASRC_5, asrc5_mask, rt5677_sel_asrc_clk_src()
1181 regmap_update_bits(rt5677->regmap, RT5677_ASRC_6, asrc6_mask, rt5677_sel_asrc_clk_src()
1198 regmap_update_bits(rt5677->regmap, RT5677_ASRC_7, asrc7_mask, rt5677_sel_asrc_clk_src()
1227 regmap_update_bits(rt5677->regmap, RT5677_ASRC_8, asrc8_mask, rt5677_sel_asrc_clk_src()
1238 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_dmic_use_asrc() local
1243 regmap_read(rt5677->regmap, RT5677_ASRC_5, &asrc_setting); rt5677_dmic_use_asrc()
1252 regmap_read(rt5677->regmap, RT5677_ASRC_5, &asrc_setting); rt5677_dmic_use_asrc()
1261 regmap_read(rt5677->regmap, RT5677_ASRC_5, &asrc_setting); rt5677_dmic_use_asrc()
1270 regmap_read(rt5677->regmap, RT5677_ASRC_5, &asrc_setting); rt5677_dmic_use_asrc()
1279 regmap_read(rt5677->regmap, RT5677_ASRC_6, &asrc_setting); rt5677_dmic_use_asrc()
1288 regmap_read(rt5677->regmap, RT5677_ASRC_6, &asrc_setting); rt5677_dmic_use_asrc()
2413 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_bst1_event() local
2417 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, rt5677_bst1_event()
2422 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, rt5677_bst1_event()
2437 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_bst2_event() local
2441 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, rt5677_bst2_event()
2446 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, rt5677_bst2_event()
2461 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_set_pll1_event() local
2465 regmap_update_bits(rt5677->regmap, RT5677_PLL1_CTRL2, 0x2, 0x2); rt5677_set_pll1_event()
2469 regmap_update_bits(rt5677->regmap, RT5677_PLL1_CTRL2, 0x2, 0x0); rt5677_set_pll1_event()
2483 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_set_pll2_event() local
2487 regmap_update_bits(rt5677->regmap, RT5677_PLL2_CTRL2, 0x2, 0x2); rt5677_set_pll2_event()
2491 regmap_update_bits(rt5677->regmap, RT5677_PLL2_CTRL2, 0x2, 0x0); rt5677_set_pll2_event()
2505 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_set_micbias1_event() local
2509 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, rt5677_set_micbias1_event()
2516 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, rt5677_set_micbias1_event()
2532 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_if1_adc_tdm_event() local
2537 regmap_read(rt5677->regmap, RT5677_TDM1_CTRL2, &value); rt5677_if1_adc_tdm_event()
2539 regmap_update_bits(rt5677->regmap, RT5677_TDM1_CTRL1, rt5677_if1_adc_tdm_event()
2555 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_if2_adc_tdm_event() local
2560 regmap_read(rt5677->regmap, RT5677_TDM2_CTRL2, &value); rt5677_if2_adc_tdm_event()
2562 regmap_update_bits(rt5677->regmap, RT5677_TDM2_CTRL1, rt5677_if2_adc_tdm_event()
2578 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_vref_event() local
2583 !rt5677->is_vref_slow) { rt5677_vref_event()
2585 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG1, rt5677_vref_event()
2588 rt5677->is_vref_slow = true; rt5677_vref_event()
4118 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_hw_params() local
4122 rt5677->lrck[dai->id] = params_rate(params); rt5677_hw_params()
4123 pre_div = rl6231_get_clk_info(rt5677->sysclk, rt5677->lrck[dai->id]); rt5677_hw_params()
4126 rt5677->sysclk, rt5677->lrck[dai->id]); rt5677_hw_params()
4135 rt5677->bclk[dai->id] = rt5677->lrck[dai->id] * (32 << bclk_ms); rt5677_hw_params()
4138 rt5677->bclk[dai->id], rt5677->lrck[dai->id]); rt5677_hw_params()
4162 regmap_update_bits(rt5677->regmap, RT5677_I2S1_SDP, rt5677_hw_params()
4164 regmap_update_bits(rt5677->regmap, RT5677_CLK_TREE_CTRL1, rt5677_hw_params()
4170 regmap_update_bits(rt5677->regmap, RT5677_I2S2_SDP, rt5677_hw_params()
4172 regmap_update_bits(rt5677->regmap, RT5677_CLK_TREE_CTRL1, rt5677_hw_params()
4179 regmap_update_bits(rt5677->regmap, RT5677_I2S3_SDP, rt5677_hw_params()
4181 regmap_update_bits(rt5677->regmap, RT5677_CLK_TREE_CTRL1, rt5677_hw_params()
4188 regmap_update_bits(rt5677->regmap, RT5677_I2S4_SDP, rt5677_hw_params()
4190 regmap_update_bits(rt5677->regmap, RT5677_CLK_TREE_CTRL1, rt5677_hw_params()
4203 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_set_dai_fmt() local
4208 rt5677->master[dai->id] = 1; rt5677_set_dai_fmt()
4212 rt5677->master[dai->id] = 0; rt5677_set_dai_fmt()
4246 regmap_update_bits(rt5677->regmap, RT5677_I2S1_SDP, rt5677_set_dai_fmt()
4251 regmap_update_bits(rt5677->regmap, RT5677_I2S2_SDP, rt5677_set_dai_fmt()
4256 regmap_update_bits(rt5677->regmap, RT5677_I2S3_SDP, rt5677_set_dai_fmt()
4261 regmap_update_bits(rt5677->regmap, RT5677_I2S4_SDP, rt5677_set_dai_fmt()
4277 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_set_dai_sysclk() local
4280 if (freq == rt5677->sysclk && clk_id == rt5677->sysclk_src) rt5677_set_dai_sysclk()
4297 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, rt5677_set_dai_sysclk()
4299 rt5677->sysclk = freq; rt5677_set_dai_sysclk()
4300 rt5677->sysclk_src = clk_id; rt5677_set_dai_sysclk()
4330 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_set_dai_pll() local
4334 if (source == rt5677->pll_src && freq_in == rt5677->pll_in && rt5677_set_dai_pll()
4335 freq_out == rt5677->pll_out) rt5677_set_dai_pll()
4341 rt5677->pll_in = 0; rt5677_set_dai_pll()
4342 rt5677->pll_out = 0; rt5677_set_dai_pll()
4343 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, rt5677_set_dai_pll()
4350 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, rt5677_set_dai_pll()
4359 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, rt5677_set_dai_pll()
4363 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, rt5677_set_dai_pll()
4367 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, rt5677_set_dai_pll()
4371 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, rt5677_set_dai_pll()
4393 regmap_write(rt5677->regmap, RT5677_PLL1_CTRL1, rt5677_set_dai_pll()
4395 regmap_write(rt5677->regmap, RT5677_PLL1_CTRL2, rt5677_set_dai_pll()
4399 rt5677->pll_in = freq_in; rt5677_set_dai_pll()
4400 rt5677->pll_out = freq_out; rt5677_set_dai_pll()
4401 rt5677->pll_src = source; rt5677_set_dai_pll()
4410 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_set_tdm_slot() local
4450 regmap_update_bits(rt5677->regmap, RT5677_TDM1_CTRL1, 0x1f00, rt5677_set_tdm_slot()
4452 regmap_update_bits(rt5677->regmap, RT5677_DIG_MISC, 0x8000, rt5677_set_tdm_slot()
4456 regmap_update_bits(rt5677->regmap, RT5677_TDM2_CTRL1, 0x1f00, rt5677_set_tdm_slot()
4458 regmap_update_bits(rt5677->regmap, RT5677_DIG_MISC, 0x80, rt5677_set_tdm_slot()
4471 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_set_bias_level() local
4481 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG1, rt5677_set_bias_level()
4484 regmap_update_bits(rt5677->regmap, rt5677_set_bias_level()
4487 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG1, rt5677_set_bias_level()
4493 rt5677->is_vref_slow = false; rt5677_set_bias_level()
4494 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, rt5677_set_bias_level()
4496 regmap_update_bits(rt5677->regmap, RT5677_DIG_MISC, rt5677_set_bias_level()
4505 regmap_update_bits(rt5677->regmap, RT5677_DIG_MISC, 0x1, 0x0); rt5677_set_bias_level()
4506 regmap_write(rt5677->regmap, RT5677_PWR_DIG1, 0x0000); rt5677_set_bias_level()
4507 regmap_write(rt5677->regmap, RT5677_PWR_DIG2, 0x0000); rt5677_set_bias_level()
4508 regmap_write(rt5677->regmap, RT5677_PWR_ANLG1, 0x0022); rt5677_set_bias_level()
4509 regmap_write(rt5677->regmap, RT5677_PWR_ANLG2, 0x0000); rt5677_set_bias_level()
4510 regmap_update_bits(rt5677->regmap, rt5677_set_bias_level()
4513 if (rt5677->dsp_vad_en) rt5677_set_bias_level()
4532 struct rt5677_priv *rt5677 = gpio_to_rt5677(chip); rt5677_gpio_set() local
4536 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL2, rt5677_gpio_set()
4541 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL3, rt5677_gpio_set()
4553 struct rt5677_priv *rt5677 = gpio_to_rt5677(chip); rt5677_gpio_direction_out() local
4557 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL2, rt5677_gpio_direction_out()
4563 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL3, rt5677_gpio_direction_out()
4577 struct rt5677_priv *rt5677 = gpio_to_rt5677(chip); rt5677_gpio_get() local
4580 ret = regmap_read(rt5677->regmap, RT5677_GPIO_ST, &value); rt5677_gpio_get()
4589 struct rt5677_priv *rt5677 = gpio_to_rt5677(chip); rt5677_gpio_direction_in() local
4593 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL2, rt5677_gpio_direction_in()
4598 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL3, rt5677_gpio_direction_in()
4614 static void rt5677_gpio_config(struct rt5677_priv *rt5677, unsigned offset, rt5677_gpio_config() argument
4622 regmap_update_bits(rt5677->regmap, rt5677_gpio_config()
4630 regmap_update_bits(rt5677->regmap, rt5677_gpio_config()
4643 struct rt5677_priv *rt5677 = gpio_to_rt5677(chip); rt5677_to_irq() local
4644 struct regmap_irq_chip_data *data = rt5677->irq_data; rt5677_to_irq()
4648 if ((rt5677->pdata.jd1_gpio == 1 && offset == RT5677_GPIO1) || rt5677_to_irq()
4649 (rt5677->pdata.jd1_gpio == 2 && rt5677_to_irq()
4651 (rt5677->pdata.jd1_gpio == 3 && rt5677_to_irq()
4660 if ((rt5677->pdata.jd2_gpio == 1 && offset == RT5677_GPIO4) || rt5677_to_irq()
4661 (rt5677->pdata.jd2_gpio == 2 && rt5677_to_irq()
4663 (rt5677->pdata.jd2_gpio == 3 && rt5677_to_irq()
4666 } else if ((rt5677->pdata.jd3_gpio == 1 && rt5677_to_irq()
4668 (rt5677->pdata.jd3_gpio == 2 && rt5677_to_irq()
4670 (rt5677->pdata.jd3_gpio == 3 && rt5677_to_irq()
4682 .label = "rt5677",
4694 struct rt5677_priv *rt5677 = i2c_get_clientdata(i2c); rt5677_init_gpio() local
4697 rt5677->gpio_chip = rt5677_template_chip; rt5677_init_gpio()
4698 rt5677->gpio_chip.ngpio = RT5677_GPIO_NUM; rt5677_init_gpio()
4699 rt5677->gpio_chip.dev = &i2c->dev; rt5677_init_gpio()
4700 rt5677->gpio_chip.base = -1; rt5677_init_gpio()
4702 ret = gpiochip_add(&rt5677->gpio_chip); rt5677_init_gpio()
4709 struct rt5677_priv *rt5677 = i2c_get_clientdata(i2c); rt5677_free_gpio() local
4711 gpiochip_remove(&rt5677->gpio_chip); rt5677_free_gpio()
4714 static void rt5677_gpio_config(struct rt5677_priv *rt5677, unsigned offset, rt5677_gpio_config() argument
4731 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_probe() local
4734 rt5677->codec = codec; rt5677_probe()
4736 if (rt5677->pdata.dmic2_clk_pin == RT5677_DMIC_CLK2) { rt5677_probe()
4748 regmap_write(rt5677->regmap, RT5677_DIG_MISC, 0x0020); rt5677_probe()
4749 regmap_write(rt5677->regmap, RT5677_PWR_DSP2, 0x0c00); rt5677_probe()
4752 rt5677_gpio_config(rt5677, i, rt5677->pdata.gpio_config[i]); rt5677_probe()
4754 if (rt5677->irq_data) { rt5677_probe()
4755 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL1, 0x8000, rt5677_probe()
4757 regmap_update_bits(rt5677->regmap, RT5677_DIG_MISC, 0x0018, rt5677_probe()
4760 if (rt5677->pdata.jd1_gpio) rt5677_probe()
4761 regmap_update_bits(rt5677->regmap, RT5677_JD_CTRL1, rt5677_probe()
4763 rt5677->pdata.jd1_gpio << rt5677_probe()
4766 if (rt5677->pdata.jd2_gpio) rt5677_probe()
4767 regmap_update_bits(rt5677->regmap, RT5677_JD_CTRL1, rt5677_probe()
4769 rt5677->pdata.jd2_gpio << rt5677_probe()
4772 if (rt5677->pdata.jd3_gpio) rt5677_probe()
4773 regmap_update_bits(rt5677->regmap, RT5677_JD_CTRL1, rt5677_probe()
4775 rt5677->pdata.jd3_gpio << rt5677_probe()
4779 mutex_init(&rt5677->dsp_cmd_lock); rt5677_probe()
4780 mutex_init(&rt5677->dsp_pri_lock); rt5677_probe()
4787 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_remove() local
4789 regmap_write(rt5677->regmap, RT5677_RESET, 0x10ec); rt5677_remove()
4790 gpiod_set_value_cansleep(rt5677->pow_ldo2, 0); rt5677_remove()
4791 gpiod_set_value_cansleep(rt5677->reset_pin, 0); rt5677_remove()
4799 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_suspend() local
4801 if (!rt5677->dsp_vad_en) { rt5677_suspend()
4802 regcache_cache_only(rt5677->regmap, true); rt5677_suspend()
4803 regcache_mark_dirty(rt5677->regmap); rt5677_suspend()
4805 gpiod_set_value_cansleep(rt5677->pow_ldo2, 0); rt5677_suspend()
4806 gpiod_set_value_cansleep(rt5677->reset_pin, 0); rt5677_suspend()
4814 struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); rt5677_resume() local
4816 if (!rt5677->dsp_vad_en) { rt5677_resume()
4817 gpiod_set_value_cansleep(rt5677->pow_ldo2, 1); rt5677_resume()
4818 gpiod_set_value_cansleep(rt5677->reset_pin, 1); rt5677_resume()
4819 if (rt5677->pow_ldo2 || rt5677->reset_pin) rt5677_resume()
4822 regcache_cache_only(rt5677->regmap, false); rt5677_resume()
4823 regcache_sync(rt5677->regmap); rt5677_resume()
4836 struct rt5677_priv *rt5677 = i2c_get_clientdata(client); rt5677_read() local
4838 if (rt5677->is_dsp_mode) { rt5677_read()
4840 mutex_lock(&rt5677->dsp_pri_lock); rt5677_read()
4841 rt5677_dsp_mode_i2c_write(rt5677, RT5677_PRIV_INDEX, rt5677_read()
4843 rt5677_dsp_mode_i2c_read(rt5677, RT5677_PRIV_DATA, val); rt5677_read()
4844 mutex_unlock(&rt5677->dsp_pri_lock); rt5677_read()
4846 rt5677_dsp_mode_i2c_read(rt5677, reg, val); rt5677_read()
4849 regmap_read(rt5677->regmap_physical, reg, val); rt5677_read()
4858 struct rt5677_priv *rt5677 = i2c_get_clientdata(client); rt5677_write() local
4860 if (rt5677->is_dsp_mode) { rt5677_write()
4862 mutex_lock(&rt5677->dsp_pri_lock); rt5677_write()
4863 rt5677_dsp_mode_i2c_write(rt5677, RT5677_PRIV_INDEX, rt5677_write()
4865 rt5677_dsp_mode_i2c_write(rt5677, RT5677_PRIV_DATA, rt5677_write()
4867 mutex_unlock(&rt5677->dsp_pri_lock); rt5677_write()
4869 rt5677_dsp_mode_i2c_write(rt5677, reg, val); rt5677_write()
4872 regmap_write(rt5677->regmap_physical, reg, val); rt5677_write()
4892 .name = "rt5677-aif1",
4911 .name = "rt5677-aif2",
4930 .name = "rt5677-aif3",
4949 .name = "rt5677-aif4",
4968 .name = "rt5677-slimbus",
5037 { "rt5677", RT5677 },
5043 static void rt5677_read_device_properties(struct rt5677_priv *rt5677, rt5677_read_device_properties() argument
5046 rt5677->pdata.in1_diff = device_property_read_bool(dev, rt5677_read_device_properties()
5048 rt5677->pdata.in2_diff = device_property_read_bool(dev, rt5677_read_device_properties()
5050 rt5677->pdata.lout1_diff = device_property_read_bool(dev, rt5677_read_device_properties()
5052 rt5677->pdata.lout2_diff = device_property_read_bool(dev, rt5677_read_device_properties()
5054 rt5677->pdata.lout3_diff = device_property_read_bool(dev, rt5677_read_device_properties()
5058 rt5677->pdata.gpio_config, RT5677_GPIO_NUM); rt5677_read_device_properties()
5061 &rt5677->pdata.jd1_gpio); rt5677_read_device_properties()
5063 &rt5677->pdata.jd2_gpio); rt5677_read_device_properties()
5065 &rt5677->pdata.jd3_gpio); rt5677_read_device_properties()
5084 .name = "rt5677",
5097 struct rt5677_priv *rt5677 = i2c_get_clientdata(i2c); rt5677_init_irq() local
5099 if (!rt5677->pdata.jd1_gpio && rt5677_init_irq()
5100 !rt5677->pdata.jd2_gpio && rt5677_init_irq()
5101 !rt5677->pdata.jd3_gpio) rt5677_init_irq()
5109 ret = regmap_add_irq_chip(rt5677->regmap, i2c->irq, rt5677_init_irq()
5111 &rt5677_irq_chip, &rt5677->irq_data); rt5677_init_irq()
5123 struct rt5677_priv *rt5677 = i2c_get_clientdata(i2c); rt5677_free_irq() local
5125 if (rt5677->irq_data) rt5677_free_irq()
5126 regmap_del_irq_chip(i2c->irq, rt5677->irq_data); rt5677_free_irq()
5133 struct rt5677_priv *rt5677; rt5677_i2c_probe() local
5137 rt5677 = devm_kzalloc(&i2c->dev, sizeof(struct rt5677_priv), rt5677_i2c_probe()
5139 if (rt5677 == NULL) rt5677_i2c_probe()
5142 i2c_set_clientdata(i2c, rt5677); rt5677_i2c_probe()
5144 rt5677->type = id->driver_data; rt5677_i2c_probe()
5147 rt5677->pdata = *pdata; rt5677_i2c_probe()
5149 rt5677_read_device_properties(rt5677, &i2c->dev); rt5677_i2c_probe()
5155 rt5677->pow_ldo2 = devm_gpiod_get_optional(&i2c->dev, rt5677_i2c_probe()
5157 if (IS_ERR(rt5677->pow_ldo2)) { rt5677_i2c_probe()
5158 ret = PTR_ERR(rt5677->pow_ldo2); rt5677_i2c_probe()
5162 rt5677->reset_pin = devm_gpiod_get_optional(&i2c->dev, rt5677_i2c_probe()
5164 if (IS_ERR(rt5677->reset_pin)) { rt5677_i2c_probe()
5165 ret = PTR_ERR(rt5677->reset_pin); rt5677_i2c_probe()
5170 if (rt5677->pow_ldo2 || rt5677->reset_pin) { rt5677_i2c_probe()
5178 rt5677->regmap_physical = devm_regmap_init_i2c(i2c, rt5677_i2c_probe()
5180 if (IS_ERR(rt5677->regmap_physical)) { rt5677_i2c_probe()
5181 ret = PTR_ERR(rt5677->regmap_physical); rt5677_i2c_probe()
5187 rt5677->regmap = devm_regmap_init(&i2c->dev, NULL, i2c, &rt5677_regmap); rt5677_i2c_probe()
5188 if (IS_ERR(rt5677->regmap)) { rt5677_i2c_probe()
5189 ret = PTR_ERR(rt5677->regmap); rt5677_i2c_probe()
5195 regmap_read(rt5677->regmap, RT5677_VENDOR_ID2, &val); rt5677_i2c_probe()
5198 "Device with ID register %#x is not rt5677\n", val); rt5677_i2c_probe()
5202 regmap_write(rt5677->regmap, RT5677_RESET, 0x10ec); rt5677_i2c_probe()
5204 ret = regmap_register_patch(rt5677->regmap, init_list, rt5677_i2c_probe()
5209 if (rt5677->pdata.in1_diff) rt5677_i2c_probe()
5210 regmap_update_bits(rt5677->regmap, RT5677_IN1, rt5677_i2c_probe()
5213 if (rt5677->pdata.in2_diff) rt5677_i2c_probe()
5214 regmap_update_bits(rt5677->regmap, RT5677_IN1, rt5677_i2c_probe()
5217 if (rt5677->pdata.lout1_diff) rt5677_i2c_probe()
5218 regmap_update_bits(rt5677->regmap, RT5677_LOUT1, rt5677_i2c_probe()
5221 if (rt5677->pdata.lout2_diff) rt5677_i2c_probe()
5222 regmap_update_bits(rt5677->regmap, RT5677_LOUT1, rt5677_i2c_probe()
5225 if (rt5677->pdata.lout3_diff) rt5677_i2c_probe()
5226 regmap_update_bits(rt5677->regmap, RT5677_LOUT1, rt5677_i2c_probe()
5229 if (rt5677->pdata.dmic2_clk_pin == RT5677_DMIC_CLK2) { rt5677_i2c_probe()
5230 regmap_update_bits(rt5677->regmap, RT5677_GEN_CTRL2, rt5677_i2c_probe()
5233 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL2, rt5677_i2c_probe()
5238 if (rt5677->pdata.micbias1_vdd_3v3) rt5677_i2c_probe()
5239 regmap_update_bits(rt5677->regmap, RT5677_MICBIAS, rt5677_i2c_probe()
5261 .name = "rt5677",
612 rt5677_dsp_mode_i2c_read_addr( struct rt5677_priv *rt5677, unsigned int addr, unsigned int *value) rt5677_dsp_mode_i2c_read_addr() argument
677 rt5677_dsp_mode_i2c_read( struct rt5677_priv *rt5677, unsigned int reg, unsigned int *value) rt5677_dsp_mode_i2c_read() argument
H A Drt5677-spi.h2 * rt5677-spi.h -- RT5677 ALSA SoC audio codec driver
H A Drt5677-spi.c2 * rt5677-spi.c -- RT5677 ALSA SoC audio codec driver
32 #include "rt5677-spi.h"
234 .name = "rt5677",
H A DMakefile93 snd-soc-rt5677-objs := rt5677.o
94 snd-soc-rt5677-spi-objs := rt5677-spi.o
288 obj-$(CONFIG_SND_SOC_RT5677) += snd-soc-rt5677.o
289 obj-$(CONFIG_SND_SOC_RT5677_SPI) += snd-soc-rt5677-spi.o
H A Drt5677.h2 * rt5677.h -- RT5677 ALSA SoC audio driver
15 #include <sound/rt5677.h>
/linux-4.4.14/sound/soc/tegra/
H A DMakefile22 snd-soc-tegra-rt5677-objs := tegra_rt5677.o
31 obj-$(CONFIG_SND_SOC_TEGRA_RT5677) += snd-soc-tegra-rt5677.o
H A Dtegra_rt5677.c38 #include "../codecs/rt5677.h"
42 #define DRV_NAME "tegra-snd-rt5677"
192 .codec_dai_name = "rt5677-aif1",
200 .name = "tegra-rt5677",
322 { .compatible = "nvidia,tegra-audio-rt5677", },
/linux-4.4.14/include/sound/
H A Drt5677.h2 * linux/sound/rt5677.h -- Platform data for RT5677
/linux-4.4.14/sound/soc/mediatek/
H A Dmt8173-rt5650-rt5676.c23 #include "../codecs/rt5677.h"
130 .dai_name = "rt5677-aif1",
179 .codec_dai_name = "rt5677-aif2",

Completed in 228 milliseconds