* [PATCH v5] ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver
@ 2016-04-19 9:46 PC Liao
2016-04-19 9:55 ` Applied "ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver" to the asoc tree Mark Brown
2016-04-19 9:58 ` Mark Brown
0 siblings, 2 replies; 6+ messages in thread
From: PC Liao @ 2016-04-19 9:46 UTC (permalink / raw)
To: linux-arm-kernel
This patch adds second I2S connection to rt5650 codec for capture path on
mt8173-rt5650 machine driver.
This patch depends on [1], because snd_soc_of_get_dai_name() fix the property
name "sound-dai". This patch needs to change name to use, so export
snd_soc_get_dai_name() which is included in snd_soc_of_get_dai_name().
[1] https://patchwork.kernel.org/patch/5671961/ ("ASoC: core: export
snd_soc_get_dai_name")
Signed-off-by: PC Liao <pc.liao@mediatek.com>
---
Changes since v4:
Change name from "sound-dai" to "capture-dai" to determine the capture path
---
.../devicetree/bindings/sound/mt8173-rt5650.txt | 6 +++
sound/soc/mediatek/mt8173-rt5650.c | 44 ++++++++++++++++++--
2 files changed, 47 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt b/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
index fe5a5ef..802dd1b 100644
--- a/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
+++ b/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
@@ -5,11 +5,17 @@ Required properties:
- mediatek,audio-codec: the phandles of rt5650 codecs
- mediatek,platform: the phandle of MT8173 ASoC platform
+Optional properties:
+- capture-dai: audio codec dai on capture path
+ <&rt5650 0> : Default setting. Connect rt5650 I2S1 for capture. (dai_name = rt5645-aif1)
+ <&rt5650 1> : Connect rt5650 I2S2 for capture. (dai_name = rt5645-aif2)
+
Example:
sound {
compatible = "mediatek,mt8173-rt5650";
mediatek,audio-codec = <&rt5650>;
mediatek,platform = <&afe>;
+ capture-dai = <&rt5650 1>;
};
diff --git a/sound/soc/mediatek/mt8173-rt5650.c b/sound/soc/mediatek/mt8173-rt5650.c
index bb09bb1..45dea22 100644
--- a/sound/soc/mediatek/mt8173-rt5650.c
+++ b/sound/soc/mediatek/mt8173-rt5650.c
@@ -85,12 +85,26 @@ static int mt8173_rt5650_init(struct snd_soc_pcm_runtime *runtime)
{
struct snd_soc_card *card = runtime->card;
struct snd_soc_codec *codec = runtime->codec_dais[0]->codec;
+ const char *codec_dai_capture = runtime->codec_dais[1]->name;
int ret;
rt5645_sel_asrc_clk_src(codec,
- RT5645_DA_STEREO_FILTER |
- RT5645_AD_STEREO_FILTER,
+ RT5645_DA_STEREO_FILTER,
RT5645_CLK_SEL_I2S1_ASRC);
+
+ if (!strcmp(codec_dai_capture, "rt5645-aif1")) {
+ rt5645_sel_asrc_clk_src(codec,
+ RT5645_AD_STEREO_FILTER,
+ RT5645_CLK_SEL_I2S1_ASRC);
+ } else if (!strcmp(codec_dai_capture, "rt5645-aif2")) {
+ rt5645_sel_asrc_clk_src(codec,
+ RT5645_AD_STEREO_FILTER,
+ RT5645_CLK_SEL_I2S2_ASRC);
+ } else {
+ dev_err(card->dev, "Can't get the right codec dai\n");
+ return -EINVAL;
+ }
+
/* enable jack detection */
ret = snd_soc_card_jack_new(card, "Headset Jack",
SND_JACK_HEADPHONE | SND_JACK_MICROPHONE |
@@ -110,6 +124,11 @@ static int mt8173_rt5650_init(struct snd_soc_pcm_runtime *runtime)
static struct snd_soc_dai_link_component mt8173_rt5650_codecs[] = {
{
+ /* Playback */
+ .dai_name = "rt5645-aif1",
+ },
+ {
+ /* Capture */
.dai_name = "rt5645-aif1",
},
};
@@ -149,7 +168,7 @@ static struct snd_soc_dai_link mt8173_rt5650_dais[] = {
.cpu_dai_name = "I2S",
.no_pcm = 1,
.codecs = mt8173_rt5650_codecs,
- .num_codecs = 1,
+ .num_codecs = 2,
.init = mt8173_rt5650_init,
.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
SND_SOC_DAIFMT_CBS_CFS,
@@ -177,6 +196,8 @@ static int mt8173_rt5650_dev_probe(struct platform_device *pdev)
{
struct snd_soc_card *card = &mt8173_rt5650_card;
struct device_node *platform_node;
+ const char *codec_dai_capture;
+ struct of_phandle_args args;
int i, ret;
platform_node = of_parse_phandle(pdev->dev.of_node,
@@ -199,6 +220,23 @@ static int mt8173_rt5650_dev_probe(struct platform_device *pdev)
"Property 'audio-codec' missing or invalid\n");
return -EINVAL;
}
+ mt8173_rt5650_codecs[1].of_node = mt8173_rt5650_codecs[0].of_node;
+
+ if (device_property_present(&pdev->dev, "capture-dai")) {
+ ret = of_parse_phandle_with_args(pdev->dev.of_node,
+ "capture-dai",
+ "#sound-dai-cells", 0, &args);
+ if (ret < 0) {
+ dev_err(&pdev->dev,
+ "%s capture-dai name fail %d\n",
+ __func__, ret);
+ return ret;
+ }
+
+ ret = snd_soc_get_dai_name(&args, &codec_dai_capture);
+ mt8173_rt5650_codecs[1].dai_name = codec_dai_capture;
+ }
+
card->dev = &pdev->dev;
platform_set_drvdata(pdev, card);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Applied "ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver" to the asoc tree
2016-04-19 9:46 [PATCH v5] ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver PC Liao
@ 2016-04-19 9:55 ` Mark Brown
2016-04-19 9:58 ` Mark Brown
1 sibling, 0 replies; 6+ messages in thread
From: Mark Brown @ 2016-04-19 9:55 UTC (permalink / raw)
To: linux-arm-kernel
The patch
ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
>From 0beeb8d0b434b8b007ac8058fb2cac5997fff6df Mon Sep 17 00:00:00 2001
From: PC Liao <pc.liao@mediatek.com>
Date: Tue, 19 Apr 2016 17:46:12 +0800
Subject: [PATCH] ASoC: mediatek: Add second I2S on mt8173-rt5650 machine
driver
This patch adds second I2S connection to rt5650 codec for capture path on
mt8173-rt5650 machine driver.
This patch depends on [1], because snd_soc_of_get_dai_name() fix the property
name "sound-dai". This patch needs to change name to use, so export
snd_soc_get_dai_name() which is included in snd_soc_of_get_dai_name().
[1] https://patchwork.kernel.org/patch/5671961/ ("ASoC: core: export
snd_soc_get_dai_name")
Signed-off-by: PC Liao <pc.liao@mediatek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
.../devicetree/bindings/sound/mt8173-rt5650.txt | 6 +++
sound/soc/mediatek/mt8173-rt5650.c | 44 ++++++++++++++++++++--
2 files changed, 47 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt b/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
index fe5a5ef1714d..802dd1bf0fc6 100644
--- a/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
+++ b/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
@@ -5,11 +5,17 @@ Required properties:
- mediatek,audio-codec: the phandles of rt5650 codecs
- mediatek,platform: the phandle of MT8173 ASoC platform
+Optional properties:
+- capture-dai: audio codec dai on capture path
+ <&rt5650 0> : Default setting. Connect rt5650 I2S1 for capture. (dai_name = rt5645-aif1)
+ <&rt5650 1> : Connect rt5650 I2S2 for capture. (dai_name = rt5645-aif2)
+
Example:
sound {
compatible = "mediatek,mt8173-rt5650";
mediatek,audio-codec = <&rt5650>;
mediatek,platform = <&afe>;
+ capture-dai = <&rt5650 1>;
};
diff --git a/sound/soc/mediatek/mt8173-rt5650.c b/sound/soc/mediatek/mt8173-rt5650.c
index bb09bb1b7f1c..45dea226e4c8 100644
--- a/sound/soc/mediatek/mt8173-rt5650.c
+++ b/sound/soc/mediatek/mt8173-rt5650.c
@@ -85,12 +85,26 @@ static int mt8173_rt5650_init(struct snd_soc_pcm_runtime *runtime)
{
struct snd_soc_card *card = runtime->card;
struct snd_soc_codec *codec = runtime->codec_dais[0]->codec;
+ const char *codec_dai_capture = runtime->codec_dais[1]->name;
int ret;
rt5645_sel_asrc_clk_src(codec,
- RT5645_DA_STEREO_FILTER |
- RT5645_AD_STEREO_FILTER,
+ RT5645_DA_STEREO_FILTER,
RT5645_CLK_SEL_I2S1_ASRC);
+
+ if (!strcmp(codec_dai_capture, "rt5645-aif1")) {
+ rt5645_sel_asrc_clk_src(codec,
+ RT5645_AD_STEREO_FILTER,
+ RT5645_CLK_SEL_I2S1_ASRC);
+ } else if (!strcmp(codec_dai_capture, "rt5645-aif2")) {
+ rt5645_sel_asrc_clk_src(codec,
+ RT5645_AD_STEREO_FILTER,
+ RT5645_CLK_SEL_I2S2_ASRC);
+ } else {
+ dev_err(card->dev, "Can't get the right codec dai\n");
+ return -EINVAL;
+ }
+
/* enable jack detection */
ret = snd_soc_card_jack_new(card, "Headset Jack",
SND_JACK_HEADPHONE | SND_JACK_MICROPHONE |
@@ -110,6 +124,11 @@ static int mt8173_rt5650_init(struct snd_soc_pcm_runtime *runtime)
static struct snd_soc_dai_link_component mt8173_rt5650_codecs[] = {
{
+ /* Playback */
+ .dai_name = "rt5645-aif1",
+ },
+ {
+ /* Capture */
.dai_name = "rt5645-aif1",
},
};
@@ -149,7 +168,7 @@ static struct snd_soc_dai_link mt8173_rt5650_dais[] = {
.cpu_dai_name = "I2S",
.no_pcm = 1,
.codecs = mt8173_rt5650_codecs,
- .num_codecs = 1,
+ .num_codecs = 2,
.init = mt8173_rt5650_init,
.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
SND_SOC_DAIFMT_CBS_CFS,
@@ -177,6 +196,8 @@ static int mt8173_rt5650_dev_probe(struct platform_device *pdev)
{
struct snd_soc_card *card = &mt8173_rt5650_card;
struct device_node *platform_node;
+ const char *codec_dai_capture;
+ struct of_phandle_args args;
int i, ret;
platform_node = of_parse_phandle(pdev->dev.of_node,
@@ -199,6 +220,23 @@ static int mt8173_rt5650_dev_probe(struct platform_device *pdev)
"Property 'audio-codec' missing or invalid\n");
return -EINVAL;
}
+ mt8173_rt5650_codecs[1].of_node = mt8173_rt5650_codecs[0].of_node;
+
+ if (device_property_present(&pdev->dev, "capture-dai")) {
+ ret = of_parse_phandle_with_args(pdev->dev.of_node,
+ "capture-dai",
+ "#sound-dai-cells", 0, &args);
+ if (ret < 0) {
+ dev_err(&pdev->dev,
+ "%s capture-dai name fail %d\n",
+ __func__, ret);
+ return ret;
+ }
+
+ ret = snd_soc_get_dai_name(&args, &codec_dai_capture);
+ mt8173_rt5650_codecs[1].dai_name = codec_dai_capture;
+ }
+
card->dev = &pdev->dev;
platform_set_drvdata(pdev, card);
--
2.8.0.rc3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Applied "ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver" to the asoc tree
2016-04-19 9:46 [PATCH v5] ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver PC Liao
2016-04-19 9:55 ` Applied "ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver" to the asoc tree Mark Brown
@ 2016-04-19 9:58 ` Mark Brown
2016-04-19 10:33 ` PC Liao
1 sibling, 1 reply; 6+ messages in thread
From: Mark Brown @ 2016-04-19 9:58 UTC (permalink / raw)
To: linux-arm-kernel
The patch
ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
>From 0beeb8d0b434b8b007ac8058fb2cac5997fff6df Mon Sep 17 00:00:00 2001
From: PC Liao <pc.liao@mediatek.com>
Date: Tue, 19 Apr 2016 17:46:12 +0800
Subject: [PATCH] ASoC: mediatek: Add second I2S on mt8173-rt5650 machine
driver
This patch adds second I2S connection to rt5650 codec for capture path on
mt8173-rt5650 machine driver.
This patch depends on [1], because snd_soc_of_get_dai_name() fix the property
name "sound-dai". This patch needs to change name to use, so export
snd_soc_get_dai_name() which is included in snd_soc_of_get_dai_name().
[1] https://patchwork.kernel.org/patch/5671961/ ("ASoC: core: export
snd_soc_get_dai_name")
Signed-off-by: PC Liao <pc.liao@mediatek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
.../devicetree/bindings/sound/mt8173-rt5650.txt | 6 +++
sound/soc/mediatek/mt8173-rt5650.c | 44 ++++++++++++++++++++--
2 files changed, 47 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt b/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
index fe5a5ef1714d..802dd1bf0fc6 100644
--- a/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
+++ b/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
@@ -5,11 +5,17 @@ Required properties:
- mediatek,audio-codec: the phandles of rt5650 codecs
- mediatek,platform: the phandle of MT8173 ASoC platform
+Optional properties:
+- capture-dai: audio codec dai on capture path
+ <&rt5650 0> : Default setting. Connect rt5650 I2S1 for capture. (dai_name = rt5645-aif1)
+ <&rt5650 1> : Connect rt5650 I2S2 for capture. (dai_name = rt5645-aif2)
+
Example:
sound {
compatible = "mediatek,mt8173-rt5650";
mediatek,audio-codec = <&rt5650>;
mediatek,platform = <&afe>;
+ capture-dai = <&rt5650 1>;
};
diff --git a/sound/soc/mediatek/mt8173-rt5650.c b/sound/soc/mediatek/mt8173-rt5650.c
index bb09bb1b7f1c..45dea226e4c8 100644
--- a/sound/soc/mediatek/mt8173-rt5650.c
+++ b/sound/soc/mediatek/mt8173-rt5650.c
@@ -85,12 +85,26 @@ static int mt8173_rt5650_init(struct snd_soc_pcm_runtime *runtime)
{
struct snd_soc_card *card = runtime->card;
struct snd_soc_codec *codec = runtime->codec_dais[0]->codec;
+ const char *codec_dai_capture = runtime->codec_dais[1]->name;
int ret;
rt5645_sel_asrc_clk_src(codec,
- RT5645_DA_STEREO_FILTER |
- RT5645_AD_STEREO_FILTER,
+ RT5645_DA_STEREO_FILTER,
RT5645_CLK_SEL_I2S1_ASRC);
+
+ if (!strcmp(codec_dai_capture, "rt5645-aif1")) {
+ rt5645_sel_asrc_clk_src(codec,
+ RT5645_AD_STEREO_FILTER,
+ RT5645_CLK_SEL_I2S1_ASRC);
+ } else if (!strcmp(codec_dai_capture, "rt5645-aif2")) {
+ rt5645_sel_asrc_clk_src(codec,
+ RT5645_AD_STEREO_FILTER,
+ RT5645_CLK_SEL_I2S2_ASRC);
+ } else {
+ dev_err(card->dev, "Can't get the right codec dai\n");
+ return -EINVAL;
+ }
+
/* enable jack detection */
ret = snd_soc_card_jack_new(card, "Headset Jack",
SND_JACK_HEADPHONE | SND_JACK_MICROPHONE |
@@ -110,6 +124,11 @@ static int mt8173_rt5650_init(struct snd_soc_pcm_runtime *runtime)
static struct snd_soc_dai_link_component mt8173_rt5650_codecs[] = {
{
+ /* Playback */
+ .dai_name = "rt5645-aif1",
+ },
+ {
+ /* Capture */
.dai_name = "rt5645-aif1",
},
};
@@ -149,7 +168,7 @@ static struct snd_soc_dai_link mt8173_rt5650_dais[] = {
.cpu_dai_name = "I2S",
.no_pcm = 1,
.codecs = mt8173_rt5650_codecs,
- .num_codecs = 1,
+ .num_codecs = 2,
.init = mt8173_rt5650_init,
.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
SND_SOC_DAIFMT_CBS_CFS,
@@ -177,6 +196,8 @@ static int mt8173_rt5650_dev_probe(struct platform_device *pdev)
{
struct snd_soc_card *card = &mt8173_rt5650_card;
struct device_node *platform_node;
+ const char *codec_dai_capture;
+ struct of_phandle_args args;
int i, ret;
platform_node = of_parse_phandle(pdev->dev.of_node,
@@ -199,6 +220,23 @@ static int mt8173_rt5650_dev_probe(struct platform_device *pdev)
"Property 'audio-codec' missing or invalid\n");
return -EINVAL;
}
+ mt8173_rt5650_codecs[1].of_node = mt8173_rt5650_codecs[0].of_node;
+
+ if (device_property_present(&pdev->dev, "capture-dai")) {
+ ret = of_parse_phandle_with_args(pdev->dev.of_node,
+ "capture-dai",
+ "#sound-dai-cells", 0, &args);
+ if (ret < 0) {
+ dev_err(&pdev->dev,
+ "%s capture-dai name fail %d\n",
+ __func__, ret);
+ return ret;
+ }
+
+ ret = snd_soc_get_dai_name(&args, &codec_dai_capture);
+ mt8173_rt5650_codecs[1].dai_name = codec_dai_capture;
+ }
+
card->dev = &pdev->dev;
platform_set_drvdata(pdev, card);
--
2.8.0.rc3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Applied "ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver" to the asoc tree
2016-04-19 9:58 ` Mark Brown
@ 2016-04-19 10:33 ` PC Liao
2016-04-19 10:53 ` Mark Brown
0 siblings, 1 reply; 6+ messages in thread
From: PC Liao @ 2016-04-19 10:33 UTC (permalink / raw)
To: linux-arm-kernel
Hi Mark,
On Tue, 2016-04-19 at 17:58 +0800, Mark Brown wrote:
> The patch
>
> ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver
>
> has been applied to the asoc tree at
>
> git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
>
> All being well this means that it will be integrated into the linux-next
> tree (usually sometime in the next 24 hours) and sent to Linus during
> the next merge window (or sooner if it is a bug fix), however if
> problems are discovered then the patch may be dropped or reverted.
>
> You may get further e-mails resulting from automated or manual testing
> and review of the tree, please engage with people reporting problems and
> send followup patches addressing any issues that are reported if needed.
>
> If any updates are required or you are submitting further changes they
> should be sent as incremental updates against current git, existing
> patches will not be replaced.
>
> Please add any relevant lists and maintainers to the CCs when replying
> to this mail.
>
> Thanks,
> Mark
>
> From 0beeb8d0b434b8b007ac8058fb2cac5997fff6df Mon Sep 17 00:00:00 2001
> From: PC Liao <pc.liao@mediatek.com>
> Date: Tue, 19 Apr 2016 17:46:12 +0800
> Subject: [PATCH] ASoC: mediatek: Add second I2S on mt8173-rt5650 machine
> driver
>
> This patch adds second I2S connection to rt5650 codec for capture path on
> mt8173-rt5650 machine driver.
>
> This patch depends on [1], because snd_soc_of_get_dai_name() fix the property
> name "sound-dai". This patch needs to change name to use, so export
> snd_soc_get_dai_name() which is included in snd_soc_of_get_dai_name().
>
> [1] https://patchwork.kernel.org/patch/5671961/ ("ASoC: core: export
> snd_soc_get_dai_name")
>
> Signed-off-by: PC Liao <pc.liao@mediatek.com>
> Signed-off-by: Mark Brown <broonie@kernel.org>
Thanks for your approval.
But this patch depends on [1].
I think it also needs to apply [1], otherwise this patch will build
fail.
Or, do I need to upload new version again?
Thanks!
[1] https://patchwork.kernel.org/patch/5671961/ ("ASoC: core: export
snd_soc_get_dai_name")
^ permalink raw reply [flat|nested] 6+ messages in thread
* Applied "ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver" to the asoc tree
2016-04-19 10:33 ` PC Liao
@ 2016-04-19 10:53 ` Mark Brown
0 siblings, 0 replies; 6+ messages in thread
From: Mark Brown @ 2016-04-19 10:53 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Apr 19, 2016 at 06:33:04PM +0800, PC Liao wrote:
> Thanks for your approval.
> But this patch depends on [1].
> I think it also needs to apply [1], otherwise this patch will build
> fail.
> Or, do I need to upload new version again?
> [1] https://patchwork.kernel.org/patch/5671961/ ("ASoC: core: export
> snd_soc_get_dai_name")
Ugh, dropped. Please put administritive stuff like this after the ---
as covered in SubmittingPatches, that helps it get noticed. What it
looks like you should be doing here is putting this in a subnode for
capture.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160419/c97d4e6d/attachment.sig>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Applied "ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver" to the asoc tree
2016-04-21 11:38 [PATCH v8] ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver PC Liao
@ 2016-04-21 16:11 ` Mark Brown
0 siblings, 0 replies; 6+ messages in thread
From: Mark Brown @ 2016-04-21 16:11 UTC (permalink / raw)
To: linux-arm-kernel
The patch
ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
>From d349caeb05104ef01392abc6c7cfc8ab516c7be4 Mon Sep 17 00:00:00 2001
From: PC Liao <pc.liao@mediatek.com>
Date: Thu, 21 Apr 2016 19:38:14 +0800
Subject: [PATCH] ASoC: mediatek: Add second I2S on mt8173-rt5650 machine
driver
This patch adds second I2S connection to rt5650 codec for capture path on
mt8173-rt5650 machine driver.
Signed-off-by: PC Liao <pc.liao@mediatek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
.../devicetree/bindings/sound/mt8173-rt5650.txt | 10 +++++
sound/soc/mediatek/mt8173-rt5650.c | 50 ++++++++++++++++++++--
2 files changed, 57 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt b/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
index fe5a5ef1714d..5bfa6b60530b 100644
--- a/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
+++ b/Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
@@ -5,11 +5,21 @@ Required properties:
- mediatek,audio-codec: the phandles of rt5650 codecs
- mediatek,platform: the phandle of MT8173 ASoC platform
+Optional subnodes:
+- codec-capture : the subnode of rt5650 codec capture
+Required codec-capture subnode properties:
+- sound-dai: audio codec dai name on capture path
+ <&rt5650 0> : Default setting. Connect rt5650 I2S1 for capture. (dai_name = rt5645-aif1)
+ <&rt5650 1> : Connect rt5650 I2S2 for capture. (dai_name = rt5645-aif2)
+
Example:
sound {
compatible = "mediatek,mt8173-rt5650";
mediatek,audio-codec = <&rt5650>;
mediatek,platform = <&afe>;
+ codec-capture {
+ sound-dai = <&rt5650 1>;
+ };
};
diff --git a/sound/soc/mediatek/mt8173-rt5650.c b/sound/soc/mediatek/mt8173-rt5650.c
index bb09bb1b7f1c..a27a6673dbe3 100644
--- a/sound/soc/mediatek/mt8173-rt5650.c
+++ b/sound/soc/mediatek/mt8173-rt5650.c
@@ -85,12 +85,29 @@ static int mt8173_rt5650_init(struct snd_soc_pcm_runtime *runtime)
{
struct snd_soc_card *card = runtime->card;
struct snd_soc_codec *codec = runtime->codec_dais[0]->codec;
+ const char *codec_capture_dai = runtime->codec_dais[1]->name;
int ret;
rt5645_sel_asrc_clk_src(codec,
- RT5645_DA_STEREO_FILTER |
- RT5645_AD_STEREO_FILTER,
+ RT5645_DA_STEREO_FILTER,
RT5645_CLK_SEL_I2S1_ASRC);
+
+ if (!strcmp(codec_capture_dai, "rt5645-aif1")) {
+ rt5645_sel_asrc_clk_src(codec,
+ RT5645_AD_STEREO_FILTER,
+ RT5645_CLK_SEL_I2S1_ASRC);
+ } else if (!strcmp(codec_capture_dai, "rt5645-aif2")) {
+ rt5645_sel_asrc_clk_src(codec,
+ RT5645_AD_STEREO_FILTER,
+ RT5645_CLK_SEL_I2S2_ASRC);
+ } else {
+ dev_warn(card->dev,
+ "Only one dai codec found in DTS, enabled rt5645 AD filter\n");
+ rt5645_sel_asrc_clk_src(codec,
+ RT5645_AD_STEREO_FILTER,
+ RT5645_CLK_SEL_I2S1_ASRC);
+ }
+
/* enable jack detection */
ret = snd_soc_card_jack_new(card, "Headset Jack",
SND_JACK_HEADPHONE | SND_JACK_MICROPHONE |
@@ -110,6 +127,11 @@ static int mt8173_rt5650_init(struct snd_soc_pcm_runtime *runtime)
static struct snd_soc_dai_link_component mt8173_rt5650_codecs[] = {
{
+ /* Playback */
+ .dai_name = "rt5645-aif1",
+ },
+ {
+ /* Capture */
.dai_name = "rt5645-aif1",
},
};
@@ -149,7 +171,7 @@ static struct snd_soc_dai_link mt8173_rt5650_dais[] = {
.cpu_dai_name = "I2S",
.no_pcm = 1,
.codecs = mt8173_rt5650_codecs,
- .num_codecs = 1,
+ .num_codecs = 2,
.init = mt8173_rt5650_init,
.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
SND_SOC_DAIFMT_CBS_CFS,
@@ -177,6 +199,8 @@ static int mt8173_rt5650_dev_probe(struct platform_device *pdev)
{
struct snd_soc_card *card = &mt8173_rt5650_card;
struct device_node *platform_node;
+ struct device_node *np;
+ const char *codec_capture_dai;
int i, ret;
platform_node = of_parse_phandle(pdev->dev.of_node,
@@ -199,6 +223,26 @@ static int mt8173_rt5650_dev_probe(struct platform_device *pdev)
"Property 'audio-codec' missing or invalid\n");
return -EINVAL;
}
+ mt8173_rt5650_codecs[1].of_node = mt8173_rt5650_codecs[0].of_node;
+
+ if (of_find_node_by_name(platform_node, "codec-capture")) {
+ np = of_get_child_by_name(pdev->dev.of_node, "codec-capture");
+ if (!np) {
+ dev_err(&pdev->dev,
+ "%s: Can't find codec-capture DT node\n",
+ __func__);
+ return -EINVAL;
+ }
+ ret = snd_soc_of_get_dai_name(np, &codec_capture_dai);
+ if (ret < 0) {
+ dev_err(&pdev->dev,
+ "%s codec_capture_dai name fail %d\n",
+ __func__, ret);
+ return ret;
+ }
+ mt8173_rt5650_codecs[1].dai_name = codec_capture_dai;
+ }
+
card->dev = &pdev->dev;
platform_set_drvdata(pdev, card);
--
2.8.0.rc3
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-04-21 16:11 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-19 9:46 [PATCH v5] ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver PC Liao
2016-04-19 9:55 ` Applied "ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver" to the asoc tree Mark Brown
2016-04-19 9:58 ` Mark Brown
2016-04-19 10:33 ` PC Liao
2016-04-19 10:53 ` Mark Brown
-- strict thread matches above, loose matches on Subject: below --
2016-04-21 11:38 [PATCH v8] ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver PC Liao
2016-04-21 16:11 ` Applied "ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver" to the asoc tree Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).