summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorJean-Francois Moine <moinejf@free.fr>2014-01-15 16:51:52 +0100
committerDarren Etheridge <detheridge@ti.com>2014-06-20 15:15:25 -0500
commit419a70b7a01876de28e9499caf642c035a41d0cd (patch)
tree244ad0e5faa14f971f0746cce5ff198af6168362 /sound
parent243225929bfbaad1cb87052d82878006806f7335 (diff)
ASoC: simple-card: simplify code
[ Upstream commit b367a3252b365fd545fc589a40cad3976e73d7d7 45fce59496cbabd46761e6980c05c82d94d08eaa ca65b492c7a265b220f763fd68bf87391213248f 520084729267ac8df1651ad2f118a1d4a631a10a 5ca8ba4180a6f629d51dba699b4a6428cc5eeba7 201a0eac7fe5e7a8fa33f0742304f885bc344d0d 2bee991460a838ee3c8064a6d880c4e7bc41717a 7722f830a45f7fbb8f2f7b23265793980bdf3397 ] In the non-DT sequence, the platform data is copied as a whole to the dynamic card info and the same pointer 'cinfo' is used to copy the platform information to the card. Use 'priv' as the pointer to the dynamic card info and copy only the useful information from the platform data. Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Mark Brown <broonie@linaro.org> Signed-off-by: Darren Etheridge <detheridge@ti.com>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/generic/simple-card.c34
1 files changed, 20 insertions, 14 deletions
diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c
index 9068ab474ab..90c6fd5c2c7 100644
--- a/sound/soc/generic/simple-card.c
+++ b/sound/soc/generic/simple-card.c
@@ -195,40 +195,42 @@ static int asoc_simple_card_parse_of(struct device_node *node,
static int asoc_simple_card_probe(struct platform_device *pdev)
{
- struct asoc_simple_card_info *cinfo;
+ struct asoc_simple_card_info *priv;
struct snd_soc_dai_link *dai_link;
struct device_node *np = pdev->dev.of_node;
struct device *dev = &pdev->dev;
int ret;
- cinfo = devm_kzalloc(dev, sizeof(*cinfo), GFP_KERNEL);
- if (!cinfo)
+ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
+ if (!priv)
return -ENOMEM;
/*
* init snd_soc_card
*/
- cinfo->snd_card.owner = THIS_MODULE;
- cinfo->snd_card.dev = dev;
- dai_link = &cinfo->snd_link;
- cinfo->snd_card.dai_link = dai_link;
- cinfo->snd_card.num_links = 1;
+ priv->snd_card.owner = THIS_MODULE;
+ priv->snd_card.dev = dev;
+ dai_link = &priv->snd_link;
+ priv->snd_card.dai_link = dai_link;
+ priv->snd_card.num_links = 1;
if (np && of_device_is_available(np)) {
- ret = asoc_simple_card_parse_of(np, cinfo, dev);
+ ret = asoc_simple_card_parse_of(np, priv, dev);
if (ret < 0) {
if (ret != -EPROBE_DEFER)
dev_err(dev, "parse error %d\n", ret);
return ret;
}
} else {
- if (!dev->platform_data) {
+ struct asoc_simple_card_info *cinfo;
+
+ cinfo = dev->platform_data;
+ if (!cinfo) {
dev_err(dev, "no info for asoc-simple-card\n");
return -EINVAL;
}
- memcpy(cinfo, dev->platform_data, sizeof(*cinfo));
if (!cinfo->name ||
!cinfo->card ||
!cinfo->codec_dai.name ||
@@ -239,13 +241,17 @@ static int asoc_simple_card_probe(struct platform_device *pdev)
return -EINVAL;
}
- cinfo->snd_card.name = cinfo->card;
+ priv->snd_card.name = cinfo->card;
dai_link->name = cinfo->name;
dai_link->stream_name = cinfo->name;
dai_link->platform_name = cinfo->platform;
dai_link->codec_name = cinfo->codec;
dai_link->cpu_dai_name = cinfo->cpu_dai.name;
dai_link->codec_dai_name = cinfo->codec_dai.name;
+ memcpy(&priv->cpu_dai, &cinfo->cpu_dai,
+ sizeof(priv->cpu_dai));
+ memcpy(&priv->codec_dai, &cinfo->codec_dai,
+ sizeof(priv->codec_dai));
}
/*
@@ -253,9 +259,9 @@ static int asoc_simple_card_probe(struct platform_device *pdev)
*/
dai_link->init = asoc_simple_card_dai_init;
- snd_soc_card_set_drvdata(&cinfo->snd_card, cinfo);
+ snd_soc_card_set_drvdata(&priv->snd_card, priv);
- return devm_snd_soc_register_card(&pdev->dev, &cinfo->snd_card);
+ return devm_snd_soc_register_card(&pdev->dev, &priv->snd_card);
}
static const struct of_device_id asoc_simple_of_match[] = {