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
nexedi
linux
Commits
f8fb27bd
Commit
f8fb27bd
authored
Jul 09, 2010
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fix/hda' into topic/hda
parents
afbd9b84
ac0547dc
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
36 additions
and
3 deletions
+36
-3
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_codec.c
+27
-0
sound/pci/hda/hda_codec.h
sound/pci/hda/hda_codec.h
+4
-1
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+5
-2
No files found.
sound/pci/hda/hda_codec.c
View file @
f8fb27bd
...
...
@@ -784,6 +784,9 @@ static int read_pin_defaults(struct hda_codec *codec)
pin
->
nid
=
nid
;
pin
->
cfg
=
snd_hda_codec_read
(
codec
,
nid
,
0
,
AC_VERB_GET_CONFIG_DEFAULT
,
0
);
pin
->
ctrl
=
snd_hda_codec_read
(
codec
,
nid
,
0
,
AC_VERB_GET_PIN_WIDGET_CONTROL
,
0
);
}
return
0
;
}
...
...
@@ -912,15 +915,38 @@ static void restore_pincfgs(struct hda_codec *codec)
void
snd_hda_shutup_pins
(
struct
hda_codec
*
codec
)
{
int
i
;
/* don't shut up pins when unloading the driver; otherwise it breaks
* the default pin setup at the next load of the driver
*/
if
(
codec
->
bus
->
shutdown
)
return
;
for
(
i
=
0
;
i
<
codec
->
init_pins
.
used
;
i
++
)
{
struct
hda_pincfg
*
pin
=
snd_array_elem
(
&
codec
->
init_pins
,
i
);
/* use read here for syncing after issuing each verb */
snd_hda_codec_read
(
codec
,
pin
->
nid
,
0
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
0
);
}
codec
->
pins_shutup
=
1
;
}
EXPORT_SYMBOL_HDA
(
snd_hda_shutup_pins
);
/* Restore the pin controls cleared previously via snd_hda_shutup_pins() */
static
void
restore_shutup_pins
(
struct
hda_codec
*
codec
)
{
int
i
;
if
(
!
codec
->
pins_shutup
)
return
;
if
(
codec
->
bus
->
shutdown
)
return
;
for
(
i
=
0
;
i
<
codec
->
init_pins
.
used
;
i
++
)
{
struct
hda_pincfg
*
pin
=
snd_array_elem
(
&
codec
->
init_pins
,
i
);
snd_hda_codec_write
(
codec
,
pin
->
nid
,
0
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
pin
->
ctrl
);
}
codec
->
pins_shutup
=
0
;
}
static
void
init_hda_cache
(
struct
hda_cache_rec
*
cache
,
unsigned
int
record_size
);
static
void
free_hda_cache
(
struct
hda_cache_rec
*
cache
);
...
...
@@ -2917,6 +2943,7 @@ static void hda_call_codec_resume(struct hda_codec *codec)
codec
->
afg
?
codec
->
afg
:
codec
->
mfg
,
AC_PWRST_D0
);
restore_pincfgs
(
codec
);
/* restore all current pin configs */
restore_shutup_pins
(
codec
);
hda_exec_init_verbs
(
codec
);
if
(
codec
->
patch_ops
.
resume
)
codec
->
patch_ops
.
resume
(
codec
);
...
...
sound/pci/hda/hda_codec.h
View file @
f8fb27bd
...
...
@@ -821,6 +821,7 @@ struct hda_codec {
unsigned
int
pin_amp_workaround
:
1
;
/* pin out-amp takes index
* (e.g. Conexant codecs)
*/
unsigned
int
pins_shutup
:
1
;
/* pins are shut up */
unsigned
int
no_trigger_sense
:
1
;
/* don't trigger at pin-sensing */
#ifdef CONFIG_SND_HDA_POWER_SAVE
unsigned
int
power_on
:
1
;
/* current (global) power-state */
...
...
@@ -897,7 +898,9 @@ void snd_hda_codec_resume_cache(struct hda_codec *codec);
/* the struct for codec->pin_configs */
struct
hda_pincfg
{
hda_nid_t
nid
;
unsigned
int
cfg
;
unsigned
char
ctrl
;
/* current pin control value */
unsigned
char
pad
;
/* reserved */
unsigned
int
cfg
;
/* default configuration */
};
unsigned
int
snd_hda_codec_get_pincfg
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
);
...
...
sound/pci/hda/patch_realtek.c
View file @
f8fb27bd
...
...
@@ -1275,8 +1275,10 @@ static int alc_auto_parse_customize_define(struct hda_codec *codec)
struct
alc_spec
*
spec
=
codec
->
spec
;
ass
=
codec
->
subsystem_id
&
0xffff
;
if
(
ass
!=
codec
->
bus
->
pci
->
subsystem_device
&&
(
ass
&
1
))
if
(
ass
!=
codec
->
bus
->
pci
->
subsystem_device
&&
(
ass
&
1
))
{
spec
->
cdefine
.
enable_pcbeep
=
1
;
/* assume always enabled */
goto
do_sku
;
}
nid
=
0x1d
;
if
(
codec
->
vendor_id
==
0x10ec0260
)
...
...
@@ -2554,7 +2556,7 @@ static struct snd_kcontrol_new alc_beep_mixer[] = {
static
int
alc_build_controls
(
struct
hda_codec
*
codec
)
{
struct
alc_spec
*
spec
=
codec
->
spec
;
struct
snd_kcontrol
*
kctl
;
struct
snd_kcontrol
*
kctl
=
NULL
;
struct
snd_kcontrol_new
*
knew
;
int
i
,
j
,
err
;
unsigned
int
u
;
...
...
@@ -9493,6 +9495,7 @@ static struct snd_pci_quirk alc882_ssid_cfg_tbl[] = {
SND_PCI_QUIRK
(
0x106b
,
0x3e00
,
"iMac 24 Aluminum"
,
ALC885_IMAC24
),
SND_PCI_QUIRK
(
0x106b
,
0x4900
,
"iMac 9,1 Aluminum"
,
ALC885_IMAC91
),
SND_PCI_QUIRK
(
0x106b
,
0x3f00
,
"Macbook 5,1"
,
ALC885_MB5
),
SND_PCI_QUIRK
(
0x106b
,
0x4a00
,
"Macbook 5,2"
,
ALC885_MB5
),
/* FIXME: HP jack sense seems not working for MBP 5,1 or 5,2,
* so apparently no perfect solution yet
*/
...
...
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