diff options
Diffstat (limited to 'sound/soc/fsl/pcm030-audio-fabric.c')
| -rw-r--r-- | sound/soc/fsl/pcm030-audio-fabric.c | 58 |
1 files changed, 30 insertions, 28 deletions
diff --git a/sound/soc/fsl/pcm030-audio-fabric.c b/sound/soc/fsl/pcm030-audio-fabric.c index e339f36cea95..5542c4ee6d12 100644 --- a/sound/soc/fsl/pcm030-audio-fabric.c +++ b/sound/soc/fsl/pcm030-audio-fabric.c @@ -1,20 +1,15 @@ -/* - * Phytec pcm030 driver for the PSC of the Freescale MPC52xx - * configured as AC97 interface - * - * Copyright 2008 Jon Smirl, Digispeaker - * Author: Jon Smirl <jonsmirl@gmail.com> - * - * This file is licensed under the terms of the GNU General Public License - * version 2. This program is licensed "as is" without any warranty of any - * kind, whether express or implied. - */ +// SPDX-License-Identifier: GPL-2.0 +// +// Phytec pcm030 driver for the PSC of the Freescale MPC52xx +// configured as AC97 interface +// +// Copyright 2008 Jon Smirl, Digispeaker +// Author: Jon Smirl <jonsmirl@gmail.com> #include <linux/init.h> #include <linux/module.h> #include <linux/device.h> -#include <linux/of_device.h> -#include <linux/of_platform.h> +#include <linux/of.h> #include <sound/soc.h> @@ -27,20 +22,26 @@ struct pcm030_audio_data { struct platform_device *codec_device; }; +SND_SOC_DAILINK_DEFS(analog, + DAILINK_COMP_ARRAY(COMP_CPU("mpc5200-psc-ac97.0")), + DAILINK_COMP_ARRAY(COMP_CODEC("wm9712-codec", "wm9712-hifi")), + DAILINK_COMP_ARRAY(COMP_EMPTY())); + +SND_SOC_DAILINK_DEFS(iec958, + DAILINK_COMP_ARRAY(COMP_CPU("mpc5200-psc-ac97.1")), + DAILINK_COMP_ARRAY(COMP_CODEC("wm9712-codec", "wm9712-aux")), + DAILINK_COMP_ARRAY(COMP_EMPTY())); + static struct snd_soc_dai_link pcm030_fabric_dai[] = { { .name = "AC97.0", .stream_name = "AC97 Analog", - .codec_dai_name = "wm9712-hifi", - .cpu_dai_name = "mpc5200-psc-ac97.0", - .codec_name = "wm9712-codec", + SND_SOC_DAILINK_REG(analog), }, { .name = "AC97.1", .stream_name = "AC97 IEC958", - .codec_dai_name = "wm9712-aux", - .cpu_dai_name = "mpc5200-psc-ac97.1", - .codec_name = "wm9712-codec", + SND_SOC_DAILINK_REG(iec958), }, }; @@ -80,7 +81,7 @@ static int pcm030_fabric_probe(struct platform_device *op) } for_each_card_prelinks(card, i, dai_link) - dai_link->platform_of_node = platform_np; + dai_link->platforms->of_node = platform_np; ret = request_module("snd-soc-wm9712"); if (ret) @@ -91,27 +92,28 @@ static int pcm030_fabric_probe(struct platform_device *op) dev_err(&op->dev, "platform_device_alloc() failed\n"); ret = platform_device_add(pdata->codec_device); - if (ret) + if (ret) { dev_err(&op->dev, "platform_device_add() failed: %d\n", ret); + platform_device_put(pdata->codec_device); + } ret = snd_soc_register_card(card); - if (ret) + if (ret) { dev_err(&op->dev, "snd_soc_register_card() failed: %d\n", ret); + platform_device_unregister(pdata->codec_device); + } platform_set_drvdata(op, pdata); - return ret; + } -static int pcm030_fabric_remove(struct platform_device *op) +static void pcm030_fabric_remove(struct platform_device *op) { struct pcm030_audio_data *pdata = platform_get_drvdata(op); - int ret; - ret = snd_soc_unregister_card(pdata->card); + snd_soc_unregister_card(pdata->card); platform_device_unregister(pdata->codec_device); - - return ret; } static const struct of_device_id pcm030_audio_match[] = { |
