• Home
  • Raw
  • Download

Lines Matching +full:activity +full:- +full:signal +full:- +full:sources

1 // SPDX-License-Identifier: GPL-2.0-only
5 // Copyright (C) 2015-2019 Cirrus Logic, Inc. and
23 #include <linux/irqchip/irq-madera.h>
30 #define DRV_NAME "cs47l85-codec"
114 snd_soc_dapm_to_component(w->dapm); in cs47l85_adsp_power_ev()
116 struct madera_priv *priv = &cs47l85->core; in cs47l85_adsp_power_ev()
117 struct madera *madera = priv->madera; in cs47l85_adsp_power_ev()
121 ret = regmap_read(madera->regmap, MADERA_DSP_CLOCK_1, &freq); in cs47l85_adsp_power_ev()
123 dev_err(madera->dev, in cs47l85_adsp_power_ev()
133 ret = madera_set_adsp_clk(&cs47l85->core, w->shift, freq); in cs47l85_adsp_power_ev()
192 snd_soc_dapm_to_component(w->dapm); in cs47l85_hp_post_enable()
195 switch (w->shift) { in cs47l85_hp_post_enable()
216 snd_soc_dapm_to_component(w->dapm); in cs47l85_hp_post_disable()
218 switch (w->shift) { in cs47l85_hp_post_disable()
258 return -EINVAL; in cs47l85_hp_ev()
339 MADERA_ANC_COEFF_END - MADERA_ANC_COEFF_START + 1),
342 MADERA_FCL_COEFF_END - MADERA_FCL_COEFF_START + 1),
345 MADERA_FCR_COEFF_END - MADERA_FCR_COEFF_START + 1),
954 SND_SOC_DAPM_OUTPUT("DRC1 Signal Activity"),
955 SND_SOC_DAPM_OUTPUT("DRC2 Signal Activity"),
1137 * Input mux widgets arranged in order of sources in MADERA_MIXER_INPUT_ROUTES
1392 SND_SOC_DAPM_SWITCH("DRC1 Activity Output", SND_SOC_NOPM, 0, 0,
1394 SND_SOC_DAPM_SWITCH("DRC2 Activity Output", SND_SOC_NOPM, 0, 0,
2215 { "DRC1 Signal Activity", NULL, "DRC1 Activity Output" },
2216 { "DRC2 Signal Activity", NULL, "DRC2 Activity Output" },
2217 { "DRC1 Activity Output", "Switch", "DRC1L" },
2218 { "DRC1 Activity Output", "Switch", "DRC1R" },
2219 { "DRC2 Activity Output", "Switch", "DRC2L" },
2220 { "DRC2 Activity Output", "Switch", "DRC2R" },
2230 return madera_set_fll_refclk(&cs47l85->fll[0], source, fref, in cs47l85_set_fll()
2233 return madera_set_fll_refclk(&cs47l85->fll[1], source, fref, in cs47l85_set_fll()
2236 return madera_set_fll_refclk(&cs47l85->fll[2], source, fref, in cs47l85_set_fll()
2239 return madera_set_fll_syncclk(&cs47l85->fll[0], source, fref, in cs47l85_set_fll()
2242 return madera_set_fll_syncclk(&cs47l85->fll[1], source, fref, in cs47l85_set_fll()
2245 return madera_set_fll_syncclk(&cs47l85->fll[2], source, fref, in cs47l85_set_fll()
2248 return -EINVAL; in cs47l85_set_fll()
2254 .name = "cs47l85-aif1",
2276 .name = "cs47l85-aif2",
2298 .name = "cs47l85-aif3",
2320 .name = "cs47l85-aif4",
2342 .name = "cs47l85-slim1",
2361 .name = "cs47l85-slim2",
2380 .name = "cs47l85-slim3",
2399 .name = "cs47l85-cpu-voicectrl",
2410 .name = "cs47l85-dsp-voicectrl",
2420 .name = "cs47l85-cpu-trace",
2431 .name = "cs47l85-dsp-trace",
2445 struct snd_soc_pcm_runtime *rtd = stream->private_data; in cs47l85_open()
2447 struct madera_priv *priv = &cs47l85->core; in cs47l85_open()
2448 struct madera *madera = priv->madera; in cs47l85_open()
2451 if (strcmp(asoc_rtd_to_codec(rtd, 0)->name, "cs47l85-dsp-voicectrl") == 0) { in cs47l85_open()
2453 } else if (strcmp(asoc_rtd_to_codec(rtd, 0)->name, "cs47l85-dsp-trace") == 0) { in cs47l85_open()
2456 dev_err(madera->dev, in cs47l85_open()
2458 asoc_rtd_to_codec(rtd, 0)->name); in cs47l85_open()
2459 return -EINVAL; in cs47l85_open()
2462 return wm_adsp_compr_open(&priv->adsp[n_adsp], stream); in cs47l85_open()
2468 struct madera_priv *priv = &cs47l85->core; in cs47l85_adsp2_irq()
2469 struct madera *madera = priv->madera; in cs47l85_adsp2_irq()
2475 ret = wm_adsp_compr_handle_irq(&priv->adsp[i]); in cs47l85_adsp2_irq()
2476 if (ret != -ENODEV) in cs47l85_adsp2_irq()
2480 blocking_notifier_call_chain(&madera->notifier, in cs47l85_adsp2_irq()
2487 dev_err(madera->dev, "Spurious compressed data IRQ\n"); in cs47l85_adsp2_irq()
2497 struct madera *madera = cs47l85->core.madera; in cs47l85_component_probe()
2500 snd_soc_component_init_regmap(component, madera->regmap); in cs47l85_component_probe()
2502 mutex_lock(&madera->dapm_ptr_lock); in cs47l85_component_probe()
2503 madera->dapm = snd_soc_component_get_dapm(component); in cs47l85_component_probe()
2504 mutex_unlock(&madera->dapm_ptr_lock); in cs47l85_component_probe()
2524 wm_adsp2_component_probe(&cs47l85->core.adsp[i], component); in cs47l85_component_probe()
2532 struct madera *madera = cs47l85->core.madera; in cs47l85_component_remove()
2535 mutex_lock(&madera->dapm_ptr_lock); in cs47l85_component_remove()
2536 madera->dapm = NULL; in cs47l85_component_remove()
2537 mutex_unlock(&madera->dapm_ptr_lock); in cs47l85_component_remove()
2540 wm_adsp2_component_remove(&cs47l85->core.adsp[i], component); in cs47l85_component_remove()
2590 struct madera *madera = dev_get_drvdata(pdev->dev.parent); in cs47l85_probe()
2597 if (!madera->irq_dev) { in cs47l85_probe()
2598 dev_dbg(&pdev->dev, "irqchip driver not ready\n"); in cs47l85_probe()
2599 return -EPROBE_DEFER; in cs47l85_probe()
2602 cs47l85 = devm_kzalloc(&pdev->dev, sizeof(struct cs47l85), in cs47l85_probe()
2605 return -ENOMEM; in cs47l85_probe()
2609 cs47l85->core.madera = madera; in cs47l85_probe()
2610 cs47l85->core.dev = &pdev->dev; in cs47l85_probe()
2611 cs47l85->core.num_inputs = 12; in cs47l85_probe()
2613 ret = madera_core_init(&cs47l85->core); in cs47l85_probe()
2617 ret = madera_init_overheat(&cs47l85->core); in cs47l85_probe()
2625 dev_err(&pdev->dev, "Failed to request DSP IRQ: %d\n", ret); in cs47l85_probe()
2631 dev_warn(&pdev->dev, "Failed to set DSP IRQ wake: %d\n", ret); in cs47l85_probe()
2634 cs47l85->core.adsp[i].part = "cs47l85"; in cs47l85_probe()
2635 cs47l85->core.adsp[i].num = i + 1; in cs47l85_probe()
2636 cs47l85->core.adsp[i].type = WMFW_ADSP2; in cs47l85_probe()
2637 cs47l85->core.adsp[i].rev = 1; in cs47l85_probe()
2638 cs47l85->core.adsp[i].dev = madera->dev; in cs47l85_probe()
2639 cs47l85->core.adsp[i].regmap = madera->regmap_32bit; in cs47l85_probe()
2641 cs47l85->core.adsp[i].base = wm_adsp2_control_bases[i]; in cs47l85_probe()
2642 cs47l85->core.adsp[i].mem = cs47l85_dsp_regions[i]; in cs47l85_probe()
2643 cs47l85->core.adsp[i].num_mems = in cs47l85_probe()
2646 ret = wm_adsp2_init(&cs47l85->core.adsp[i]); in cs47l85_probe()
2648 for (--i; i >= 0; --i) in cs47l85_probe()
2649 wm_adsp2_remove(&cs47l85->core.adsp[i]); in cs47l85_probe()
2654 madera_init_fll(madera, 1, MADERA_FLL1_CONTROL_1 - 1, in cs47l85_probe()
2655 &cs47l85->fll[0]); in cs47l85_probe()
2656 madera_init_fll(madera, 2, MADERA_FLL2_CONTROL_1 - 1, in cs47l85_probe()
2657 &cs47l85->fll[1]); in cs47l85_probe()
2658 madera_init_fll(madera, 3, MADERA_FLL3_CONTROL_1 - 1, in cs47l85_probe()
2659 &cs47l85->fll[2]); in cs47l85_probe()
2662 madera_init_dai(&cs47l85->core, i); in cs47l85_probe()
2666 regmap_update_bits(madera->regmap, cs47l85_digital_vu[i], in cs47l85_probe()
2669 pm_runtime_enable(&pdev->dev); in cs47l85_probe()
2670 pm_runtime_idle(&pdev->dev); in cs47l85_probe()
2672 ret = devm_snd_soc_register_component(&pdev->dev, in cs47l85_probe()
2677 dev_err(&pdev->dev, "Failed to register component: %d\n", ret); in cs47l85_probe()
2684 pm_runtime_disable(&pdev->dev); in cs47l85_probe()
2687 wm_adsp2_remove(&cs47l85->core.adsp[i]); in cs47l85_probe()
2692 madera_free_overheat(&cs47l85->core); in cs47l85_probe()
2694 madera_core_free(&cs47l85->core); in cs47l85_probe()
2704 pm_runtime_disable(&pdev->dev); in cs47l85_remove()
2707 wm_adsp2_remove(&cs47l85->core.adsp[i]); in cs47l85_remove()
2709 madera_set_irq_wake(cs47l85->core.madera, MADERA_IRQ_DSP_IRQ1, 0); in cs47l85_remove()
2710 madera_free_irq(cs47l85->core.madera, MADERA_IRQ_DSP_IRQ1, cs47l85); in cs47l85_remove()
2711 madera_free_overheat(&cs47l85->core); in cs47l85_remove()
2712 madera_core_free(&cs47l85->core); in cs47l85_remove()
2719 .name = "cs47l85-codec",
2727 MODULE_SOFTDEP("pre: madera irq-madera arizona-micsupp");
2731 MODULE_ALIAS("platform:cs47l85-codec");