Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
ad2ab00c
Commit
ad2ab00c
authored
May 27, 2016
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/topic/mtk' into asoc-next
parents
e61249bb
27becea0
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
90 additions
and
5 deletions
+90
-5
Documentation/devicetree/bindings/sound/mt8173-rt5650-rt5676.txt
...tation/devicetree/bindings/sound/mt8173-rt5650-rt5676.txt
+3
-2
Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
+10
-0
sound/soc/mediatek/Kconfig
sound/soc/mediatek/Kconfig
+1
-0
sound/soc/mediatek/mt8173-rt5650-rt5676.c
sound/soc/mediatek/mt8173-rt5650-rt5676.c
+27
-0
sound/soc/mediatek/mt8173-rt5650.c
sound/soc/mediatek/mt8173-rt5650.c
+47
-3
sound/soc/mediatek/mtk-afe-pcm.c
sound/soc/mediatek/mtk-afe-pcm.c
+2
-0
No files found.
Documentation/devicetree/bindings/sound/mt8173-rt5650-rt5676.txt
View file @
ad2ab00c
MT8173 with RT5650 RT5676 CODECS
MT8173 with RT5650 RT5676 CODECS
and HDMI via I2S
Required properties:
- compatible : "mediatek,mt8173-rt5650-rt5676"
- mediatek,audio-codec: the phandles of rt5650 and rt5676 codecs
and of the hdmi encoder node
- mediatek,platform: the phandle of MT8173 ASoC platform
Example:
sound {
compatible = "mediatek,mt8173-rt5650-rt5676";
mediatek,audio-codec = <&rt5650 &rt5676>;
mediatek,audio-codec = <&rt5650 &rt5676
&hdmi0
>;
mediatek,platform = <&afe>;
};
Documentation/devicetree/bindings/sound/mt8173-rt5650.txt
View file @
ad2ab00c
...
...
@@ -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>;
};
};
sound/soc/mediatek/Kconfig
View file @
ad2ab00c
...
...
@@ -43,6 +43,7 @@ config SND_SOC_MT8173_RT5650_RT5676
depends on SND_SOC_MEDIATEK && I2C
select SND_SOC_RT5645
select SND_SOC_RT5677
select SND_SOC_HDMI_CODEC
help
This adds ASoC driver for Mediatek MT8173 boards
with the RT5650 and RT5676 codecs.
...
...
sound/soc/mediatek/mt8173-rt5650-rt5676.c
View file @
ad2ab00c
...
...
@@ -134,7 +134,9 @@ static struct snd_soc_dai_link_component mt8173_rt5650_rt5676_codecs[] = {
enum
{
DAI_LINK_PLAYBACK
,
DAI_LINK_CAPTURE
,
DAI_LINK_HDMI
,
DAI_LINK_CODEC_I2S
,
DAI_LINK_HDMI_I2S
,
DAI_LINK_INTERCODEC
};
...
...
@@ -161,6 +163,16 @@ static struct snd_soc_dai_link mt8173_rt5650_rt5676_dais[] = {
.
dynamic
=
1
,
.
dpcm_capture
=
1
,
},
[
DAI_LINK_HDMI
]
=
{
.
name
=
"HDMI"
,
.
stream_name
=
"HDMI PCM"
,
.
cpu_dai_name
=
"HDMI"
,
.
codec_name
=
"snd-soc-dummy"
,
.
codec_dai_name
=
"snd-soc-dummy-dai"
,
.
trigger
=
{
SND_SOC_DPCM_TRIGGER_POST
,
SND_SOC_DPCM_TRIGGER_POST
},
.
dynamic
=
1
,
.
dpcm_playback
=
1
,
},
/* Back End DAI links */
[
DAI_LINK_CODEC_I2S
]
=
{
...
...
@@ -177,6 +189,13 @@ static struct snd_soc_dai_link mt8173_rt5650_rt5676_dais[] = {
.
dpcm_playback
=
1
,
.
dpcm_capture
=
1
,
},
[
DAI_LINK_HDMI_I2S
]
=
{
.
name
=
"HDMI BE"
,
.
cpu_dai_name
=
"HDMIO"
,
.
no_pcm
=
1
,
.
codec_dai_name
=
"i2s-hifi"
,
.
dpcm_playback
=
1
,
},
/* rt5676 <-> rt5650 intercodec link: Sets rt5676 I2S2 as master */
[
DAI_LINK_INTERCODEC
]
=
{
.
name
=
"rt5650_rt5676 intercodec"
,
...
...
@@ -251,6 +270,14 @@ static int mt8173_rt5650_rt5676_dev_probe(struct platform_device *pdev)
mt8173_rt5650_rt5676_dais
[
DAI_LINK_INTERCODEC
].
codec_of_node
=
mt8173_rt5650_rt5676_codecs
[
1
].
of_node
;
mt8173_rt5650_rt5676_dais
[
DAI_LINK_HDMI_I2S
].
codec_of_node
=
of_parse_phandle
(
pdev
->
dev
.
of_node
,
"mediatek,audio-codec"
,
2
);
if
(
!
mt8173_rt5650_rt5676_dais
[
DAI_LINK_HDMI_I2S
].
codec_of_node
)
{
dev_err
(
&
pdev
->
dev
,
"Property 'audio-codec' missing or invalid
\n
"
);
return
-
EINVAL
;
}
card
->
dev
=
&
pdev
->
dev
;
platform_set_drvdata
(
pdev
,
card
);
...
...
sound/soc/mediatek/mt8173-rt5650.c
View file @
ad2ab00c
...
...
@@ -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
);
...
...
sound/soc/mediatek/mtk-afe-pcm.c
View file @
ad2ab00c
...
...
@@ -123,6 +123,7 @@
#define AFE_TDM_CON1_WLEN_32BIT (0x2 << 8)
#define AFE_TDM_CON1_MSB_ALIGNED (0x1 << 4)
#define AFE_TDM_CON1_1_BCK_DELAY (0x1 << 3)
#define AFE_TDM_CON1_LRCK_INV (0x1 << 2)
#define AFE_TDM_CON1_BCK_INV (0x1 << 1)
#define AFE_TDM_CON1_EN (0x1 << 0)
...
...
@@ -449,6 +450,7 @@ static int mtk_afe_hdmi_prepare(struct snd_pcm_substream *substream,
runtime
->
rate
*
runtime
->
channels
*
32
);
val
=
AFE_TDM_CON1_BCK_INV
|
AFE_TDM_CON1_LRCK_INV
|
AFE_TDM_CON1_1_BCK_DELAY
|
AFE_TDM_CON1_MSB_ALIGNED
|
/* I2S mode */
AFE_TDM_CON1_WLEN_32BIT
|
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment