.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * cs47l24.h -- ALSA SoC Audio driver for Cirrus Logic CS47L24 |
---|
3 | 4 | * |
---|
4 | 5 | * Copyright 2015 Cirrus Logic Inc. |
---|
5 | 6 | * |
---|
6 | 7 | * Author: Richard Fitzgerald <rf@opensource.wolfsonmicro.com> |
---|
7 | | - * |
---|
8 | | - * This program is free software; you can redistribute it and/or modify |
---|
9 | | - * it under the terms of the GNU General Public License version 2 as |
---|
10 | | - * published by the Free Software Foundation. |
---|
11 | 8 | */ |
---|
12 | 9 | |
---|
13 | 10 | #include <linux/module.h> |
---|
.. | .. |
---|
75 | 72 | |
---|
76 | 73 | v = (v & ARIZONA_SYSCLK_FREQ_MASK) >> ARIZONA_SYSCLK_FREQ_SHIFT; |
---|
77 | 74 | |
---|
78 | | - return wm_adsp2_early_event(w, kcontrol, event, v); |
---|
| 75 | + wm_adsp2_set_dspclk(w, v); |
---|
| 76 | + |
---|
| 77 | + return wm_adsp_early_event(w, kcontrol, event); |
---|
79 | 78 | } |
---|
80 | 79 | |
---|
81 | 80 | static DECLARE_TLV_DB_SCALE(eq_tlv, -1200, 100, 0); |
---|
.. | .. |
---|
500 | 499 | |
---|
501 | 500 | SND_SOC_DAPM_AIF_OUT("AIF1TX1", NULL, 0, |
---|
502 | 501 | ARIZONA_AIF1_TX_ENABLES, ARIZONA_AIF1TX1_ENA_SHIFT, 0), |
---|
503 | | -SND_SOC_DAPM_AIF_OUT("AIF1TX2", NULL, 0, |
---|
| 502 | +SND_SOC_DAPM_AIF_OUT("AIF1TX2", NULL, 1, |
---|
504 | 503 | ARIZONA_AIF1_TX_ENABLES, ARIZONA_AIF1TX2_ENA_SHIFT, 0), |
---|
505 | | -SND_SOC_DAPM_AIF_OUT("AIF1TX3", NULL, 0, |
---|
| 504 | +SND_SOC_DAPM_AIF_OUT("AIF1TX3", NULL, 2, |
---|
506 | 505 | ARIZONA_AIF1_TX_ENABLES, ARIZONA_AIF1TX3_ENA_SHIFT, 0), |
---|
507 | | -SND_SOC_DAPM_AIF_OUT("AIF1TX4", NULL, 0, |
---|
| 506 | +SND_SOC_DAPM_AIF_OUT("AIF1TX4", NULL, 3, |
---|
508 | 507 | ARIZONA_AIF1_TX_ENABLES, ARIZONA_AIF1TX4_ENA_SHIFT, 0), |
---|
509 | | -SND_SOC_DAPM_AIF_OUT("AIF1TX5", NULL, 0, |
---|
| 508 | +SND_SOC_DAPM_AIF_OUT("AIF1TX5", NULL, 4, |
---|
510 | 509 | ARIZONA_AIF1_TX_ENABLES, ARIZONA_AIF1TX5_ENA_SHIFT, 0), |
---|
511 | | -SND_SOC_DAPM_AIF_OUT("AIF1TX6", NULL, 0, |
---|
| 510 | +SND_SOC_DAPM_AIF_OUT("AIF1TX6", NULL, 5, |
---|
512 | 511 | ARIZONA_AIF1_TX_ENABLES, ARIZONA_AIF1TX6_ENA_SHIFT, 0), |
---|
513 | | -SND_SOC_DAPM_AIF_OUT("AIF1TX7", NULL, 0, |
---|
| 512 | +SND_SOC_DAPM_AIF_OUT("AIF1TX7", NULL, 6, |
---|
514 | 513 | ARIZONA_AIF1_TX_ENABLES, ARIZONA_AIF1TX7_ENA_SHIFT, 0), |
---|
515 | | -SND_SOC_DAPM_AIF_OUT("AIF1TX8", NULL, 0, |
---|
| 514 | +SND_SOC_DAPM_AIF_OUT("AIF1TX8", NULL, 7, |
---|
516 | 515 | ARIZONA_AIF1_TX_ENABLES, ARIZONA_AIF1TX8_ENA_SHIFT, 0), |
---|
517 | 516 | |
---|
518 | 517 | SND_SOC_DAPM_AIF_IN("AIF1RX1", NULL, 0, |
---|
519 | 518 | ARIZONA_AIF1_RX_ENABLES, ARIZONA_AIF1RX1_ENA_SHIFT, 0), |
---|
520 | | -SND_SOC_DAPM_AIF_IN("AIF1RX2", NULL, 0, |
---|
| 519 | +SND_SOC_DAPM_AIF_IN("AIF1RX2", NULL, 1, |
---|
521 | 520 | ARIZONA_AIF1_RX_ENABLES, ARIZONA_AIF1RX2_ENA_SHIFT, 0), |
---|
522 | | -SND_SOC_DAPM_AIF_IN("AIF1RX3", NULL, 0, |
---|
| 521 | +SND_SOC_DAPM_AIF_IN("AIF1RX3", NULL, 2, |
---|
523 | 522 | ARIZONA_AIF1_RX_ENABLES, ARIZONA_AIF1RX3_ENA_SHIFT, 0), |
---|
524 | | -SND_SOC_DAPM_AIF_IN("AIF1RX4", NULL, 0, |
---|
| 523 | +SND_SOC_DAPM_AIF_IN("AIF1RX4", NULL, 3, |
---|
525 | 524 | ARIZONA_AIF1_RX_ENABLES, ARIZONA_AIF1RX4_ENA_SHIFT, 0), |
---|
526 | | -SND_SOC_DAPM_AIF_IN("AIF1RX5", NULL, 0, |
---|
| 525 | +SND_SOC_DAPM_AIF_IN("AIF1RX5", NULL, 4, |
---|
527 | 526 | ARIZONA_AIF1_RX_ENABLES, ARIZONA_AIF1RX5_ENA_SHIFT, 0), |
---|
528 | | -SND_SOC_DAPM_AIF_IN("AIF1RX6", NULL, 0, |
---|
| 527 | +SND_SOC_DAPM_AIF_IN("AIF1RX6", NULL, 5, |
---|
529 | 528 | ARIZONA_AIF1_RX_ENABLES, ARIZONA_AIF1RX6_ENA_SHIFT, 0), |
---|
530 | | -SND_SOC_DAPM_AIF_IN("AIF1RX7", NULL, 0, |
---|
| 529 | +SND_SOC_DAPM_AIF_IN("AIF1RX7", NULL, 6, |
---|
531 | 530 | ARIZONA_AIF1_RX_ENABLES, ARIZONA_AIF1RX7_ENA_SHIFT, 0), |
---|
532 | | -SND_SOC_DAPM_AIF_IN("AIF1RX8", NULL, 0, |
---|
| 531 | +SND_SOC_DAPM_AIF_IN("AIF1RX8", NULL, 7, |
---|
533 | 532 | ARIZONA_AIF1_RX_ENABLES, ARIZONA_AIF1RX8_ENA_SHIFT, 0), |
---|
534 | 533 | |
---|
535 | 534 | SND_SOC_DAPM_AIF_OUT("AIF2TX1", NULL, 0, |
---|
536 | 535 | ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX1_ENA_SHIFT, 0), |
---|
537 | | -SND_SOC_DAPM_AIF_OUT("AIF2TX2", NULL, 0, |
---|
| 536 | +SND_SOC_DAPM_AIF_OUT("AIF2TX2", NULL, 1, |
---|
538 | 537 | ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX2_ENA_SHIFT, 0), |
---|
539 | | -SND_SOC_DAPM_AIF_OUT("AIF2TX3", NULL, 0, |
---|
| 538 | +SND_SOC_DAPM_AIF_OUT("AIF2TX3", NULL, 2, |
---|
540 | 539 | ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX3_ENA_SHIFT, 0), |
---|
541 | | -SND_SOC_DAPM_AIF_OUT("AIF2TX4", NULL, 0, |
---|
| 540 | +SND_SOC_DAPM_AIF_OUT("AIF2TX4", NULL, 3, |
---|
542 | 541 | ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX4_ENA_SHIFT, 0), |
---|
543 | | -SND_SOC_DAPM_AIF_OUT("AIF2TX5", NULL, 0, |
---|
| 542 | +SND_SOC_DAPM_AIF_OUT("AIF2TX5", NULL, 4, |
---|
544 | 543 | ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX5_ENA_SHIFT, 0), |
---|
545 | | -SND_SOC_DAPM_AIF_OUT("AIF2TX6", NULL, 0, |
---|
| 544 | +SND_SOC_DAPM_AIF_OUT("AIF2TX6", NULL, 5, |
---|
546 | 545 | ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX6_ENA_SHIFT, 0), |
---|
547 | 546 | |
---|
548 | 547 | SND_SOC_DAPM_AIF_IN("AIF2RX1", NULL, 0, |
---|
549 | 548 | ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX1_ENA_SHIFT, 0), |
---|
550 | | -SND_SOC_DAPM_AIF_IN("AIF2RX2", NULL, 0, |
---|
| 549 | +SND_SOC_DAPM_AIF_IN("AIF2RX2", NULL, 1, |
---|
551 | 550 | ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX2_ENA_SHIFT, 0), |
---|
552 | | -SND_SOC_DAPM_AIF_IN("AIF2RX3", NULL, 0, |
---|
| 551 | +SND_SOC_DAPM_AIF_IN("AIF2RX3", NULL, 2, |
---|
553 | 552 | ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX3_ENA_SHIFT, 0), |
---|
554 | | -SND_SOC_DAPM_AIF_IN("AIF2RX4", NULL, 0, |
---|
| 553 | +SND_SOC_DAPM_AIF_IN("AIF2RX4", NULL, 3, |
---|
555 | 554 | ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX4_ENA_SHIFT, 0), |
---|
556 | | -SND_SOC_DAPM_AIF_IN("AIF2RX5", NULL, 0, |
---|
| 555 | +SND_SOC_DAPM_AIF_IN("AIF2RX5", NULL, 4, |
---|
557 | 556 | ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX5_ENA_SHIFT, 0), |
---|
558 | | -SND_SOC_DAPM_AIF_IN("AIF2RX6", NULL, 0, |
---|
| 557 | +SND_SOC_DAPM_AIF_IN("AIF2RX6", NULL, 5, |
---|
559 | 558 | ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX6_ENA_SHIFT, 0), |
---|
560 | 559 | |
---|
561 | 560 | SND_SOC_DAPM_AIF_OUT("AIF3TX1", NULL, 0, |
---|
562 | 561 | ARIZONA_AIF3_TX_ENABLES, ARIZONA_AIF3TX1_ENA_SHIFT, 0), |
---|
563 | | -SND_SOC_DAPM_AIF_OUT("AIF3TX2", NULL, 0, |
---|
| 562 | +SND_SOC_DAPM_AIF_OUT("AIF3TX2", NULL, 1, |
---|
564 | 563 | ARIZONA_AIF3_TX_ENABLES, ARIZONA_AIF3TX2_ENA_SHIFT, 0), |
---|
565 | 564 | |
---|
566 | 565 | SND_SOC_DAPM_AIF_IN("AIF3RX1", NULL, 0, |
---|
567 | 566 | ARIZONA_AIF3_RX_ENABLES, ARIZONA_AIF3RX1_ENA_SHIFT, 0), |
---|
568 | | -SND_SOC_DAPM_AIF_IN("AIF3RX2", NULL, 0, |
---|
| 567 | +SND_SOC_DAPM_AIF_IN("AIF3RX2", NULL, 1, |
---|
569 | 568 | ARIZONA_AIF3_RX_ENABLES, ARIZONA_AIF3RX2_ENA_SHIFT, 0), |
---|
570 | 569 | |
---|
571 | 570 | SND_SOC_DAPM_PGA_E("OUT1L", SND_SOC_NOPM, |
---|
.. | .. |
---|
1069 | 1068 | }, |
---|
1070 | 1069 | }; |
---|
1071 | 1070 | |
---|
1072 | | -static int cs47l24_open(struct snd_compr_stream *stream) |
---|
| 1071 | +static int cs47l24_open(struct snd_soc_component *component, |
---|
| 1072 | + struct snd_compr_stream *stream) |
---|
1073 | 1073 | { |
---|
1074 | 1074 | struct snd_soc_pcm_runtime *rtd = stream->private_data; |
---|
1075 | | - struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME); |
---|
1076 | 1075 | struct cs47l24_priv *priv = snd_soc_component_get_drvdata(component); |
---|
1077 | 1076 | struct arizona *arizona = priv->core.arizona; |
---|
1078 | 1077 | int n_adsp; |
---|
1079 | 1078 | |
---|
1080 | | - if (strcmp(rtd->codec_dai->name, "cs47l24-dsp-voicectrl") == 0) { |
---|
| 1079 | + if (strcmp(asoc_rtd_to_codec(rtd, 0)->name, "cs47l24-dsp-voicectrl") == 0) { |
---|
1081 | 1080 | n_adsp = 2; |
---|
1082 | | - } else if (strcmp(rtd->codec_dai->name, "cs47l24-dsp-trace") == 0) { |
---|
| 1081 | + } else if (strcmp(asoc_rtd_to_codec(rtd, 0)->name, "cs47l24-dsp-trace") == 0) { |
---|
1083 | 1082 | n_adsp = 1; |
---|
1084 | 1083 | } else { |
---|
1085 | 1084 | dev_err(arizona->dev, |
---|
1086 | 1085 | "No suitable compressed stream for DAI '%s'\n", |
---|
1087 | | - rtd->codec_dai->name); |
---|
| 1086 | + asoc_rtd_to_codec(rtd, 0)->name); |
---|
1088 | 1087 | return -EINVAL; |
---|
1089 | 1088 | } |
---|
1090 | 1089 | |
---|
.. | .. |
---|
1179 | 1178 | ARIZONA_DAC_DIGITAL_VOLUME_4L, |
---|
1180 | 1179 | }; |
---|
1181 | 1180 | |
---|
1182 | | -static struct snd_compr_ops cs47l24_compr_ops = { |
---|
| 1181 | +static struct snd_compress_ops cs47l24_compress_ops = { |
---|
1183 | 1182 | .open = cs47l24_open, |
---|
1184 | 1183 | .free = wm_adsp_compr_free, |
---|
1185 | 1184 | .set_params = wm_adsp_compr_set_params, |
---|
.. | .. |
---|
1195 | 1194 | .set_sysclk = arizona_set_sysclk, |
---|
1196 | 1195 | .set_pll = cs47l24_set_fll, |
---|
1197 | 1196 | .name = DRV_NAME, |
---|
1198 | | - .compr_ops = &cs47l24_compr_ops, |
---|
| 1197 | + .compress_ops = &cs47l24_compress_ops, |
---|
1199 | 1198 | .controls = cs47l24_snd_controls, |
---|
1200 | 1199 | .num_controls = ARRAY_SIZE(cs47l24_snd_controls), |
---|
1201 | 1200 | .dapm_widgets = cs47l24_dapm_widgets, |
---|