Skip to content

Commit 2ea70e5

Browse files
MLK-24175: ASoC: fsl_sai: instantiate snd_soc_dai_driver
instantiate snd_soc_dai_driver for independent symmetric control. Signed-off-by: Shengjiu Wang <[email protected]> Reviewed-by: Viorel Suman <[email protected]>
1 parent baaa061 commit 2ea70e5

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

sound/soc/fsl/fsl_sai.c

+11-8
Original file line numberDiff line numberDiff line change
@@ -1028,7 +1028,7 @@ static int fsl_sai_dai_resume(struct snd_soc_dai *cpu_dai)
10281028
return 0;
10291029
}
10301030

1031-
static struct snd_soc_dai_driver fsl_sai_dai = {
1031+
static struct snd_soc_dai_driver fsl_sai_dai_template = {
10321032
.probe = fsl_sai_dai_probe,
10331033
.playback = {
10341034
.stream_name = "CPU-Playback",
@@ -1382,6 +1382,9 @@ static int fsl_sai_probe(struct platform_device *pdev)
13821382
if (sai->soc->reg_offset == 8)
13831383
fsl_sai_regmap_config = fsl_sai_v3_regmap_config;
13841384

1385+
memcpy(&sai->cpu_dai_drv, &fsl_sai_dai_template,
1386+
sizeof(fsl_sai_dai_template));
1387+
13851388
sai->regmap = devm_regmap_init_mmio_clk(&pdev->dev,
13861389
NULL, base, &fsl_sai_regmap_config);
13871390
if (IS_ERR(sai->regmap)) {
@@ -1467,9 +1470,9 @@ static int fsl_sai_probe(struct platform_device *pdev)
14671470
/* Sync Tx with Rx as default by following old DT binding */
14681471
sai->synchronous[RX] = true;
14691472
sai->synchronous[TX] = false;
1470-
fsl_sai_dai.symmetric_rates = 1;
1471-
fsl_sai_dai.symmetric_channels = 1;
1472-
fsl_sai_dai.symmetric_samplebits = 1;
1473+
sai->cpu_dai_drv.symmetric_rates = 1;
1474+
sai->cpu_dai_drv.symmetric_channels = 1;
1475+
sai->cpu_dai_drv.symmetric_samplebits = 1;
14731476

14741477
if (of_find_property(np, "fsl,sai-synchronous-rx", NULL) &&
14751478
of_find_property(np, "fsl,sai-asynchronous", NULL)) {
@@ -1486,9 +1489,9 @@ static int fsl_sai_probe(struct platform_device *pdev)
14861489
/* Discard all settings for asynchronous mode */
14871490
sai->synchronous[RX] = false;
14881491
sai->synchronous[TX] = false;
1489-
fsl_sai_dai.symmetric_rates = 0;
1490-
fsl_sai_dai.symmetric_channels = 0;
1491-
fsl_sai_dai.symmetric_samplebits = 0;
1492+
sai->cpu_dai_drv.symmetric_rates = 0;
1493+
sai->cpu_dai_drv.symmetric_channels = 0;
1494+
sai->cpu_dai_drv.symmetric_samplebits = 0;
14921495
}
14931496

14941497
platform_set_drvdata(pdev, sai);
@@ -1554,7 +1557,7 @@ static int fsl_sai_probe(struct platform_device *pdev)
15541557
regcache_cache_only(sai->regmap, true);
15551558

15561559
ret = devm_snd_soc_register_component(&pdev->dev, &fsl_component,
1557-
&fsl_sai_dai, 1);
1560+
&sai->cpu_dai_drv, 1);
15581561
if (ret)
15591562
return ret;
15601563

sound/soc/fsl/fsl_sai.h

+1
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,7 @@ struct fsl_sai {
288288

289289
struct fsl_sai_verid verid;
290290
struct fsl_sai_param param;
291+
struct snd_soc_dai_driver cpu_dai_drv;
291292
};
292293

293294
const struct attribute_group *fsl_sai_get_dev_attribute_group(bool monitor_spdif);

0 commit comments

Comments
 (0)