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
1921bab2
Commit
1921bab2
authored
Aug 11, 2009
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge commit '
a5479e38
' into for-2.6.32
parents
17244c24
a5479e38
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
33 additions
and
15 deletions
+33
-15
include/sound/soc-dai.h
include/sound/soc-dai.h
+3
-2
sound/soc/codecs/wm9081.c
sound/soc/codecs/wm9081.c
+3
-2
sound/soc/pxa/magician.c
sound/soc/pxa/magician.c
+1
-1
sound/soc/pxa/pxa-ssp.c
sound/soc/pxa/pxa-ssp.c
+20
-7
sound/soc/soc-core.c
sound/soc/soc-core.c
+6
-3
No files found.
include/sound/soc-dai.h
View file @
1921bab2
...
@@ -112,7 +112,7 @@ int snd_soc_dai_set_pll(struct snd_soc_dai *dai,
...
@@ -112,7 +112,7 @@ int snd_soc_dai_set_pll(struct snd_soc_dai *dai,
int
snd_soc_dai_set_fmt
(
struct
snd_soc_dai
*
dai
,
unsigned
int
fmt
);
int
snd_soc_dai_set_fmt
(
struct
snd_soc_dai
*
dai
,
unsigned
int
fmt
);
int
snd_soc_dai_set_tdm_slot
(
struct
snd_soc_dai
*
dai
,
int
snd_soc_dai_set_tdm_slot
(
struct
snd_soc_dai
*
dai
,
unsigned
int
mask
,
int
slots
);
unsigned
int
tx_mask
,
unsigned
int
rx_mask
,
int
slots
,
int
slot_width
);
int
snd_soc_dai_set_tristate
(
struct
snd_soc_dai
*
dai
,
int
tristate
);
int
snd_soc_dai_set_tristate
(
struct
snd_soc_dai
*
dai
,
int
tristate
);
...
@@ -146,7 +146,8 @@ struct snd_soc_dai_ops {
...
@@ -146,7 +146,8 @@ struct snd_soc_dai_ops {
*/
*/
int
(
*
set_fmt
)(
struct
snd_soc_dai
*
dai
,
unsigned
int
fmt
);
int
(
*
set_fmt
)(
struct
snd_soc_dai
*
dai
,
unsigned
int
fmt
);
int
(
*
set_tdm_slot
)(
struct
snd_soc_dai
*
dai
,
int
(
*
set_tdm_slot
)(
struct
snd_soc_dai
*
dai
,
unsigned
int
mask
,
int
slots
);
unsigned
int
tx_mask
,
unsigned
int
rx_mask
,
int
slots
,
int
slot_width
);
int
(
*
set_tristate
)(
struct
snd_soc_dai
*
dai
,
int
tristate
);
int
(
*
set_tristate
)(
struct
snd_soc_dai
*
dai
,
int
tristate
);
/*
/*
...
...
sound/soc/codecs/wm9081.c
View file @
1921bab2
...
@@ -1149,8 +1149,9 @@ static int wm9081_set_sysclk(struct snd_soc_dai *codec_dai,
...
@@ -1149,8 +1149,9 @@ static int wm9081_set_sysclk(struct snd_soc_dai *codec_dai,
return
0
;
return
0
;
}
}
/* FIXME: Needs to handle slot_width */
static
int
wm9081_set_tdm_slot
(
struct
snd_soc_dai
*
dai
,
static
int
wm9081_set_tdm_slot
(
struct
snd_soc_dai
*
dai
,
unsigned
int
mask
,
int
slots
)
unsigned
int
tx_mask
,
unsigned
int
rx_mask
,
int
slots
,
int
slot_width
)
{
{
struct
snd_soc_codec
*
codec
=
dai
->
codec
;
struct
snd_soc_codec
*
codec
=
dai
->
codec
;
unsigned
int
aif1
=
snd_soc_read
(
codec
,
WM9081_AUDIO_INTERFACE_1
);
unsigned
int
aif1
=
snd_soc_read
(
codec
,
WM9081_AUDIO_INTERFACE_1
);
...
@@ -1162,7 +1163,7 @@ static int wm9081_set_tdm_slot(struct snd_soc_dai *dai,
...
@@ -1162,7 +1163,7 @@ static int wm9081_set_tdm_slot(struct snd_soc_dai *dai,
aif1
|=
(
slots
-
1
)
<<
WM9081_AIFDAC_TDM_MODE_SHIFT
;
aif1
|=
(
slots
-
1
)
<<
WM9081_AIFDAC_TDM_MODE_SHIFT
;
switch
(
mask
)
{
switch
(
rx_
mask
)
{
case
1
:
case
1
:
break
;
break
;
case
2
:
case
2
:
...
...
sound/soc/pxa/magician.c
View file @
1921bab2
...
@@ -190,7 +190,7 @@ static int magician_playback_hw_params(struct snd_pcm_substream *substream,
...
@@ -190,7 +190,7 @@ static int magician_playback_hw_params(struct snd_pcm_substream *substream,
if
(
ret
<
0
)
if
(
ret
<
0
)
return
ret
;
return
ret
;
ret
=
snd_soc_dai_set_tdm_slot
(
cpu_dai
,
1
,
1
);
ret
=
snd_soc_dai_set_tdm_slot
(
cpu_dai
,
1
,
0
,
1
,
width
);
if
(
ret
<
0
)
if
(
ret
<
0
)
return
ret
;
return
ret
;
...
...
sound/soc/pxa/pxa-ssp.c
View file @
1921bab2
...
@@ -375,21 +375,34 @@ static int pxa_ssp_set_dai_pll(struct snd_soc_dai *cpu_dai,
...
@@ -375,21 +375,34 @@ static int pxa_ssp_set_dai_pll(struct snd_soc_dai *cpu_dai,
* Set the active slots in TDM/Network mode
* Set the active slots in TDM/Network mode
*/
*/
static
int
pxa_ssp_set_dai_tdm_slot
(
struct
snd_soc_dai
*
cpu_dai
,
static
int
pxa_ssp_set_dai_tdm_slot
(
struct
snd_soc_dai
*
cpu_dai
,
unsigned
int
mask
,
int
slots
)
unsigned
int
tx_mask
,
unsigned
int
rx_mask
,
int
slots
,
int
slot_width
)
{
{
struct
ssp_priv
*
priv
=
cpu_dai
->
private_data
;
struct
ssp_priv
*
priv
=
cpu_dai
->
private_data
;
struct
ssp_device
*
ssp
=
priv
->
dev
.
ssp
;
struct
ssp_device
*
ssp
=
priv
->
dev
.
ssp
;
u32
sscr0
;
u32
sscr0
;
sscr0
=
ssp_read_reg
(
ssp
,
SSCR0
)
&
~
SSCR0_SlotsPerFrm
(
7
);
sscr0
=
ssp_read_reg
(
ssp
,
SSCR0
);
sscr0
&=
~
(
SSCR0_MOD
|
SSCR0_SlotsPerFrm
(
8
)
|
SSCR0_EDSS
|
SSCR0_DSS
);
/* set slot width */
if
(
slot_width
>
16
)
sscr0
|=
SSCR0_EDSS
|
SSCR0_DataSize
(
slot_width
-
16
);
else
sscr0
|=
SSCR0_DataSize
(
slot_width
);
if
(
slots
>
1
)
{
/* enable network mode */
sscr0
|=
SSCR0_MOD
;
/* set number of active slots */
/* set number of active slots */
sscr0
|=
SSCR0_SlotsPerFrm
(
slots
);
sscr0
|=
SSCR0_SlotsPerFrm
(
slots
);
ssp_write_reg
(
ssp
,
SSCR0
,
sscr0
);
/* set active slot mask */
/* set active slot mask */
ssp_write_reg
(
ssp
,
SSTSA
,
mask
);
ssp_write_reg
(
ssp
,
SSTSA
,
tx_mask
);
ssp_write_reg
(
ssp
,
SSRSA
,
mask
);
ssp_write_reg
(
ssp
,
SSRSA
,
rx_mask
);
}
ssp_write_reg
(
ssp
,
SSCR0
,
sscr0
);
return
0
;
return
0
;
}
}
...
...
sound/soc/soc-core.c
View file @
1921bab2
...
@@ -2223,17 +2223,20 @@ EXPORT_SYMBOL_GPL(snd_soc_dai_set_fmt);
...
@@ -2223,17 +2223,20 @@ EXPORT_SYMBOL_GPL(snd_soc_dai_set_fmt);
/**
/**
* snd_soc_dai_set_tdm_slot - configure DAI TDM.
* snd_soc_dai_set_tdm_slot - configure DAI TDM.
* @dai: DAI
* @dai: DAI
* @mask: DAI specific mask representing used slots.
* @tx_mask: bitmask representing active TX slots.
* @rx_mask: bitmask representing active RX slots.
* @slots: Number of slots in use.
* @slots: Number of slots in use.
* @slot_width: Width in bits for each slot.
*
*
* Configures a DAI for TDM operation. Both mask and slots are codec and DAI
* Configures a DAI for TDM operation. Both mask and slots are codec and DAI
* specific.
* specific.
*/
*/
int
snd_soc_dai_set_tdm_slot
(
struct
snd_soc_dai
*
dai
,
int
snd_soc_dai_set_tdm_slot
(
struct
snd_soc_dai
*
dai
,
unsigned
int
mask
,
int
slots
)
unsigned
int
tx_mask
,
unsigned
int
rx_mask
,
int
slots
,
int
slot_width
)
{
{
if
(
dai
->
ops
&&
dai
->
ops
->
set_tdm_slot
)
if
(
dai
->
ops
&&
dai
->
ops
->
set_tdm_slot
)
return
dai
->
ops
->
set_tdm_slot
(
dai
,
mask
,
slots
);
return
dai
->
ops
->
set_tdm_slot
(
dai
,
tx_mask
,
rx_mask
,
slots
,
slot_width
);
else
else
return
-
EINVAL
;
return
-
EINVAL
;
}
}
...
...
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