• Home
  • Raw
  • Download

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

1 // SPDX-License-Identifier: GPL-2.0-only
5 // Copyright (C) 2016-2019 Cirrus Logic, Inc. and
23 #include <linux/irqchip/irq-madera.h>
33 #define DRV_NAME "cs47l92-codec"
60 struct madera_priv *priv = &cs47l92->core; in cs47l92_put_demux()
61 struct madera *madera = priv->madera; in cs47l92_put_demux()
62 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; in cs47l92_put_demux()
67 if (ucontrol->value.enumerated.item[0] > e->items - 1) in cs47l92_put_demux()
68 return -EINVAL; in cs47l92_put_demux()
70 mux = ucontrol->value.enumerated.item[0]; in cs47l92_put_demux()
74 ep_sel = mux << e->shift_l; in cs47l92_put_demux()
82 ret = regmap_read(madera->regmap, MADERA_OUTPUT_ENABLES_1, &cur); in cs47l92_put_demux()
84 dev_warn(madera->dev, "Failed to read outputs: %d\n", ret); in cs47l92_put_demux()
87 ret = regmap_update_bits(madera->regmap, MADERA_OUTPUT_ENABLES_1, in cs47l92_put_demux()
90 dev_warn(madera->dev, "Failed to disable outputs: %d\n", ret); in cs47l92_put_demux()
94 ret = regmap_update_bits(madera->regmap, MADERA_OUTPUT_ENABLES_1, in cs47l92_put_demux()
97 dev_err(madera->dev, "Failed to set OUT3 demux: %d\n", ret); in cs47l92_put_demux()
99 out_mono = madera->pdata.codec.out_mono[2 + mux]; in cs47l92_put_demux()
103 dev_warn(madera->dev, in cs47l92_put_demux()
107 ret = regmap_update_bits(madera->regmap, MADERA_OUTPUT_ENABLES_1, in cs47l92_put_demux()
110 dev_warn(madera->dev, "Failed to restore outputs: %d\n", ret); in cs47l92_put_demux()
139 snd_soc_dapm_to_component(w->dapm); in cs47l92_adsp_power_ev()
141 struct madera_priv *priv = &cs47l92->core; in cs47l92_adsp_power_ev()
142 struct madera *madera = priv->madera; in cs47l92_adsp_power_ev()
146 ret = regmap_read(madera->regmap, MADERA_DSP_CLOCK_2, &freq); in cs47l92_adsp_power_ev()
148 dev_err(madera->dev, in cs47l92_adsp_power_ev()
155 ret = madera_set_adsp_clk(&cs47l92->core, w->shift, freq); in cs47l92_adsp_power_ev()
171 snd_soc_dapm_to_component(w->dapm); in cs47l92_outclk_ev()
173 struct madera_priv *priv = &cs47l92->core; in cs47l92_outclk_ev()
174 struct madera *madera = priv->madera; in cs47l92_outclk_ev()
178 ret = regmap_read(madera->regmap, MADERA_OUTPUT_RATE_1, &val); in cs47l92_outclk_ev()
180 dev_err(madera->dev, "Failed to read OUTCLK source: %d\n", ret); in cs47l92_outclk_ev()
190 val -= (MADERA_OUTCLK_MCLK1 - MADERA_MCLK1); in cs47l92_outclk_ev()
194 ret = clk_prepare_enable(madera->mclk[val].clk); in cs47l92_outclk_ev()
199 clk_disable_unprepare(madera->mclk[val].clk); in cs47l92_outclk_ev()
783 SND_SOC_DAPM_OUTPUT("DRC1 Signal Activity"),
784 SND_SOC_DAPM_OUTPUT("DRC2 Signal Activity"),
898 * mux_in widgets : arranged in the order of sources
1084 SND_SOC_DAPM_SWITCH("DRC1 Activity Output", SND_SOC_NOPM, 0, 0,
1086 SND_SOC_DAPM_SWITCH("DRC2 Activity Output", SND_SOC_NOPM, 0, 0,
1652 { "DRC1 Signal Activity", NULL, "DRC1 Activity Output" },
1653 { "DRC2 Signal Activity", NULL, "DRC2 Activity Output" },
1654 { "DRC1 Activity Output", "Switch", "DRC1L" },
1655 { "DRC1 Activity Output", "Switch", "DRC1R" },
1656 { "DRC2 Activity Output", "Switch", "DRC2L" },
1657 { "DRC2 Activity Output", "Switch", "DRC2R" },
1676 return madera_fllhj_set_refclk(&cs47l92->fll[0], source, fref, in cs47l92_set_fll()
1679 return madera_fllhj_set_refclk(&cs47l92->fll[1], source, fref, in cs47l92_set_fll()
1682 return -EINVAL; in cs47l92_set_fll()
1688 .name = "cs47l92-aif1",
1710 .name = "cs47l92-aif2",
1732 .name = "cs47l92-aif3",
1754 .name = "cs47l92-slim1",
1773 .name = "cs47l92-slim2",
1792 .name = "cs47l92-slim3",
1811 .name = "cs47l92-cpu-trace",
1822 .name = "cs47l92-dsp-trace",
1836 struct snd_soc_pcm_runtime *rtd = stream->private_data; in cs47l92_open()
1838 struct madera_priv *priv = &cs47l92->core; in cs47l92_open()
1839 struct madera *madera = priv->madera; in cs47l92_open()
1842 if (strcmp(asoc_rtd_to_codec(rtd, 0)->name, "cs47l92-dsp-trace") == 0) { in cs47l92_open()
1845 dev_err(madera->dev, in cs47l92_open()
1847 asoc_rtd_to_codec(rtd, 0)->name); in cs47l92_open()
1848 return -EINVAL; in cs47l92_open()
1851 return wm_adsp_compr_open(&priv->adsp[n_adsp], stream); in cs47l92_open()
1857 struct madera_priv *priv = &cs47l92->core; in cs47l92_adsp2_irq()
1858 struct madera *madera = priv->madera; in cs47l92_adsp2_irq()
1861 ret = wm_adsp_compr_handle_irq(&priv->adsp[0]); in cs47l92_adsp2_irq()
1862 if (ret == -ENODEV) { in cs47l92_adsp2_irq()
1863 dev_err(madera->dev, "Spurious compressed data IRQ\n"); in cs47l92_adsp2_irq()
1880 struct madera *madera = cs47l92->core.madera; in cs47l92_component_probe()
1883 snd_soc_component_init_regmap(component, madera->regmap); in cs47l92_component_probe()
1885 mutex_lock(&madera->dapm_ptr_lock); in cs47l92_component_probe()
1886 madera->dapm = snd_soc_component_get_dapm(component); in cs47l92_component_probe()
1887 mutex_unlock(&madera->dapm_ptr_lock); in cs47l92_component_probe()
1907 return wm_adsp2_component_probe(&cs47l92->core.adsp[0], component); in cs47l92_component_probe()
1913 struct madera *madera = cs47l92->core.madera; in cs47l92_component_remove()
1915 mutex_lock(&madera->dapm_ptr_lock); in cs47l92_component_remove()
1916 madera->dapm = NULL; in cs47l92_component_remove()
1917 mutex_unlock(&madera->dapm_ptr_lock); in cs47l92_component_remove()
1919 wm_adsp2_component_remove(&cs47l92->core.adsp[0], component); in cs47l92_component_remove()
1965 struct madera *madera = dev_get_drvdata(pdev->dev.parent); in cs47l92_probe()
1972 if (!madera->irq_dev) { in cs47l92_probe()
1973 dev_dbg(&pdev->dev, "irqchip driver not ready\n"); in cs47l92_probe()
1974 return -EPROBE_DEFER; in cs47l92_probe()
1977 cs47l92 = devm_kzalloc(&pdev->dev, sizeof(struct cs47l92), GFP_KERNEL); in cs47l92_probe()
1979 return -ENOMEM; in cs47l92_probe()
1983 cs47l92->core.madera = madera; in cs47l92_probe()
1984 cs47l92->core.dev = &pdev->dev; in cs47l92_probe()
1985 cs47l92->core.num_inputs = 8; in cs47l92_probe()
1987 ret = madera_core_init(&cs47l92->core); in cs47l92_probe()
1995 dev_err(&pdev->dev, "Failed to request DSP IRQ: %d\n", ret); in cs47l92_probe()
2001 dev_warn(&pdev->dev, "Failed to set DSP IRQ wake: %d\n", ret); in cs47l92_probe()
2003 cs47l92->core.adsp[0].part = "cs47l92"; in cs47l92_probe()
2004 cs47l92->core.adsp[0].num = 1; in cs47l92_probe()
2005 cs47l92->core.adsp[0].type = WMFW_ADSP2; in cs47l92_probe()
2006 cs47l92->core.adsp[0].rev = 2; in cs47l92_probe()
2007 cs47l92->core.adsp[0].dev = madera->dev; in cs47l92_probe()
2008 cs47l92->core.adsp[0].regmap = madera->regmap_32bit; in cs47l92_probe()
2010 cs47l92->core.adsp[0].base = MADERA_DSP1_CONFIG_1; in cs47l92_probe()
2011 cs47l92->core.adsp[0].mem = cs47l92_dsp1_regions; in cs47l92_probe()
2012 cs47l92->core.adsp[0].num_mems = ARRAY_SIZE(cs47l92_dsp1_regions); in cs47l92_probe()
2014 cs47l92->core.adsp[0].lock_regions = WM_ADSP2_REGION_1_9; in cs47l92_probe()
2016 ret = wm_adsp2_init(&cs47l92->core.adsp[0]); in cs47l92_probe()
2020 ret = madera_init_bus_error_irq(&cs47l92->core, 0, wm_adsp2_bus_error); in cs47l92_probe()
2024 madera_init_fll(madera, 1, MADERA_FLL1_CONTROL_1 - 1, in cs47l92_probe()
2025 &cs47l92->fll[0]); in cs47l92_probe()
2026 madera_init_fll(madera, 2, MADERA_FLL2_CONTROL_1 - 1, in cs47l92_probe()
2027 &cs47l92->fll[1]); in cs47l92_probe()
2030 madera_init_dai(&cs47l92->core, i); in cs47l92_probe()
2034 regmap_update_bits(madera->regmap, cs47l92_digital_vu[i], in cs47l92_probe()
2037 pm_runtime_enable(&pdev->dev); in cs47l92_probe()
2038 pm_runtime_idle(&pdev->dev); in cs47l92_probe()
2040 ret = devm_snd_soc_register_component(&pdev->dev, in cs47l92_probe()
2045 dev_err(&pdev->dev, "Failed to register component: %d\n", ret); in cs47l92_probe()
2052 pm_runtime_disable(&pdev->dev); in cs47l92_probe()
2053 madera_free_bus_error_irq(&cs47l92->core, 0); in cs47l92_probe()
2055 wm_adsp2_remove(&cs47l92->core.adsp[0]); in cs47l92_probe()
2060 madera_core_free(&cs47l92->core); in cs47l92_probe()
2069 pm_runtime_disable(&pdev->dev); in cs47l92_remove()
2071 madera_free_bus_error_irq(&cs47l92->core, 0); in cs47l92_remove()
2072 wm_adsp2_remove(&cs47l92->core.adsp[0]); in cs47l92_remove()
2074 madera_set_irq_wake(cs47l92->core.madera, MADERA_IRQ_DSP_IRQ1, 0); in cs47l92_remove()
2075 madera_free_irq(cs47l92->core.madera, MADERA_IRQ_DSP_IRQ1, cs47l92); in cs47l92_remove()
2077 madera_core_free(&cs47l92->core); in cs47l92_remove()
2084 .name = "cs47l92-codec",
2092 MODULE_SOFTDEP("pre: madera irq-madera arizona-micsupp");
2096 MODULE_ALIAS("platform:cs47l92-codec");