Lines Matching +full:codec +full:- +full:aif3
2 * cs47l24.h -- ALSA SoC Audio driver for Cirrus Logic CS47L24
36 #define DRV_NAME "cs47l24-codec"
65 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in cs47l24_adsp_power_ev()
66 struct arizona *arizona = dev_get_drvdata(component->dev->parent); in cs47l24_adsp_power_ev()
70 ret = regmap_read(arizona->regmap, ARIZONA_SYSTEM_CLOCK_1, &v); in cs47l24_adsp_power_ev()
72 dev_err(component->dev, "Failed to read SYSCLK state: %d\n", ret); in cs47l24_adsp_power_ev()
81 static DECLARE_TLV_DB_SCALE(eq_tlv, -1200, 100, 0);
82 static DECLARE_TLV_DB_SCALE(digital_tlv, -6400, 50, 0);
83 static DECLARE_TLV_DB_SCALE(noise_tlv, -13200, 600, 0);
84 static DECLARE_TLV_DB_SCALE(ng_tlv, -10200, 600, 0);
810 { "AIF3 Capture", NULL, "AIF3TX1" },
811 { "AIF3 Capture", NULL, "AIF3TX2" },
813 { "AIF3RX1", NULL, "AIF3 Playback" },
814 { "AIF3RX2", NULL, "AIF3 Playback" },
818 { "AIF3 Playback", NULL, "SYSCLK" },
822 { "AIF3 Capture", NULL, "SYSCLK" },
942 return arizona_set_fll(&cs47l24->fll[0], source, Fref, Fout); in cs47l24_set_fll()
944 return arizona_set_fll(&cs47l24->fll[1], source, Fref, Fout); in cs47l24_set_fll()
946 return arizona_set_fll_refclk(&cs47l24->fll[0], source, Fref, in cs47l24_set_fll()
949 return arizona_set_fll_refclk(&cs47l24->fll[1], source, Fref, in cs47l24_set_fll()
952 return -EINVAL; in cs47l24_set_fll()
963 .name = "cs47l24-aif1",
985 .name = "cs47l24-aif2",
1007 .name = "cs47l24-aif3",
1011 .stream_name = "AIF3 Playback",
1018 .stream_name = "AIF3 Capture",
1029 .name = "cs47l24-cpu-voicectrl",
1040 .name = "cs47l24-dsp-voicectrl",
1050 .name = "cs47l24-cpu-trace",
1061 .name = "cs47l24-dsp-trace",
1074 struct snd_soc_pcm_runtime *rtd = stream->private_data; in cs47l24_open()
1077 struct arizona *arizona = priv->core.arizona; in cs47l24_open()
1080 if (strcmp(rtd->codec_dai->name, "cs47l24-dsp-voicectrl") == 0) { in cs47l24_open()
1082 } else if (strcmp(rtd->codec_dai->name, "cs47l24-dsp-trace") == 0) { in cs47l24_open()
1085 dev_err(arizona->dev, in cs47l24_open()
1087 rtd->codec_dai->name); in cs47l24_open()
1088 return -EINVAL; in cs47l24_open()
1091 return wm_adsp_compr_open(&priv->core.adsp[n_adsp], stream); in cs47l24_open()
1097 struct arizona *arizona = priv->core.arizona; in cs47l24_adsp2_irq()
1103 ret = wm_adsp_compr_handle_irq(&priv->core.adsp[i]); in cs47l24_adsp2_irq()
1104 if (ret != -ENODEV) in cs47l24_adsp2_irq()
1115 dev_err(arizona->dev, "Spurious compressed data IRQ\n"); in cs47l24_adsp2_irq()
1126 struct arizona *arizona = priv->core.arizona; in cs47l24_component_probe()
1129 arizona->dapm = dapm; in cs47l24_component_probe()
1130 snd_soc_component_init_regmap(component, arizona->regmap); in cs47l24_component_probe()
1139 ret = wm_adsp2_component_probe(&priv->core.adsp[1], component); in cs47l24_component_probe()
1143 ret = wm_adsp2_component_probe(&priv->core.adsp[2], component); in cs47l24_component_probe()
1158 wm_adsp2_component_remove(&priv->core.adsp[1], component); in cs47l24_component_probe()
1159 wm_adsp2_component_remove(&priv->core.adsp[2], component); in cs47l24_component_probe()
1168 wm_adsp2_component_remove(&priv->core.adsp[1], component); in cs47l24_component_remove()
1169 wm_adsp2_component_remove(&priv->core.adsp[2], component); in cs47l24_component_remove()
1171 priv->core.arizona->dapm = NULL; in cs47l24_component_remove()
1212 struct arizona *arizona = dev_get_drvdata(pdev->dev.parent); in cs47l24_probe()
1218 cs47l24 = devm_kzalloc(&pdev->dev, sizeof(struct cs47l24_priv), in cs47l24_probe()
1221 return -ENOMEM; in cs47l24_probe()
1224 if (!dev_get_platdata(arizona->dev)) { in cs47l24_probe()
1233 cs47l24->core.arizona = arizona; in cs47l24_probe()
1234 cs47l24->core.num_inputs = 4; in cs47l24_probe()
1237 cs47l24->core.adsp[i].part = "cs47l24"; in cs47l24_probe()
1238 cs47l24->core.adsp[i].num = i + 1; in cs47l24_probe()
1239 cs47l24->core.adsp[i].type = WMFW_ADSP2; in cs47l24_probe()
1240 cs47l24->core.adsp[i].dev = arizona->dev; in cs47l24_probe()
1241 cs47l24->core.adsp[i].regmap = arizona->regmap; in cs47l24_probe()
1243 cs47l24->core.adsp[i].base = ARIZONA_DSP1_CONTROL_1 + in cs47l24_probe()
1245 cs47l24->core.adsp[i].mem = cs47l24_dsp_regions[i - 1]; in cs47l24_probe()
1246 cs47l24->core.adsp[i].num_mems = in cs47l24_probe()
1249 ret = wm_adsp2_init(&cs47l24->core.adsp[i]); in cs47l24_probe()
1254 for (i = 0; i < ARRAY_SIZE(cs47l24->fll); i++) in cs47l24_probe()
1255 cs47l24->fll[i].vco_mult = 3; in cs47l24_probe()
1257 arizona_init_fll(arizona, 1, ARIZONA_FLL1_CONTROL_1 - 1, in cs47l24_probe()
1259 &cs47l24->fll[0]); in cs47l24_probe()
1260 arizona_init_fll(arizona, 2, ARIZONA_FLL2_CONTROL_1 - 1, in cs47l24_probe()
1262 &cs47l24->fll[1]); in cs47l24_probe()
1265 regmap_update_bits(arizona->regmap, ARIZONA_SAMPLE_RATE_2, in cs47l24_probe()
1267 regmap_update_bits(arizona->regmap, ARIZONA_SAMPLE_RATE_3, in cs47l24_probe()
1271 arizona_init_dai(&cs47l24->core, i); in cs47l24_probe()
1275 regmap_update_bits(arizona->regmap, cs47l24_digital_vu[i], in cs47l24_probe()
1278 pm_runtime_enable(&pdev->dev); in cs47l24_probe()
1279 pm_runtime_idle(&pdev->dev); in cs47l24_probe()
1285 dev_err(&pdev->dev, "Failed to request DSP IRQ: %d\n", ret); in cs47l24_probe()
1291 dev_warn(&pdev->dev, in cs47l24_probe()
1304 ret = devm_snd_soc_register_component(&pdev->dev, in cs47l24_probe()
1309 dev_err(&pdev->dev, "Failed to register component: %d\n", ret); in cs47l24_probe()
1327 struct arizona *arizona = cs47l24->core.arizona; in cs47l24_remove()
1329 pm_runtime_disable(&pdev->dev); in cs47l24_remove()
1331 wm_adsp2_remove(&cs47l24->core.adsp[1]); in cs47l24_remove()
1332 wm_adsp2_remove(&cs47l24->core.adsp[2]); in cs47l24_remove()
1344 .name = "cs47l24-codec",
1355 MODULE_ALIAS("platform:cs47l24-codec");