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
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