Lines Matching refs:va

411 static int va_clk_rsc_fs_gen_request(struct va_macro *va, bool enable)  in va_clk_rsc_fs_gen_request()  argument
413 struct regmap *regmap = va->regmap; in va_clk_rsc_fs_gen_request()
441 static int va_macro_mclk_enable(struct va_macro *va, bool mclk_enable) in va_macro_mclk_enable() argument
443 struct regmap *regmap = va->regmap; in va_macro_mclk_enable()
446 va_clk_rsc_fs_gen_request(va, true); in va_macro_mclk_enable()
450 va_clk_rsc_fs_gen_request(va, false); in va_macro_mclk_enable()
460 struct va_macro *va = snd_soc_component_get_drvdata(comp); in va_macro_mclk_event() local
464 return va_macro_mclk_enable(va, true); in va_macro_mclk_event()
466 return va_macro_mclk_enable(va, false); in va_macro_mclk_event()
523 struct va_macro *va = snd_soc_component_get_drvdata(component); in va_macro_tx_mixer_get() local
525 if (test_bit(dec_id, &va->active_ch_mask[dai_id])) in va_macro_tx_mixer_get()
546 struct va_macro *va = snd_soc_component_get_drvdata(component); in va_macro_tx_mixer_put() local
549 set_bit(dec_id, &va->active_ch_mask[dai_id]); in va_macro_tx_mixer_put()
550 va->active_ch_cnt[dai_id]++; in va_macro_tx_mixer_put()
552 clear_bit(dec_id, &va->active_ch_mask[dai_id]); in va_macro_tx_mixer_put()
553 va->active_ch_cnt[dai_id]--; in va_macro_tx_mixer_put()
564 struct va_macro *va = snd_soc_component_get_drvdata(component); in va_dmic_clk_enable() local
574 dmic_clk_cnt = &(va->dmic_0_1_clk_cnt); in va_dmic_clk_enable()
575 dmic_clk_div = &(va->dmic_0_1_clk_div); in va_dmic_clk_enable()
581 dmic_clk_cnt = &(va->dmic_2_3_clk_cnt); in va_dmic_clk_enable()
582 dmic_clk_div = &(va->dmic_2_3_clk_div); in va_dmic_clk_enable()
588 dmic_clk_cnt = &(va->dmic_4_5_clk_cnt); in va_dmic_clk_enable()
589 dmic_clk_div = &(va->dmic_4_5_clk_div); in va_dmic_clk_enable()
595 dmic_clk_cnt = &(va->dmic_6_7_clk_cnt); in va_dmic_clk_enable()
596 dmic_clk_div = &(va->dmic_6_7_clk_div); in va_dmic_clk_enable()
607 clk_div = va->dmic_clk_div; in va_dmic_clk_enable()
648 clk_div = va->dmic_clk_div; in va_dmic_clk_enable()
650 clk_div = va->dmic_clk_div; in va_dmic_clk_enable()
699 struct va_macro *va = snd_soc_component_get_drvdata(comp); in va_macro_enable_dec() local
716 va->dec_mode[decimator] << CDC_VA_ADC_MODE_SHIFT); in va_macro_enable_dec()
779 struct va_macro *va = snd_soc_component_get_drvdata(comp); in va_macro_dec_mode_get() local
783 ucontrol->value.integer.value[0] = va->dec_mode[path]; in va_macro_dec_mode_get()
795 struct va_macro *va = snd_soc_component_get_drvdata(comp); in va_macro_dec_mode_put() local
797 va->dec_mode[path] = value; in va_macro_dec_mode_put()
811 struct va_macro *va = snd_soc_component_get_drvdata(component); in va_macro_hw_params() local
842 for_each_set_bit(decimator, &va->active_ch_mask[dai->id], in va_macro_hw_params()
858 struct va_macro *va = snd_soc_component_get_drvdata(component); in va_macro_get_channel_map() local
864 *tx_slot = va->active_ch_mask[dai->id]; in va_macro_get_channel_map()
865 *tx_num = va->active_ch_cnt[dai->id]; in va_macro_get_channel_map()
877 struct va_macro *va = snd_soc_component_get_drvdata(component); in va_macro_digital_mute() local
880 for_each_set_bit(decimator, &va->active_ch_mask[dai->id], in va_macro_digital_mute()
1278 struct va_macro *va = snd_soc_component_get_drvdata(component); in va_macro_component_probe() local
1280 snd_soc_component_init_regmap(component, va->regmap); in va_macro_component_probe()
1308 struct va_macro *va = to_va_macro(hw); in fsgen_gate_is_enabled() local
1311 regmap_read(va->regmap, CDC_VA_TOP_CSR_TOP_CFG0, &val); in fsgen_gate_is_enabled()
1322 static int va_macro_register_fsgen_output(struct va_macro *va) in va_macro_register_fsgen_output() argument
1324 struct clk *parent = va->clks[2].clk; in va_macro_register_fsgen_output()
1325 struct device *dev = va->dev; in va_macro_register_fsgen_output()
1341 va->hw.init = &init; in va_macro_register_fsgen_output()
1342 ret = devm_clk_hw_register(va->dev, &va->hw); in va_macro_register_fsgen_output()
1346 return devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, &va->hw); in va_macro_register_fsgen_output()
1350 struct va_macro *va) in va_macro_validate_dmic_sample_rate() argument
1362 va->dmic_clk_div = VA_MACRO_CLK_DIV_2; in va_macro_validate_dmic_sample_rate()
1365 va->dmic_clk_div = VA_MACRO_CLK_DIV_3; in va_macro_validate_dmic_sample_rate()
1368 va->dmic_clk_div = VA_MACRO_CLK_DIV_4; in va_macro_validate_dmic_sample_rate()
1371 va->dmic_clk_div = VA_MACRO_CLK_DIV_6; in va_macro_validate_dmic_sample_rate()
1374 va->dmic_clk_div = VA_MACRO_CLK_DIV_8; in va_macro_validate_dmic_sample_rate()
1377 va->dmic_clk_div = VA_MACRO_CLK_DIV_16; in va_macro_validate_dmic_sample_rate()
1387 dev_err(va->dev, "%s: Invalid rate %d, for mclk %d\n", in va_macro_validate_dmic_sample_rate()
1397 struct va_macro *va; in va_macro_probe() local
1402 va = devm_kzalloc(dev, sizeof(*va), GFP_KERNEL); in va_macro_probe()
1403 if (!va) in va_macro_probe()
1406 va->dev = dev; in va_macro_probe()
1407 va->clks[0].id = "macro"; in va_macro_probe()
1408 va->clks[1].id = "dcodec"; in va_macro_probe()
1409 va->clks[2].id = "mclk"; in va_macro_probe()
1411 ret = devm_clk_bulk_get_optional(dev, VA_NUM_CLKS_MAX, va->clks); in va_macro_probe()
1421 va->dmic_clk_div = VA_MACRO_CLK_DIV_2; in va_macro_probe()
1423 ret = va_macro_validate_dmic_sample_rate(sample_rate, va); in va_macro_probe()
1429 clk_set_rate(va->clks[1].clk, VA_MACRO_MCLK_FREQ); in va_macro_probe()
1430 ret = clk_bulk_prepare_enable(VA_NUM_CLKS_MAX, va->clks); in va_macro_probe()
1440 va->regmap = devm_regmap_init_mmio(dev, base, &va_regmap_config); in va_macro_probe()
1441 if (IS_ERR(va->regmap)) { in va_macro_probe()
1446 dev_set_drvdata(dev, va); in va_macro_probe()
1447 ret = va_macro_register_fsgen_output(va); in va_macro_probe()
1460 clk_bulk_disable_unprepare(VA_NUM_CLKS_MAX, va->clks); in va_macro_probe()
1467 struct va_macro *va = dev_get_drvdata(&pdev->dev); in va_macro_remove() local
1469 clk_bulk_disable_unprepare(VA_NUM_CLKS_MAX, va->clks); in va_macro_remove()