[alsa-devel] [PATCH] *** ASoC: core: refine of node id parse of cpu/codec dai ***
Qiao Zhou
zhouqiao at marvell.com
Wed Jun 18 13:01:58 CEST 2014
Hi Mark, Liam
This patch is to add another check besides cpu_dai/codec_dai name during
dai_link bind. currently if the cpu_dai/codec_dai name match corresponding
dai_link cpu/codec name, then a match is found. in this patch, it also checks
whether cpu/codec dai id match dailink cpu_dai_id/codec_dai_id. Still check
name first.
1. if it doesn't match, it will keep checking whether cpu_id/codec_id match
corresponding dai_link cpu_dai_id/codec_dai_id. if the ids are equal, then
a match is found.
2. if it does match, then a match is already found. no need to further check.
By this way, it's convenient to maintain dai_link in DT files, and machine
driver can parse related node point to get dai id info. Then there is no need
to parse cpu_dai/codec_dai name for each dai. Like below:
In DT files:
sound {
compatible = "sound card name xx";
dai_link_1:dai_link_1 {
compatible = "xx-dailink-1";
cpu-dai = <&cpu-dai-node CPU_DAI_ID_1>;
codec-dai = <&codec-dai-node CODEC_DAI_ID_1>;
......
}
dai_link_2:dai_link_2 {
compatible = "xx-dailink-2";
cpu-dai = <&cpu-dai-node CPU_DAI_ID_2>;
codec-dai = <&codec-dai-node CODEC_DAI_ID_2>;
......
}
......
}
In machine driver:
static xx_sound_card_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
i = 0;
for_each_child_of_node(np, dailink_np) {
of_parse_phandle_with_args(dailink_np, "cpu-dai", "#dailink-cells", 0,
&out_args);
dailink[i].cpu_of_node = out_args.np;
dailink[i].cpu_dai_id = out_args.args[0];
dailink[i].platform_of_node = out_args.np;
of_parse_phandle_with_args(dailink_np, "codec-dai", "#dailink-cells", 0,
&out_args);
dailink[i].codec_of_node = out_args.np;
dailink[i].codec_dai_id = out_args.args[0];
......
i++
}
......
ret = snd_soc_register_card(card);
......
}
If some drivers don't have DT support, then we have no choice but to add correct
cpu/codec(dai) name in DT and parse name info in machine driver.
Could you help share your opinions? Thanks in advance.
Qiao Zhou (1):
ASoC: core: refine of node id parse of cpu/codec dai
include/sound/soc.h | 2 ++
sound/soc/soc-core.c | 32 +++++++++++++++++++++++---------
2 files changed, 25 insertions(+), 9 deletions(-)
--
1.7.9.5
More information about the Alsa-devel
mailing list