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
Kirill Smelkov
linux
Commits
a93202fa
Commit
a93202fa
authored
Dec 23, 2015
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/topic/pcm-list' into asoc-next
parents
3b88210d
61b0088b
Changes
21
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
556 additions
and
281 deletions
+556
-281
include/sound/soc.h
include/sound/soc.h
+22
-3
sound/soc/fsl/fsl-asoc-card.c
sound/soc/fsl/fsl-asoc-card.c
+8
-3
sound/soc/fsl/imx-wm8962.c
sound/soc/fsl/imx-wm8962.c
+8
-2
sound/soc/generic/simple-card.c
sound/soc/generic/simple-card.c
+5
-7
sound/soc/intel/atom/sst-mfld-platform-pcm.c
sound/soc/intel/atom/sst-mfld-platform-pcm.c
+6
-6
sound/soc/intel/boards/cht_bsw_max98090_ti.c
sound/soc/intel/boards/cht_bsw_max98090_ti.c
+2
-5
sound/soc/intel/boards/cht_bsw_rt5645.c
sound/soc/intel/boards/cht_bsw_rt5645.c
+2
-5
sound/soc/intel/boards/cht_bsw_rt5672.c
sound/soc/intel/boards/cht_bsw_rt5672.c
+2
-5
sound/soc/pxa/mioa701_wm9713.c
sound/soc/pxa/mioa701_wm9713.c
+5
-1
sound/soc/samsung/bells.c
sound/soc/samsung/bells.c
+30
-10
sound/soc/samsung/littlemill.c
sound/soc/samsung/littlemill.c
+26
-6
sound/soc/samsung/odroidx2_max98090.c
sound/soc/samsung/odroidx2_max98090.c
+7
-2
sound/soc/samsung/snow.c
sound/soc/samsung/snow.c
+7
-2
sound/soc/samsung/speyside.c
sound/soc/samsung/speyside.c
+10
-2
sound/soc/samsung/tobermory.c
sound/soc/samsung/tobermory.c
+17
-4
sound/soc/sh/rcar/core.c
sound/soc/sh/rcar/core.c
+1
-2
sound/soc/sh/rcar/rsrc-card.c
sound/soc/sh/rcar/rsrc-card.c
+3
-3
sound/soc/soc-core.c
sound/soc/soc-core.c
+381
-195
sound/soc/soc-dapm.c
sound/soc/soc-dapm.c
+2
-5
sound/soc/soc-pcm.c
sound/soc/soc-pcm.c
+10
-12
sound/soc/tegra/tegra_wm8903.c
sound/soc/tegra/tegra_wm8903.c
+2
-1
No files found.
include/sound/soc.h
View file @
a93202fa
...
@@ -1040,6 +1040,9 @@ struct snd_soc_dai_link {
...
@@ -1040,6 +1040,9 @@ struct snd_soc_dai_link {
/* pmdown_time is ignored at stop */
/* pmdown_time is ignored at stop */
unsigned
int
ignore_pmdown_time
:
1
;
unsigned
int
ignore_pmdown_time
:
1
;
struct
list_head
list
;
/* DAI link list of the soc card */
struct
snd_soc_dobj
dobj
;
/* For topology */
};
};
struct
snd_soc_codec_conf
{
struct
snd_soc_codec_conf
{
...
@@ -1104,12 +1107,20 @@ struct snd_soc_card {
...
@@ -1104,12 +1107,20 @@ struct snd_soc_card {
struct
snd_soc_dapm_context
*
dapm
,
struct
snd_soc_dapm_context
*
dapm
,
enum
snd_soc_bias_level
level
);
enum
snd_soc_bias_level
level
);
int
(
*
add_dai_link
)(
struct
snd_soc_card
*
,
struct
snd_soc_dai_link
*
link
);
void
(
*
remove_dai_link
)(
struct
snd_soc_card
*
,
struct
snd_soc_dai_link
*
link
);
long
pmdown_time
;
long
pmdown_time
;
/* CPU <--> Codec DAI links */
/* CPU <--> Codec DAI links */
struct
snd_soc_dai_link
*
dai_link
;
struct
snd_soc_dai_link
*
dai_link
;
/* predefined links only */
int
num_links
;
int
num_links
;
/* predefined links only */
struct
snd_soc_pcm_runtime
*
rtd
;
struct
list_head
dai_link_list
;
/* all links */
int
num_dai_links
;
struct
list_head
rtd_list
;
int
num_rtd
;
int
num_rtd
;
/* optional codec specific configuration */
/* optional codec specific configuration */
...
@@ -1204,6 +1215,9 @@ struct snd_soc_pcm_runtime {
...
@@ -1204,6 +1215,9 @@ struct snd_soc_pcm_runtime {
struct
dentry
*
debugfs_dpcm_root
;
struct
dentry
*
debugfs_dpcm_root
;
struct
dentry
*
debugfs_dpcm_state
;
struct
dentry
*
debugfs_dpcm_state
;
#endif
#endif
unsigned
int
num
;
/* 0-based and monotonic increasing */
struct
list_head
list
;
/* rtd list of the soc card */
};
};
/* mixer control */
/* mixer control */
...
@@ -1647,6 +1661,11 @@ int snd_soc_of_get_dai_link_codecs(struct device *dev,
...
@@ -1647,6 +1661,11 @@ int snd_soc_of_get_dai_link_codecs(struct device *dev,
struct
device_node
*
of_node
,
struct
device_node
*
of_node
,
struct
snd_soc_dai_link
*
dai_link
);
struct
snd_soc_dai_link
*
dai_link
);
int
snd_soc_add_dai_link
(
struct
snd_soc_card
*
card
,
struct
snd_soc_dai_link
*
dai_link
);
void
snd_soc_remove_dai_link
(
struct
snd_soc_card
*
card
,
struct
snd_soc_dai_link
*
dai_link
);
#include <sound/soc-dai.h>
#include <sound/soc-dai.h>
#ifdef CONFIG_DEBUG_FS
#ifdef CONFIG_DEBUG_FS
...
...
sound/soc/fsl/fsl-asoc-card.c
View file @
a93202fa
...
@@ -222,12 +222,15 @@ static int fsl_asoc_card_set_bias_level(struct snd_soc_card *card,
...
@@ -222,12 +222,15 @@ static int fsl_asoc_card_set_bias_level(struct snd_soc_card *card,
enum
snd_soc_bias_level
level
)
enum
snd_soc_bias_level
level
)
{
{
struct
fsl_asoc_card_priv
*
priv
=
snd_soc_card_get_drvdata
(
card
);
struct
fsl_asoc_card_priv
*
priv
=
snd_soc_card_get_drvdata
(
card
);
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
codec_dai
;
struct
codec_priv
*
codec_priv
=
&
priv
->
codec_priv
;
struct
codec_priv
*
codec_priv
=
&
priv
->
codec_priv
;
struct
device
*
dev
=
card
->
dev
;
struct
device
*
dev
=
card
->
dev
;
unsigned
int
pll_out
;
unsigned
int
pll_out
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
0
].
name
);
codec_dai
=
rtd
->
codec_dai
;
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
return
0
;
return
0
;
...
@@ -414,14 +417,16 @@ static int fsl_asoc_card_audmux_init(struct device_node *np,
...
@@ -414,14 +417,16 @@ static int fsl_asoc_card_audmux_init(struct device_node *np,
static
int
fsl_asoc_card_late_probe
(
struct
snd_soc_card
*
card
)
static
int
fsl_asoc_card_late_probe
(
struct
snd_soc_card
*
card
)
{
{
struct
fsl_asoc_card_priv
*
priv
=
snd_soc_card_get_drvdata
(
card
);
struct
fsl_asoc_card_priv
*
priv
=
snd_soc_card_get_drvdata
(
card
);
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
=
list_first_entry
(
&
card
->
rtd_list
,
struct
snd_soc_pcm_runtime
,
list
);
struct
snd_soc_dai
*
codec_dai
=
rtd
->
codec_dai
;
struct
codec_priv
*
codec_priv
=
&
priv
->
codec_priv
;
struct
codec_priv
*
codec_priv
=
&
priv
->
codec_priv
;
struct
device
*
dev
=
card
->
dev
;
struct
device
*
dev
=
card
->
dev
;
int
ret
;
int
ret
;
if
(
fsl_asoc_card_is_ac97
(
priv
))
{
if
(
fsl_asoc_card_is_ac97
(
priv
))
{
#if IS_ENABLED(CONFIG_SND_AC97_CODEC)
#if IS_ENABLED(CONFIG_SND_AC97_CODEC)
struct
snd_soc_codec
*
codec
=
card
->
rtd
[
0
].
codec
;
struct
snd_soc_codec
*
codec
=
rtd
->
codec
;
struct
snd_ac97
*
ac97
=
snd_soc_codec_get_drvdata
(
codec
);
struct
snd_ac97
*
ac97
=
snd_soc_codec_get_drvdata
(
codec
);
/*
/*
...
...
sound/soc/fsl/imx-wm8962.c
View file @
a93202fa
...
@@ -69,13 +69,16 @@ static int imx_wm8962_set_bias_level(struct snd_soc_card *card,
...
@@ -69,13 +69,16 @@ static int imx_wm8962_set_bias_level(struct snd_soc_card *card,
struct
snd_soc_dapm_context
*
dapm
,
struct
snd_soc_dapm_context
*
dapm
,
enum
snd_soc_bias_level
level
)
enum
snd_soc_bias_level
level
)
{
{
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
codec_dai
;
struct
imx_priv
*
priv
=
&
card_priv
;
struct
imx_priv
*
priv
=
&
card_priv
;
struct
imx_wm8962_data
*
data
=
snd_soc_card_get_drvdata
(
card
);
struct
imx_wm8962_data
*
data
=
snd_soc_card_get_drvdata
(
card
);
struct
device
*
dev
=
&
priv
->
pdev
->
dev
;
struct
device
*
dev
=
&
priv
->
pdev
->
dev
;
unsigned
int
pll_out
;
unsigned
int
pll_out
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
0
].
name
);
codec_dai
=
rtd
->
codec_dai
;
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
return
0
;
return
0
;
...
@@ -135,12 +138,15 @@ static int imx_wm8962_set_bias_level(struct snd_soc_card *card,
...
@@ -135,12 +138,15 @@ static int imx_wm8962_set_bias_level(struct snd_soc_card *card,
static
int
imx_wm8962_late_probe
(
struct
snd_soc_card
*
card
)
static
int
imx_wm8962_late_probe
(
struct
snd_soc_card
*
card
)
{
{
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
codec_dai
;
struct
imx_priv
*
priv
=
&
card_priv
;
struct
imx_priv
*
priv
=
&
card_priv
;
struct
imx_wm8962_data
*
data
=
snd_soc_card_get_drvdata
(
card
);
struct
imx_wm8962_data
*
data
=
snd_soc_card_get_drvdata
(
card
);
struct
device
*
dev
=
&
priv
->
pdev
->
dev
;
struct
device
*
dev
=
&
priv
->
pdev
->
dev
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
0
].
name
);
codec_dai
=
rtd
->
codec_dai
;
ret
=
snd_soc_dai_set_sysclk
(
codec_dai
,
WM8962_SYSCLK_MCLK
,
ret
=
snd_soc_dai_set_sysclk
(
codec_dai
,
WM8962_SYSCLK_MCLK
,
data
->
clk_frequency
,
SND_SOC_CLOCK_IN
);
data
->
clk_frequency
,
SND_SOC_CLOCK_IN
);
if
(
ret
<
0
)
if
(
ret
<
0
)
...
...
sound/soc/generic/simple-card.c
View file @
a93202fa
...
@@ -45,7 +45,7 @@ static int asoc_simple_card_startup(struct snd_pcm_substream *substream)
...
@@ -45,7 +45,7 @@ static int asoc_simple_card_startup(struct snd_pcm_substream *substream)
struct
snd_soc_pcm_runtime
*
rtd
=
substream
->
private_data
;
struct
snd_soc_pcm_runtime
*
rtd
=
substream
->
private_data
;
struct
simple_card_data
*
priv
=
snd_soc_card_get_drvdata
(
rtd
->
card
);
struct
simple_card_data
*
priv
=
snd_soc_card_get_drvdata
(
rtd
->
card
);
struct
simple_dai_props
*
dai_props
=
struct
simple_dai_props
*
dai_props
=
&
priv
->
dai_props
[
rtd
-
rtd
->
card
->
rtd
];
&
priv
->
dai_props
[
rtd
->
num
];
int
ret
;
int
ret
;
ret
=
clk_prepare_enable
(
dai_props
->
cpu_dai
.
clk
);
ret
=
clk_prepare_enable
(
dai_props
->
cpu_dai
.
clk
);
...
@@ -64,7 +64,7 @@ static void asoc_simple_card_shutdown(struct snd_pcm_substream *substream)
...
@@ -64,7 +64,7 @@ static void asoc_simple_card_shutdown(struct snd_pcm_substream *substream)
struct
snd_soc_pcm_runtime
*
rtd
=
substream
->
private_data
;
struct
snd_soc_pcm_runtime
*
rtd
=
substream
->
private_data
;
struct
simple_card_data
*
priv
=
snd_soc_card_get_drvdata
(
rtd
->
card
);
struct
simple_card_data
*
priv
=
snd_soc_card_get_drvdata
(
rtd
->
card
);
struct
simple_dai_props
*
dai_props
=
struct
simple_dai_props
*
dai_props
=
&
priv
->
dai_props
[
rtd
-
rtd
->
card
->
rtd
];
&
priv
->
dai_props
[
rtd
->
num
];
clk_disable_unprepare
(
dai_props
->
cpu_dai
.
clk
);
clk_disable_unprepare
(
dai_props
->
cpu_dai
.
clk
);
...
@@ -78,8 +78,7 @@ static int asoc_simple_card_hw_params(struct snd_pcm_substream *substream,
...
@@ -78,8 +78,7 @@ static int asoc_simple_card_hw_params(struct snd_pcm_substream *substream,
struct
snd_soc_dai
*
codec_dai
=
rtd
->
codec_dai
;
struct
snd_soc_dai
*
codec_dai
=
rtd
->
codec_dai
;
struct
snd_soc_dai
*
cpu_dai
=
rtd
->
cpu_dai
;
struct
snd_soc_dai
*
cpu_dai
=
rtd
->
cpu_dai
;
struct
simple_card_data
*
priv
=
snd_soc_card_get_drvdata
(
rtd
->
card
);
struct
simple_card_data
*
priv
=
snd_soc_card_get_drvdata
(
rtd
->
card
);
struct
simple_dai_props
*
dai_props
=
struct
simple_dai_props
*
dai_props
=
&
priv
->
dai_props
[
rtd
->
num
];
&
priv
->
dai_props
[
rtd
-
rtd
->
card
->
rtd
];
unsigned
int
mclk
,
mclk_fs
=
0
;
unsigned
int
mclk
,
mclk_fs
=
0
;
int
ret
=
0
;
int
ret
=
0
;
...
@@ -174,10 +173,9 @@ static int asoc_simple_card_dai_init(struct snd_soc_pcm_runtime *rtd)
...
@@ -174,10 +173,9 @@ static int asoc_simple_card_dai_init(struct snd_soc_pcm_runtime *rtd)
struct
snd_soc_dai
*
codec
=
rtd
->
codec_dai
;
struct
snd_soc_dai
*
codec
=
rtd
->
codec_dai
;
struct
snd_soc_dai
*
cpu
=
rtd
->
cpu_dai
;
struct
snd_soc_dai
*
cpu
=
rtd
->
cpu_dai
;
struct
simple_dai_props
*
dai_props
;
struct
simple_dai_props
*
dai_props
;
int
num
,
ret
;
int
ret
;
num
=
rtd
-
rtd
->
card
->
rtd
;
dai_props
=
&
priv
->
dai_props
[
rtd
->
num
];
dai_props
=
&
priv
->
dai_props
[
num
];
ret
=
__asoc_simple_card_dai_init
(
codec
,
&
dai_props
->
codec_dai
);
ret
=
__asoc_simple_card_dai_init
(
codec
,
&
dai_props
->
codec_dai
);
if
(
ret
<
0
)
if
(
ret
<
0
)
return
ret
;
return
ret
;
...
...
sound/soc/intel/atom/sst-mfld-platform-pcm.c
View file @
a93202fa
...
@@ -760,15 +760,15 @@ static int sst_platform_remove(struct platform_device *pdev)
...
@@ -760,15 +760,15 @@ static int sst_platform_remove(struct platform_device *pdev)
static
int
sst_soc_prepare
(
struct
device
*
dev
)
static
int
sst_soc_prepare
(
struct
device
*
dev
)
{
{
struct
sst_data
*
drv
=
dev_get_drvdata
(
dev
);
struct
sst_data
*
drv
=
dev_get_drvdata
(
dev
);
int
i
;
struct
snd_soc_pcm_runtime
*
rtd
;
/* suspend all pcms first */
/* suspend all pcms first */
snd_soc_suspend
(
drv
->
soc_card
->
dev
);
snd_soc_suspend
(
drv
->
soc_card
->
dev
);
snd_soc_poweroff
(
drv
->
soc_card
->
dev
);
snd_soc_poweroff
(
drv
->
soc_card
->
dev
);
/* set the SSPs to idle */
/* set the SSPs to idle */
for
(
i
=
0
;
i
<
drv
->
soc_card
->
num_rtd
;
i
++
)
{
list_for_each_entry
(
rtd
,
&
drv
->
soc_card
->
rtd_list
,
list
)
{
struct
snd_soc_dai
*
dai
=
drv
->
soc_card
->
rtd
[
i
].
cpu_dai
;
struct
snd_soc_dai
*
dai
=
rtd
->
cpu_dai
;
if
(
dai
->
active
)
{
if
(
dai
->
active
)
{
send_ssp_cmd
(
dai
,
dai
->
name
,
0
);
send_ssp_cmd
(
dai
,
dai
->
name
,
0
);
...
@@ -782,11 +782,11 @@ static int sst_soc_prepare(struct device *dev)
...
@@ -782,11 +782,11 @@ static int sst_soc_prepare(struct device *dev)
static
void
sst_soc_complete
(
struct
device
*
dev
)
static
void
sst_soc_complete
(
struct
device
*
dev
)
{
{
struct
sst_data
*
drv
=
dev_get_drvdata
(
dev
);
struct
sst_data
*
drv
=
dev_get_drvdata
(
dev
);
int
i
;
struct
snd_soc_pcm_runtime
*
rtd
;
/* restart SSPs */
/* restart SSPs */
for
(
i
=
0
;
i
<
drv
->
soc_card
->
num_rtd
;
i
++
)
{
list_for_each_entry
(
rtd
,
&
drv
->
soc_card
->
rtd_list
,
list
)
{
struct
snd_soc_dai
*
dai
=
drv
->
soc_card
->
rtd
[
i
].
cpu_dai
;
struct
snd_soc_dai
*
dai
=
rtd
->
cpu_dai
;
if
(
dai
->
active
)
{
if
(
dai
->
active
)
{
sst_handle_vb_timer
(
dai
,
true
);
sst_handle_vb_timer
(
dai
,
true
);
...
...
sound/soc/intel/boards/cht_bsw_max98090_ti.c
View file @
a93202fa
...
@@ -41,12 +41,9 @@ struct cht_mc_private {
...
@@ -41,12 +41,9 @@ struct cht_mc_private {
static
inline
struct
snd_soc_dai
*
cht_get_codec_dai
(
struct
snd_soc_card
*
card
)
static
inline
struct
snd_soc_dai
*
cht_get_codec_dai
(
struct
snd_soc_card
*
card
)
{
{
int
i
;
struct
snd_soc_pcm_runtime
*
rtd
;
for
(
i
=
0
;
i
<
card
->
num_rtd
;
i
++
)
{
list_for_each_entry
(
rtd
,
&
card
->
rtd_list
,
list
)
{
struct
snd_soc_pcm_runtime
*
rtd
;
rtd
=
card
->
rtd
+
i
;
if
(
!
strncmp
(
rtd
->
codec_dai
->
name
,
CHT_CODEC_DAI
,
if
(
!
strncmp
(
rtd
->
codec_dai
->
name
,
CHT_CODEC_DAI
,
strlen
(
CHT_CODEC_DAI
)))
strlen
(
CHT_CODEC_DAI
)))
return
rtd
->
codec_dai
;
return
rtd
->
codec_dai
;
...
...
sound/soc/intel/boards/cht_bsw_rt5645.c
View file @
a93202fa
...
@@ -47,12 +47,9 @@ struct cht_mc_private {
...
@@ -47,12 +47,9 @@ struct cht_mc_private {
static
inline
struct
snd_soc_dai
*
cht_get_codec_dai
(
struct
snd_soc_card
*
card
)
static
inline
struct
snd_soc_dai
*
cht_get_codec_dai
(
struct
snd_soc_card
*
card
)
{
{
int
i
;
struct
snd_soc_pcm_runtime
*
rtd
;
for
(
i
=
0
;
i
<
card
->
num_rtd
;
i
++
)
{
struct
snd_soc_pcm_runtime
*
rtd
;
rtd
=
card
->
rtd
+
i
;
list_for_each_entry
(
rtd
,
&
card
->
rtd_list
,
list
)
{
if
(
!
strncmp
(
rtd
->
codec_dai
->
name
,
CHT_CODEC_DAI
,
if
(
!
strncmp
(
rtd
->
codec_dai
->
name
,
CHT_CODEC_DAI
,
strlen
(
CHT_CODEC_DAI
)))
strlen
(
CHT_CODEC_DAI
)))
return
rtd
->
codec_dai
;
return
rtd
->
codec_dai
;
...
...
sound/soc/intel/boards/cht_bsw_rt5672.c
View file @
a93202fa
...
@@ -46,12 +46,9 @@ static struct snd_soc_jack_pin cht_bsw_headset_pins[] = {
...
@@ -46,12 +46,9 @@ static struct snd_soc_jack_pin cht_bsw_headset_pins[] = {
static
inline
struct
snd_soc_dai
*
cht_get_codec_dai
(
struct
snd_soc_card
*
card
)
static
inline
struct
snd_soc_dai
*
cht_get_codec_dai
(
struct
snd_soc_card
*
card
)
{
{
int
i
;
struct
snd_soc_pcm_runtime
*
rtd
;
for
(
i
=
0
;
i
<
card
->
num_rtd
;
i
++
)
{
list_for_each_entry
(
rtd
,
&
card
->
rtd_list
,
list
)
{
struct
snd_soc_pcm_runtime
*
rtd
;
rtd
=
card
->
rtd
+
i
;
if
(
!
strncmp
(
rtd
->
codec_dai
->
name
,
CHT_CODEC_DAI
,
if
(
!
strncmp
(
rtd
->
codec_dai
->
name
,
CHT_CODEC_DAI
,
strlen
(
CHT_CODEC_DAI
)))
strlen
(
CHT_CODEC_DAI
)))
return
rtd
->
codec_dai
;
return
rtd
->
codec_dai
;
...
...
sound/soc/pxa/mioa701_wm9713.c
View file @
a93202fa
...
@@ -81,8 +81,12 @@ static int rear_amp_power(struct snd_soc_codec *codec, int power)
...
@@ -81,8 +81,12 @@ static int rear_amp_power(struct snd_soc_codec *codec, int power)
static
int
rear_amp_event
(
struct
snd_soc_dapm_widget
*
widget
,
static
int
rear_amp_event
(
struct
snd_soc_dapm_widget
*
widget
,
struct
snd_kcontrol
*
kctl
,
int
event
)
struct
snd_kcontrol
*
kctl
,
int
event
)
{
{
struct
snd_soc_codec
*
codec
=
widget
->
dapm
->
card
->
rtd
[
0
].
codec
;
struct
snd_soc_card
*
card
=
widget
->
dapm
->
card
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_codec
*
codec
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
0
].
name
);
codec
=
rtd
->
codec
;
return
rear_amp_power
(
codec
,
SND_SOC_DAPM_EVENT_ON
(
event
));
return
rear_amp_power
(
codec
,
SND_SOC_DAPM_EVENT_ON
(
event
));
}
}
...
...
sound/soc/samsung/bells.c
View file @
a93202fa
...
@@ -58,11 +58,16 @@ static int bells_set_bias_level(struct snd_soc_card *card,
...
@@ -58,11 +58,16 @@ static int bells_set_bias_level(struct snd_soc_card *card,
struct
snd_soc_dapm_context
*
dapm
,
struct
snd_soc_dapm_context
*
dapm
,
enum
snd_soc_bias_level
level
)
enum
snd_soc_bias_level
level
)
{
{
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
DAI_DSP_CODEC
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_codec
*
codec
=
codec_dai
->
codec
;
struct
snd_soc_dai
*
codec_dai
;
struct
snd_soc_codec
*
codec
;
struct
bells_drvdata
*
bells
=
card
->
drvdata
;
struct
bells_drvdata
*
bells
=
card
->
drvdata
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
DAI_DSP_CODEC
].
name
);
codec_dai
=
rtd
->
codec_dai
;
codec
=
codec_dai
->
codec
;
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
return
0
;
return
0
;
...
@@ -99,11 +104,16 @@ static int bells_set_bias_level_post(struct snd_soc_card *card,
...
@@ -99,11 +104,16 @@ static int bells_set_bias_level_post(struct snd_soc_card *card,
struct
snd_soc_dapm_context
*
dapm
,
struct
snd_soc_dapm_context
*
dapm
,
enum
snd_soc_bias_level
level
)
enum
snd_soc_bias_level
level
)
{
{
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
DAI_DSP_CODEC
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_codec
*
codec
=
codec_dai
->
codec
;
struct
snd_soc_dai
*
codec_dai
;
struct
snd_soc_codec
*
codec
;
struct
bells_drvdata
*
bells
=
card
->
drvdata
;
struct
bells_drvdata
*
bells
=
card
->
drvdata
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
DAI_DSP_CODEC
].
name
);
codec_dai
=
rtd
->
codec_dai
;
codec
=
codec_dai
->
codec
;
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
return
0
;
return
0
;
...
@@ -137,14 +147,22 @@ static int bells_set_bias_level_post(struct snd_soc_card *card,
...
@@ -137,14 +147,22 @@ static int bells_set_bias_level_post(struct snd_soc_card *card,
static
int
bells_late_probe
(
struct
snd_soc_card
*
card
)
static
int
bells_late_probe
(
struct
snd_soc_card
*
card
)
{
{
struct
bells_drvdata
*
bells
=
card
->
drvdata
;
struct
bells_drvdata
*
bells
=
card
->
drvdata
;
struct
snd_soc_codec
*
wm0010
=
card
->
rtd
[
DAI_AP_DSP
].
codec
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_codec
*
codec
=
card
->
rtd
[
DAI_DSP_CODEC
].
codec
;
struct
snd_soc_codec
*
wm0010
;
struct
snd_soc_dai
*
aif1_dai
=
card
->
rtd
[
DAI_DSP_CODEC
].
codec_dai
;
struct
snd_soc_codec
*
codec
;
struct
snd_soc_dai
*
aif1_dai
;
struct
snd_soc_dai
*
aif2_dai
;
struct
snd_soc_dai
*
aif2_dai
;
struct
snd_soc_dai
*
aif3_dai
;
struct
snd_soc_dai
*
aif3_dai
;
struct
snd_soc_dai
*
wm9081_dai
;
struct
snd_soc_dai
*
wm9081_dai
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
DAI_AP_DSP
].
name
);
wm0010
=
rtd
->
codec
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
DAI_DSP_CODEC
].
name
);
codec
=
rtd
->
codec
;
aif1_dai
=
rtd
->
codec_dai
;
ret
=
snd_soc_codec_set_sysclk
(
codec
,
ARIZONA_CLK_SYSCLK
,
ret
=
snd_soc_codec_set_sysclk
(
codec
,
ARIZONA_CLK_SYSCLK
,
ARIZONA_CLK_SRC_FLL1
,
ARIZONA_CLK_SRC_FLL1
,
bells
->
sysclk_rate
,
bells
->
sysclk_rate
,
...
@@ -181,7 +199,8 @@ static int bells_late_probe(struct snd_soc_card *card)
...
@@ -181,7 +199,8 @@ static int bells_late_probe(struct snd_soc_card *card)
return
ret
;
return
ret
;
}
}
aif2_dai
=
card
->
rtd
[
DAI_CODEC_CP
].
cpu_dai
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
DAI_CODEC_CP
].
name
);
aif2_dai
=
rtd
->
cpu_dai
;
ret
=
snd_soc_dai_set_sysclk
(
aif2_dai
,
ARIZONA_CLK_ASYNCCLK
,
0
,
0
);
ret
=
snd_soc_dai_set_sysclk
(
aif2_dai
,
ARIZONA_CLK_ASYNCCLK
,
0
,
0
);
if
(
ret
!=
0
)
{
if
(
ret
!=
0
)
{
...
@@ -192,8 +211,9 @@ static int bells_late_probe(struct snd_soc_card *card)
...
@@ -192,8 +211,9 @@ static int bells_late_probe(struct snd_soc_card *card)
if
(
card
->
num_rtd
==
DAI_CODEC_SUB
)
if
(
card
->
num_rtd
==
DAI_CODEC_SUB
)
return
0
;
return
0
;
aif3_dai
=
card
->
rtd
[
DAI_CODEC_SUB
].
cpu_dai
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
DAI_CODEC_SUB
].
name
);
wm9081_dai
=
card
->
rtd
[
DAI_CODEC_SUB
].
codec_dai
;
aif3_dai
=
rtd
->
cpu_dai
;
wm9081_dai
=
rtd
->
codec_dai
;
ret
=
snd_soc_dai_set_sysclk
(
aif3_dai
,
ARIZONA_CLK_SYSCLK
,
0
,
0
);
ret
=
snd_soc_dai_set_sysclk
(
aif3_dai
,
ARIZONA_CLK_SYSCLK
,
0
,
0
);
if
(
ret
!=
0
)
{
if
(
ret
!=
0
)
{
...
...
sound/soc/samsung/littlemill.c
View file @
a93202fa
...
@@ -23,9 +23,13 @@ static int littlemill_set_bias_level(struct snd_soc_card *card,
...
@@ -23,9 +23,13 @@ static int littlemill_set_bias_level(struct snd_soc_card *card,
struct
snd_soc_dapm_context
*
dapm
,
struct
snd_soc_dapm_context
*
dapm
,
enum
snd_soc_bias_level
level
)
enum
snd_soc_bias_level
level
)
{
{
struct
snd_soc_dai
*
aif1_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
aif1_dai
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
0
].
name
);
aif1_dai
=
rtd
->
codec_dai
;
if
(
dapm
->
dev
!=
aif1_dai
->
dev
)
if
(
dapm
->
dev
!=
aif1_dai
->
dev
)
return
0
;
return
0
;
...
@@ -66,9 +70,13 @@ static int littlemill_set_bias_level_post(struct snd_soc_card *card,
...
@@ -66,9 +70,13 @@ static int littlemill_set_bias_level_post(struct snd_soc_card *card,
struct
snd_soc_dapm_context
*
dapm
,
struct
snd_soc_dapm_context
*
dapm
,
enum
snd_soc_bias_level
level
)
enum
snd_soc_bias_level
level
)
{
{
struct
snd_soc_dai
*
aif1_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
aif1_dai
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
0
].
name
);
aif1_dai
=
rtd
->
codec_dai
;
if
(
dapm
->
dev
!=
aif1_dai
->
dev
)
if
(
dapm
->
dev
!=
aif1_dai
->
dev
)
return
0
;
return
0
;
...
@@ -168,9 +176,13 @@ static int bbclk_ev(struct snd_soc_dapm_widget *w,
...
@@ -168,9 +176,13 @@ static int bbclk_ev(struct snd_soc_dapm_widget *w,
struct
snd_kcontrol
*
kcontrol
,
int
event
)
struct
snd_kcontrol
*
kcontrol
,
int
event
)
{
{
struct
snd_soc_card
*
card
=
w
->
dapm
->
card
;
struct
snd_soc_card
*
card
=
w
->
dapm
->
card
;
struct
snd_soc_dai
*
aif2_dai
=
card
->
rtd
[
1
].
cpu_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
aif2_dai
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
1
].
name
);
aif2_dai
=
rtd
->
cpu_dai
;
switch
(
event
)
{
switch
(
event
)
{
case
SND_SOC_DAPM_PRE_PMU
:
case
SND_SOC_DAPM_PRE_PMU
:
ret
=
snd_soc_dai_set_pll
(
aif2_dai
,
WM8994_FLL2
,
ret
=
snd_soc_dai_set_pll
(
aif2_dai
,
WM8994_FLL2
,
...
@@ -245,11 +257,19 @@ static struct snd_soc_jack littlemill_headset;
...
@@ -245,11 +257,19 @@ static struct snd_soc_jack littlemill_headset;
static
int
littlemill_late_probe
(
struct
snd_soc_card
*
card
)
static
int
littlemill_late_probe
(
struct
snd_soc_card
*
card
)
{
{
struct
snd_soc_codec
*
codec
=
card
->
rtd
[
0
].
codec
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
aif1_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_codec
*
codec
;
struct
snd_soc_dai
*
aif2_dai
=
card
->
rtd
[
1
].
cpu_dai
;
struct
snd_soc_dai
*
aif1_dai
;
struct
snd_soc_dai
*
aif2_dai
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
0
].
name
);
codec
=
rtd
->
codec
;
aif1_dai
=
rtd
->
codec_dai
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
1
].
name
);
aif2_dai
=
rtd
->
cpu_dai
;
ret
=
snd_soc_dai_set_sysclk
(
aif1_dai
,
WM8994_SYSCLK_MCLK2
,
ret
=
snd_soc_dai_set_sysclk
(
aif1_dai
,
WM8994_SYSCLK_MCLK2
,
32768
,
SND_SOC_CLOCK_IN
);
32768
,
SND_SOC_CLOCK_IN
);
if
(
ret
<
0
)
if
(
ret
<
0
)
...
...
sound/soc/samsung/odroidx2_max98090.c
View file @
a93202fa
...
@@ -25,10 +25,15 @@ static struct snd_soc_dai_link odroidx2_dai[];
...
@@ -25,10 +25,15 @@ static struct snd_soc_dai_link odroidx2_dai[];
static
int
odroidx2_late_probe
(
struct
snd_soc_card
*
card
)
static
int
odroidx2_late_probe
(
struct
snd_soc_card
*
card
)
{
{
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
cpu_dai
=
card
->
rtd
[
0
].
cpu_dai
;
struct
snd_soc_dai
*
codec_dai
;
struct
snd_soc_dai
*
cpu_dai
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
0
].
name
);
codec_dai
=
rtd
->
codec_dai
;
cpu_dai
=
rtd
->
cpu_dai
;
ret
=
snd_soc_dai_set_sysclk
(
codec_dai
,
0
,
MAX98090_MCLK
,
ret
=
snd_soc_dai_set_sysclk
(
codec_dai
,
0
,
MAX98090_MCLK
,
SND_SOC_CLOCK_IN
);
SND_SOC_CLOCK_IN
);
...
...
sound/soc/samsung/snow.c
View file @
a93202fa
...
@@ -35,10 +35,15 @@ static struct snd_soc_dai_link snow_dai[] = {
...
@@ -35,10 +35,15 @@ static struct snd_soc_dai_link snow_dai[] = {
static
int
snow_late_probe
(
struct
snd_soc_card
*
card
)
static
int
snow_late_probe
(
struct
snd_soc_card
*
card
)
{
{
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
cpu_dai
=
card
->
rtd
[
0
].
cpu_dai
;
struct
snd_soc_dai
*
codec_dai
;
struct
snd_soc_dai
*
cpu_dai
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
0
].
name
);
codec_dai
=
rtd
->
codec_dai
;
cpu_dai
=
rtd
->
cpu_dai
;
/* Set the MCLK rate for the codec */
/* Set the MCLK rate for the codec */
ret
=
snd_soc_dai_set_sysclk
(
codec_dai
,
0
,
ret
=
snd_soc_dai_set_sysclk
(
codec_dai
,
0
,
FIN_PLL_RATE
,
SND_SOC_CLOCK_IN
);
FIN_PLL_RATE
,
SND_SOC_CLOCK_IN
);
...
...
sound/soc/samsung/speyside.c
View file @
a93202fa
...
@@ -25,9 +25,13 @@ static int speyside_set_bias_level(struct snd_soc_card *card,
...
@@ -25,9 +25,13 @@ static int speyside_set_bias_level(struct snd_soc_card *card,
struct
snd_soc_dapm_context
*
dapm
,
struct
snd_soc_dapm_context
*
dapm
,
enum
snd_soc_bias_level
level
)
enum
snd_soc_bias_level
level
)
{
{
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
1
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
codec_dai
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
1
].
name
);
codec_dai
=
rtd
->
codec_dai
;
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
return
0
;
return
0
;
...
@@ -57,9 +61,13 @@ static int speyside_set_bias_level_post(struct snd_soc_card *card,
...
@@ -57,9 +61,13 @@ static int speyside_set_bias_level_post(struct snd_soc_card *card,
struct
snd_soc_dapm_context
*
dapm
,
struct
snd_soc_dapm_context
*
dapm
,
enum
snd_soc_bias_level
level
)
enum
snd_soc_bias_level
level
)
{
{
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
1
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
codec_dai
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
1
].
name
);
codec_dai
=
rtd
->
codec_dai
;
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
return
0
;
return
0
;
...
...
sound/soc/samsung/tobermory.c
View file @
a93202fa
...
@@ -23,9 +23,13 @@ static int tobermory_set_bias_level(struct snd_soc_card *card,
...
@@ -23,9 +23,13 @@ static int tobermory_set_bias_level(struct snd_soc_card *card,
struct
snd_soc_dapm_context
*
dapm
,
struct
snd_soc_dapm_context
*
dapm
,
enum
snd_soc_bias_level
level
)
enum
snd_soc_bias_level
level
)
{
{
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
codec_dai
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
0
].
name
);
codec_dai
=
rtd
->
codec_dai
;
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
return
0
;
return
0
;
...
@@ -62,9 +66,13 @@ static int tobermory_set_bias_level_post(struct snd_soc_card *card,
...
@@ -62,9 +66,13 @@ static int tobermory_set_bias_level_post(struct snd_soc_card *card,
struct
snd_soc_dapm_context
*
dapm
,
struct
snd_soc_dapm_context
*
dapm
,
enum
snd_soc_bias_level
level
)
enum
snd_soc_bias_level
level
)
{
{
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
codec_dai
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
0
].
name
);
codec_dai
=
rtd
->
codec_dai
;
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
return
0
;
return
0
;
...
@@ -170,10 +178,15 @@ static struct snd_soc_jack_pin tobermory_headset_pins[] = {
...
@@ -170,10 +178,15 @@ static struct snd_soc_jack_pin tobermory_headset_pins[] = {
static
int
tobermory_late_probe
(
struct
snd_soc_card
*
card
)
static
int
tobermory_late_probe
(
struct
snd_soc_card
*
card
)
{
{
struct
snd_soc_codec
*
codec
=
card
->
rtd
[
0
].
codec
;
struct
snd_soc_pcm_runtime
*
rtd
;
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_codec
*
codec
;
struct
snd_soc_dai
*
codec_dai
;
int
ret
;
int
ret
;
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
0
].
name
);
codec
=
rtd
->
codec
;
codec_dai
=
rtd
->
codec_dai
;
ret
=
snd_soc_dai_set_sysclk
(
codec_dai
,
WM8962_SYSCLK_MCLK
,
ret
=
snd_soc_dai_set_sysclk
(
codec_dai
,
WM8962_SYSCLK_MCLK
,
32768
,
SND_SOC_CLOCK_IN
);
32768
,
SND_SOC_CLOCK_IN
);
if
(
ret
<
0
)
if
(
ret
<
0
)
...
...
sound/soc/sh/rcar/core.c
View file @
a93202fa
...
@@ -1033,14 +1033,13 @@ static int __rsnd_kctrl_new(struct rsnd_mod *mod,
...
@@ -1033,14 +1033,13 @@ static int __rsnd_kctrl_new(struct rsnd_mod *mod,
void
(
*
update
)(
struct
rsnd_dai_stream
*
io
,
void
(
*
update
)(
struct
rsnd_dai_stream
*
io
,
struct
rsnd_mod
*
mod
))
struct
rsnd_mod
*
mod
))
{
{
struct
snd_soc_card
*
soc_card
=
rtd
->
card
;
struct
snd_card
*
card
=
rtd
->
card
->
snd_card
;
struct
snd_card
*
card
=
rtd
->
card
->
snd_card
;
struct
snd_kcontrol
*
kctrl
;
struct
snd_kcontrol
*
kctrl
;
struct
snd_kcontrol_new
knew
=
{
struct
snd_kcontrol_new
knew
=
{
.
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
,
.
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
,
.
name
=
name
,
.
name
=
name
,
.
info
=
rsnd_kctrl_info
,
.
info
=
rsnd_kctrl_info
,
.
index
=
rtd
-
soc_card
->
rtd
,
.
index
=
rtd
->
num
,
.
get
=
rsnd_kctrl_get
,
.
get
=
rsnd_kctrl_get
,
.
put
=
rsnd_kctrl_put
,
.
put
=
rsnd_kctrl_put
,
.
private_value
=
(
unsigned
long
)
cfg
,
.
private_value
=
(
unsigned
long
)
cfg
,
...
...
sound/soc/sh/rcar/rsrc-card.c
View file @
a93202fa
...
@@ -75,7 +75,7 @@ static int rsrc_card_startup(struct snd_pcm_substream *substream)
...
@@ -75,7 +75,7 @@ static int rsrc_card_startup(struct snd_pcm_substream *substream)
struct
snd_soc_pcm_runtime
*
rtd
=
substream
->
private_data
;
struct
snd_soc_pcm_runtime
*
rtd
=
substream
->
private_data
;
struct
rsrc_card_priv
*
priv
=
snd_soc_card_get_drvdata
(
rtd
->
card
);
struct
rsrc_card_priv
*
priv
=
snd_soc_card_get_drvdata
(
rtd
->
card
);
struct
rsrc_card_dai
*
dai_props
=
struct
rsrc_card_dai
*
dai_props
=
rsrc_priv_to_props
(
priv
,
rtd
-
rtd
->
card
->
rtd
);
rsrc_priv_to_props
(
priv
,
rtd
->
num
);
return
clk_prepare_enable
(
dai_props
->
clk
);
return
clk_prepare_enable
(
dai_props
->
clk
);
}
}
...
@@ -85,7 +85,7 @@ static void rsrc_card_shutdown(struct snd_pcm_substream *substream)
...
@@ -85,7 +85,7 @@ static void rsrc_card_shutdown(struct snd_pcm_substream *substream)
struct
snd_soc_pcm_runtime
*
rtd
=
substream
->
private_data
;
struct
snd_soc_pcm_runtime
*
rtd
=
substream
->
private_data
;
struct
rsrc_card_priv
*
priv
=
snd_soc_card_get_drvdata
(
rtd
->
card
);
struct
rsrc_card_priv
*
priv
=
snd_soc_card_get_drvdata
(
rtd
->
card
);
struct
rsrc_card_dai
*
dai_props
=
struct
rsrc_card_dai
*
dai_props
=
rsrc_priv_to_props
(
priv
,
rtd
-
rtd
->
card
->
rtd
);
rsrc_priv_to_props
(
priv
,
rtd
->
num
);
clk_disable_unprepare
(
dai_props
->
clk
);
clk_disable_unprepare
(
dai_props
->
clk
);
}
}
...
@@ -101,7 +101,7 @@ static int rsrc_card_dai_init(struct snd_soc_pcm_runtime *rtd)
...
@@ -101,7 +101,7 @@ static int rsrc_card_dai_init(struct snd_soc_pcm_runtime *rtd)
struct
snd_soc_dai
*
dai
;
struct
snd_soc_dai
*
dai
;
struct
snd_soc_dai_link
*
dai_link
;
struct
snd_soc_dai_link
*
dai_link
;
struct
rsrc_card_dai
*
dai_props
;
struct
rsrc_card_dai
*
dai_props
;
int
num
=
rtd
-
rtd
->
card
->
rtd
;
int
num
=
rtd
->
num
;
int
ret
;
int
ret
;
dai_link
=
rsrc_priv_to_link
(
priv
,
num
);
dai_link
=
rsrc_priv_to_link
(
priv
,
num
);
...
...
sound/soc/soc-core.c
View file @
a93202fa
This diff is collapsed.
Click to expand it.
sound/soc/soc-dapm.c
View file @
a93202fa
...
@@ -3905,13 +3905,10 @@ static void soc_dapm_dai_stream_event(struct snd_soc_dai *dai, int stream,
...
@@ -3905,13 +3905,10 @@ static void soc_dapm_dai_stream_event(struct snd_soc_dai *dai, int stream,
void
snd_soc_dapm_connect_dai_link_widgets
(
struct
snd_soc_card
*
card
)
void
snd_soc_dapm_connect_dai_link_widgets
(
struct
snd_soc_card
*
card
)
{
{
struct
snd_soc_pcm_runtime
*
rtd
=
card
->
rtd
;
struct
snd_soc_pcm_runtime
*
rtd
;
int
i
;
/* for each BE DAI link... */
/* for each BE DAI link... */
for
(
i
=
0
;
i
<
card
->
num_rtd
;
i
++
)
{
list_for_each_entry
(
rtd
,
&
card
->
rtd_list
,
list
)
{
rtd
=
&
card
->
rtd
[
i
];
/*
/*
* dynamic FE links have no fixed DAI mapping.
* dynamic FE links have no fixed DAI mapping.
* CODEC<->CODEC links have no direct connection.
* CODEC<->CODEC links have no direct connection.
...
...
sound/soc/soc-pcm.c
View file @
a93202fa
...
@@ -1213,11 +1213,10 @@ static struct snd_soc_pcm_runtime *dpcm_get_be(struct snd_soc_card *card,
...
@@ -1213,11 +1213,10 @@ static struct snd_soc_pcm_runtime *dpcm_get_be(struct snd_soc_card *card,
struct
snd_soc_dapm_widget
*
widget
,
int
stream
)
struct
snd_soc_dapm_widget
*
widget
,
int
stream
)
{
{
struct
snd_soc_pcm_runtime
*
be
;
struct
snd_soc_pcm_runtime
*
be
;
int
i
,
j
;
int
i
;
if
(
stream
==
SNDRV_PCM_STREAM_PLAYBACK
)
{
if
(
stream
==
SNDRV_PCM_STREAM_PLAYBACK
)
{
for
(
i
=
0
;
i
<
card
->
num_links
;
i
++
)
{
list_for_each_entry
(
be
,
&
card
->
rtd_list
,
list
)
{
be
=
&
card
->
rtd
[
i
];
if
(
!
be
->
dai_link
->
no_pcm
)
if
(
!
be
->
dai_link
->
no_pcm
)
continue
;
continue
;
...
@@ -1225,16 +1224,15 @@ static struct snd_soc_pcm_runtime *dpcm_get_be(struct snd_soc_card *card,
...
@@ -1225,16 +1224,15 @@ static struct snd_soc_pcm_runtime *dpcm_get_be(struct snd_soc_card *card,
if
(
be
->
cpu_dai
->
playback_widget
==
widget
)
if
(
be
->
cpu_dai
->
playback_widget
==
widget
)
return
be
;
return
be
;
for
(
j
=
0
;
j
<
be
->
num_codecs
;
j
++
)
{
for
(
i
=
0
;
i
<
be
->
num_codecs
;
i
++
)
{
struct
snd_soc_dai
*
dai
=
be
->
codec_dais
[
j
];
struct
snd_soc_dai
*
dai
=
be
->
codec_dais
[
i
];
if
(
dai
->
playback_widget
==
widget
)
if
(
dai
->
playback_widget
==
widget
)
return
be
;
return
be
;
}
}
}
}
}
else
{
}
else
{
for
(
i
=
0
;
i
<
card
->
num_links
;
i
++
)
{
list_for_each_entry
(
be
,
&
card
->
rtd_list
,
list
)
{
be
=
&
card
->
rtd
[
i
];
if
(
!
be
->
dai_link
->
no_pcm
)
if
(
!
be
->
dai_link
->
no_pcm
)
continue
;
continue
;
...
@@ -1242,8 +1240,8 @@ static struct snd_soc_pcm_runtime *dpcm_get_be(struct snd_soc_card *card,
...
@@ -1242,8 +1240,8 @@ static struct snd_soc_pcm_runtime *dpcm_get_be(struct snd_soc_card *card,
if
(
be
->
cpu_dai
->
capture_widget
==
widget
)
if
(
be
->
cpu_dai
->
capture_widget
==
widget
)
return
be
;
return
be
;
for
(
j
=
0
;
j
<
be
->
num_codecs
;
j
++
)
{
for
(
i
=
0
;
i
<
be
->
num_codecs
;
i
++
)
{
struct
snd_soc_dai
*
dai
=
be
->
codec_dais
[
j
];
struct
snd_soc_dai
*
dai
=
be
->
codec_dais
[
i
];
if
(
dai
->
capture_widget
==
widget
)
if
(
dai
->
capture_widget
==
widget
)
return
be
;
return
be
;
}
}
...
@@ -2343,12 +2341,12 @@ static int dpcm_run_old_update(struct snd_soc_pcm_runtime *fe, int stream)
...
@@ -2343,12 +2341,12 @@ static int dpcm_run_old_update(struct snd_soc_pcm_runtime *fe, int stream)
*/
*/
int
soc_dpcm_runtime_update
(
struct
snd_soc_card
*
card
)
int
soc_dpcm_runtime_update
(
struct
snd_soc_card
*
card
)
{
{
int
i
,
old
,
new
,
paths
;
struct
snd_soc_pcm_runtime
*
fe
;
int
old
,
new
,
paths
;
mutex_lock_nested
(
&
card
->
mutex
,
SND_SOC_CARD_CLASS_RUNTIME
);
mutex_lock_nested
(
&
card
->
mutex
,
SND_SOC_CARD_CLASS_RUNTIME
);
for
(
i
=
0
;
i
<
card
->
num_rtd
;
i
++
)
{
list_for_each_entry
(
fe
,
&
card
->
rtd_list
,
list
)
{
struct
snd_soc_dapm_widget_list
*
list
;
struct
snd_soc_dapm_widget_list
*
list
;
struct
snd_soc_pcm_runtime
*
fe
=
&
card
->
rtd
[
i
];
/* make sure link is FE */
/* make sure link is FE */
if
(
!
fe
->
dai_link
->
dynamic
)
if
(
!
fe
->
dai_link
->
dynamic
)
...
...
sound/soc/tegra/tegra_wm8903.c
View file @
a93202fa
...
@@ -199,7 +199,8 @@ static int tegra_wm8903_init(struct snd_soc_pcm_runtime *rtd)
...
@@ -199,7 +199,8 @@ static int tegra_wm8903_init(struct snd_soc_pcm_runtime *rtd)
static
int
tegra_wm8903_remove
(
struct
snd_soc_card
*
card
)
static
int
tegra_wm8903_remove
(
struct
snd_soc_card
*
card
)
{
{
struct
snd_soc_pcm_runtime
*
rtd
=
&
(
card
->
rtd
[
0
]);
struct
snd_soc_pcm_runtime
*
rtd
=
snd_soc_get_pcm_runtime
(
card
,
card
->
dai_link
[
0
].
name
);
struct
snd_soc_dai
*
codec_dai
=
rtd
->
codec_dai
;
struct
snd_soc_dai
*
codec_dai
=
rtd
->
codec_dai
;
struct
snd_soc_codec
*
codec
=
codec_dai
->
codec
;
struct
snd_soc_codec
*
codec
=
codec_dai
->
codec
;
struct
tegra_wm8903
*
machine
=
snd_soc_card_get_drvdata
(
card
);
struct
tegra_wm8903
*
machine
=
snd_soc_card_get_drvdata
(
card
);
...
...
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