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
34cbe3a6
Commit
34cbe3a6
authored
May 02, 2011
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ALSA: hda - Constify fixup and other array data in patch_conexant.c
Signed-off-by:
Takashi Iwai
<
tiwai@suse.de
>
parent
c42d4782
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
95 additions
and
95 deletions
+95
-95
sound/pci/hda/patch_conexant.c
sound/pci/hda/patch_conexant.c
+95
-95
No files found.
sound/pci/hda/patch_conexant.c
View file @
34cbe3a6
...
...
@@ -57,7 +57,7 @@ struct pin_dac_pair {
struct
conexant_spec
{
struct
snd_kcontrol_new
*
mixers
[
5
];
const
struct
snd_kcontrol_new
*
mixers
[
5
];
int
num_mixers
;
hda_nid_t
vmaster_nid
;
...
...
@@ -81,7 +81,7 @@ struct conexant_spec {
/* capture */
unsigned
int
num_adc_nids
;
hda_nid_t
*
adc_nids
;
const
hda_nid_t
*
adc_nids
;
hda_nid_t
dig_in_nid
;
/* digital-in NID; optional */
unsigned
int
cur_adc_idx
;
...
...
@@ -91,7 +91,7 @@ struct conexant_spec {
/* capture source */
const
struct
hda_input_mux
*
input_mux
;
hda_nid_t
*
capsrc_nids
;
const
hda_nid_t
*
capsrc_nids
;
unsigned
int
cur_mux
[
3
];
/* channel model */
...
...
@@ -227,7 +227,7 @@ static int conexant_capture_pcm_cleanup(struct hda_pcm_stream *hinfo,
static
struct
hda_pcm_stream
conexant_pcm_analog_playback
=
{
static
const
struct
hda_pcm_stream
conexant_pcm_analog_playback
=
{
.
substreams
=
1
,
.
channels_min
=
2
,
.
channels_max
=
2
,
...
...
@@ -239,7 +239,7 @@ static struct hda_pcm_stream conexant_pcm_analog_playback = {
},
};
static
struct
hda_pcm_stream
conexant_pcm_analog_capture
=
{
static
const
struct
hda_pcm_stream
conexant_pcm_analog_capture
=
{
.
substreams
=
1
,
.
channels_min
=
2
,
.
channels_max
=
2
,
...
...
@@ -251,7 +251,7 @@ static struct hda_pcm_stream conexant_pcm_analog_capture = {
};
static
struct
hda_pcm_stream
conexant_pcm_digital_playback
=
{
static
const
struct
hda_pcm_stream
conexant_pcm_digital_playback
=
{
.
substreams
=
1
,
.
channels_min
=
2
,
.
channels_max
=
2
,
...
...
@@ -263,7 +263,7 @@ static struct hda_pcm_stream conexant_pcm_digital_playback = {
},
};
static
struct
hda_pcm_stream
conexant_pcm_digital_capture
=
{
static
const
struct
hda_pcm_stream
conexant_pcm_digital_capture
=
{
.
substreams
=
1
,
.
channels_min
=
2
,
.
channels_max
=
2
,
...
...
@@ -294,7 +294,7 @@ static int cx5051_capture_pcm_cleanup(struct hda_pcm_stream *hinfo,
return
0
;
}
static
struct
hda_pcm_stream
cx5051_pcm_analog_capture
=
{
static
const
struct
hda_pcm_stream
cx5051_pcm_analog_capture
=
{
.
substreams
=
1
,
.
channels_min
=
2
,
.
channels_max
=
2
,
...
...
@@ -433,7 +433,7 @@ static void conexant_free(struct hda_codec *codec)
kfree
(
codec
->
spec
);
}
static
struct
snd_kcontrol_new
cxt_capture_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt_capture_mixers
[]
=
{
{
.
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
,
.
name
=
"Capture Source"
,
...
...
@@ -446,7 +446,7 @@ static struct snd_kcontrol_new cxt_capture_mixers[] = {
#ifdef CONFIG_SND_HDA_INPUT_BEEP
/* additional beep mixers; the actual parameters are overwritten at build */
static
struct
snd_kcontrol_new
cxt_beep_mixer
[]
=
{
static
const
struct
snd_kcontrol_new
cxt_beep_mixer
[]
=
{
HDA_CODEC_VOLUME_MONO
(
"Beep Playback Volume"
,
0
,
1
,
0
,
HDA_OUTPUT
),
HDA_CODEC_MUTE_BEEP_MONO
(
"Beep Playback Switch"
,
0
,
1
,
0
,
HDA_OUTPUT
),
{
}
/* end */
...
...
@@ -521,7 +521,7 @@ static int conexant_build_controls(struct hda_codec *codec)
#ifdef CONFIG_SND_HDA_INPUT_BEEP
/* create beep controls if needed */
if
(
spec
->
beep_amp
)
{
struct
snd_kcontrol_new
*
knew
;
const
struct
snd_kcontrol_new
*
knew
;
for
(
knew
=
cxt_beep_mixer
;
knew
->
name
;
knew
++
)
{
struct
snd_kcontrol
*
kctl
;
kctl
=
snd_ctl_new1
(
knew
,
codec
);
...
...
@@ -546,7 +546,7 @@ static int conexant_suspend(struct hda_codec *codec, pm_message_t state)
}
#endif
static
struct
hda_codec_ops
conexant_patch_ops
=
{
static
const
struct
hda_codec_ops
conexant_patch_ops
=
{
.
build_controls
=
conexant_build_controls
,
.
build_pcms
=
conexant_build_pcms
,
.
init
=
conexant_init
,
...
...
@@ -662,16 +662,16 @@ static int conexant_ch_mode_put(struct snd_kcontrol *kcontrol,
/* Conexant 5045 specific */
static
hda_nid_t
cxt5045_dac_nids
[
1
]
=
{
0x19
};
static
hda_nid_t
cxt5045_adc_nids
[
1
]
=
{
0x1a
};
static
hda_nid_t
cxt5045_capsrc_nids
[
1
]
=
{
0x1a
};
static
const
hda_nid_t
cxt5045_dac_nids
[
1
]
=
{
0x19
};
static
const
hda_nid_t
cxt5045_adc_nids
[
1
]
=
{
0x1a
};
static
const
hda_nid_t
cxt5045_capsrc_nids
[
1
]
=
{
0x1a
};
#define CXT5045_SPDIF_OUT 0x18
static
struct
hda_channel_mode
cxt5045_modes
[
1
]
=
{
static
const
struct
hda_channel_mode
cxt5045_modes
[
1
]
=
{
{
2
,
NULL
},
};
static
struct
hda_input_mux
cxt5045_capture_source
=
{
static
const
struct
hda_input_mux
cxt5045_capture_source
=
{
.
num_items
=
2
,
.
items
=
{
{
"IntMic"
,
0x1
},
...
...
@@ -679,7 +679,7 @@ static struct hda_input_mux cxt5045_capture_source = {
}
};
static
struct
hda_input_mux
cxt5045_capture_source_benq
=
{
static
const
struct
hda_input_mux
cxt5045_capture_source_benq
=
{
.
num_items
=
5
,
.
items
=
{
{
"IntMic"
,
0x1
},
...
...
@@ -690,7 +690,7 @@ static struct hda_input_mux cxt5045_capture_source_benq = {
}
};
static
struct
hda_input_mux
cxt5045_capture_source_hp530
=
{
static
const
struct
hda_input_mux
cxt5045_capture_source_hp530
=
{
.
num_items
=
2
,
.
items
=
{
{
"ExtMic"
,
0x1
},
...
...
@@ -723,7 +723,7 @@ static int cxt5045_hp_master_sw_put(struct snd_kcontrol *kcontrol,
}
/* bind volumes of both NID 0x10 and 0x11 */
static
struct
hda_bind_ctls
cxt5045_hp_bind_master_vol
=
{
static
const
struct
hda_bind_ctls
cxt5045_hp_bind_master_vol
=
{
.
ops
=
&
snd_hda_bind_vol
,
.
values
=
{
HDA_COMPOSE_AMP_VAL
(
0x10
,
3
,
0
,
HDA_OUTPUT
),
...
...
@@ -735,12 +735,12 @@ static struct hda_bind_ctls cxt5045_hp_bind_master_vol = {
/* toggle input of built-in and mic jack appropriately */
static
void
cxt5045_hp_automic
(
struct
hda_codec
*
codec
)
{
static
struct
hda_verb
mic_jack_on
[]
=
{
static
const
struct
hda_verb
mic_jack_on
[]
=
{
{
0x14
,
AC_VERB_SET_AMP_GAIN_MUTE
,
0xb080
},
{
0x12
,
AC_VERB_SET_AMP_GAIN_MUTE
,
0xb000
},
{}
};
static
struct
hda_verb
mic_jack_off
[]
=
{
static
const
struct
hda_verb
mic_jack_off
[]
=
{
{
0x12
,
AC_VERB_SET_AMP_GAIN_MUTE
,
0xb080
},
{
0x14
,
AC_VERB_SET_AMP_GAIN_MUTE
,
0xb000
},
{}
...
...
@@ -784,7 +784,7 @@ static void cxt5045_hp_unsol_event(struct hda_codec *codec,
}
}
static
struct
snd_kcontrol_new
cxt5045_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5045_mixers
[]
=
{
HDA_CODEC_VOLUME
(
"Internal Mic Capture Volume"
,
0x1a
,
0x01
,
HDA_INPUT
),
HDA_CODEC_MUTE
(
"Internal Mic Capture Switch"
,
0x1a
,
0x01
,
HDA_INPUT
),
HDA_CODEC_VOLUME
(
"Mic Capture Volume"
,
0x1a
,
0x02
,
HDA_INPUT
),
...
...
@@ -808,7 +808,7 @@ static struct snd_kcontrol_new cxt5045_mixers[] = {
{}
};
static
struct
snd_kcontrol_new
cxt5045_benq_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5045_benq_mixers
[]
=
{
HDA_CODEC_VOLUME
(
"CD Capture Volume"
,
0x1a
,
0x04
,
HDA_INPUT
),
HDA_CODEC_MUTE
(
"CD Capture Switch"
,
0x1a
,
0x04
,
HDA_INPUT
),
HDA_CODEC_VOLUME
(
"CD Playback Volume"
,
0x17
,
0x4
,
HDA_INPUT
),
...
...
@@ -825,7 +825,7 @@ static struct snd_kcontrol_new cxt5045_benq_mixers[] = {
{}
};
static
struct
snd_kcontrol_new
cxt5045_mixers_hp530
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5045_mixers_hp530
[]
=
{
HDA_CODEC_VOLUME
(
"Internal Mic Capture Volume"
,
0x1a
,
0x02
,
HDA_INPUT
),
HDA_CODEC_MUTE
(
"Internal Mic Capture Switch"
,
0x1a
,
0x02
,
HDA_INPUT
),
HDA_CODEC_VOLUME
(
"Mic Capture Volume"
,
0x1a
,
0x01
,
HDA_INPUT
),
...
...
@@ -849,7 +849,7 @@ static struct snd_kcontrol_new cxt5045_mixers_hp530[] = {
{}
};
static
struct
hda_verb
cxt5045_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5045_init_verbs
[]
=
{
/* Line in, Mic */
{
0x12
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
|
AC_PINCTL_VREF_80
},
{
0x14
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
|
AC_PINCTL_VREF_80
},
...
...
@@ -875,7 +875,7 @@ static struct hda_verb cxt5045_init_verbs[] = {
{
}
/* end */
};
static
struct
hda_verb
cxt5045_benq_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5045_benq_init_verbs
[]
=
{
/* Internal Mic, Mic */
{
0x12
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
|
AC_PINCTL_VREF_80
},
{
0x14
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
|
AC_PINCTL_VREF_80
},
...
...
@@ -901,13 +901,13 @@ static struct hda_verb cxt5045_benq_init_verbs[] = {
{
}
/* end */
};
static
struct
hda_verb
cxt5045_hp_sense_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5045_hp_sense_init_verbs
[]
=
{
/* pin sensing on HP jack */
{
0x11
,
AC_VERB_SET_UNSOLICITED_ENABLE
,
AC_USRSP_EN
|
CONEXANT_HP_EVENT
},
{
}
/* end */
};
static
struct
hda_verb
cxt5045_mic_sense_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5045_mic_sense_init_verbs
[]
=
{
/* pin sensing on HP jack */
{
0x12
,
AC_VERB_SET_UNSOLICITED_ENABLE
,
AC_USRSP_EN
|
CONEXANT_MIC_EVENT
},
{
}
/* end */
...
...
@@ -917,7 +917,7 @@ static struct hda_verb cxt5045_mic_sense_init_verbs[] = {
/* Test configuration for debugging, modelled after the ALC260 test
* configuration.
*/
static
struct
hda_input_mux
cxt5045_test_capture_source
=
{
static
const
struct
hda_input_mux
cxt5045_test_capture_source
=
{
.
num_items
=
5
,
.
items
=
{
{
"MIXER"
,
0x0
},
...
...
@@ -928,7 +928,7 @@ static struct hda_input_mux cxt5045_test_capture_source = {
},
};
static
struct
snd_kcontrol_new
cxt5045_test_mixer
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5045_test_mixer
[]
=
{
/* Output controls */
HDA_CODEC_VOLUME
(
"Speaker Playback Volume"
,
0x10
,
0x0
,
HDA_OUTPUT
),
...
...
@@ -978,7 +978,7 @@ static struct snd_kcontrol_new cxt5045_test_mixer[] = {
{
}
/* end */
};
static
struct
hda_verb
cxt5045_test_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5045_test_init_verbs
[]
=
{
/* Set connections */
{
0x10
,
AC_VERB_SET_CONNECT_SEL
,
0x0
},
{
0x11
,
AC_VERB_SET_CONNECT_SEL
,
0x0
},
...
...
@@ -1061,7 +1061,7 @@ static const char * const cxt5045_models[CXT5045_MODELS] = {
#endif
};
static
struct
snd_pci_quirk
cxt5045_cfg_tbl
[]
=
{
static
const
struct
snd_pci_quirk
cxt5045_cfg_tbl
[]
=
{
SND_PCI_QUIRK
(
0x103c
,
0x30d5
,
"HP 530"
,
CXT5045_LAPTOP_HP530
),
SND_PCI_QUIRK_MASK
(
0x103c
,
0xff00
,
0x3000
,
"HP DV Series"
,
CXT5045_LAPTOP_HPSENSE
),
...
...
@@ -1196,15 +1196,15 @@ static int patch_cxt5045(struct hda_codec *codec)
/* Conexant 5047 specific */
#define CXT5047_SPDIF_OUT 0x11
static
hda_nid_t
cxt5047_dac_nids
[
1
]
=
{
0x10
};
/* 0x1c */
static
hda_nid_t
cxt5047_adc_nids
[
1
]
=
{
0x12
};
static
hda_nid_t
cxt5047_capsrc_nids
[
1
]
=
{
0x1a
};
static
const
hda_nid_t
cxt5047_dac_nids
[
1
]
=
{
0x10
};
/* 0x1c */
static
const
hda_nid_t
cxt5047_adc_nids
[
1
]
=
{
0x12
};
static
const
hda_nid_t
cxt5047_capsrc_nids
[
1
]
=
{
0x1a
};
static
struct
hda_channel_mode
cxt5047_modes
[
1
]
=
{
static
const
struct
hda_channel_mode
cxt5047_modes
[
1
]
=
{
{
2
,
NULL
},
};
static
struct
hda_input_mux
cxt5047_toshiba_capture_source
=
{
static
const
struct
hda_input_mux
cxt5047_toshiba_capture_source
=
{
.
num_items
=
2
,
.
items
=
{
{
"ExtMic"
,
0x2
},
...
...
@@ -1256,12 +1256,12 @@ static void cxt5047_hp_automute(struct hda_codec *codec)
/* toggle input of built-in and mic jack appropriately */
static
void
cxt5047_hp_automic
(
struct
hda_codec
*
codec
)
{
static
struct
hda_verb
mic_jack_on
[]
=
{
static
const
struct
hda_verb
mic_jack_on
[]
=
{
{
0x15
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_OUT_MUTE
},
{
0x17
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_OUT_UNMUTE
},
{}
};
static
struct
hda_verb
mic_jack_off
[]
=
{
static
const
struct
hda_verb
mic_jack_off
[]
=
{
{
0x17
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_OUT_MUTE
},
{
0x15
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_OUT_UNMUTE
},
{}
...
...
@@ -1289,7 +1289,7 @@ static void cxt5047_hp_unsol_event(struct hda_codec *codec,
}
}
static
struct
snd_kcontrol_new
cxt5047_base_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5047_base_mixers
[]
=
{
HDA_CODEC_VOLUME
(
"Mic Playback Volume"
,
0x19
,
0x02
,
HDA_INPUT
),
HDA_CODEC_MUTE
(
"Mic Playback Switch"
,
0x19
,
0x02
,
HDA_INPUT
),
HDA_CODEC_VOLUME
(
"Mic Boost Volume"
,
0x1a
,
0x0
,
HDA_OUTPUT
),
...
...
@@ -1309,19 +1309,19 @@ static struct snd_kcontrol_new cxt5047_base_mixers[] = {
{}
};
static
struct
snd_kcontrol_new
cxt5047_hp_spk_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5047_hp_spk_mixers
[]
=
{
/* See the note in cxt5047_hp_master_sw_put */
HDA_CODEC_VOLUME
(
"Speaker Playback Volume"
,
0x1d
,
0x01
,
HDA_OUTPUT
),
HDA_CODEC_VOLUME
(
"Headphone Playback Volume"
,
0x13
,
0x00
,
HDA_OUTPUT
),
{}
};
static
struct
snd_kcontrol_new
cxt5047_hp_only_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5047_hp_only_mixers
[]
=
{
HDA_CODEC_VOLUME
(
"Master Playback Volume"
,
0x13
,
0x00
,
HDA_OUTPUT
),
{
}
/* end */
};
static
struct
hda_verb
cxt5047_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5047_init_verbs
[]
=
{
/* Line in, Mic, Built-in Mic */
{
0x14
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
{
0x15
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
|
AC_PINCTL_VREF_50
},
...
...
@@ -1348,7 +1348,7 @@ static struct hda_verb cxt5047_init_verbs[] = {
};
/* configuration for Toshiba Laptops */
static
struct
hda_verb
cxt5047_toshiba_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5047_toshiba_init_verbs
[]
=
{
{
0x13
,
AC_VERB_SET_EAPD_BTLENABLE
,
0x0
},
/* default off */
{}
};
...
...
@@ -1357,7 +1357,7 @@ static struct hda_verb cxt5047_toshiba_init_verbs[] = {
* configuration.
*/
#ifdef CONFIG_SND_DEBUG
static
struct
hda_input_mux
cxt5047_test_capture_source
=
{
static
const
struct
hda_input_mux
cxt5047_test_capture_source
=
{
.
num_items
=
4
,
.
items
=
{
{
"LINE1 pin"
,
0x0
},
...
...
@@ -1367,7 +1367,7 @@ static struct hda_input_mux cxt5047_test_capture_source = {
},
};
static
struct
snd_kcontrol_new
cxt5047_test_mixer
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5047_test_mixer
[]
=
{
/* Output only controls */
HDA_CODEC_VOLUME
(
"OutAmp-1 Volume"
,
0x10
,
0x0
,
HDA_OUTPUT
),
...
...
@@ -1420,7 +1420,7 @@ static struct snd_kcontrol_new cxt5047_test_mixer[] = {
{
}
/* end */
};
static
struct
hda_verb
cxt5047_test_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5047_test_init_verbs
[]
=
{
/* Enable retasking pins as output, initially without power amp */
{
0x15
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_OUT
},
{
0x14
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_OUT
},
...
...
@@ -1504,7 +1504,7 @@ static const char * const cxt5047_models[CXT5047_MODELS] = {
#endif
};
static
struct
snd_pci_quirk
cxt5047_cfg_tbl
[]
=
{
static
const
struct
snd_pci_quirk
cxt5047_cfg_tbl
[]
=
{
SND_PCI_QUIRK
(
0x103c
,
0x30a5
,
"HP DV5200T/DV8000T"
,
CXT5047_LAPTOP_HP
),
SND_PCI_QUIRK_MASK
(
0x103c
,
0xff00
,
0x3000
,
"HP DV Series"
,
CXT5047_LAPTOP
),
...
...
@@ -1591,10 +1591,10 @@ static int patch_cxt5047(struct hda_codec *codec)
}
/* Conexant 5051 specific */
static
hda_nid_t
cxt5051_dac_nids
[
1
]
=
{
0x10
};
static
hda_nid_t
cxt5051_adc_nids
[
2
]
=
{
0x14
,
0x15
};
static
const
hda_nid_t
cxt5051_dac_nids
[
1
]
=
{
0x10
};
static
const
hda_nid_t
cxt5051_adc_nids
[
2
]
=
{
0x14
,
0x15
};
static
struct
hda_channel_mode
cxt5051_modes
[
1
]
=
{
static
const
struct
hda_channel_mode
cxt5051_modes
[
1
]
=
{
{
2
,
NULL
},
};
...
...
@@ -1696,7 +1696,7 @@ static void cxt5051_hp_unsol_event(struct hda_codec *codec,
snd_hda_input_jack_report
(
codec
,
nid
);
}
static
struct
snd_kcontrol_new
cxt5051_playback_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5051_playback_mixers
[]
=
{
HDA_CODEC_VOLUME
(
"Master Playback Volume"
,
0x10
,
0x00
,
HDA_OUTPUT
),
{
.
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
,
...
...
@@ -1709,7 +1709,7 @@ static struct snd_kcontrol_new cxt5051_playback_mixers[] = {
{}
};
static
struct
snd_kcontrol_new
cxt5051_capture_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5051_capture_mixers
[]
=
{
HDA_CODEC_VOLUME
(
"Internal Mic Volume"
,
0x14
,
0x00
,
HDA_INPUT
),
HDA_CODEC_MUTE
(
"Internal Mic Switch"
,
0x14
,
0x00
,
HDA_INPUT
),
HDA_CODEC_VOLUME
(
"Mic Volume"
,
0x14
,
0x01
,
HDA_INPUT
),
...
...
@@ -1719,7 +1719,7 @@ static struct snd_kcontrol_new cxt5051_capture_mixers[] = {
{}
};
static
struct
snd_kcontrol_new
cxt5051_hp_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5051_hp_mixers
[]
=
{
HDA_CODEC_VOLUME
(
"Internal Mic Volume"
,
0x14
,
0x00
,
HDA_INPUT
),
HDA_CODEC_MUTE
(
"Internal Mic Switch"
,
0x14
,
0x00
,
HDA_INPUT
),
HDA_CODEC_VOLUME
(
"Mic Volume"
,
0x15
,
0x00
,
HDA_INPUT
),
...
...
@@ -1727,19 +1727,19 @@ static struct snd_kcontrol_new cxt5051_hp_mixers[] = {
{}
};
static
struct
snd_kcontrol_new
cxt5051_hp_dv6736_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5051_hp_dv6736_mixers
[]
=
{
HDA_CODEC_VOLUME
(
"Capture Volume"
,
0x14
,
0x00
,
HDA_INPUT
),
HDA_CODEC_MUTE
(
"Capture Switch"
,
0x14
,
0x00
,
HDA_INPUT
),
{}
};
static
struct
snd_kcontrol_new
cxt5051_f700_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5051_f700_mixers
[]
=
{
HDA_CODEC_VOLUME
(
"Capture Volume"
,
0x14
,
0x01
,
HDA_INPUT
),
HDA_CODEC_MUTE
(
"Capture Switch"
,
0x14
,
0x01
,
HDA_INPUT
),
{}
};
static
struct
snd_kcontrol_new
cxt5051_toshiba_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5051_toshiba_mixers
[]
=
{
HDA_CODEC_VOLUME
(
"Internal Mic Volume"
,
0x14
,
0x00
,
HDA_INPUT
),
HDA_CODEC_MUTE
(
"Internal Mic Switch"
,
0x14
,
0x00
,
HDA_INPUT
),
HDA_CODEC_VOLUME
(
"Mic Volume"
,
0x14
,
0x01
,
HDA_INPUT
),
...
...
@@ -1747,7 +1747,7 @@ static struct snd_kcontrol_new cxt5051_toshiba_mixers[] = {
{}
};
static
struct
hda_verb
cxt5051_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5051_init_verbs
[]
=
{
/* Line in, Mic */
{
0x17
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
0
)
|
0x03
},
{
0x17
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_VREF80
},
...
...
@@ -1776,7 +1776,7 @@ static struct hda_verb cxt5051_init_verbs[] = {
{
}
/* end */
};
static
struct
hda_verb
cxt5051_hp_dv6736_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5051_hp_dv6736_init_verbs
[]
=
{
/* Line in, Mic */
{
0x17
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
0
)
|
0x03
},
{
0x17
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_VREF80
},
...
...
@@ -1801,7 +1801,7 @@ static struct hda_verb cxt5051_hp_dv6736_init_verbs[] = {
{
}
/* end */
};
static
struct
hda_verb
cxt5051_lenovo_x200_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5051_lenovo_x200_init_verbs
[]
=
{
/* Line in, Mic */
{
0x17
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
0
)
|
0x03
},
{
0x17
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_VREF80
},
...
...
@@ -1834,7 +1834,7 @@ static struct hda_verb cxt5051_lenovo_x200_init_verbs[] = {
{
}
/* end */
};
static
struct
hda_verb
cxt5051_f700_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5051_f700_init_verbs
[]
=
{
/* Line in, Mic */
{
0x17
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
0
)
|
0x03
},
{
0x17
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_VREF80
},
...
...
@@ -1869,7 +1869,7 @@ static void cxt5051_init_mic_port(struct hda_codec *codec, hda_nid_t nid,
snd_hda_input_jack_report
(
codec
,
nid
);
}
static
struct
hda_verb
cxt5051_ideapad_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5051_ideapad_init_verbs
[]
=
{
/* Subwoofer */
{
0x1b
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_OUT
},
{
0x1b
,
AC_VERB_SET_CONNECT_SEL
,
0x00
},
...
...
@@ -1919,7 +1919,7 @@ static const char *const cxt5051_models[CXT5051_MODELS] = {
[
CXT5051_IDEAPAD
]
=
"ideapad"
,
};
static
struct
snd_pci_quirk
cxt5051_cfg_tbl
[]
=
{
static
const
struct
snd_pci_quirk
cxt5051_cfg_tbl
[]
=
{
SND_PCI_QUIRK
(
0x103c
,
0x30cf
,
"HP DV6736"
,
CXT5051_HP_DV6736
),
SND_PCI_QUIRK
(
0x103c
,
0x360b
,
"Compaq Presario CQ60"
,
CXT5051_HP
),
SND_PCI_QUIRK
(
0x103c
,
0x30ea
,
"Compaq Presario F700"
,
CXT5051_F700
),
...
...
@@ -2011,17 +2011,17 @@ static int patch_cxt5051(struct hda_codec *codec)
/* Conexant 5066 specific */
static
hda_nid_t
cxt5066_dac_nids
[
1
]
=
{
0x10
};
static
hda_nid_t
cxt5066_adc_nids
[
3
]
=
{
0x14
,
0x15
,
0x16
};
static
hda_nid_t
cxt5066_capsrc_nids
[
1
]
=
{
0x17
};
static
hda_nid_t
cxt5066_digout_pin_nids
[
2
]
=
{
0x20
,
0x22
};
static
const
hda_nid_t
cxt5066_dac_nids
[
1
]
=
{
0x10
};
static
const
hda_nid_t
cxt5066_adc_nids
[
3
]
=
{
0x14
,
0x15
,
0x16
};
static
const
hda_nid_t
cxt5066_capsrc_nids
[
1
]
=
{
0x17
};
static
const
hda_nid_t
cxt5066_digout_pin_nids
[
2
]
=
{
0x20
,
0x22
};
/* OLPC's microphone port is DC coupled for use with external sensors,
* therefore we use a 50% mic bias in order to center the input signal with
* the DC input range of the codec. */
#define CXT5066_OLPC_EXT_MIC_BIAS PIN_VREF50
static
struct
hda_channel_mode
cxt5066_modes
[
1
]
=
{
static
const
struct
hda_channel_mode
cxt5066_modes
[
1
]
=
{
{
2
,
NULL
},
};
...
...
@@ -2176,7 +2176,7 @@ static void cxt5066_vostro_automic(struct hda_codec *codec)
{
0x23
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
0
},
{}
};
static
struct
hda_verb
ext_mic_absent
[]
=
{
static
const
struct
hda_verb
ext_mic_absent
[]
=
{
/* enable internal mic, port C */
{
0x23
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
...
...
@@ -2209,7 +2209,7 @@ static void cxt5066_ideapad_automic(struct hda_codec *codec)
{
0x23
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
0
},
{}
};
static
struct
hda_verb
ext_mic_absent
[]
=
{
static
const
struct
hda_verb
ext_mic_absent
[]
=
{
{
0x14
,
AC_VERB_SET_CONNECT_SEL
,
2
},
{
0x23
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
{
0x1b
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
0
},
...
...
@@ -2257,7 +2257,7 @@ static void cxt5066_thinkpad_automic(struct hda_codec *codec)
{
unsigned
int
ext_present
,
dock_present
;
static
struct
hda_verb
ext_mic_present
[]
=
{
static
const
struct
hda_verb
ext_mic_present
[]
=
{
{
0x14
,
AC_VERB_SET_CONNECT_SEL
,
0
},
{
0x17
,
AC_VERB_SET_CONNECT_SEL
,
1
},
{
0x1b
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_VREF80
},
...
...
@@ -2265,7 +2265,7 @@ static void cxt5066_thinkpad_automic(struct hda_codec *codec)
{
0x1a
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
0
},
{}
};
static
struct
hda_verb
dock_mic_present
[]
=
{
static
const
struct
hda_verb
dock_mic_present
[]
=
{
{
0x14
,
AC_VERB_SET_CONNECT_SEL
,
0
},
{
0x17
,
AC_VERB_SET_CONNECT_SEL
,
0
},
{
0x1a
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_VREF80
},
...
...
@@ -2273,7 +2273,7 @@ static void cxt5066_thinkpad_automic(struct hda_codec *codec)
{
0x1b
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
0
},
{}
};
static
struct
hda_verb
ext_mic_absent
[]
=
{
static
const
struct
hda_verb
ext_mic_absent
[]
=
{
{
0x14
,
AC_VERB_SET_CONNECT_SEL
,
2
},
{
0x23
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
{
0x1b
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
0
},
...
...
@@ -2537,7 +2537,7 @@ static void cxt5066_olpc_capture_cleanup(struct hda_codec *codec)
}
static
void
conexant_check_dig_outs
(
struct
hda_codec
*
codec
,
hda_nid_t
*
dig_pins
,
const
hda_nid_t
*
dig_pins
,
int
num_pins
)
{
struct
conexant_spec
*
spec
=
codec
->
spec
;
...
...
@@ -2557,7 +2557,7 @@ static void conexant_check_dig_outs(struct hda_codec *codec,
}
}
static
struct
hda_input_mux
cxt5066_capture_source
=
{
static
const
struct
hda_input_mux
cxt5066_capture_source
=
{
.
num_items
=
4
,
.
items
=
{
{
"Mic B"
,
0
},
...
...
@@ -2567,7 +2567,7 @@ static struct hda_input_mux cxt5066_capture_source = {
},
};
static
struct
hda_bind_ctls
cxt5066_bind_capture_vol_others
=
{
static
const
struct
hda_bind_ctls
cxt5066_bind_capture_vol_others
=
{
.
ops
=
&
snd_hda_bind_vol
,
.
values
=
{
HDA_COMPOSE_AMP_VAL
(
0x14
,
3
,
0
,
HDA_INPUT
),
...
...
@@ -2576,7 +2576,7 @@ static struct hda_bind_ctls cxt5066_bind_capture_vol_others = {
},
};
static
struct
hda_bind_ctls
cxt5066_bind_capture_sw_others
=
{
static
const
struct
hda_bind_ctls
cxt5066_bind_capture_sw_others
=
{
.
ops
=
&
snd_hda_bind_sw
,
.
values
=
{
HDA_COMPOSE_AMP_VAL
(
0x14
,
3
,
0
,
HDA_INPUT
),
...
...
@@ -2585,12 +2585,12 @@ static struct hda_bind_ctls cxt5066_bind_capture_sw_others = {
},
};
static
struct
snd_kcontrol_new
cxt5066_mixer_master
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5066_mixer_master
[]
=
{
HDA_CODEC_VOLUME
(
"Master Playback Volume"
,
0x10
,
0x00
,
HDA_OUTPUT
),
{}
};
static
struct
snd_kcontrol_new
cxt5066_mixer_master_olpc
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5066_mixer_master_olpc
[]
=
{
{
.
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
,
.
name
=
"Master Playback Volume"
,
...
...
@@ -2609,7 +2609,7 @@ static struct snd_kcontrol_new cxt5066_mixer_master_olpc[] = {
{}
};
static
struct
snd_kcontrol_new
cxt5066_mixer_olpc_dc
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5066_mixer_olpc_dc
[]
=
{
{
.
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
,
.
name
=
"DC Mode Enable Switch"
,
...
...
@@ -2627,7 +2627,7 @@ static struct snd_kcontrol_new cxt5066_mixer_olpc_dc[] = {
{}
};
static
struct
snd_kcontrol_new
cxt5066_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5066_mixers
[]
=
{
{
.
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
,
.
name
=
"Master Playback Switch"
,
...
...
@@ -2650,7 +2650,7 @@ static struct snd_kcontrol_new cxt5066_mixers[] = {
{}
};
static
struct
snd_kcontrol_new
cxt5066_vostro_mixers
[]
=
{
static
const
struct
snd_kcontrol_new
cxt5066_vostro_mixers
[]
=
{
{
.
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
,
.
name
=
"Internal Mic Boost Capture Enum"
,
...
...
@@ -2662,7 +2662,7 @@ static struct snd_kcontrol_new cxt5066_vostro_mixers[] = {
{}
};
static
struct
hda_verb
cxt5066_init_verbs
[]
=
{
static
const
struct
hda_verb
cxt5066_init_verbs
[]
=
{
{
0x1a
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_VREF80
},
/* Port B */
{
0x1b
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_VREF80
},
/* Port C */
{
0x1e
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
/* Port F */
...
...
@@ -2717,7 +2717,7 @@ static struct hda_verb cxt5066_init_verbs[] = {
{
}
/* end */
};
static
struct
hda_verb
cxt5066_init_verbs_olpc
[]
=
{
static
const
struct
hda_verb
cxt5066_init_verbs_olpc
[]
=
{
/* Port A: headphones */
{
0x19
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_HP
},
{
0x19
,
AC_VERB_SET_CONNECT_SEL
,
0x00
},
/* DAC1 */
...
...
@@ -2778,7 +2778,7 @@ static struct hda_verb cxt5066_init_verbs_olpc[] = {
{
}
/* end */
};
static
struct
hda_verb
cxt5066_init_verbs_vostro
[]
=
{
static
const
struct
hda_verb
cxt5066_init_verbs_vostro
[]
=
{
/* Port A: headphones */
{
0x19
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
0
},
{
0x19
,
AC_VERB_SET_CONNECT_SEL
,
0x00
},
/* DAC1 */
...
...
@@ -2839,7 +2839,7 @@ static struct hda_verb cxt5066_init_verbs_vostro[] = {
{
}
/* end */
};
static
struct
hda_verb
cxt5066_init_verbs_ideapad
[]
=
{
static
const
struct
hda_verb
cxt5066_init_verbs_ideapad
[]
=
{
{
0x1a
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_VREF80
},
/* Port B */
{
0x1b
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_VREF80
},
/* Port C */
{
0x1e
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
/* Port F */
...
...
@@ -2889,7 +2889,7 @@ static struct hda_verb cxt5066_init_verbs_ideapad[] = {
{
}
/* end */
};
static
struct
hda_verb
cxt5066_init_verbs_thinkpad
[]
=
{
static
const
struct
hda_verb
cxt5066_init_verbs_thinkpad
[]
=
{
{
0x1e
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
/* Port F */
{
0x1d
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
/* Port E */
...
...
@@ -2947,13 +2947,13 @@ static struct hda_verb cxt5066_init_verbs_thinkpad[] = {
{
}
/* end */
};
static
struct
hda_verb
cxt5066_init_verbs_portd_lo
[]
=
{
static
const
struct
hda_verb
cxt5066_init_verbs_portd_lo
[]
=
{
{
0x1c
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_OUT
},
{
}
/* end */
};
static
struct
hda_verb
cxt5066_init_verbs_hp_laptop
[]
=
{
static
const
struct
hda_verb
cxt5066_init_verbs_hp_laptop
[]
=
{
{
0x14
,
AC_VERB_SET_CONNECT_SEL
,
0x0
},
{
0x19
,
AC_VERB_SET_UNSOLICITED_ENABLE
,
AC_USRSP_EN
|
CONEXANT_HP_EVENT
},
{
0x1b
,
AC_VERB_SET_UNSOLICITED_ENABLE
,
AC_USRSP_EN
|
CONEXANT_MIC_EVENT
},
...
...
@@ -3011,7 +3011,7 @@ static const char * const cxt5066_models[CXT5066_MODELS] = {
[
CXT5066_HP_LAPTOP
]
=
"hp-laptop"
,
};
static
struct
snd_pci_quirk
cxt5066_cfg_tbl
[]
=
{
static
const
struct
snd_pci_quirk
cxt5066_cfg_tbl
[]
=
{
SND_PCI_QUIRK_MASK
(
0x1025
,
0xff00
,
0x0400
,
"Acer"
,
CXT5066_IDEAPAD
),
SND_PCI_QUIRK
(
0x1028
,
0x02d8
,
"Dell Vostro"
,
CXT5066_DELL_VOSTRO
),
SND_PCI_QUIRK
(
0x1028
,
0x02f5
,
"Dell Vostro 320"
,
CXT5066_IDEAPAD
),
...
...
@@ -3195,7 +3195,7 @@ static int patch_cxt5066(struct hda_codec *codec)
* Automatic parser for CX20641 & co
*/
static
hda_nid_t
cx_auto_adc_nids
[]
=
{
0x14
};
static
const
hda_nid_t
cx_auto_adc_nids
[]
=
{
0x14
};
/* get the connection index of @nid in the widget @mux */
static
int
get_connection_index
(
struct
hda_codec
*
codec
,
hda_nid_t
mux
,
...
...
@@ -3646,7 +3646,7 @@ static int cx_auto_add_volume_idx(struct hda_codec *codec, const char *basename,
HDA_CODEC_VOLUME
(
name
,
0
,
0
,
0
),
HDA_CODEC_MUTE
(
name
,
0
,
0
,
0
),
};
static
c
har
*
sfx
[
2
]
=
{
"Volume"
,
"Switch"
};
static
c
onst
char
*
const
sfx
[
2
]
=
{
"Volume"
,
"Switch"
};
int
i
,
err
;
for
(
i
=
0
;
i
<
2
;
i
++
)
{
...
...
@@ -3791,7 +3791,7 @@ static int cx_auto_build_controls(struct hda_codec *codec)
return
conexant_build_controls
(
codec
);
}
static
struct
hda_codec_ops
cx_auto_patch_ops
=
{
static
const
struct
hda_codec_ops
cx_auto_patch_ops
=
{
.
build_controls
=
cx_auto_build_controls
,
.
build_pcms
=
conexant_build_pcms
,
.
init
=
cx_auto_init
,
...
...
@@ -3830,7 +3830,7 @@ static int patch_conexant_auto(struct hda_codec *codec)
/*
*/
static
struct
hda_codec_preset
snd_hda_preset_conexant
[]
=
{
static
const
struct
hda_codec_preset
snd_hda_preset_conexant
[]
=
{
{
.
id
=
0x14f15045
,
.
name
=
"CX20549 (Venice)"
,
.
patch
=
patch_cxt5045
},
{
.
id
=
0x14f15047
,
.
name
=
"CX20551 (Waikiki)"
,
...
...
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