Lines Matching refs:rt5677

555 static int rt5677_dsp_mode_i2c_write_addr(struct rt5677_priv *rt5677,  in rt5677_dsp_mode_i2c_write_addr()  argument
558 struct snd_soc_component *component = rt5677->component; in rt5677_dsp_mode_i2c_write_addr()
561 mutex_lock(&rt5677->dsp_cmd_lock); in rt5677_dsp_mode_i2c_write_addr()
563 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_ADDR_MSB, in rt5677_dsp_mode_i2c_write_addr()
570 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_ADDR_LSB, in rt5677_dsp_mode_i2c_write_addr()
577 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_DATA_MSB, in rt5677_dsp_mode_i2c_write_addr()
584 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_DATA_LSB, in rt5677_dsp_mode_i2c_write_addr()
591 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_OP_CODE, in rt5677_dsp_mode_i2c_write_addr()
599 mutex_unlock(&rt5677->dsp_cmd_lock); in rt5677_dsp_mode_i2c_write_addr()
614 struct rt5677_priv *rt5677, unsigned int addr, unsigned int *value) in rt5677_dsp_mode_i2c_read_addr() argument
616 struct snd_soc_component *component = rt5677->component; in rt5677_dsp_mode_i2c_read_addr()
620 mutex_lock(&rt5677->dsp_cmd_lock); in rt5677_dsp_mode_i2c_read_addr()
622 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_ADDR_MSB, in rt5677_dsp_mode_i2c_read_addr()
629 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_ADDR_LSB, in rt5677_dsp_mode_i2c_read_addr()
636 ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_OP_CODE, in rt5677_dsp_mode_i2c_read_addr()
643 regmap_read(rt5677->regmap_physical, RT5677_DSP_I2C_DATA_MSB, &msb); in rt5677_dsp_mode_i2c_read_addr()
644 regmap_read(rt5677->regmap_physical, RT5677_DSP_I2C_DATA_LSB, &lsb); in rt5677_dsp_mode_i2c_read_addr()
648 mutex_unlock(&rt5677->dsp_cmd_lock); in rt5677_dsp_mode_i2c_read_addr()
662 static int rt5677_dsp_mode_i2c_write(struct rt5677_priv *rt5677, in rt5677_dsp_mode_i2c_write() argument
665 return rt5677_dsp_mode_i2c_write_addr(rt5677, 0x18020000 + reg * 2, in rt5677_dsp_mode_i2c_write()
679 struct rt5677_priv *rt5677, unsigned int reg, unsigned int *value) in rt5677_dsp_mode_i2c_read() argument
681 int ret = rt5677_dsp_mode_i2c_read_addr(rt5677, 0x18020000 + reg * 2, in rt5677_dsp_mode_i2c_read()
691 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_set_dsp_mode() local
694 regmap_update_bits(rt5677->regmap, RT5677_PWR_DSP1, in rt5677_set_dsp_mode()
696 rt5677->is_dsp_mode = true; in rt5677_set_dsp_mode()
698 regmap_update_bits(rt5677->regmap, RT5677_PWR_DSP1, in rt5677_set_dsp_mode()
700 rt5677->is_dsp_mode = false; in rt5677_set_dsp_mode()
706 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_set_dsp_vad() local
716 regcache_cache_only(rt5677->regmap, false); in rt5677_set_dsp_vad()
717 regcache_cache_bypass(rt5677->regmap, true); in rt5677_set_dsp_vad()
719 regmap_update_bits(rt5677->regmap, RT5677_DIG_MISC, 0x1, 0x1); in rt5677_set_dsp_vad()
720 regmap_update_bits(rt5677->regmap, in rt5677_set_dsp_vad()
722 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG1, in rt5677_set_dsp_vad()
724 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, in rt5677_set_dsp_vad()
726 switch (rt5677->type) { in rt5677_set_dsp_vad()
728 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, in rt5677_set_dsp_vad()
730 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK2, in rt5677_set_dsp_vad()
737 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK2, in rt5677_set_dsp_vad()
744 regmap_write(rt5677->regmap, RT5677_PWR_DSP2, 0x07ff); in rt5677_set_dsp_vad()
745 regmap_write(rt5677->regmap, RT5677_PWR_DSP1, 0x07fd); in rt5677_set_dsp_vad()
748 ret = request_firmware(&rt5677->fw1, RT5677_FIRMWARE1, in rt5677_set_dsp_vad()
751 rt5677_spi_write_firmware(0x50000000, rt5677->fw1); in rt5677_set_dsp_vad()
752 release_firmware(rt5677->fw1); in rt5677_set_dsp_vad()
755 ret = request_firmware(&rt5677->fw2, RT5677_FIRMWARE2, in rt5677_set_dsp_vad()
758 rt5677_spi_write_firmware(0x60000000, rt5677->fw2); in rt5677_set_dsp_vad()
759 release_firmware(rt5677->fw2); in rt5677_set_dsp_vad()
762 regmap_update_bits(rt5677->regmap, RT5677_PWR_DSP1, 0x1, 0x0); in rt5677_set_dsp_vad()
764 regcache_cache_bypass(rt5677->regmap, false); in rt5677_set_dsp_vad()
765 regcache_cache_only(rt5677->regmap, true); in rt5677_set_dsp_vad()
769 regcache_cache_only(rt5677->regmap, false); in rt5677_set_dsp_vad()
770 regcache_cache_bypass(rt5677->regmap, true); in rt5677_set_dsp_vad()
772 regmap_update_bits(rt5677->regmap, RT5677_PWR_DSP1, 0x1, 0x1); in rt5677_set_dsp_vad()
774 regmap_write(rt5677->regmap, RT5677_PWR_DSP1, 0x0001); in rt5677_set_dsp_vad()
776 regmap_write(rt5677->regmap, RT5677_RESET, 0x10ec); in rt5677_set_dsp_vad()
778 regcache_cache_bypass(rt5677->regmap, false); in rt5677_set_dsp_vad()
779 regcache_mark_dirty(rt5677->regmap); in rt5677_set_dsp_vad()
780 regcache_sync(rt5677->regmap); in rt5677_set_dsp_vad()
806 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_dsp_vad_get() local
808 ucontrol->value.integer.value[0] = rt5677->dsp_vad_en; in rt5677_dsp_vad_get()
817 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_dsp_vad_put() local
819 rt5677->dsp_vad_en = !!ucontrol->value.integer.value[0]; in rt5677_dsp_vad_put()
822 rt5677_set_dsp_vad(component, rt5677->dsp_vad_en); in rt5677_dsp_vad_put()
917 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in set_dmic_clk() local
920 rate = rt5677->sysclk / rl6231_get_pre_div(rt5677->regmap, in set_dmic_clk()
926 regmap_update_bits(rt5677->regmap, RT5677_DMIC_CTRL1, in set_dmic_clk()
935 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in is_sys_clk_from_pll() local
938 regmap_read(rt5677->regmap, RT5677_GLB_CLK1, &val); in is_sys_clk_from_pll()
950 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in is_using_asrc() local
1017 regmap_read(rt5677->regmap, reg, &val); in is_using_asrc()
1033 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in can_use_asrc() local
1035 if (rt5677->sysclk > rt5677->lrck[RT5677_AIF1] * 384) in can_use_asrc()
1058 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_sel_asrc_clk_src() local
1106 regmap_update_bits(rt5677->regmap, RT5677_ASRC_3, asrc3_mask, in rt5677_sel_asrc_clk_src()
1135 regmap_update_bits(rt5677->regmap, RT5677_ASRC_4, asrc4_mask, in rt5677_sel_asrc_clk_src()
1164 regmap_update_bits(rt5677->regmap, RT5677_ASRC_5, asrc5_mask, in rt5677_sel_asrc_clk_src()
1181 regmap_update_bits(rt5677->regmap, RT5677_ASRC_6, asrc6_mask, in rt5677_sel_asrc_clk_src()
1198 regmap_update_bits(rt5677->regmap, RT5677_ASRC_7, asrc7_mask, in rt5677_sel_asrc_clk_src()
1227 regmap_update_bits(rt5677->regmap, RT5677_ASRC_8, asrc8_mask, in rt5677_sel_asrc_clk_src()
1238 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_dmic_use_asrc() local
1243 regmap_read(rt5677->regmap, RT5677_ASRC_5, &asrc_setting); in rt5677_dmic_use_asrc()
1249 regmap_read(rt5677->regmap, RT5677_ASRC_5, &asrc_setting); in rt5677_dmic_use_asrc()
1255 regmap_read(rt5677->regmap, RT5677_ASRC_5, &asrc_setting); in rt5677_dmic_use_asrc()
1261 regmap_read(rt5677->regmap, RT5677_ASRC_5, &asrc_setting); in rt5677_dmic_use_asrc()
1267 regmap_read(rt5677->regmap, RT5677_ASRC_6, &asrc_setting); in rt5677_dmic_use_asrc()
1273 regmap_read(rt5677->regmap, RT5677_ASRC_6, &asrc_setting); in rt5677_dmic_use_asrc()
2399 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_bst1_event() local
2403 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, in rt5677_bst1_event()
2408 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, in rt5677_bst1_event()
2423 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_bst2_event() local
2427 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, in rt5677_bst2_event()
2432 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, in rt5677_bst2_event()
2447 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_set_pll1_event() local
2451 regmap_update_bits(rt5677->regmap, RT5677_PLL1_CTRL2, 0x2, 0x2); in rt5677_set_pll1_event()
2455 regmap_update_bits(rt5677->regmap, RT5677_PLL1_CTRL2, 0x2, 0x0); in rt5677_set_pll1_event()
2469 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_set_pll2_event() local
2473 regmap_update_bits(rt5677->regmap, RT5677_PLL2_CTRL2, 0x2, 0x2); in rt5677_set_pll2_event()
2477 regmap_update_bits(rt5677->regmap, RT5677_PLL2_CTRL2, 0x2, 0x0); in rt5677_set_pll2_event()
2491 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_set_micbias1_event() local
2495 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, in rt5677_set_micbias1_event()
2502 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, in rt5677_set_micbias1_event()
2518 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_if1_adc_tdm_event() local
2523 regmap_read(rt5677->regmap, RT5677_TDM1_CTRL2, &value); in rt5677_if1_adc_tdm_event()
2525 regmap_update_bits(rt5677->regmap, RT5677_TDM1_CTRL1, in rt5677_if1_adc_tdm_event()
2541 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_if2_adc_tdm_event() local
2546 regmap_read(rt5677->regmap, RT5677_TDM2_CTRL2, &value); in rt5677_if2_adc_tdm_event()
2548 regmap_update_bits(rt5677->regmap, RT5677_TDM2_CTRL1, in rt5677_if2_adc_tdm_event()
2564 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_vref_event() local
2569 !rt5677->is_vref_slow) { in rt5677_vref_event()
2571 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG1, in rt5677_vref_event()
2574 rt5677->is_vref_slow = true; in rt5677_vref_event()
4105 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_hw_params() local
4109 rt5677->lrck[dai->id] = params_rate(params); in rt5677_hw_params()
4110 pre_div = rl6231_get_clk_info(rt5677->sysclk, rt5677->lrck[dai->id]); in rt5677_hw_params()
4113 rt5677->sysclk, rt5677->lrck[dai->id]); in rt5677_hw_params()
4122 rt5677->bclk[dai->id] = rt5677->lrck[dai->id] * (32 << bclk_ms); in rt5677_hw_params()
4125 rt5677->bclk[dai->id], rt5677->lrck[dai->id]); in rt5677_hw_params()
4149 regmap_update_bits(rt5677->regmap, RT5677_I2S1_SDP, in rt5677_hw_params()
4151 regmap_update_bits(rt5677->regmap, RT5677_CLK_TREE_CTRL1, in rt5677_hw_params()
4157 regmap_update_bits(rt5677->regmap, RT5677_I2S2_SDP, in rt5677_hw_params()
4159 regmap_update_bits(rt5677->regmap, RT5677_CLK_TREE_CTRL1, in rt5677_hw_params()
4166 regmap_update_bits(rt5677->regmap, RT5677_I2S3_SDP, in rt5677_hw_params()
4168 regmap_update_bits(rt5677->regmap, RT5677_CLK_TREE_CTRL1, in rt5677_hw_params()
4175 regmap_update_bits(rt5677->regmap, RT5677_I2S4_SDP, in rt5677_hw_params()
4177 regmap_update_bits(rt5677->regmap, RT5677_CLK_TREE_CTRL1, in rt5677_hw_params()
4190 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_set_dai_fmt() local
4195 rt5677->master[dai->id] = 1; in rt5677_set_dai_fmt()
4199 rt5677->master[dai->id] = 0; in rt5677_set_dai_fmt()
4233 regmap_update_bits(rt5677->regmap, RT5677_I2S1_SDP, in rt5677_set_dai_fmt()
4238 regmap_update_bits(rt5677->regmap, RT5677_I2S2_SDP, in rt5677_set_dai_fmt()
4243 regmap_update_bits(rt5677->regmap, RT5677_I2S3_SDP, in rt5677_set_dai_fmt()
4248 regmap_update_bits(rt5677->regmap, RT5677_I2S4_SDP, in rt5677_set_dai_fmt()
4264 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_set_dai_sysclk() local
4267 if (freq == rt5677->sysclk && clk_id == rt5677->sysclk_src) in rt5677_set_dai_sysclk()
4284 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, in rt5677_set_dai_sysclk()
4286 rt5677->sysclk = freq; in rt5677_set_dai_sysclk()
4287 rt5677->sysclk_src = clk_id; in rt5677_set_dai_sysclk()
4317 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_set_dai_pll() local
4321 if (source == rt5677->pll_src && freq_in == rt5677->pll_in && in rt5677_set_dai_pll()
4322 freq_out == rt5677->pll_out) in rt5677_set_dai_pll()
4328 rt5677->pll_in = 0; in rt5677_set_dai_pll()
4329 rt5677->pll_out = 0; in rt5677_set_dai_pll()
4330 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, in rt5677_set_dai_pll()
4337 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, in rt5677_set_dai_pll()
4346 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, in rt5677_set_dai_pll()
4350 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, in rt5677_set_dai_pll()
4354 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, in rt5677_set_dai_pll()
4358 regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, in rt5677_set_dai_pll()
4380 regmap_write(rt5677->regmap, RT5677_PLL1_CTRL1, in rt5677_set_dai_pll()
4382 regmap_write(rt5677->regmap, RT5677_PLL1_CTRL2, in rt5677_set_dai_pll()
4386 rt5677->pll_in = freq_in; in rt5677_set_dai_pll()
4387 rt5677->pll_out = freq_out; in rt5677_set_dai_pll()
4388 rt5677->pll_src = source; in rt5677_set_dai_pll()
4397 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_set_tdm_slot() local
4438 regmap_update_bits(rt5677->regmap, RT5677_TDM1_CTRL1, 0x1f00, in rt5677_set_tdm_slot()
4440 regmap_update_bits(rt5677->regmap, RT5677_DIG_MISC, 0x8000, in rt5677_set_tdm_slot()
4444 regmap_update_bits(rt5677->regmap, RT5677_TDM2_CTRL1, 0x1f00, in rt5677_set_tdm_slot()
4446 regmap_update_bits(rt5677->regmap, RT5677_DIG_MISC, 0x80, in rt5677_set_tdm_slot()
4459 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_set_bias_level() local
4469 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG1, in rt5677_set_bias_level()
4473 regmap_update_bits(rt5677->regmap, in rt5677_set_bias_level()
4476 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG1, in rt5677_set_bias_level()
4482 rt5677->is_vref_slow = false; in rt5677_set_bias_level()
4483 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, in rt5677_set_bias_level()
4485 regmap_update_bits(rt5677->regmap, RT5677_DIG_MISC, in rt5677_set_bias_level()
4494 regmap_update_bits(rt5677->regmap, RT5677_DIG_MISC, 0x1, 0x0); in rt5677_set_bias_level()
4495 regmap_write(rt5677->regmap, RT5677_PWR_DIG1, 0x0000); in rt5677_set_bias_level()
4496 regmap_write(rt5677->regmap, RT5677_PWR_ANLG1, in rt5677_set_bias_level()
4499 regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, in rt5677_set_bias_level()
4501 regmap_update_bits(rt5677->regmap, in rt5677_set_bias_level()
4504 if (rt5677->dsp_vad_en) in rt5677_set_bias_level()
4518 struct rt5677_priv *rt5677 = gpiochip_get_data(chip); in rt5677_gpio_set() local
4522 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL2, in rt5677_gpio_set()
4527 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL3, in rt5677_gpio_set()
4539 struct rt5677_priv *rt5677 = gpiochip_get_data(chip); in rt5677_gpio_direction_out() local
4543 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL2, in rt5677_gpio_direction_out()
4549 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL3, in rt5677_gpio_direction_out()
4563 struct rt5677_priv *rt5677 = gpiochip_get_data(chip); in rt5677_gpio_get() local
4566 ret = regmap_read(rt5677->regmap, RT5677_GPIO_ST, &value); in rt5677_gpio_get()
4575 struct rt5677_priv *rt5677 = gpiochip_get_data(chip); in rt5677_gpio_direction_in() local
4579 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL2, in rt5677_gpio_direction_in()
4584 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL3, in rt5677_gpio_direction_in()
4600 static void rt5677_gpio_config(struct rt5677_priv *rt5677, unsigned offset, in rt5677_gpio_config() argument
4608 regmap_update_bits(rt5677->regmap, in rt5677_gpio_config()
4616 regmap_update_bits(rt5677->regmap, in rt5677_gpio_config()
4629 struct rt5677_priv *rt5677 = gpiochip_get_data(chip); in rt5677_to_irq() local
4632 if ((rt5677->pdata.jd1_gpio == 1 && offset == RT5677_GPIO1) || in rt5677_to_irq()
4633 (rt5677->pdata.jd1_gpio == 2 && in rt5677_to_irq()
4635 (rt5677->pdata.jd1_gpio == 3 && in rt5677_to_irq()
4638 } else if ((rt5677->pdata.jd2_gpio == 1 && offset == RT5677_GPIO4) || in rt5677_to_irq()
4639 (rt5677->pdata.jd2_gpio == 2 && in rt5677_to_irq()
4641 (rt5677->pdata.jd2_gpio == 3 && in rt5677_to_irq()
4644 } else if ((rt5677->pdata.jd3_gpio == 1 && in rt5677_to_irq()
4646 (rt5677->pdata.jd3_gpio == 2 && in rt5677_to_irq()
4648 (rt5677->pdata.jd3_gpio == 3 && in rt5677_to_irq()
4655 return irq_create_mapping(rt5677->domain, irq); in rt5677_to_irq()
4671 struct rt5677_priv *rt5677 = i2c_get_clientdata(i2c); in rt5677_init_gpio() local
4674 rt5677->gpio_chip = rt5677_template_chip; in rt5677_init_gpio()
4675 rt5677->gpio_chip.ngpio = RT5677_GPIO_NUM; in rt5677_init_gpio()
4676 rt5677->gpio_chip.parent = &i2c->dev; in rt5677_init_gpio()
4677 rt5677->gpio_chip.base = -1; in rt5677_init_gpio()
4679 ret = gpiochip_add_data(&rt5677->gpio_chip, rt5677); in rt5677_init_gpio()
4686 struct rt5677_priv *rt5677 = i2c_get_clientdata(i2c); in rt5677_free_gpio() local
4688 gpiochip_remove(&rt5677->gpio_chip); in rt5677_free_gpio()
4691 static void rt5677_gpio_config(struct rt5677_priv *rt5677, unsigned offset, in rt5677_gpio_config() argument
4708 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_probe() local
4711 rt5677->component = component; in rt5677_probe()
4713 if (rt5677->pdata.dmic2_clk_pin == RT5677_DMIC_CLK2) { in rt5677_probe()
4725 regmap_update_bits(rt5677->regmap, RT5677_DIG_MISC, in rt5677_probe()
4727 regmap_write(rt5677->regmap, RT5677_PWR_DSP2, in rt5677_probe()
4731 rt5677_gpio_config(rt5677, i, rt5677->pdata.gpio_config[i]); in rt5677_probe()
4733 mutex_init(&rt5677->dsp_cmd_lock); in rt5677_probe()
4734 mutex_init(&rt5677->dsp_pri_lock); in rt5677_probe()
4741 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_remove() local
4743 regmap_write(rt5677->regmap, RT5677_RESET, 0x10ec); in rt5677_remove()
4744 gpiod_set_value_cansleep(rt5677->pow_ldo2, 0); in rt5677_remove()
4745 gpiod_set_value_cansleep(rt5677->reset_pin, 1); in rt5677_remove()
4751 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_suspend() local
4753 if (!rt5677->dsp_vad_en) { in rt5677_suspend()
4754 regcache_cache_only(rt5677->regmap, true); in rt5677_suspend()
4755 regcache_mark_dirty(rt5677->regmap); in rt5677_suspend()
4757 gpiod_set_value_cansleep(rt5677->pow_ldo2, 0); in rt5677_suspend()
4758 gpiod_set_value_cansleep(rt5677->reset_pin, 1); in rt5677_suspend()
4766 struct rt5677_priv *rt5677 = snd_soc_component_get_drvdata(component); in rt5677_resume() local
4768 if (!rt5677->dsp_vad_en) { in rt5677_resume()
4769 rt5677->pll_src = 0; in rt5677_resume()
4770 rt5677->pll_in = 0; in rt5677_resume()
4771 rt5677->pll_out = 0; in rt5677_resume()
4772 gpiod_set_value_cansleep(rt5677->pow_ldo2, 1); in rt5677_resume()
4773 gpiod_set_value_cansleep(rt5677->reset_pin, 0); in rt5677_resume()
4774 if (rt5677->pow_ldo2 || rt5677->reset_pin) in rt5677_resume()
4777 regcache_cache_only(rt5677->regmap, false); in rt5677_resume()
4778 regcache_sync(rt5677->regmap); in rt5677_resume()
4791 struct rt5677_priv *rt5677 = i2c_get_clientdata(client); in rt5677_read() local
4793 if (rt5677->is_dsp_mode) { in rt5677_read()
4795 mutex_lock(&rt5677->dsp_pri_lock); in rt5677_read()
4796 rt5677_dsp_mode_i2c_write(rt5677, RT5677_PRIV_INDEX, in rt5677_read()
4798 rt5677_dsp_mode_i2c_read(rt5677, RT5677_PRIV_DATA, val); in rt5677_read()
4799 mutex_unlock(&rt5677->dsp_pri_lock); in rt5677_read()
4801 rt5677_dsp_mode_i2c_read(rt5677, reg, val); in rt5677_read()
4804 regmap_read(rt5677->regmap_physical, reg, val); in rt5677_read()
4813 struct rt5677_priv *rt5677 = i2c_get_clientdata(client); in rt5677_write() local
4815 if (rt5677->is_dsp_mode) { in rt5677_write()
4817 mutex_lock(&rt5677->dsp_pri_lock); in rt5677_write()
4818 rt5677_dsp_mode_i2c_write(rt5677, RT5677_PRIV_INDEX, in rt5677_write()
4820 rt5677_dsp_mode_i2c_write(rt5677, RT5677_PRIV_DATA, in rt5677_write()
4822 mutex_unlock(&rt5677->dsp_pri_lock); in rt5677_write()
4824 rt5677_dsp_mode_i2c_write(rt5677, reg, val); in rt5677_write()
4827 regmap_write(rt5677->regmap_physical, reg, val); in rt5677_write()
5006 static void rt5677_read_device_properties(struct rt5677_priv *rt5677, in rt5677_read_device_properties() argument
5011 rt5677->pdata.in1_diff = in rt5677_read_device_properties()
5015 rt5677->pdata.in2_diff = in rt5677_read_device_properties()
5019 rt5677->pdata.lout1_diff = in rt5677_read_device_properties()
5023 rt5677->pdata.lout2_diff = in rt5677_read_device_properties()
5027 rt5677->pdata.lout3_diff = in rt5677_read_device_properties()
5032 rt5677->pdata.gpio_config, in rt5677_read_device_properties()
5037 rt5677->pdata.dmic2_clk_pin = val; in rt5677_read_device_properties()
5041 rt5677->pdata.jd1_gpio = val; in rt5677_read_device_properties()
5045 rt5677->pdata.jd2_gpio = val; in rt5677_read_device_properties()
5049 rt5677->pdata.jd3_gpio = val; in rt5677_read_device_properties()
5078 struct rt5677_priv *rt5677 = data; in rt5677_irq() local
5082 mutex_lock(&rt5677->irq_lock); in rt5677_irq()
5100 ret = regmap_read(rt5677->regmap, RT5677_IRQ_CTRL1, &reg_irq); in rt5677_irq()
5102 dev_err(rt5677->dev, "failed reading IRQ status: %d\n", in rt5677_irq()
5111 virq = irq_find_mapping(rt5677->domain, i); in rt5677_irq()
5124 ret = regmap_write(rt5677->regmap, RT5677_IRQ_CTRL1, reg_irq); in rt5677_irq()
5126 dev_err(rt5677->dev, "failed updating IRQ status: %d\n", in rt5677_irq()
5132 mutex_unlock(&rt5677->irq_lock); in rt5677_irq()
5141 struct rt5677_priv *rt5677 = irq_data_get_irq_chip_data(data); in rt5677_irq_bus_lock() local
5143 mutex_lock(&rt5677->irq_lock); in rt5677_irq_bus_lock()
5148 struct rt5677_priv *rt5677 = irq_data_get_irq_chip_data(data); in rt5677_irq_bus_sync_unlock() local
5151 regmap_update_bits(rt5677->regmap, RT5677_IRQ_CTRL1, in rt5677_irq_bus_sync_unlock()
5153 RT5677_EN_IRQ_GPIO_JD3, rt5677->irq_en); in rt5677_irq_bus_sync_unlock()
5154 mutex_unlock(&rt5677->irq_lock); in rt5677_irq_bus_sync_unlock()
5159 struct rt5677_priv *rt5677 = irq_data_get_irq_chip_data(data); in rt5677_irq_enable() local
5161 rt5677->irq_en |= rt5677_irq_descs[data->hwirq].enable_mask; in rt5677_irq_enable()
5166 struct rt5677_priv *rt5677 = irq_data_get_irq_chip_data(data); in rt5677_irq_disable() local
5168 rt5677->irq_en &= ~rt5677_irq_descs[data->hwirq].enable_mask; in rt5677_irq_disable()
5182 struct rt5677_priv *rt5677 = h->host_data; in rt5677_irq_map() local
5184 irq_set_chip_data(virq, rt5677); in rt5677_irq_map()
5200 struct rt5677_priv *rt5677 = i2c_get_clientdata(i2c); in rt5677_init_irq() local
5203 if (!rt5677->pdata.jd1_gpio && in rt5677_init_irq()
5204 !rt5677->pdata.jd2_gpio && in rt5677_init_irq()
5205 !rt5677->pdata.jd3_gpio) in rt5677_init_irq()
5213 mutex_init(&rt5677->irq_lock); in rt5677_init_irq()
5220 regmap_update_bits(rt5677->regmap, RT5677_DIG_MISC, in rt5677_init_irq()
5224 regmap_update_bits(rt5677->regmap, RT5677_GEN_CTRL1, 0xff, 0xff); in rt5677_init_irq()
5227 if (rt5677->pdata.jd1_gpio) { in rt5677_init_irq()
5229 jd_val |= rt5677->pdata.jd1_gpio << RT5677_SEL_GPIO_JD1_SFT; in rt5677_init_irq()
5231 if (rt5677->pdata.jd2_gpio) { in rt5677_init_irq()
5233 jd_val |= rt5677->pdata.jd2_gpio << RT5677_SEL_GPIO_JD2_SFT; in rt5677_init_irq()
5235 if (rt5677->pdata.jd3_gpio) { in rt5677_init_irq()
5237 jd_val |= rt5677->pdata.jd3_gpio << RT5677_SEL_GPIO_JD3_SFT; in rt5677_init_irq()
5239 regmap_update_bits(rt5677->regmap, RT5677_JD_CTRL1, jd_mask, jd_val); in rt5677_init_irq()
5242 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL1, in rt5677_init_irq()
5246 rt5677->domain = irq_domain_add_linear(i2c->dev.of_node, in rt5677_init_irq()
5247 RT5677_IRQ_NUM, &rt5677_domain_ops, rt5677); in rt5677_init_irq()
5248 if (!rt5677->domain) { in rt5677_init_irq()
5255 "rt5677", rt5677); in rt5677_init_irq()
5264 struct rt5677_priv *rt5677; in rt5677_i2c_probe() local
5268 rt5677 = devm_kzalloc(&i2c->dev, sizeof(struct rt5677_priv), in rt5677_i2c_probe()
5270 if (rt5677 == NULL) in rt5677_i2c_probe()
5273 rt5677->dev = &i2c->dev; in rt5677_i2c_probe()
5274 i2c_set_clientdata(i2c, rt5677); in rt5677_i2c_probe()
5281 rt5677->type = (enum rt5677_type)match_id->data; in rt5677_i2c_probe()
5287 rt5677->type = (enum rt5677_type)acpi_id->driver_data; in rt5677_i2c_probe()
5292 rt5677_read_device_properties(rt5677, &i2c->dev); in rt5677_i2c_probe()
5298 rt5677->pow_ldo2 = devm_gpiod_get_optional(&i2c->dev, in rt5677_i2c_probe()
5300 if (IS_ERR(rt5677->pow_ldo2)) { in rt5677_i2c_probe()
5301 ret = PTR_ERR(rt5677->pow_ldo2); in rt5677_i2c_probe()
5305 rt5677->reset_pin = devm_gpiod_get_optional(&i2c->dev, in rt5677_i2c_probe()
5307 if (IS_ERR(rt5677->reset_pin)) { in rt5677_i2c_probe()
5308 ret = PTR_ERR(rt5677->reset_pin); in rt5677_i2c_probe()
5313 if (rt5677->pow_ldo2 || rt5677->reset_pin) { in rt5677_i2c_probe()
5321 rt5677->regmap_physical = devm_regmap_init_i2c(i2c, in rt5677_i2c_probe()
5323 if (IS_ERR(rt5677->regmap_physical)) { in rt5677_i2c_probe()
5324 ret = PTR_ERR(rt5677->regmap_physical); in rt5677_i2c_probe()
5330 rt5677->regmap = devm_regmap_init(&i2c->dev, NULL, i2c, &rt5677_regmap); in rt5677_i2c_probe()
5331 if (IS_ERR(rt5677->regmap)) { in rt5677_i2c_probe()
5332 ret = PTR_ERR(rt5677->regmap); in rt5677_i2c_probe()
5338 regmap_read(rt5677->regmap, RT5677_VENDOR_ID2, &val); in rt5677_i2c_probe()
5345 regmap_write(rt5677->regmap, RT5677_RESET, 0x10ec); in rt5677_i2c_probe()
5347 ret = regmap_register_patch(rt5677->regmap, init_list, in rt5677_i2c_probe()
5352 if (rt5677->pdata.in1_diff) in rt5677_i2c_probe()
5353 regmap_update_bits(rt5677->regmap, RT5677_IN1, in rt5677_i2c_probe()
5356 if (rt5677->pdata.in2_diff) in rt5677_i2c_probe()
5357 regmap_update_bits(rt5677->regmap, RT5677_IN1, in rt5677_i2c_probe()
5360 if (rt5677->pdata.lout1_diff) in rt5677_i2c_probe()
5361 regmap_update_bits(rt5677->regmap, RT5677_LOUT1, in rt5677_i2c_probe()
5364 if (rt5677->pdata.lout2_diff) in rt5677_i2c_probe()
5365 regmap_update_bits(rt5677->regmap, RT5677_LOUT1, in rt5677_i2c_probe()
5368 if (rt5677->pdata.lout3_diff) in rt5677_i2c_probe()
5369 regmap_update_bits(rt5677->regmap, RT5677_LOUT1, in rt5677_i2c_probe()
5372 if (rt5677->pdata.dmic2_clk_pin == RT5677_DMIC_CLK2) { in rt5677_i2c_probe()
5373 regmap_update_bits(rt5677->regmap, RT5677_GEN_CTRL2, in rt5677_i2c_probe()
5376 regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL2, in rt5677_i2c_probe()
5381 if (rt5677->pdata.micbias1_vdd_3v3) in rt5677_i2c_probe()
5382 regmap_update_bits(rt5677->regmap, RT5677_MICBIAS, in rt5677_i2c_probe()