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
d2a764dd
Commit
d2a764dd
authored
Oct 08, 2009
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fix/hda' into for-linus
parents
6f775ba0
defb5ab2
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
67 additions
and
22 deletions
+67
-22
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+67
-22
No files found.
sound/pci/hda/patch_realtek.c
View file @
d2a764dd
...
...
@@ -1332,15 +1332,20 @@ do_sku:
* when the external headphone out jack is plugged"
*/
if
(
!
spec
->
autocfg
.
hp_pins
[
0
])
{
hda_nid_t
nid
;
tmp
=
(
ass
>>
11
)
&
0x3
;
/* HP to chassis */
if
(
tmp
==
0
)
spec->autocfg.hp_pins[0]
= porta;
nid
=
porta
;
else
if
(
tmp
==
1
)
spec->autocfg.hp_pins[0]
= porte;
nid
=
porte
;
else
if
(
tmp
==
2
)
spec->autocfg.hp_pins[0]
= portd;
nid
=
portd
;
else
return
1
;
for
(
i
=
0
;
i
<
spec
->
autocfg
.
line_outs
;
i
++
)
if
(
spec
->
autocfg
.
line_out_pins
[
i
]
==
nid
)
return
1
;
spec
->
autocfg
.
hp_pins
[
0
]
=
nid
;
}
alc_init_auto_hp
(
codec
);
...
...
@@ -1362,7 +1367,7 @@ static void alc_ssid_check(struct hda_codec *codec,
}
/*
* Fix-up pin default configurations
* Fix-up pin default configurations
and add default verbs
*/
struct
alc_pincfg
{
...
...
@@ -1370,9 +1375,14 @@ struct alc_pincfg {
u32
val
;
};
static void alc_fix_pincfg(struct hda_codec *codec,
struct
alc_fixup
{
const
struct
alc_pincfg
*
pins
;
const
struct
hda_verb
*
verbs
;
};
static
void
alc_pick_fixup
(
struct
hda_codec
*
codec
,
const
struct
snd_pci_quirk
*
quirk
,
const struct alc_
pincfg **pin
fix)
const
struct
alc_
fixup
*
fix
)
{
const
struct
alc_pincfg
*
cfg
;
...
...
@@ -1380,9 +1390,14 @@ static void alc_fix_pincfg(struct hda_codec *codec,
if
(
!
quirk
)
return
;
cfg = pinfix[quirk->value];
for (; cfg->nid; cfg++)
snd_hda_codec_set_pincfg(codec, cfg->nid, cfg->val);
fix
+=
quirk
->
value
;
cfg
=
fix
->
pins
;
if
(
cfg
)
{
for
(;
cfg
->
nid
;
cfg
++
)
snd_hda_codec_set_pincfg
(
codec
,
cfg
->
nid
,
cfg
->
val
);
}
if
(
fix
->
verbs
)
add_verb
(
codec
->
spec
,
fix
->
verbs
);
}
/*
...
...
@@ -9593,11 +9608,13 @@ static struct alc_pincfg alc882_abit_aw9d_pinfix[] = {
{
}
};
static const struct alc_pincfg *alc882_pin_fixes[] = {
[PINFIX_ABIT_AW9D_MAX] = alc882_abit_aw9d_pinfix,
static
const
struct
alc_fixup
alc882_fixups
[]
=
{
[
PINFIX_ABIT_AW9D_MAX
]
=
{
.
pins
=
alc882_abit_aw9d_pinfix
},
};
static struct snd_pci_quirk alc882_
pinfix
_tbl[] = {
static
struct
snd_pci_quirk
alc882_
fixup
_tbl
[]
=
{
SND_PCI_QUIRK
(
0x147b
,
0x107a
,
"Abit AW9D-MAX"
,
PINFIX_ABIT_AW9D_MAX
),
{}
};
...
...
@@ -9869,7 +9886,7 @@ static int patch_alc882(struct hda_codec *codec)
board_config
=
ALC882_AUTO
;
}
alc_
fix_pincfg(codec, alc882_pinfix_tbl, alc882_pin_fixe
s);
alc_
pick_fixup
(
codec
,
alc882_fixup_tbl
,
alc882_fixup
s
);
if
(
board_config
==
ALC882_AUTO
)
{
/* automatic parse from the BIOS config */
...
...
@@ -12842,12 +12859,15 @@ static int patch_alc268(struct hda_codec *codec)
unsigned
int
wcap
=
get_wcaps
(
codec
,
0x07
);
int
i
;
spec
->
capsrc_nids
=
alc268_capsrc_nids
;
/* get type */
wcap
=
get_wcaps_type
(
wcap
);
if
(
spec
->
auto_mic
||
wcap
!=
AC_WID_AUD_IN
||
spec
->
input_mux
->
num_items
==
1
)
{
spec
->
adc_nids
=
alc268_adc_nids_alt
;
spec
->
num_adc_nids
=
ARRAY_SIZE
(
alc268_adc_nids_alt
);
if
(
spec
->
auto_mic
)
fixup_automic_adc
(
codec
);
if
(
spec
->
auto_mic
||
spec
->
input_mux
->
num_items
==
1
)
add_mixer
(
spec
,
alc268_capture_nosrc_mixer
);
else
...
...
@@ -12857,7 +12877,6 @@ static int patch_alc268(struct hda_codec *codec)
spec
->
num_adc_nids
=
ARRAY_SIZE
(
alc268_adc_nids
);
add_mixer
(
spec
,
alc268_capture_mixer
);
}
spec->capsrc_nids = alc268_capsrc_nids;
/* set default input source */
for
(
i
=
0
;
i
<
spec
->
num_adc_nids
;
i
++
)
snd_hda_codec_write_cache
(
codec
,
alc268_capsrc_nids
[
i
],
...
...
@@ -14357,15 +14376,16 @@ static void alc861_auto_init_multi_out(struct hda_codec *codec)
static
void
alc861_auto_init_hp_out
(
struct
hda_codec
*
codec
)
{
struct
alc_spec
*
spec
=
codec
->
spec
;
hda_nid_t pin;
pin = spec->autocfg.hp_pins[0];
if (pin)
alc861_auto_set_output_and_unmute(codec, pin, PIN_HP,
if
(
spec
->
autocfg
.
hp_outs
)
alc861_auto_set_output_and_unmute
(
codec
,
spec
->
autocfg
.
hp_pins
[
0
],
PIN_HP
,
spec
->
multiout
.
hp_nid
);
pin = spec->autocfg.speaker_pins[0];
if (pin)
alc861_auto_set_output_and_unmute(codec, pin, PIN_OUT,
if
(
spec
->
autocfg
.
speaker_outs
)
alc861_auto_set_output_and_unmute
(
codec
,
spec
->
autocfg
.
speaker_pins
[
0
],
PIN_OUT
,
spec
->
multiout
.
dac_nids
[
0
]);
}
...
...
@@ -15158,7 +15178,7 @@ static struct snd_pci_quirk alc861vd_cfg_tbl[] = {
SND_PCI_QUIRK
(
0x1019
,
0xa88d
,
"Realtek ALC660 demo"
,
ALC660VD_3ST
),
SND_PCI_QUIRK
(
0x103c
,
0x30bf
,
"HP TX1000"
,
ALC861VD_HP
),
SND_PCI_QUIRK
(
0x1043
,
0x12e2
,
"Asus z35m"
,
ALC660VD_3ST
),
SND_PCI_QUIRK(0x1043, 0x1339, "Asus G1", ALC660VD_3ST),
/*SND_PCI_QUIRK(0x1043, 0x1339, "Asus G1", ALC660VD_3ST),*/
/* auto */
SND_PCI_QUIRK
(
0x1043
,
0x1633
,
"Asus V1Sn"
,
ALC660VD_ASUS_V1S
),
SND_PCI_QUIRK
(
0x1043
,
0x81e7
,
"ASUS"
,
ALC660VD_3ST_DIG
),
SND_PCI_QUIRK
(
0x10de
,
0x03f0
,
"Realtek ALC660 demo"
,
ALC660VD_3ST
),
...
...
@@ -15551,6 +15571,29 @@ static void alc861vd_auto_init(struct hda_codec *codec)
alc_inithook
(
codec
);
}
enum
{
ALC660VD_FIX_ASUS_GPIO1
};
/* reset GPIO1 */
static
const
struct
hda_verb
alc660vd_fix_asus_gpio1_verbs
[]
=
{
{
0x01
,
AC_VERB_SET_GPIO_MASK
,
0x03
},
{
0x01
,
AC_VERB_SET_GPIO_DIRECTION
,
0x01
},
{
0x01
,
AC_VERB_SET_GPIO_DATA
,
0x01
},
{
}
};
static
const
struct
alc_fixup
alc861vd_fixups
[]
=
{
[
ALC660VD_FIX_ASUS_GPIO1
]
=
{
.
verbs
=
alc660vd_fix_asus_gpio1_verbs
,
},
};
static
struct
snd_pci_quirk
alc861vd_fixup_tbl
[]
=
{
SND_PCI_QUIRK
(
0x1043
,
0x1339
,
"ASUS A7-K"
,
ALC660VD_FIX_ASUS_GPIO1
),
{}
};
static
int
patch_alc861vd
(
struct
hda_codec
*
codec
)
{
struct
alc_spec
*
spec
;
...
...
@@ -15572,6 +15615,8 @@ static int patch_alc861vd(struct hda_codec *codec)
board_config
=
ALC861VD_AUTO
;
}
alc_pick_fixup
(
codec
,
alc861vd_fixup_tbl
,
alc861vd_fixups
);
if
(
board_config
==
ALC861VD_AUTO
)
{
/* automatic parse from the BIOS config */
err
=
alc861vd_parse_auto_config
(
codec
);
...
...
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