~ubuntu-audio-dev/alsa-driver/tiwai-trunk2

« back to all changes in this revision

Viewing changes to soc/codecs/cs47l24.c

  • Committer: Canonistack server
  • Date: 2016-05-16 13:04:41 UTC
  • Revision ID: david.henningsson@canonical.com-20160516130441-xmcvo5v7n0mupdei
Test run of 623 machines: 3 failing with 3 errors and 0 warnings.

Show diffs side-by-side

added added

removed removed

Lines of Context:
807
807
        { "IN2L PGA", NULL, "IN2L" },
808
808
        { "IN2R PGA", NULL, "IN2R" },
809
809
 
 
810
        { "Audio Trace DSP", NULL, "DSP2" },
 
811
        { "Audio Trace DSP", NULL, "SYSCLK" },
 
812
 
810
813
        ARIZONA_MIXER_ROUTES("OUT1L", "HPOUT1L"),
811
814
        ARIZONA_MIXER_ROUTES("OUT1R", "HPOUT1R"),
812
815
 
1016
1019
                        .formats = CS47L24_FORMATS,
1017
1020
                },
1018
1021
        },
 
1022
        {
 
1023
                .name = "cs47l24-cpu-trace",
 
1024
                .capture = {
 
1025
                        .stream_name = "Audio Trace CPU",
 
1026
                        .channels_min = 1,
 
1027
                        .channels_max = 6,
 
1028
                        .rates = CS47L24_RATES,
 
1029
                        .formats = CS47L24_FORMATS,
 
1030
                },
 
1031
                .compress_new = snd_soc_new_compress,
 
1032
        },
 
1033
        {
 
1034
                .name = "cs47l24-dsp-trace",
 
1035
                .capture = {
 
1036
                        .stream_name = "Audio Trace DSP",
 
1037
                        .channels_min = 1,
 
1038
                        .channels_max = 6,
 
1039
                        .rates = CS47L24_RATES,
 
1040
                        .formats = CS47L24_FORMATS,
 
1041
                },
 
1042
        },
1019
1043
};
1020
1044
 
1021
1045
static int cs47l24_open(struct snd_compr_stream *stream)
1027
1051
 
1028
1052
        if (strcmp(rtd->codec_dai->name, "cs47l24-dsp-voicectrl") == 0) {
1029
1053
                n_adsp = 2;
 
1054
        } else if (strcmp(rtd->codec_dai->name, "cs47l24-dsp-trace") == 0) {
 
1055
                n_adsp = 1;
1030
1056
        } else {
1031
1057
                dev_err(arizona->dev,
1032
1058
                        "No suitable compressed stream for DAI '%s'\n",
1041
1067
{
1042
1068
        struct cs47l24_priv *priv = data;
1043
1069
        struct arizona *arizona = priv->core.arizona;
1044
 
        int ret;
1045
 
 
1046
 
        ret = wm_adsp_compr_handle_irq(&priv->core.adsp[2]);
1047
 
        if (ret == -ENODEV) {
 
1070
        int serviced = 0;
 
1071
        int i, ret;
 
1072
 
 
1073
        for (i = 1; i <= 2; ++i) {
 
1074
                ret = wm_adsp_compr_handle_irq(&priv->core.adsp[i]);
 
1075
                if (ret != -ENODEV)
 
1076
                        serviced++;
 
1077
        }
 
1078
 
 
1079
        if (!serviced) {
1048
1080
                dev_err(arizona->dev, "Spurious compressed data IRQ\n");
1049
1081
                return IRQ_NONE;
1050
1082
        }
1160
1192
static struct snd_soc_platform_driver cs47l24_compr_platform = {
1161
1193
        .compr_ops = &cs47l24_compr_ops,
1162
1194
};
 
1195
 
1163
1196
static int cs47l24_probe(struct platform_device *pdev)
1164
1197
{
1165
1198
        struct arizona *arizona = dev_get_drvdata(pdev->dev.parent);
1228
1261
                dev_err(&pdev->dev, "Failed to register platform: %d\n", ret);
1229
1262
                return ret;
1230
1263
        }
 
1264
 
1231
1265
        ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_cs47l24,
1232
1266
                                      cs47l24_dai, ARRAY_SIZE(cs47l24_dai));
1233
 
 
1234
1267
        if (ret < 0) {
1235
1268
                dev_err(&pdev->dev, "Failed to register codec: %d\n", ret);
1236
1269
                snd_soc_unregister_platform(&pdev->dev);
1241
1274
 
1242
1275
static int cs47l24_remove(struct platform_device *pdev)
1243
1276
{
 
1277
        struct cs47l24_priv *cs47l24 = platform_get_drvdata(pdev);
 
1278
 
1244
1279
        snd_soc_unregister_platform(&pdev->dev);
1245
1280
        snd_soc_unregister_codec(&pdev->dev);
1246
1281
        pm_runtime_disable(&pdev->dev);
1247
1282
 
 
1283
        wm_adsp2_remove(&cs47l24->core.adsp[1]);
 
1284
        wm_adsp2_remove(&cs47l24->core.adsp[2]);
 
1285
 
1248
1286
        return 0;
1249
1287
}
1250
1288