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
994f2f9e
Commit
994f2f9e
authored
Dec 02, 2012
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/topic/da9055' into asoc-next
parents
5d1aab96
5619d76d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
13 deletions
+30
-13
sound/soc/codecs/da9055.c
sound/soc/codecs/da9055.c
+30
-13
No files found.
sound/soc/codecs/da9055.c
View file @
994f2f9e
...
...
@@ -173,6 +173,7 @@
#define DA9055_AIF_FORMAT_I2S_MODE (0 << 0)
#define DA9055_AIF_FORMAT_LEFT_J (1 << 0)
#define DA9055_AIF_FORMAT_RIGHT_J (2 << 0)
#define DA9055_AIF_FORMAT_DSP (3 << 0)
#define DA9055_AIF_WORD_S16_LE (0 << 2)
#define DA9055_AIF_WORD_S20_3LE (1 << 2)
#define DA9055_AIF_WORD_S24_LE (2 << 2)
...
...
@@ -752,6 +753,17 @@ static const struct snd_kcontrol_new da9055_dapm_mixoutr_controls[] = {
6
,
1
,
0
),
};
/* Headphone Output Enable */
static
const
struct
snd_kcontrol_new
da9055_dapm_hp_l_control
=
SOC_DAPM_SINGLE
(
"Switch"
,
DA9055_HP_L_CTRL
,
3
,
1
,
0
);
static
const
struct
snd_kcontrol_new
da9055_dapm_hp_r_control
=
SOC_DAPM_SINGLE
(
"Switch"
,
DA9055_HP_R_CTRL
,
3
,
1
,
0
);
/* Lineout Output Enable */
static
const
struct
snd_kcontrol_new
da9055_dapm_lineout_control
=
SOC_DAPM_SINGLE
(
"Switch"
,
DA9055_LINE_CTRL
,
3
,
1
,
0
);
/* DAPM widgets */
static
const
struct
snd_soc_dapm_widget
da9055_dapm_widgets
[]
=
{
/* Input Side */
...
...
@@ -816,6 +828,14 @@ static const struct snd_soc_dapm_widget da9055_dapm_widgets[] = {
&
da9055_dapm_mixoutr_controls
[
0
],
ARRAY_SIZE
(
da9055_dapm_mixoutr_controls
)),
/* Output Enable Switches */
SND_SOC_DAPM_SWITCH
(
"Headphone Left Enable"
,
SND_SOC_NOPM
,
0
,
0
,
&
da9055_dapm_hp_l_control
),
SND_SOC_DAPM_SWITCH
(
"Headphone Right Enable"
,
SND_SOC_NOPM
,
0
,
0
,
&
da9055_dapm_hp_r_control
),
SND_SOC_DAPM_SWITCH
(
"Lineout Enable"
,
SND_SOC_NOPM
,
0
,
0
,
&
da9055_dapm_lineout_control
),
/* Output PGAs */
SND_SOC_DAPM_PGA
(
"MIXOUT Left"
,
DA9055_MIXOUT_L_CTRL
,
7
,
0
,
NULL
,
0
),
SND_SOC_DAPM_PGA
(
"MIXOUT Right"
,
DA9055_MIXOUT_R_CTRL
,
7
,
0
,
NULL
,
0
),
...
...
@@ -901,17 +921,20 @@ static const struct snd_soc_dapm_route da9055_audio_map[] = {
{
"Out Mixer Right"
,
"DAC Right Switch"
,
"DAC Right"
},
{
"MIXOUT Left"
,
NULL
,
"Out Mixer Left"
},
{
"Headphone Left"
,
NULL
,
"MIXOUT Left"
},
{
"Headphone Left Enable"
,
"Switch"
,
"MIXOUT Left"
},
{
"Headphone Left"
,
NULL
,
"Headphone Left Enable"
},
{
"Headphone Left"
,
NULL
,
"Charge Pump"
},
{
"HPL"
,
NULL
,
"Headphone Left"
},
{
"MIXOUT Right"
,
NULL
,
"Out Mixer Right"
},
{
"Headphone Right"
,
NULL
,
"MIXOUT Right"
},
{
"Headphone Right Enable"
,
"Switch"
,
"MIXOUT Right"
},
{
"Headphone Right"
,
NULL
,
"Headphone Right Enable"
},
{
"Headphone Right"
,
NULL
,
"Charge Pump"
},
{
"HPR"
,
NULL
,
"Headphone Right"
},
{
"MIXOUT Right"
,
NULL
,
"Out Mixer Right"
},
{
"Lineout"
,
NULL
,
"MIXOUT Right"
},
{
"Lineout Enable"
,
"Switch"
,
"MIXOUT Right"
},
{
"Lineout"
,
NULL
,
"Lineout Enable"
},
{
"LINE"
,
NULL
,
"Lineout"
},
};
...
...
@@ -1175,6 +1198,9 @@ static int da9055_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
case
SND_SOC_DAIFMT_RIGHT_J
:
aif_ctrl
=
DA9055_AIF_FORMAT_RIGHT_J
;
break
;
case
SND_SOC_DAIFMT_DSP_A
:
aif_ctrl
=
DA9055_AIF_FORMAT_DSP
;
break
;
default:
return
-
EINVAL
;
}
...
...
@@ -1390,8 +1416,7 @@ static int da9055_probe(struct snd_soc_codec *codec)
DA9055_GAIN_RAMPING_EN
,
DA9055_GAIN_RAMPING_EN
);
/*
* There are two separate control bits for input and output mixers as
* well as headphone and line outs.
* There are two separate control bits for input and output mixers.
* One to enable corresponding amplifier and other to enable its
* output. As amplifier bits are related to power control, they are
* being managed by DAPM while other (non power related) bits are
...
...
@@ -1407,14 +1432,6 @@ static int da9055_probe(struct snd_soc_codec *codec)
snd_soc_update_bits
(
codec
,
DA9055_MIXOUT_R_CTRL
,
DA9055_MIXOUT_R_MIX_EN
,
DA9055_MIXOUT_R_MIX_EN
);
snd_soc_update_bits
(
codec
,
DA9055_HP_L_CTRL
,
DA9055_HP_L_AMP_OE
,
DA9055_HP_L_AMP_OE
);
snd_soc_update_bits
(
codec
,
DA9055_HP_R_CTRL
,
DA9055_HP_R_AMP_OE
,
DA9055_HP_R_AMP_OE
);
snd_soc_update_bits
(
codec
,
DA9055_LINE_CTRL
,
DA9055_LINE_AMP_OE
,
DA9055_LINE_AMP_OE
);
/* Set this as per your system configuration */
snd_soc_write
(
codec
,
DA9055_PLL_CTRL
,
DA9055_PLL_INDIV_10_20_MHZ
);
...
...
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