Skip to content

Commit

Permalink
ASoC: simple-card: Merge single and muti DAI link(s) code.
Browse files Browse the repository at this point in the history
This patch will split the DT node into old style and new style:
The new style will merge the single DAI link and muti DAI links code
together, the new style will be easier to add muti DAI links from old
single DAI link DTs.

This patch will maintian compatibility with the old DTs.

Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
  • Loading branch information
Xiubo Li authored and Mark Brown committed Sep 9, 2014
1 parent 7c7b9cf commit 2080437
Showing 1 changed file with 12 additions and 10 deletions.
22 changes: 12 additions & 10 deletions sound/soc/generic/simple-card.c
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ static int asoc_simple_card_dai_link_of(struct device_node *node,
char *prefix = "";
int ret, cpu_args;

/* For single DAI link & old style of DT node */
if (is_top_level_node)
prefix = "simple-audio-card,";

Expand Down Expand Up @@ -318,14 +319,16 @@ static int asoc_simple_card_dai_link_of(struct device_node *node,

static int asoc_simple_card_parse_of(struct device_node *node,
struct simple_card_data *priv,
struct device *dev,
int multi)
struct device *dev)
{
struct snd_soc_dai_link *dai_link = priv->snd_card.dai_link;
struct simple_dai_props *dai_props = priv->dai_props;
u32 val;
int ret;

if (!node)
return -EINVAL;

/* parsing the card name from DT */
snd_soc_of_parse_card_name(&priv->snd_card, "simple-audio-card,name");

Expand Down Expand Up @@ -353,7 +356,8 @@ static int asoc_simple_card_parse_of(struct device_node *node,
dev_dbg(dev, "New simple-card: %s\n", priv->snd_card.name ?
priv->snd_card.name : "");

if (multi) {
/* Single/Muti DAI link(s) & New style of DT node */
if (of_get_child_by_name(node, "simple-audio-card,dai-link")) {
struct device_node *np = NULL;
int i = 0;

Expand All @@ -370,6 +374,7 @@ static int asoc_simple_card_parse_of(struct device_node *node,
i++;
}
} else {
/* For single DAI link & old style of DT node */
ret = asoc_simple_card_dai_link_of(node, dev,
dai_link, dai_props, true);
if (ret < 0)
Expand Down Expand Up @@ -409,16 +414,13 @@ static int asoc_simple_card_probe(struct platform_device *pdev)
struct snd_soc_dai_link *dai_link;
struct device_node *np = pdev->dev.of_node;
struct device *dev = &pdev->dev;
int num_links, multi, ret;
int num_links, ret;

/* get the number of DAI links */
if (np && of_get_child_by_name(np, "simple-audio-card,dai-link")) {
if (np && of_get_child_by_name(np, "simple-audio-card,dai-link"))
num_links = of_get_child_count(np);
multi = 1;
} else {
else
num_links = 1;
multi = 0;
}

/* allocate the private data and the DAI link array */
priv = devm_kzalloc(dev,
Expand All @@ -445,7 +447,7 @@ static int asoc_simple_card_probe(struct platform_device *pdev)

if (np && of_device_is_available(np)) {

ret = asoc_simple_card_parse_of(np, priv, dev, multi);
ret = asoc_simple_card_parse_of(np, priv, dev);
if (ret < 0) {
if (ret != -EPROBE_DEFER)
dev_err(dev, "parse error %d\n", ret);
Expand Down

0 comments on commit 2080437

Please sign in to comment.