Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
291ce18c
Commit
291ce18c
authored
Apr 22, 2009
by
Mark Brown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ASoC: Implement WM8903 digital sidetone support
Signed-off-by:
Mark Brown
<
broonie@opensource.wolfsonmicro.com
>
parent
727fb909
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
0 deletions
+30
-0
sound/soc/codecs/wm8903.c
sound/soc/codecs/wm8903.c
+30
-0
No files found.
sound/soc/codecs/wm8903.c
View file @
291ce18c
...
@@ -533,6 +533,7 @@ static int wm8903_class_w_put(struct snd_kcontrol *kcontrol,
...
@@ -533,6 +533,7 @@ static int wm8903_class_w_put(struct snd_kcontrol *kcontrol,
/* ALSA can only do steps of .01dB */
/* ALSA can only do steps of .01dB */
static
const
DECLARE_TLV_DB_SCALE
(
digital_tlv
,
-
7200
,
75
,
1
);
static
const
DECLARE_TLV_DB_SCALE
(
digital_tlv
,
-
7200
,
75
,
1
);
static
const
DECLARE_TLV_DB_SCALE
(
digital_sidetone_tlv
,
-
3600
,
300
,
0
);
static
const
DECLARE_TLV_DB_SCALE
(
out_tlv
,
-
5700
,
100
,
0
);
static
const
DECLARE_TLV_DB_SCALE
(
out_tlv
,
-
5700
,
100
,
0
);
static
const
DECLARE_TLV_DB_SCALE
(
drc_tlv_thresh
,
0
,
75
,
0
);
static
const
DECLARE_TLV_DB_SCALE
(
drc_tlv_thresh
,
0
,
75
,
0
);
...
@@ -651,6 +652,16 @@ static const struct soc_enum rinput_inv_enum =
...
@@ -651,6 +652,16 @@ static const struct soc_enum rinput_inv_enum =
SOC_ENUM_SINGLE
(
WM8903_ANALOGUE_RIGHT_INPUT_1
,
4
,
3
,
rinput_mux_text
);
SOC_ENUM_SINGLE
(
WM8903_ANALOGUE_RIGHT_INPUT_1
,
4
,
3
,
rinput_mux_text
);
static
const
char
*
sidetone_text
[]
=
{
"None"
,
"Left"
,
"Right"
};
static
const
struct
soc_enum
lsidetone_enum
=
SOC_ENUM_SINGLE
(
WM8903_DAC_DIGITAL_0
,
2
,
3
,
sidetone_text
);
static
const
struct
soc_enum
rsidetone_enum
=
SOC_ENUM_SINGLE
(
WM8903_DAC_DIGITAL_0
,
0
,
3
,
sidetone_text
);
static
const
struct
snd_kcontrol_new
wm8903_snd_controls
[]
=
{
static
const
struct
snd_kcontrol_new
wm8903_snd_controls
[]
=
{
/* Input PGAs - No TLV since the scale depends on PGA mode */
/* Input PGAs - No TLV since the scale depends on PGA mode */
...
@@ -694,6 +705,9 @@ SOC_DOUBLE_R_TLV("Digital Capture Volume", WM8903_ADC_DIGITAL_VOLUME_LEFT,
...
@@ -694,6 +705,9 @@ SOC_DOUBLE_R_TLV("Digital Capture Volume", WM8903_ADC_DIGITAL_VOLUME_LEFT,
SOC_ENUM
(
"ADC Companding Mode"
,
adc_companding
),
SOC_ENUM
(
"ADC Companding Mode"
,
adc_companding
),
SOC_SINGLE
(
"ADC Companding Switch"
,
WM8903_AUDIO_INTERFACE_0
,
3
,
1
,
0
),
SOC_SINGLE
(
"ADC Companding Switch"
,
WM8903_AUDIO_INTERFACE_0
,
3
,
1
,
0
),
SOC_DOUBLE_TLV
(
"Digital Sidetone Volume"
,
WM8903_DAC_DIGITAL_0
,
4
,
8
,
12
,
0
,
digital_sidetone_tlv
),
/* DAC */
/* DAC */
SOC_DOUBLE_R_TLV
(
"Digital Playback Volume"
,
WM8903_DAC_DIGITAL_VOLUME_LEFT
,
SOC_DOUBLE_R_TLV
(
"Digital Playback Volume"
,
WM8903_DAC_DIGITAL_VOLUME_LEFT
,
WM8903_DAC_DIGITAL_VOLUME_RIGHT
,
1
,
120
,
0
,
digital_tlv
),
WM8903_DAC_DIGITAL_VOLUME_RIGHT
,
1
,
120
,
0
,
digital_tlv
),
...
@@ -756,6 +770,12 @@ static const struct snd_kcontrol_new rinput_mux =
...
@@ -756,6 +770,12 @@ static const struct snd_kcontrol_new rinput_mux =
static
const
struct
snd_kcontrol_new
rinput_inv_mux
=
static
const
struct
snd_kcontrol_new
rinput_inv_mux
=
SOC_DAPM_ENUM
(
"Right Inverting Input Mux"
,
rinput_inv_enum
);
SOC_DAPM_ENUM
(
"Right Inverting Input Mux"
,
rinput_inv_enum
);
static
const
struct
snd_kcontrol_new
lsidetone_mux
=
SOC_DAPM_ENUM
(
"DACL Sidetone Mux"
,
lsidetone_enum
);
static
const
struct
snd_kcontrol_new
rsidetone_mux
=
SOC_DAPM_ENUM
(
"DACR Sidetone Mux"
,
rsidetone_enum
);
static
const
struct
snd_kcontrol_new
left_output_mixer
[]
=
{
static
const
struct
snd_kcontrol_new
left_output_mixer
[]
=
{
SOC_DAPM_SINGLE
(
"DACL Switch"
,
WM8903_ANALOGUE_LEFT_MIX_0
,
3
,
1
,
0
),
SOC_DAPM_SINGLE
(
"DACL Switch"
,
WM8903_ANALOGUE_LEFT_MIX_0
,
3
,
1
,
0
),
SOC_DAPM_SINGLE
(
"DACR Switch"
,
WM8903_ANALOGUE_LEFT_MIX_0
,
2
,
1
,
0
),
SOC_DAPM_SINGLE
(
"DACR Switch"
,
WM8903_ANALOGUE_LEFT_MIX_0
,
2
,
1
,
0
),
...
@@ -822,6 +842,9 @@ SND_SOC_DAPM_PGA("Right Input PGA", WM8903_POWER_MANAGEMENT_0, 0, 0, NULL, 0),
...
@@ -822,6 +842,9 @@ SND_SOC_DAPM_PGA("Right Input PGA", WM8903_POWER_MANAGEMENT_0, 0, 0, NULL, 0),
SND_SOC_DAPM_ADC
(
"ADCL"
,
"Left HiFi Capture"
,
WM8903_POWER_MANAGEMENT_6
,
1
,
0
),
SND_SOC_DAPM_ADC
(
"ADCL"
,
"Left HiFi Capture"
,
WM8903_POWER_MANAGEMENT_6
,
1
,
0
),
SND_SOC_DAPM_ADC
(
"ADCR"
,
"Right HiFi Capture"
,
WM8903_POWER_MANAGEMENT_6
,
0
,
0
),
SND_SOC_DAPM_ADC
(
"ADCR"
,
"Right HiFi Capture"
,
WM8903_POWER_MANAGEMENT_6
,
0
,
0
),
SND_SOC_DAPM_MUX
(
"DACL Sidetone"
,
SND_SOC_NOPM
,
0
,
0
,
&
lsidetone_mux
),
SND_SOC_DAPM_MUX
(
"DACR Sidetone"
,
SND_SOC_NOPM
,
0
,
0
,
&
rsidetone_mux
),
SND_SOC_DAPM_DAC
(
"DACL"
,
"Left Playback"
,
WM8903_POWER_MANAGEMENT_6
,
3
,
0
),
SND_SOC_DAPM_DAC
(
"DACL"
,
"Left Playback"
,
WM8903_POWER_MANAGEMENT_6
,
3
,
0
),
SND_SOC_DAPM_DAC
(
"DACR"
,
"Right Playback"
,
WM8903_POWER_MANAGEMENT_6
,
2
,
0
),
SND_SOC_DAPM_DAC
(
"DACR"
,
"Right Playback"
,
WM8903_POWER_MANAGEMENT_6
,
2
,
0
),
...
@@ -910,7 +933,14 @@ static const struct snd_soc_dapm_route intercon[] = {
...
@@ -910,7 +933,14 @@ static const struct snd_soc_dapm_route intercon[] = {
{
"ADCR"
,
NULL
,
"Right Input PGA"
},
{
"ADCR"
,
NULL
,
"Right Input PGA"
},
{
"ADCR"
,
NULL
,
"CLK_DSP"
},
{
"ADCR"
,
NULL
,
"CLK_DSP"
},
{
"DACL Sidetone"
,
"Left"
,
"ADCL"
},
{
"DACL Sidetone"
,
"Right"
,
"ADCR"
},
{
"DACR Sidetone"
,
"Left"
,
"ADCL"
},
{
"DACR Sidetone"
,
"Right"
,
"ADCR"
},
{
"DACL"
,
NULL
,
"DACL Sidetone"
},
{
"DACL"
,
NULL
,
"CLK_DSP"
},
{
"DACL"
,
NULL
,
"CLK_DSP"
},
{
"DACR"
,
NULL
,
"DACR Sidetone"
},
{
"DACR"
,
NULL
,
"CLK_DSP"
},
{
"DACR"
,
NULL
,
"CLK_DSP"
},
{
"Left Output Mixer"
,
"Left Bypass Switch"
,
"Left Input PGA"
},
{
"Left Output Mixer"
,
"Left Bypass Switch"
,
"Left Input PGA"
},
...
...
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