Skip to content

Commit

Permalink
ASoC: simple-card: add slot information parsing supports
Browse files Browse the repository at this point in the history
For some CPU/CODEC DAI devices the slot information maybe needed. This
patch adds the slot information parsing for simple-card driver.

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 Feb 23, 2014
1 parent ff28786 commit 6ff62ee
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 0 deletions.
5 changes: 5 additions & 0 deletions Documentation/devicetree/bindings/sound/simple-card.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ Optional properties:
Each entry is a pair of strings, the first being the
connection's sink, the second being the connection's
source.
- dai-tdm-slot-num : Please refer to tdm-slot.txt.
- dai-tdm-slot-width : Please refer to tdm-slot.txt.

Required subnodes:

Expand Down Expand Up @@ -56,6 +58,9 @@ sound {
"Headphone Jack", "HP_OUT",
"External Speaker", "LINE_OUT";

dai-tdm-slot-num = <2>;
dai-tdm-slot-width = <8>;

simple-audio-card,cpu {
sound-dai = <&sh_fsi2 0>;
};
Expand Down
2 changes: 2 additions & 0 deletions include/sound/simple_card.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ struct asoc_simple_dai {
const char *name;
unsigned int fmt;
unsigned int sysclk;
int slots;
int slot_width;
};

struct asoc_simple_card_info {
Expand Down
18 changes: 18 additions & 0 deletions sound/soc/generic/simple-card.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,14 @@
* published by the Free Software Foundation.
*/
#include <linux/clk.h>
#include <linux/device.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/string.h>
#include <sound/simple_card.h>
#include <sound/soc-dai.h>
#include <sound/soc.h>

struct simple_card_data {
struct snd_soc_card snd_card;
Expand Down Expand Up @@ -44,6 +47,16 @@ static int __asoc_simple_card_dai_init(struct snd_soc_dai *dai,
}
}

if (set->slots) {
ret = snd_soc_dai_set_tdm_slot(dai, 0, 0,
set->slots,
set->slot_width);
if (ret && ret != -ENOTSUPP) {
dev_err(dai->dev, "simple-card: set_tdm_slot error\n");
goto err;
}
}

ret = 0;

err:
Expand Down Expand Up @@ -94,6 +107,11 @@ asoc_simple_card_sub_parse_of(struct device_node *np,
if (ret < 0)
goto parse_error;

/* parse TDM slot */
ret = snd_soc_of_parse_tdm_slot(np, &dai->slots, &dai->slot_width);
if (ret)
goto parse_error;

/*
* bitclock-inversion, frame-inversion
* bitclock-master, frame-master
Expand Down

0 comments on commit 6ff62ee

Please sign in to comment.