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
7d5ab418
Commit
7d5ab418
authored
Nov 05, 2009
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fix/hda' into topic/hda
parents
23c4a881
798a8a15
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
106 additions
and
5 deletions
+106
-5
Documentation/sound/alsa/HD-Audio-Models.txt
Documentation/sound/alsa/HD-Audio-Models.txt
+1
-0
sound/pci/hda/hda_intel.c
sound/pci/hda/hda_intel.c
+1
-0
sound/pci/hda/patch_conexant.c
sound/pci/hda/patch_conexant.c
+1
-0
sound/pci/hda/patch_nvhdmi.c
sound/pci/hda/patch_nvhdmi.c
+1
-1
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+6
-3
sound/pci/hda/patch_sigmatel.c
sound/pci/hda/patch_sigmatel.c
+96
-1
No files found.
Documentation/sound/alsa/HD-Audio-Models.txt
View file @
7d5ab418
...
@@ -359,6 +359,7 @@ STAC9227/9228/9229/927x
...
@@ -359,6 +359,7 @@ STAC9227/9228/9229/927x
5stack-no-fp D965 5stack without front panel
5stack-no-fp D965 5stack without front panel
dell-3stack Dell Dimension E520
dell-3stack Dell Dimension E520
dell-bios Fixes with Dell BIOS setup
dell-bios Fixes with Dell BIOS setup
volknob Fixes with volume-knob widget 0x24
auto BIOS setup (default)
auto BIOS setup (default)
STAC92HD71B*
STAC92HD71B*
...
...
sound/pci/hda/hda_intel.c
View file @
7d5ab418
...
@@ -2674,6 +2674,7 @@ static struct pci_device_id azx_ids[] = {
...
@@ -2674,6 +2674,7 @@ static struct pci_device_id azx_ids[] = {
{
PCI_DEVICE
(
0x10de
,
0x044b
),
.
driver_data
=
AZX_DRIVER_NVIDIA
},
{
PCI_DEVICE
(
0x10de
,
0x044b
),
.
driver_data
=
AZX_DRIVER_NVIDIA
},
{
PCI_DEVICE
(
0x10de
,
0x055c
),
.
driver_data
=
AZX_DRIVER_NVIDIA
},
{
PCI_DEVICE
(
0x10de
,
0x055c
),
.
driver_data
=
AZX_DRIVER_NVIDIA
},
{
PCI_DEVICE
(
0x10de
,
0x055d
),
.
driver_data
=
AZX_DRIVER_NVIDIA
},
{
PCI_DEVICE
(
0x10de
,
0x055d
),
.
driver_data
=
AZX_DRIVER_NVIDIA
},
{
PCI_DEVICE
(
0x10de
,
0x0590
),
.
driver_data
=
AZX_DRIVER_NVIDIA
},
{
PCI_DEVICE
(
0x10de
,
0x0774
),
.
driver_data
=
AZX_DRIVER_NVIDIA
},
{
PCI_DEVICE
(
0x10de
,
0x0774
),
.
driver_data
=
AZX_DRIVER_NVIDIA
},
{
PCI_DEVICE
(
0x10de
,
0x0775
),
.
driver_data
=
AZX_DRIVER_NVIDIA
},
{
PCI_DEVICE
(
0x10de
,
0x0775
),
.
driver_data
=
AZX_DRIVER_NVIDIA
},
{
PCI_DEVICE
(
0x10de
,
0x0776
),
.
driver_data
=
AZX_DRIVER_NVIDIA
},
{
PCI_DEVICE
(
0x10de
,
0x0776
),
.
driver_data
=
AZX_DRIVER_NVIDIA
},
...
...
sound/pci/hda/patch_conexant.c
View file @
7d5ab418
...
@@ -2325,6 +2325,7 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = {
...
@@ -2325,6 +2325,7 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = {
CXT5066_LAPTOP
),
CXT5066_LAPTOP
),
SND_PCI_QUIRK
(
0x1028
,
0x02f5
,
"Dell"
,
SND_PCI_QUIRK
(
0x1028
,
0x02f5
,
"Dell"
,
CXT5066_DELL_LAPTOP
),
CXT5066_DELL_LAPTOP
),
SND_PCI_QUIRK
(
0x152d
,
0x0833
,
"OLPC XO-1.5"
,
CXT5066_OLPC_XO_1_5
),
{}
{}
};
};
...
...
sound/pci/hda/patch_nvhdmi.c
View file @
7d5ab418
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
#include "hda_local.h"
#include "hda_local.h"
/* define below to restrict the supported rates and formats */
/* define below to restrict the supported rates and formats */
#define LIMITED_RATE_FMT_SUPPORT
/* #define LIMITED_RATE_FMT_SUPPORT */
struct
nvhdmi_spec
{
struct
nvhdmi_spec
{
struct
hda_multi_out
multiout
;
struct
hda_multi_out
multiout
;
...
...
sound/pci/hda/patch_realtek.c
View file @
7d5ab418
...
@@ -275,7 +275,7 @@ struct alc_spec {
...
@@ -275,7 +275,7 @@ struct alc_spec {
struct
snd_kcontrol_new
*
cap_mixer
;
/* capture mixer */
struct
snd_kcontrol_new
*
cap_mixer
;
/* capture mixer */
unsigned
int
beep_amp
;
/* beep amp value, set via set_beep_amp() */
unsigned
int
beep_amp
;
/* beep amp value, set via set_beep_amp() */
const
struct
hda_verb
*
init_verbs
[
5
];
/* initialization verbs
const
struct
hda_verb
*
init_verbs
[
10
];
/* initialization verbs
* don't forget NULL
* don't forget NULL
* termination!
* termination!
*/
*/
...
@@ -965,6 +965,8 @@ static void alc_automute_pin(struct hda_codec *codec)
...
@@ -965,6 +965,8 @@ static void alc_automute_pin(struct hda_codec *codec)
unsigned
int
nid
=
spec
->
autocfg
.
hp_pins
[
0
];
unsigned
int
nid
=
spec
->
autocfg
.
hp_pins
[
0
];
int
i
;
int
i
;
if
(
!
nid
)
return
;
pincap
=
snd_hda_query_pin_caps
(
codec
,
nid
);
pincap
=
snd_hda_query_pin_caps
(
codec
,
nid
);
if
(
pincap
&
AC_PINCAP_TRIG_REQ
)
/* need trigger? */
if
(
pincap
&
AC_PINCAP_TRIG_REQ
)
/* need trigger? */
snd_hda_codec_read
(
codec
,
nid
,
0
,
AC_VERB_SET_PIN_SENSE
,
0
);
snd_hda_codec_read
(
codec
,
nid
,
0
,
AC_VERB_SET_PIN_SENSE
,
0
);
...
@@ -12594,7 +12596,8 @@ static struct snd_pci_quirk alc268_cfg_tbl[] = {
...
@@ -12594,7 +12596,8 @@ static struct snd_pci_quirk alc268_cfg_tbl[] = {
SND_PCI_QUIRK
(
0x1025
,
0x015b
,
"Acer Aspire One"
,
SND_PCI_QUIRK
(
0x1025
,
0x015b
,
"Acer Aspire One"
,
ALC268_ACER_ASPIRE_ONE
),
ALC268_ACER_ASPIRE_ONE
),
SND_PCI_QUIRK
(
0x1028
,
0x0253
,
"Dell OEM"
,
ALC268_DELL
),
SND_PCI_QUIRK
(
0x1028
,
0x0253
,
"Dell OEM"
,
ALC268_DELL
),
SND_PCI_QUIRK
(
0x1028
,
0x02b0
,
"Dell Inspiron Mini9"
,
ALC268_DELL
),
SND_PCI_QUIRK_MASK
(
0x1028
,
0xfff0
,
0x02b0
,
"Dell Inspiron Mini9/Vostro A90"
,
ALC268_DELL
),
/* almost compatible with toshiba but with optional digital outs;
/* almost compatible with toshiba but with optional digital outs;
* auto-probing seems working fine
* auto-probing seems working fine
*/
*/
...
@@ -17351,7 +17354,7 @@ static int alc662_auto_create_extra_out(struct hda_codec *codec, hda_nid_t pin,
...
@@ -17351,7 +17354,7 @@ static int alc662_auto_create_extra_out(struct hda_codec *codec, hda_nid_t pin,
/* create playback/capture controls for input pins */
/* create playback/capture controls for input pins */
#define alc662_auto_create_input_ctls \
#define alc662_auto_create_input_ctls \
alc88
0
_auto_create_input_ctls
alc88
2
_auto_create_input_ctls
static
void
alc662_auto_set_output_and_unmute
(
struct
hda_codec
*
codec
,
static
void
alc662_auto_set_output_and_unmute
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
,
int
pin_type
,
hda_nid_t
nid
,
int
pin_type
,
...
...
sound/pci/hda/patch_sigmatel.c
View file @
7d5ab418
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include <linux/delay.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/pci.h>
#include <linux/pci.h>
#include <linux/dmi.h>
#include <sound/core.h>
#include <sound/core.h>
#include <sound/asoundef.h>
#include <sound/asoundef.h>
#include <sound/jack.h>
#include <sound/jack.h>
...
@@ -158,6 +159,7 @@ enum {
...
@@ -158,6 +159,7 @@ enum {
STAC_D965_5ST_NO_FP
,
STAC_D965_5ST_NO_FP
,
STAC_DELL_3ST
,
STAC_DELL_3ST
,
STAC_DELL_BIOS
,
STAC_DELL_BIOS
,
STAC_927X_VOLKNOB
,
STAC_927X_MODELS
STAC_927X_MODELS
};
};
...
@@ -907,6 +909,16 @@ static struct hda_verb d965_core_init[] = {
...
@@ -907,6 +909,16 @@ static struct hda_verb d965_core_init[] = {
{}
{}
};
};
static
struct
hda_verb
dell_3st_core_init
[]
=
{
/* don't set delta bit */
{
0x24
,
AC_VERB_SET_VOLUME_KNOB_CONTROL
,
0x7f
},
/* unmute node 0x1b */
{
0x1b
,
AC_VERB_SET_AMP_GAIN_MUTE
,
0xb000
},
/* select node 0x03 as DAC */
{
0x0b
,
AC_VERB_SET_CONNECT_SEL
,
0x01
},
{}
};
static
struct
hda_verb
stac927x_core_init
[]
=
{
static
struct
hda_verb
stac927x_core_init
[]
=
{
/* set master volume and direct control */
/* set master volume and direct control */
{
0x24
,
AC_VERB_SET_VOLUME_KNOB_CONTROL
,
0xff
},
{
0x24
,
AC_VERB_SET_VOLUME_KNOB_CONTROL
,
0xff
},
...
@@ -915,6 +927,14 @@ static struct hda_verb stac927x_core_init[] = {
...
@@ -915,6 +927,14 @@ static struct hda_verb stac927x_core_init[] = {
{}
{}
};
};
static
struct
hda_verb
stac927x_volknob_core_init
[]
=
{
/* don't set delta bit */
{
0x24
,
AC_VERB_SET_VOLUME_KNOB_CONTROL
,
0x7f
},
/* enable analog pc beep path */
{
0x01
,
AC_VERB_SET_DIGI_CONVERT_2
,
1
<<
5
},
{}
};
static
struct
hda_verb
stac9205_core_init
[]
=
{
static
struct
hda_verb
stac9205_core_init
[]
=
{
/* set master volume and direct control */
/* set master volume and direct control */
{
0x24
,
AC_VERB_SET_VOLUME_KNOB_CONTROL
,
0xff
},
{
0x24
,
AC_VERB_SET_VOLUME_KNOB_CONTROL
,
0xff
},
...
@@ -1674,6 +1694,8 @@ static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = {
...
@@ -1674,6 +1694,8 @@ static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = {
"DFI LanParty"
,
STAC_92HD71BXX_REF
),
"DFI LanParty"
,
STAC_92HD71BXX_REF
),
SND_PCI_QUIRK
(
PCI_VENDOR_ID_HP
,
0x30fb
,
SND_PCI_QUIRK
(
PCI_VENDOR_ID_HP
,
0x30fb
,
"HP dv4-1222nr"
,
STAC_HP_DV4_1222NR
),
"HP dv4-1222nr"
,
STAC_HP_DV4_1222NR
),
SND_PCI_QUIRK_MASK
(
PCI_VENDOR_ID_HP
,
0xfff0
,
0x1720
,
"HP"
,
STAC_HP_DV5
),
SND_PCI_QUIRK_MASK
(
PCI_VENDOR_ID_HP
,
0xfff0
,
0x3080
,
SND_PCI_QUIRK_MASK
(
PCI_VENDOR_ID_HP
,
0xfff0
,
0x3080
,
"HP"
,
STAC_HP_DV5
),
"HP"
,
STAC_HP_DV5
),
SND_PCI_QUIRK_MASK
(
PCI_VENDOR_ID_HP
,
0xfff0
,
0x30f0
,
SND_PCI_QUIRK_MASK
(
PCI_VENDOR_ID_HP
,
0xfff0
,
0x30f0
,
...
@@ -1999,6 +2021,7 @@ static unsigned int *stac927x_brd_tbl[STAC_927X_MODELS] = {
...
@@ -1999,6 +2021,7 @@ static unsigned int *stac927x_brd_tbl[STAC_927X_MODELS] = {
[
STAC_D965_5ST_NO_FP
]
=
d965_5st_no_fp_pin_configs
,
[
STAC_D965_5ST_NO_FP
]
=
d965_5st_no_fp_pin_configs
,
[
STAC_DELL_3ST
]
=
dell_3st_pin_configs
,
[
STAC_DELL_3ST
]
=
dell_3st_pin_configs
,
[
STAC_DELL_BIOS
]
=
NULL
,
[
STAC_DELL_BIOS
]
=
NULL
,
[
STAC_927X_VOLKNOB
]
=
NULL
,
};
};
static
const
char
*
stac927x_models
[
STAC_927X_MODELS
]
=
{
static
const
char
*
stac927x_models
[
STAC_927X_MODELS
]
=
{
...
@@ -2010,6 +2033,7 @@ static const char *stac927x_models[STAC_927X_MODELS] = {
...
@@ -2010,6 +2033,7 @@ static const char *stac927x_models[STAC_927X_MODELS] = {
[
STAC_D965_5ST_NO_FP
]
=
"5stack-no-fp"
,
[
STAC_D965_5ST_NO_FP
]
=
"5stack-no-fp"
,
[
STAC_DELL_3ST
]
=
"dell-3stack"
,
[
STAC_DELL_3ST
]
=
"dell-3stack"
,
[
STAC_DELL_BIOS
]
=
"dell-bios"
,
[
STAC_DELL_BIOS
]
=
"dell-bios"
,
[
STAC_927X_VOLKNOB
]
=
"volknob"
,
};
};
static
struct
snd_pci_quirk
stac927x_cfg_tbl
[]
=
{
static
struct
snd_pci_quirk
stac927x_cfg_tbl
[]
=
{
...
@@ -2045,6 +2069,8 @@ static struct snd_pci_quirk stac927x_cfg_tbl[] = {
...
@@ -2045,6 +2069,8 @@ static struct snd_pci_quirk stac927x_cfg_tbl[] = {
"Intel D965"
,
STAC_D965_5ST
),
"Intel D965"
,
STAC_D965_5ST
),
SND_PCI_QUIRK_MASK
(
PCI_VENDOR_ID_INTEL
,
0xff00
,
0x2500
,
SND_PCI_QUIRK_MASK
(
PCI_VENDOR_ID_INTEL
,
0xff00
,
0x2500
,
"Intel D965"
,
STAC_D965_5ST
),
"Intel D965"
,
STAC_D965_5ST
),
/* volume-knob fixes */
SND_PCI_QUIRK_VENDOR
(
0x10cf
,
"FSC"
,
STAC_927X_VOLKNOB
),
{}
/* terminator */
{}
/* terminator */
};
};
...
@@ -4707,6 +4733,26 @@ static int stac92xx_resume(struct hda_codec *codec)
...
@@ -4707,6 +4733,26 @@ static int stac92xx_resume(struct hda_codec *codec)
return
0
;
return
0
;
}
}
static
int
hp_bseries_system
(
u32
subsystem_id
)
{
switch
(
subsystem_id
)
{
case
0x103c307e
:
case
0x103c307f
:
case
0x103c3080
:
case
0x103c3081
:
case
0x103c1722
:
case
0x103c1723
:
case
0x103c1724
:
case
0x103c1725
:
case
0x103c1726
:
case
0x103c1727
:
case
0x103c1728
:
case
0x103c1729
:
return
1
;
}
return
0
;
}
/*
/*
* using power check for controlling mute led of HP notebooks
* using power check for controlling mute led of HP notebooks
* check for mute state only on Speakers (nid = 0x10)
* check for mute state only on Speakers (nid = 0x10)
...
@@ -4731,6 +4777,11 @@ static int stac92xx_hp_check_power_status(struct hda_codec *codec,
...
@@ -4731,6 +4777,11 @@ static int stac92xx_hp_check_power_status(struct hda_codec *codec,
else
else
spec
->
gpio_data
|=
spec
->
gpio_led
;
/* white */
spec
->
gpio_data
|=
spec
->
gpio_led
;
/* white */
if
(
hp_bseries_system
(
codec
->
subsystem_id
))
{
/* LED state is inverted on these systems */
spec
->
gpio_data
^=
spec
->
gpio_led
;
}
stac_gpio_set
(
codec
,
spec
->
gpio_mask
,
stac_gpio_set
(
codec
,
spec
->
gpio_mask
,
spec
->
gpio_dir
,
spec
->
gpio_dir
,
spec
->
gpio_data
);
spec
->
gpio_data
);
...
@@ -5220,6 +5271,7 @@ static int patch_stac92hd71bxx(struct hda_codec *codec)
...
@@ -5220,6 +5271,7 @@ static int patch_stac92hd71bxx(struct hda_codec *codec)
{
{
struct
sigmatel_spec
*
spec
;
struct
sigmatel_spec
*
spec
;
struct
hda_verb
*
unmute_init
=
stac92hd71bxx_unmute_core_init
;
struct
hda_verb
*
unmute_init
=
stac92hd71bxx_unmute_core_init
;
unsigned
int
pin_cfg
;
int
err
=
0
;
int
err
=
0
;
spec
=
kzalloc
(
sizeof
(
*
spec
),
GFP_KERNEL
);
spec
=
kzalloc
(
sizeof
(
*
spec
),
GFP_KERNEL
);
...
@@ -5403,6 +5455,45 @@ static int patch_stac92hd71bxx(struct hda_codec *codec)
...
@@ -5403,6 +5455,45 @@ static int patch_stac92hd71bxx(struct hda_codec *codec)
break
;
break
;
}
}
if
(
hp_bseries_system
(
codec
->
subsystem_id
))
{
pin_cfg
=
snd_hda_codec_get_pincfg
(
codec
,
0x0f
);
if
(
get_defcfg_device
(
pin_cfg
)
==
AC_JACK_LINE_OUT
||
get_defcfg_device
(
pin_cfg
)
==
AC_JACK_SPEAKER
||
get_defcfg_device
(
pin_cfg
)
==
AC_JACK_HP_OUT
)
{
/* It was changed in the BIOS to just satisfy MS DTM.
* Lets turn it back into slaved HP
*/
pin_cfg
=
(
pin_cfg
&
(
~
AC_DEFCFG_DEVICE
))
|
(
AC_JACK_HP_OUT
<<
AC_DEFCFG_DEVICE_SHIFT
);
pin_cfg
=
(
pin_cfg
&
(
~
(
AC_DEFCFG_DEF_ASSOC
|
AC_DEFCFG_SEQUENCE
)))
|
0x1f
;
snd_hda_codec_set_pincfg
(
codec
,
0x0f
,
pin_cfg
);
}
}
if
((
codec
->
subsystem_id
>>
16
)
==
PCI_VENDOR_ID_HP
)
{
const
struct
dmi_device
*
dev
=
NULL
;
while
((
dev
=
dmi_find_device
(
DMI_DEV_TYPE_OEM_STRING
,
NULL
,
dev
)))
{
if
(
strcmp
(
dev
->
name
,
"HP_Mute_LED_1"
))
{
switch
(
codec
->
vendor_id
)
{
case
0x111d7608
:
spec
->
gpio_led
=
0x01
;
break
;
case
0x111d7600
:
case
0x111d7601
:
case
0x111d7602
:
case
0x111d7603
:
spec
->
gpio_led
=
0x08
;
break
;
}
break
;
}
}
}
#ifdef CONFIG_SND_HDA_POWER_SAVE
#ifdef CONFIG_SND_HDA_POWER_SAVE
if
(
spec
->
gpio_led
)
{
if
(
spec
->
gpio_led
)
{
spec
->
gpio_mask
|=
spec
->
gpio_led
;
spec
->
gpio_mask
|=
spec
->
gpio_led
;
...
@@ -5612,10 +5703,14 @@ static int patch_stac927x(struct hda_codec *codec)
...
@@ -5612,10 +5703,14 @@ static int patch_stac927x(struct hda_codec *codec)
spec
->
dmic_nids
=
stac927x_dmic_nids
;
spec
->
dmic_nids
=
stac927x_dmic_nids
;
spec
->
num_dmics
=
STAC927X_NUM_DMICS
;
spec
->
num_dmics
=
STAC927X_NUM_DMICS
;
spec
->
init
=
d
965
_core_init
;
spec
->
init
=
d
ell_3st
_core_init
;
spec
->
dmux_nids
=
stac927x_dmux_nids
;
spec
->
dmux_nids
=
stac927x_dmux_nids
;
spec
->
num_dmuxes
=
ARRAY_SIZE
(
stac927x_dmux_nids
);
spec
->
num_dmuxes
=
ARRAY_SIZE
(
stac927x_dmux_nids
);
break
;
break
;
case
STAC_927X_VOLKNOB
:
spec
->
num_dmics
=
0
;
spec
->
init
=
stac927x_volknob_core_init
;
break
;
default:
default:
spec
->
num_dmics
=
0
;
spec
->
num_dmics
=
0
;
spec
->
init
=
stac927x_core_init
;
spec
->
init
=
stac927x_core_init
;
...
...
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