diff options
Diffstat (limited to 'sound/soc/atmel')
-rw-r--r-- | sound/soc/atmel/Kconfig | 1 | ||||
-rw-r--r-- | sound/soc/atmel/atmel-classd.c | 26 | ||||
-rw-r--r-- | sound/soc/atmel/atmel-i2s.c | 13 | ||||
-rw-r--r-- | sound/soc/atmel/atmel-pcm-dma.c | 24 | ||||
-rw-r--r-- | sound/soc/atmel/atmel-pcm-pdc.c | 20 | ||||
-rw-r--r-- | sound/soc/atmel/atmel-pcm.h | 23 | ||||
-rw-r--r-- | sound/soc/atmel/atmel-pdmic.c | 26 | ||||
-rw-r--r-- | sound/soc/atmel/atmel_ssc_dai.c | 26 | ||||
-rw-r--r-- | sound/soc/atmel/atmel_ssc_dai.h | 15 | ||||
-rw-r--r-- | sound/soc/atmel/atmel_wm8904.c | 20 | ||||
-rw-r--r-- | sound/soc/atmel/mikroe-proto.c | 26 | ||||
-rw-r--r-- | sound/soc/atmel/sam9g20_wm8731.c | 37 | ||||
-rw-r--r-- | sound/soc/atmel/sam9x5_wm8731.c | 27 | ||||
-rw-r--r-- | sound/soc/atmel/tse850-pcm5142.c | 13 |
14 files changed, 113 insertions, 184 deletions
diff --git a/sound/soc/atmel/Kconfig b/sound/soc/atmel/Kconfig index c473b9e463ab..06c1d5ce642c 100644 --- a/sound/soc/atmel/Kconfig +++ b/sound/soc/atmel/Kconfig @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0-only config SND_ATMEL_SOC tristate "SoC Audio for the Atmel System-on-Chip" depends on HAS_IOMEM diff --git a/sound/soc/atmel/atmel-classd.c b/sound/soc/atmel/atmel-classd.c index 3d70061901a0..0f2c574f27f1 100644 --- a/sound/soc/atmel/atmel-classd.c +++ b/sound/soc/atmel/atmel-classd.c @@ -1,12 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* Atmel ALSA SoC Audio Class D Amplifier (CLASSD) driver * * Copyright (C) 2015 Atmel * * Author: Songjun Wu <songjun.wu@atmel.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 or later - * as published by the Free Software Foundation. */ #include <linux/of.h> @@ -500,17 +497,30 @@ static int atmel_classd_asoc_card_init(struct device *dev, { struct snd_soc_dai_link *dai_link; struct atmel_classd *dd = snd_soc_card_get_drvdata(card); + struct snd_soc_dai_link_component *comp; dai_link = devm_kzalloc(dev, sizeof(*dai_link), GFP_KERNEL); if (!dai_link) return -ENOMEM; + comp = devm_kzalloc(dev, 3 * sizeof(*comp), GFP_KERNEL); + if (!comp) + return -ENOMEM; + + dai_link->cpus = &comp[0]; + dai_link->codecs = &comp[1]; + dai_link->platforms = &comp[2]; + + dai_link->num_cpus = 1; + dai_link->num_codecs = 1; + dai_link->num_platforms = 1; + dai_link->name = "CLASSD"; dai_link->stream_name = "CLASSD PCM"; - dai_link->codec_dai_name = ATMEL_CLASSD_CODEC_DAI_NAME; - dai_link->cpu_dai_name = dev_name(dev); - dai_link->codec_name = dev_name(dev); - dai_link->platform_name = dev_name(dev); + dai_link->codecs->dai_name = ATMEL_CLASSD_CODEC_DAI_NAME; + dai_link->cpus->dai_name = dev_name(dev); + dai_link->codecs->name = dev_name(dev); + dai_link->platforms->name = dev_name(dev); card->dai_link = dai_link; card->num_links = 1; diff --git a/sound/soc/atmel/atmel-i2s.c b/sound/soc/atmel/atmel-i2s.c index d88c1d995036..bbe2b638abb5 100644 --- a/sound/soc/atmel/atmel-i2s.c +++ b/sound/soc/atmel/atmel-i2s.c @@ -1,21 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0-only /* * Driver for Atmel I2S controller * * Copyright (C) 2015 Atmel Corporation * * Author: Cyrille Pitchen <cyrille.pitchen@atmel.com> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 as published by - * the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along with - * this program. If not, see <http://www.gnu.org/licenses/>. */ #include <linux/init.h> diff --git a/sound/soc/atmel/atmel-pcm-dma.c b/sound/soc/atmel/atmel-pcm-dma.c index dd57a9eac171..db67f5ba1e9a 100644 --- a/sound/soc/atmel/atmel-pcm-dma.c +++ b/sound/soc/atmel/atmel-pcm-dma.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * atmel-pcm-dma.c -- ALSA PCM DMA support for the Atmel SoC. * @@ -8,20 +9,6 @@ * Based on atmel-pcm by: * Sedji Gaouaou <sedji.gaouaou@atmel.com> * Copyright 2008 Atmel - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include <linux/module.h> @@ -124,16 +111,11 @@ static const struct snd_dmaengine_pcm_config atmel_dmaengine_pcm_config = { int atmel_pcm_dma_platform_register(struct device *dev) { - return snd_dmaengine_pcm_register(dev, &atmel_dmaengine_pcm_config, 0); + return devm_snd_dmaengine_pcm_register(dev, + &atmel_dmaengine_pcm_config, 0); } EXPORT_SYMBOL(atmel_pcm_dma_platform_register); -void atmel_pcm_dma_platform_unregister(struct device *dev) -{ - snd_dmaengine_pcm_unregister(dev); -} -EXPORT_SYMBOL(atmel_pcm_dma_platform_unregister); - MODULE_AUTHOR("Bo Shen <voice.shen@atmel.com>"); MODULE_DESCRIPTION("Atmel DMA based PCM module"); MODULE_LICENSE("GPL"); diff --git a/sound/soc/atmel/atmel-pcm-pdc.c b/sound/soc/atmel/atmel-pcm-pdc.c index 99ca23d527c9..ed095af866db 100644 --- a/sound/soc/atmel/atmel-pcm-pdc.c +++ b/sound/soc/atmel/atmel-pcm-pdc.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * atmel-pcm.c -- ALSA PCM interface for the Atmel atmel SoC. * @@ -15,20 +16,6 @@ * Author: Nicolas Pitre * Created: Nov 30, 2004 * Copyright: (C) 2004 MontaVista Software, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include <linux/module.h> @@ -406,11 +393,6 @@ int atmel_pcm_pdc_platform_register(struct device *dev) } EXPORT_SYMBOL(atmel_pcm_pdc_platform_register); -void atmel_pcm_pdc_platform_unregister(struct device *dev) -{ -} -EXPORT_SYMBOL(atmel_pcm_pdc_platform_unregister); - MODULE_AUTHOR("Sedji Gaouaou <sedji.gaouaou@atmel.com>"); MODULE_DESCRIPTION("Atmel PCM module"); MODULE_LICENSE("GPL"); diff --git a/sound/soc/atmel/atmel-pcm.h b/sound/soc/atmel/atmel-pcm.h index 4b27aed40a51..2e648748e5cb 100644 --- a/sound/soc/atmel/atmel-pcm.h +++ b/sound/soc/atmel/atmel-pcm.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * at91-pcm.h - ALSA PCM interface for the Atmel AT91 SoC. * @@ -15,20 +16,6 @@ * Author: Nicolas Pitre * Created: Nov 30, 2004 * Copyright: (C) 2004 MontaVista Software, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _ATMEL_PCM_H @@ -85,28 +72,20 @@ struct atmel_pcm_dma_params { #if IS_ENABLED(CONFIG_SND_ATMEL_SOC_PDC) int atmel_pcm_pdc_platform_register(struct device *dev); -void atmel_pcm_pdc_platform_unregister(struct device *dev); #else static inline int atmel_pcm_pdc_platform_register(struct device *dev) { return 0; } -static inline void atmel_pcm_pdc_platform_unregister(struct device *dev) -{ -} #endif #if IS_ENABLED(CONFIG_SND_ATMEL_SOC_DMA) int atmel_pcm_dma_platform_register(struct device *dev); -void atmel_pcm_dma_platform_unregister(struct device *dev); #else static inline int atmel_pcm_dma_platform_register(struct device *dev) { return 0; } -static inline void atmel_pcm_dma_platform_unregister(struct device *dev) -{ -} #endif #endif /* _ATMEL_PCM_H */ diff --git a/sound/soc/atmel/atmel-pdmic.c b/sound/soc/atmel/atmel-pdmic.c index 915c2b064de1..e09c28349e0d 100644 --- a/sound/soc/atmel/atmel-pdmic.c +++ b/sound/soc/atmel/atmel-pdmic.c @@ -1,12 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* Atmel PDMIC driver * * Copyright (C) 2015 Atmel * * Author: Songjun Wu <songjun.wu@atmel.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 or later - * as published by the Free Software Foundation. */ #include <linux/of.h> @@ -511,17 +508,30 @@ static int atmel_pdmic_asoc_card_init(struct device *dev, { struct snd_soc_dai_link *dai_link; struct atmel_pdmic *dd = snd_soc_card_get_drvdata(card); + struct snd_soc_dai_link_component *comp; dai_link = devm_kzalloc(dev, sizeof(*dai_link), GFP_KERNEL); if (!dai_link) return -ENOMEM; + comp = devm_kzalloc(dev, 3 * sizeof(*comp), GFP_KERNEL); + if (!comp) + return -ENOMEM; + + dai_link->cpus = &comp[0]; + dai_link->codecs = &comp[1]; + dai_link->platforms = &comp[2]; + + dai_link->num_cpus = 1; + dai_link->num_codecs = 1; + dai_link->num_platforms = 1; + dai_link->name = "PDMIC"; dai_link->stream_name = "PDMIC PCM"; - dai_link->codec_dai_name = ATMEL_PDMIC_CODEC_DAI_NAME; - dai_link->cpu_dai_name = dev_name(dev); - dai_link->codec_name = dev_name(dev); - dai_link->platform_name = dev_name(dev); + dai_link->codecs->dai_name = ATMEL_PDMIC_CODEC_DAI_NAME; + dai_link->cpus->dai_name = dev_name(dev); + dai_link->codecs->name = dev_name(dev); + dai_link->platforms->name = dev_name(dev); card->dai_link = dai_link; card->num_links = 1; diff --git a/sound/soc/atmel/atmel_ssc_dai.c b/sound/soc/atmel/atmel_ssc_dai.c index 6291ec7f9dd6..6f89483ac88c 100644 --- a/sound/soc/atmel/atmel_ssc_dai.c +++ b/sound/soc/atmel/atmel_ssc_dai.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * atmel_ssc_dai.c -- ALSA SoC ATMEL SSC Audio Layer Platform driver * @@ -11,20 +12,6 @@ * Frank Mandarino <fmandarino@endrelia.com> * Based on pxa2xx Platform drivers by * Liam Girdwood <lrg@slimlogic.co.uk> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include <linux/init.h> @@ -1025,16 +1012,6 @@ static int asoc_ssc_init(struct device *dev) return 0; } -static void asoc_ssc_exit(struct device *dev) -{ - struct ssc_device *ssc = dev_get_drvdata(dev); - - if (ssc->pdata->use_dma) - atmel_pcm_dma_platform_unregister(dev); - else - atmel_pcm_pdc_platform_unregister(dev); -} - /** * atmel_ssc_set_audio - Allocate the specified SSC for audio use. */ @@ -1063,7 +1040,6 @@ void atmel_ssc_put_audio(int ssc_id) { struct ssc_device *ssc = ssc_info[ssc_id].ssc; - asoc_ssc_exit(&ssc->pdev->dev); ssc_free(ssc); } EXPORT_SYMBOL_GPL(atmel_ssc_put_audio); diff --git a/sound/soc/atmel/atmel_ssc_dai.h b/sound/soc/atmel/atmel_ssc_dai.h index 75194f582131..ae764cb541c7 100644 --- a/sound/soc/atmel/atmel_ssc_dai.h +++ b/sound/soc/atmel/atmel_ssc_dai.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * atmel_ssc_dai.h - ALSA SSC interface for the Atmel SoC * @@ -11,20 +12,6 @@ * Frank Mandarino <fmandarino@endrelia.com> * Based on pxa2xx Platform drivers by * Liam Girdwood <lrg@slimlogic.co.uk> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _ATMEL_SSC_DAI_H diff --git a/sound/soc/atmel/atmel_wm8904.c b/sound/soc/atmel/atmel_wm8904.c index fbc10f61eb55..776b27d3686e 100644 --- a/sound/soc/atmel/atmel_wm8904.c +++ b/sound/soc/atmel/atmel_wm8904.c @@ -1,11 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * atmel_wm8904 - Atmel ASoC driver for boards with WM8904 codec. * * Copyright (C) 2012 Atmel * * Author: Bo Shen <voice.shen@atmel.com> - * - * GPLv2 or later */ #include <linux/clk.h> @@ -57,14 +56,19 @@ static const struct snd_soc_ops atmel_asoc_wm8904_ops = { .hw_params = atmel_asoc_wm8904_hw_params, }; +SND_SOC_DAILINK_DEFS(pcm, + DAILINK_COMP_ARRAY(COMP_EMPTY()), + DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "wm8904-hifi")), + DAILINK_COMP_ARRAY(COMP_EMPTY())); + static struct snd_soc_dai_link atmel_asoc_wm8904_dailink = { .name = "WM8904", .stream_name = "WM8904 PCM", - .codec_dai_name = "wm8904-hifi", .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM, .ops = &atmel_asoc_wm8904_ops, + SND_SOC_DAILINK_REG(pcm), }; static struct snd_soc_card atmel_asoc_wm8904_card = { @@ -108,8 +112,8 @@ static int atmel_asoc_wm8904_dt_init(struct platform_device *pdev) ret = -EINVAL; return ret; } - dailink->cpu_of_node = cpu_np; - dailink->platform_of_node = cpu_np; + dailink->cpus->of_node = cpu_np; + dailink->platforms->of_node = cpu_np; of_node_put(cpu_np); codec_np = of_parse_phandle(np, "atmel,audio-codec", 0); @@ -118,7 +122,7 @@ static int atmel_asoc_wm8904_dt_init(struct platform_device *pdev) ret = -EINVAL; return ret; } - dailink->codec_of_node = codec_np; + dailink->codecs->of_node = codec_np; of_node_put(codec_np); return 0; @@ -137,7 +141,7 @@ static int atmel_asoc_wm8904_probe(struct platform_device *pdev) return ret; } - id = of_alias_get_id((struct device_node *)dailink->cpu_of_node, "ssc"); + id = of_alias_get_id((struct device_node *)dailink->cpus->of_node, "ssc"); ret = atmel_ssc_set_audio(id); if (ret != 0) { dev_err(&pdev->dev, "failed to set SSC %d for audio\n", id); @@ -163,7 +167,7 @@ static int atmel_asoc_wm8904_remove(struct platform_device *pdev) struct snd_soc_dai_link *dailink = &atmel_asoc_wm8904_dailink; int id; - id = of_alias_get_id((struct device_node *)dailink->cpu_of_node, "ssc"); + id = of_alias_get_id((struct device_node *)dailink->cpus->of_node, "ssc"); snd_soc_unregister_card(card); atmel_ssc_put_audio(id); diff --git a/sound/soc/atmel/mikroe-proto.c b/sound/soc/atmel/mikroe-proto.c index d47aaa5bf75a..aa6d0d78566f 100644 --- a/sound/soc/atmel/mikroe-proto.c +++ b/sound/soc/atmel/mikroe-proto.c @@ -1,12 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0-only /* * ASoC driver for PROTO AudioCODEC (with a WM8731) * * Author: Florian Meier, <koalo@koalo.de> * Copyright 2013 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. */ #include <linux/module.h> @@ -66,6 +63,7 @@ static struct snd_soc_card snd_proto = { static int snd_proto_probe(struct platform_device *pdev) { struct snd_soc_dai_link *dai; + struct snd_soc_dai_link_component *comp; struct device_node *np = pdev->dev.of_node; struct device_node *codec_np, *cpu_np; struct device_node *bitclkmaster = NULL; @@ -87,12 +85,24 @@ static int snd_proto_probe(struct platform_device *pdev) if (!dai) return -ENOMEM; + /* for cpus/codecs/platforms */ + comp = devm_kzalloc(&pdev->dev, 3 * sizeof(*comp), GFP_KERNEL); + if (!comp) + return -ENOMEM; + snd_proto.dai_link = dai; snd_proto.num_links = 1; + dai->cpus = &comp[0]; + dai->num_cpus = 1; + dai->codecs = &comp[1]; + dai->num_codecs = 1; + dai->platforms = &comp[2]; + dai->num_platforms = 1; + dai->name = "WM8731"; dai->stream_name = "WM8731 HiFi"; - dai->codec_dai_name = "wm8731-hifi"; + dai->codecs->dai_name = "wm8731-hifi"; dai->init = &snd_proto_init; codec_np = of_parse_phandle(np, "audio-codec", 0); @@ -100,15 +110,15 @@ static int snd_proto_probe(struct platform_device *pdev) dev_err(&pdev->dev, "audio-codec node missing\n"); return -EINVAL; } - dai->codec_of_node = codec_np; + dai->codecs->of_node = codec_np; cpu_np = of_parse_phandle(np, "i2s-controller", 0); if (!cpu_np) { dev_err(&pdev->dev, "i2s-controller missing\n"); return -EINVAL; } - dai->cpu_of_node = cpu_np; - dai->platform_of_node = cpu_np; + dai->cpus->of_node = cpu_np; + dai->platforms->of_node = cpu_np; dai_fmt = snd_soc_of_parse_daifmt(np, NULL, &bitclkmaster, &framemaster); diff --git a/sound/soc/atmel/sam9g20_wm8731.c b/sound/soc/atmel/sam9g20_wm8731.c index 98f93e79c654..b1bef2bf142d 100644 --- a/sound/soc/atmel/sam9g20_wm8731.c +++ b/sound/soc/atmel/sam9g20_wm8731.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * sam9g20_wm8731 -- SoC audio for AT91SAM9G20-based * ATMEL AT91SAM9G20ek board. @@ -13,20 +14,6 @@ * Based on corgi.c by: * Copyright 2005 Wolfson Microelectronics PLC. * Copyright 2005 Openedhand Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include <linux/module.h> @@ -129,16 +116,18 @@ static int at91sam9g20ek_wm8731_init(struct snd_soc_pcm_runtime *rtd) return 0; } +SND_SOC_DAILINK_DEFS(pcm, + DAILINK_COMP_ARRAY(COMP_CPU("at91rm9200_ssc.0")), + DAILINK_COMP_ARRAY(COMP_CODEC("wm8731.0-001b", "wm8731-hifi")), + DAILINK_COMP_ARRAY(COMP_PLATFORM("at91rm9200_ssc.0"))); + static struct snd_soc_dai_link at91sam9g20ek_dai = { .name = "WM8731", .stream_name = "WM8731 PCM", - .cpu_dai_name = "at91rm9200_ssc.0", - .codec_dai_name = "wm8731-hifi", .init = at91sam9g20ek_wm8731_init, - .platform_name = "at91rm9200_ssc.0", - .codec_name = "wm8731.0-001b", .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM, + SND_SOC_DAILINK_REG(pcm), }; static struct snd_soc_card snd_soc_at91sam9g20ek = { @@ -211,24 +200,24 @@ static int at91sam9g20ek_audio_probe(struct platform_device *pdev) goto err; /* Parse codec info */ - at91sam9g20ek_dai.codec_name = NULL; + at91sam9g20ek_dai.codecs->name = NULL; codec_np = of_parse_phandle(np, "atmel,audio-codec", 0); if (!codec_np) { dev_err(&pdev->dev, "codec info missing\n"); return -EINVAL; } - at91sam9g20ek_dai.codec_of_node = codec_np; + at91sam9g20ek_dai.codecs->of_node = codec_np; /* Parse dai and platform info */ - at91sam9g20ek_dai.cpu_dai_name = NULL; - at91sam9g20ek_dai.platform_name = NULL; + at91sam9g20ek_dai.cpus->dai_name = NULL; + at91sam9g20ek_dai.platforms->name = NULL; cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0); if (!cpu_np) { dev_err(&pdev->dev, "dai and pcm info missing\n"); return -EINVAL; } - at91sam9g20ek_dai.cpu_of_node = cpu_np; - at91sam9g20ek_dai.platform_of_node = cpu_np; + at91sam9g20ek_dai.cpus->of_node = cpu_np; + at91sam9g20ek_dai.platforms->of_node = cpu_np; of_node_put(codec_np); of_node_put(cpu_np); diff --git a/sound/soc/atmel/sam9x5_wm8731.c b/sound/soc/atmel/sam9x5_wm8731.c index e6c303ab869d..7822425d5e61 100644 --- a/sound/soc/atmel/sam9x5_wm8731.c +++ b/sound/soc/atmel/sam9x5_wm8731.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * sam9x5_wm8731 -- SoC audio for AT91SAM9X5-based boards * that are using WM8731 as codec. @@ -10,12 +11,6 @@ * * Based on sam9g20_wm8731.c by: * Sedji Gaouaou <sedji.gaouaou@atmel.com> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * */ #include <linux/of.h> #include <linux/export.h> @@ -82,6 +77,7 @@ static int sam9x5_wm8731_driver_probe(struct platform_device *pdev) struct snd_soc_card *card; struct snd_soc_dai_link *dai; struct sam9x5_drvdata *priv; + struct snd_soc_dai_link_component *comp; int ret; if (!np) { @@ -92,7 +88,8 @@ static int sam9x5_wm8731_driver_probe(struct platform_device *pdev) card = devm_kzalloc(&pdev->dev, sizeof(*card), GFP_KERNEL); priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); dai = devm_kzalloc(&pdev->dev, sizeof(*dai), GFP_KERNEL); - if (!dai || !card || !priv) { + comp = devm_kzalloc(&pdev->dev, 3 * sizeof(*comp), GFP_KERNEL); + if (!dai || !card || !priv || !comp) { ret = -ENOMEM; goto out; } @@ -105,9 +102,17 @@ static int sam9x5_wm8731_driver_probe(struct platform_device *pdev) card->num_links = 1; card->dapm_widgets = sam9x5_dapm_widgets; card->num_dapm_widgets = ARRAY_SIZE(sam9x5_dapm_widgets); + + dai->cpus = &comp[0]; + dai->num_cpus = 1; + dai->codecs = &comp[1]; + dai->num_codecs = 1; + dai->platforms = &comp[2]; + dai->num_platforms = 1; + dai->name = "WM8731"; dai->stream_name = "WM8731 PCM"; - dai->codec_dai_name = "wm8731-hifi"; + dai->codecs->dai_name = "wm8731-hifi"; dai->init = sam9x5_wm8731_init; dai->dai_fmt = SND_SOC_DAIFMT_DSP_A | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM; @@ -131,7 +136,7 @@ static int sam9x5_wm8731_driver_probe(struct platform_device *pdev) goto out; } - dai->codec_of_node = codec_np; + dai->codecs->of_node = codec_np; cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0); if (!cpu_np) { @@ -139,8 +144,8 @@ static int sam9x5_wm8731_driver_probe(struct platform_device *pdev) ret = -EINVAL; goto out; } - dai->cpu_of_node = cpu_np; - dai->platform_of_node = cpu_np; + dai->cpus->of_node = cpu_np; + dai->platforms->of_node = cpu_np; priv->ssc_id = of_alias_get_id(cpu_np, "ssc"); diff --git a/sound/soc/atmel/tse850-pcm5142.c b/sound/soc/atmel/tse850-pcm5142.c index ae445184614a..59e2edb22b3a 100644 --- a/sound/soc/atmel/tse850-pcm5142.c +++ b/sound/soc/atmel/tse850-pcm5142.c @@ -294,13 +294,18 @@ static const struct snd_soc_dapm_route tse850_intercon[] = { { "DAC", NULL, "OUTL" }, }; +SND_SOC_DAILINK_DEFS(pcm, + DAILINK_COMP_ARRAY(COMP_EMPTY()), + DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "pcm512x-hifi")), + DAILINK_COMP_ARRAY(COMP_EMPTY())); + static struct snd_soc_dai_link tse850_dailink = { .name = "TSE-850", .stream_name = "TSE-850-PCM", - .codec_dai_name = "pcm512x-hifi", .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFS, + SND_SOC_DAILINK_REG(pcm), }; static struct snd_soc_card tse850_card = { @@ -331,8 +336,8 @@ static int tse850_dt_init(struct platform_device *pdev) dev_err(&pdev->dev, "failed to get cpu dai\n"); return -EINVAL; } - dailink->cpu_of_node = cpu_np; - dailink->platform_of_node = cpu_np; + dailink->cpus->of_node = cpu_np; + dailink->platforms->of_node = cpu_np; of_node_put(cpu_np); codec_np = of_parse_phandle(np, "axentia,audio-codec", 0); @@ -340,7 +345,7 @@ static int tse850_dt_init(struct platform_device *pdev) dev_err(&pdev->dev, "failed to get codec info\n"); return -EINVAL; } - dailink->codec_of_node = codec_np; + dailink->codecs->of_node = codec_np; of_node_put(codec_np); return 0; |