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
85894077
Commit
85894077
authored
Apr 21, 2009
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fix/hda' into topic/hda
parents
7670dc41
622e84cd
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
116 additions
and
15 deletions
+116
-15
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_codec.c
+5
-3
sound/pci/hda/patch_analog.c
sound/pci/hda/patch_analog.c
+8
-0
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+98
-7
sound/pci/hda/patch_sigmatel.c
sound/pci/hda/patch_sigmatel.c
+5
-5
No files found.
sound/pci/hda/hda_codec.c
View file @
85894077
...
...
@@ -643,19 +643,21 @@ static int get_codec_name(struct hda_codec *codec)
*/
static
void
/*__devinit*/
setup_fg_nodes
(
struct
hda_codec
*
codec
)
{
int
i
,
total_nodes
;
int
i
,
total_nodes
,
function_id
;
hda_nid_t
nid
;
total_nodes
=
snd_hda_get_sub_nodes
(
codec
,
AC_NODE_ROOT
,
&
nid
);
for
(
i
=
0
;
i
<
total_nodes
;
i
++
,
nid
++
)
{
codec
->
function_id
=
snd_hda_param_read
(
codec
,
nid
,
function_id
=
snd_hda_param_read
(
codec
,
nid
,
AC_PAR_FUNCTION_TYPE
)
&
0xff
;
switch
(
codec
->
function_id
)
{
switch
(
function_id
)
{
case
AC_GRP_AUDIO_FUNCTION
:
codec
->
afg
=
nid
;
codec
->
function_id
=
function_id
;
break
;
case
AC_GRP_MODEM_FUNCTION
:
codec
->
mfg
=
nid
;
codec
->
function_id
=
function_id
;
break
;
default:
break
;
...
...
sound/pci/hda/patch_analog.c
View file @
85894077
...
...
@@ -3977,6 +3977,14 @@ static int patch_ad1884a(struct hda_codec *codec)
spec
->
input_mux
=
&
ad1884a_laptop_capture_source
;
codec
->
patch_ops
.
unsol_event
=
ad1884a_hp_unsol_event
;
codec
->
patch_ops
.
init
=
ad1884a_hp_init
;
/* set the upper-limit for mixer amp to 0dB for avoiding the
* possible damage by overloading
*/
snd_hda_override_amp_caps
(
codec
,
0x20
,
HDA_INPUT
,
(
0x17
<<
AC_AMPCAP_OFFSET_SHIFT
)
|
(
0x17
<<
AC_AMPCAP_NUM_STEPS_SHIFT
)
|
(
0x05
<<
AC_AMPCAP_STEP_SIZE_SHIFT
)
|
(
1
<<
AC_AMPCAP_MUTE_SHIFT
));
break
;
case
AD1884A_MOBILE
:
spec
->
mixers
[
0
]
=
ad1884a_mobile_mixers
;
...
...
sound/pci/hda/patch_realtek.c
View file @
85894077
...
...
@@ -188,6 +188,8 @@ enum {
ALC663_ASUS_MODE4
,
ALC663_ASUS_MODE5
,
ALC663_ASUS_MODE6
,
ALC272_DELL
,
ALC272_DELL_ZM1
,
ALC662_AUTO
,
ALC662_MODEL_LAST
,
};
...
...
@@ -12976,10 +12978,17 @@ static struct snd_pci_quirk alc269_cfg_tbl[] = {
SND_PCI_QUIRK
(
0x17aa
,
0x3bf8
,
"Quanta FL1"
,
ALC269_QUANTA_FL1
),
SND_PCI_QUIRK
(
0x1043
,
0x8330
,
"ASUS Eeepc P703 P900A"
,
ALC269_ASUS_EEEPC_P703
),
SND_PCI_QUIRK
(
0x1043
,
0x1883
,
"ASUS F81Se"
,
ALC269_ASUS_EEEPC_P703
),
SND_PCI_QUIRK
(
0x1043
,
0x16a3
,
"ASUS F5Q"
,
ALC269_ASUS_EEEPC_P703
),
SND_PCI_QUIRK
(
0x1043
,
0x1723
,
"ASUS P80"
,
ALC269_ASUS_EEEPC_P703
),
SND_PCI_QUIRK
(
0x1043
,
0x1773
,
"ASUS U20A"
,
ALC269_ASUS_EEEPC_P703
),
SND_PCI_QUIRK
(
0x1043
,
0x1743
,
"ASUS U80"
,
ALC269_ASUS_EEEPC_P703
),
SND_PCI_QUIRK
(
0x1043
,
0x1653
,
"ASUS U50"
,
ALC269_ASUS_EEEPC_P703
),
SND_PCI_QUIRK
(
0x1043
,
0x831a
,
"ASUS Eeepc P901"
,
ALC269_ASUS_EEEPC_P901
),
SND_PCI_QUIRK
(
0x1043
,
0x834a
,
"ASUS Eeepc S101"
,
ALC269_ASUS_EEEPC_P901
),
SND_PCI_QUIRK
(
0x1043
,
0x16e3
,
"ASUS UX50"
,
ALC269_ASUS_EEEPC_P901
),
SND_PCI_QUIRK
(
0x1734
,
0x115d
,
"FSC Amilo"
,
ALC269_FUJITSU
),
SND_PCI_QUIRK
(
0x10cf
,
0x1475
,
"Lifebook ICH9M-based"
,
ALC269_LIFEBOOK
),
{}
...
...
@@ -15210,12 +15219,23 @@ static hda_nid_t alc662_dac_nids[4] = {
0x02
,
0x03
,
0x04
};
static
hda_nid_t
alc272_dac_nids
[
2
]
=
{
0x02
,
0x03
};
static
hda_nid_t
alc662_adc_nids
[
1
]
=
{
/* ADC1-2 */
0x09
,
};
static
hda_nid_t
alc272_adc_nids
[
1
]
=
{
/* ADC1-2 */
0x08
,
};
static
hda_nid_t
alc662_capsrc_nids
[
1
]
=
{
0x22
};
static
hda_nid_t
alc272_capsrc_nids
[
1
]
=
{
0x23
};
/* input MUX */
/* FIXME: should be a matrix-type input source selection */
...
...
@@ -15641,14 +15661,7 @@ static struct hda_verb alc662_init_verbs[] = {
/* Mixer elements: 0x18, 19, 1a, 1b, 1c, 1d, 14, 15, 16, 17, 0b */
/* Input mixer */
{
0x22
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
0
)},
{
0x22
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
1
)},
{
0x22
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
2
)},
{
0x22
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
4
)},
{
0x23
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
0
)},
{
0x23
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
1
)},
{
0x23
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
2
)},
{
0x23
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
4
)},
/* always trun on EAPD */
{
0x14
,
AC_VERB_SET_EAPD_BTLENABLE
,
2
},
...
...
@@ -15843,12 +15856,48 @@ static struct hda_verb alc662_ecs_init_verbs[] = {
{}
};
static
struct
hda_verb
alc272_dell_zm1_init_verbs
[]
=
{
{
0x12
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
{
0x13
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
{
0x15
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
{
0x16
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
{
0x21
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_HP
},
{
0x21
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_OUT_UNMUTE
},
{
0x21
,
AC_VERB_SET_CONNECT_SEL
,
0x01
},
/* Headphone */
{
0x22
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_MUTE
(
0
)},
{
0x22
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
9
)},
{
0x18
,
AC_VERB_SET_UNSOLICITED_ENABLE
,
AC_USRSP_EN
|
ALC880_MIC_EVENT
},
{
0x21
,
AC_VERB_SET_UNSOLICITED_ENABLE
,
AC_USRSP_EN
|
ALC880_HP_EVENT
},
{}
};
static
struct
hda_verb
alc272_dell_init_verbs
[]
=
{
{
0x12
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
{
0x13
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
{
0x15
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
{
0x16
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_IN
},
{
0x21
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
PIN_HP
},
{
0x21
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_OUT_UNMUTE
},
{
0x21
,
AC_VERB_SET_CONNECT_SEL
,
0x01
},
/* Headphone */
{
0x23
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_MUTE
(
0
)},
{
0x23
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
9
)},
{
0x18
,
AC_VERB_SET_UNSOLICITED_ENABLE
,
AC_USRSP_EN
|
ALC880_MIC_EVENT
},
{
0x21
,
AC_VERB_SET_UNSOLICITED_ENABLE
,
AC_USRSP_EN
|
ALC880_HP_EVENT
},
{}
};
static
struct
snd_kcontrol_new
alc662_auto_capture_mixer
[]
=
{
HDA_CODEC_VOLUME
(
"Capture Volume"
,
0x09
,
0x0
,
HDA_INPUT
),
HDA_CODEC_MUTE
(
"Capture Switch"
,
0x09
,
0x0
,
HDA_INPUT
),
{
}
/* end */
};
static
struct
snd_kcontrol_new
alc272_auto_capture_mixer
[]
=
{
HDA_CODEC_VOLUME
(
"Capture Volume"
,
0x08
,
0x0
,
HDA_INPUT
),
HDA_CODEC_MUTE
(
"Capture Switch"
,
0x08
,
0x0
,
HDA_INPUT
),
{
}
/* end */
};
static
void
alc662_lenovo_101e_ispeaker_automute
(
struct
hda_codec
*
codec
)
{
unsigned
int
present
;
...
...
@@ -16360,6 +16409,8 @@ static const char *alc662_models[ALC662_MODEL_LAST] = {
static
struct
snd_pci_quirk
alc662_cfg_tbl
[]
=
{
SND_PCI_QUIRK
(
0x1019
,
0x9087
,
"ECS"
,
ALC662_ECS
),
SND_PCI_QUIRK
(
0x1028
,
0x02d6
,
"DELL"
,
ALC272_DELL
),
SND_PCI_QUIRK
(
0x1028
,
0x02f4
,
"DELL ZM1"
,
ALC272_DELL_ZM1
),
SND_PCI_QUIRK
(
0x1043
,
0x1000
,
"ASUS N50Vm"
,
ALC663_ASUS_MODE1
),
SND_PCI_QUIRK
(
0x1043
,
0x1092
,
"ASUS NB"
,
ALC663_ASUS_MODE3
),
SND_PCI_QUIRK
(
0x1043
,
0x11c3
,
"ASUS M70V"
,
ALC663_ASUS_MODE3
),
...
...
@@ -16372,26 +16423,36 @@ static struct snd_pci_quirk alc662_cfg_tbl[] = {
SND_PCI_QUIRK
(
0x1043
,
0x1763
,
"ASUS NB"
,
ALC663_ASUS_MODE6
),
SND_PCI_QUIRK
(
0x1043
,
0x1765
,
"ASUS NB"
,
ALC663_ASUS_MODE6
),
SND_PCI_QUIRK
(
0x1043
,
0x1783
,
"ASUS NB"
,
ALC662_ASUS_MODE2
),
SND_PCI_QUIRK
(
0x1043
,
0x17b3
,
"ASUS F70SL"
,
ALC663_ASUS_MODE3
),
SND_PCI_QUIRK
(
0x1043
,
0x17c3
,
"ASUS UX20"
,
ALC663_ASUS_M51VA
),
SND_PCI_QUIRK
(
0x1043
,
0x17f3
,
"ASUS X58LE"
,
ALC662_ASUS_MODE2
),
SND_PCI_QUIRK
(
0x1043
,
0x1813
,
"ASUS NB"
,
ALC662_ASUS_MODE2
),
SND_PCI_QUIRK
(
0x1043
,
0x1823
,
"ASUS NB"
,
ALC663_ASUS_MODE5
),
SND_PCI_QUIRK
(
0x1043
,
0x1833
,
"ASUS NB"
,
ALC663_ASUS_MODE6
),
SND_PCI_QUIRK
(
0x1043
,
0x1843
,
"ASUS NB"
,
ALC662_ASUS_MODE2
),
SND_PCI_QUIRK
(
0x1043
,
0x1853
,
"ASUS F50Z"
,
ALC663_ASUS_MODE1
),
SND_PCI_QUIRK
(
0x1043
,
0x1864
,
"ASUS NB"
,
ALC662_ASUS_MODE2
),
SND_PCI_QUIRK
(
0x1043
,
0x1876
,
"ASUS NB"
,
ALC662_ASUS_MODE2
),
SND_PCI_QUIRK
(
0x1043
,
0x1878
,
"ASUS M51VA"
,
ALC663_ASUS_M51VA
),
/*SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M50Vr", ALC663_ASUS_MODE1),*/
SND_PCI_QUIRK
(
0x1043
,
0x1893
,
"ASUS M50Vm"
,
ALC663_ASUS_MODE3
),
SND_PCI_QUIRK
(
0x1043
,
0x1894
,
"ASUS X55"
,
ALC663_ASUS_MODE3
),
SND_PCI_QUIRK
(
0x1043
,
0x18b3
,
"ASUS N80Vc"
,
ALC663_ASUS_MODE1
),
SND_PCI_QUIRK
(
0x1043
,
0x18d3
,
"ASUS N81Te"
,
ALC663_ASUS_MODE1
),
SND_PCI_QUIRK
(
0x1043
,
0x18f3
,
"ASUS N505Tp"
,
ALC663_ASUS_MODE1
),
SND_PCI_QUIRK
(
0x1043
,
0x1903
,
"ASUS F5GL"
,
ALC663_ASUS_MODE1
),
SND_PCI_QUIRK
(
0x1043
,
0x1913
,
"ASUS NB"
,
ALC662_ASUS_MODE2
),
SND_PCI_QUIRK
(
0x1043
,
0x1933
,
"ASUS F80Q"
,
ALC662_ASUS_MODE2
),
SND_PCI_QUIRK
(
0x1043
,
0x1943
,
"ASUS Vx3V"
,
ALC663_ASUS_MODE1
),
SND_PCI_QUIRK
(
0x1043
,
0x1953
,
"ASUS NB"
,
ALC663_ASUS_MODE1
),
SND_PCI_QUIRK
(
0x1043
,
0x1963
,
"ASUS X71C"
,
ALC663_ASUS_MODE3
),
SND_PCI_QUIRK
(
0x1043
,
0x1983
,
"ASUS N5051A"
,
ALC663_ASUS_MODE1
),
SND_PCI_QUIRK
(
0x1043
,
0x1993
,
"ASUS N20"
,
ALC663_ASUS_MODE1
),
SND_PCI_QUIRK
(
0x1043
,
0x19a3
,
"ASUS G50V"
,
ALC663_ASUS_G50V
),
/*SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS NB", ALC663_ASUS_MODE1),*/
SND_PCI_QUIRK
(
0x1043
,
0x19b3
,
"ASUS F7Z"
,
ALC663_ASUS_MODE1
),
SND_PCI_QUIRK
(
0x1043
,
0x19c3
,
"ASUS F5Z/F6x"
,
ALC662_ASUS_MODE2
),
SND_PCI_QUIRK
(
0x1043
,
0x19d3
,
"ASUS NB"
,
ALC663_ASUS_M51VA
),
SND_PCI_QUIRK
(
0x1043
,
0x19e3
,
"ASUS NB"
,
ALC663_ASUS_MODE1
),
SND_PCI_QUIRK
(
0x1043
,
0x19f3
,
"ASUS NB"
,
ALC663_ASUS_MODE4
),
SND_PCI_QUIRK
(
0x1043
,
0x8290
,
"ASUS P5GC-MX"
,
ALC662_3ST_6ch_DIG
),
...
...
@@ -16640,6 +16701,36 @@ static struct alc_config_preset alc662_presets[] = {
.
unsol_event
=
alc663_mode6_unsol_event
,
.
init_hook
=
alc663_mode6_inithook
,
},
[
ALC272_DELL
]
=
{
.
mixers
=
{
alc663_m51va_mixer
},
.
cap_mixer
=
alc272_auto_capture_mixer
,
.
init_verbs
=
{
alc662_init_verbs
,
alc272_dell_init_verbs
},
.
num_dacs
=
ARRAY_SIZE
(
alc272_dac_nids
),
.
dac_nids
=
alc662_dac_nids
,
.
num_channel_mode
=
ARRAY_SIZE
(
alc662_3ST_2ch_modes
),
.
adc_nids
=
alc272_adc_nids
,
.
num_adc_nids
=
ARRAY_SIZE
(
alc272_adc_nids
),
.
capsrc_nids
=
alc272_capsrc_nids
,
.
channel_mode
=
alc662_3ST_2ch_modes
,
.
input_mux
=
&
alc663_m51va_capture_source
,
.
unsol_event
=
alc663_m51va_unsol_event
,
.
init_hook
=
alc663_m51va_inithook
,
},
[
ALC272_DELL_ZM1
]
=
{
.
mixers
=
{
alc663_m51va_mixer
},
.
cap_mixer
=
alc662_auto_capture_mixer
,
.
init_verbs
=
{
alc662_init_verbs
,
alc272_dell_zm1_init_verbs
},
.
num_dacs
=
ARRAY_SIZE
(
alc272_dac_nids
),
.
dac_nids
=
alc662_dac_nids
,
.
num_channel_mode
=
ARRAY_SIZE
(
alc662_3ST_2ch_modes
),
.
adc_nids
=
alc662_adc_nids
,
.
num_adc_nids
=
ARRAY_SIZE
(
alc662_adc_nids
),
.
capsrc_nids
=
alc662_capsrc_nids
,
.
channel_mode
=
alc662_3ST_2ch_modes
,
.
input_mux
=
&
alc663_m51va_capture_source
,
.
unsol_event
=
alc663_m51va_unsol_event
,
.
init_hook
=
alc663_m51va_inithook
,
},
};
...
...
sound/pci/hda/patch_sigmatel.c
View file @
85894077
...
...
@@ -3076,6 +3076,11 @@ static int create_multi_out_ctls(struct hda_codec *codec, int num_outs,
unsigned
int
wid_caps
;
for
(
i
=
0
;
i
<
num_outs
&&
i
<
ARRAY_SIZE
(
chname
);
i
++
)
{
if
(
type
==
AUTO_PIN_HP_OUT
&&
!
spec
->
hp_detect
)
{
wid_caps
=
get_wcaps
(
codec
,
pins
[
i
]);
if
(
wid_caps
&
AC_WCAP_UNSOL_CAP
)
spec
->
hp_detect
=
1
;
}
nid
=
dac_nids
[
i
];
if
(
!
nid
)
continue
;
...
...
@@ -3119,11 +3124,6 @@ static int create_multi_out_ctls(struct hda_codec *codec, int num_outs,
err
=
create_controls_idx
(
codec
,
name
,
idx
,
nid
,
3
);
if
(
err
<
0
)
return
err
;
if
(
type
==
AUTO_PIN_HP_OUT
&&
!
spec
->
hp_detect
)
{
wid_caps
=
get_wcaps
(
codec
,
pins
[
i
]);
if
(
wid_caps
&
AC_WCAP_UNSOL_CAP
)
spec
->
hp_detect
=
1
;
}
}
}
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