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
63ddcd7b
Commit
63ddcd7b
authored
Feb 11, 2013
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/topic/wm8985' into asoc-next
parents
555df91a
5f3d25c0
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
23 deletions
+20
-23
sound/soc/codecs/wm8985.c
sound/soc/codecs/wm8985.c
+20
-23
No files found.
sound/soc/codecs/wm8985.c
View file @
63ddcd7b
...
...
@@ -830,33 +830,30 @@ static int wm8985_set_pll(struct snd_soc_dai *dai, int pll_id,
struct
pll_div
pll_div
;
codec
=
dai
->
codec
;
if
(
freq_in
&&
freq_out
)
{
if
(
!
freq_in
||
!
freq_out
)
{
/* disable the PLL */
snd_soc_update_bits
(
codec
,
WM8985_POWER_MANAGEMENT_1
,
WM8985_PLLEN_MASK
,
0
);
}
else
{
ret
=
pll_factors
(
&
pll_div
,
freq_out
*
4
*
2
,
freq_in
);
if
(
ret
)
return
ret
;
}
/* disable the PLL before reprogramming it */
snd_soc_update_bits
(
codec
,
WM8985_POWER_MANAGEMENT_1
,
WM8985_PLLEN_MASK
,
0
);
if
(
!
freq_in
||
!
freq_out
)
return
0
;
/* set PLLN and PRESCALE */
snd_soc_write
(
codec
,
WM8985_PLL_N
,
(
pll_div
.
div2
<<
WM8985_PLL_PRESCALE_SHIFT
)
|
pll_div
.
n
);
/* set PLLK */
snd_soc_write
(
codec
,
WM8985_PLL_K_3
,
pll_div
.
k
&
0x1ff
);
snd_soc_write
(
codec
,
WM8985_PLL_K_2
,
(
pll_div
.
k
>>
9
)
&
0x1ff
);
snd_soc_write
(
codec
,
WM8985_PLL_K_1
,
(
pll_div
.
k
>>
18
));
/* set the source of the clock to be the PLL */
snd_soc_update_bits
(
codec
,
WM8985_CLOCK_GEN_CONTROL
,
WM8985_CLKSEL_MASK
,
WM8985_CLKSEL
);
/* enable the PLL */
snd_soc_update_bits
(
codec
,
WM8985_POWER_MANAGEMENT_1
,
WM8985_PLLEN_MASK
,
WM8985_PLLEN
);
/* set PLLN and PRESCALE */
snd_soc_write
(
codec
,
WM8985_PLL_N
,
(
pll_div
.
div2
<<
WM8985_PLL_PRESCALE_SHIFT
)
|
pll_div
.
n
);
/* set PLLK */
snd_soc_write
(
codec
,
WM8985_PLL_K_3
,
pll_div
.
k
&
0x1ff
);
snd_soc_write
(
codec
,
WM8985_PLL_K_2
,
(
pll_div
.
k
>>
9
)
&
0x1ff
);
snd_soc_write
(
codec
,
WM8985_PLL_K_1
,
(
pll_div
.
k
>>
18
));
/* set the source of the clock to be the PLL */
snd_soc_update_bits
(
codec
,
WM8985_CLOCK_GEN_CONTROL
,
WM8985_CLKSEL_MASK
,
WM8985_CLKSEL
);
/* enable the PLL */
snd_soc_update_bits
(
codec
,
WM8985_POWER_MANAGEMENT_1
,
WM8985_PLLEN_MASK
,
WM8985_PLLEN
);
}
return
0
;
}
...
...
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