ASoC: simple-card: add slot information parsing supports
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>
This commit is contained in:
Родитель
ff2878644e
Коммит
6ff62eedce
|
@ -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:
|
||||
|
||||
|
@ -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>;
|
||||
};
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче