mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-27 07:00:09 -05:00
When both an SPDIF and an HDMI output are present on HD-audio, both try to access IEC958 controls with index=0 although one of them must be wrong. For avoiding this conflict, the recent kernel code (3.9 and 3.8 stable) moves the IEC958 controls of an SPDIF with index=16 once when the conflict happens. In this patch, the corresponding support is added in alsa-lib side. The new "skip_rest" boolean flag is added to the hooked element definition which indicates that the rest of element array will be ignored once when this element is present and evaluated. With this new flag, the HD-audio config takes index=16 primarily, then take index=0 as fallback. Signed-off-by: Takashi Iwai <tiwai@suse.de>
319 lines
4.9 KiB
Text
319 lines
4.9 KiB
Text
#
|
|
# Configuration for the Intel HD audio (ICH6/ICH7)
|
|
#
|
|
|
|
<confdir:pcm/front.conf>
|
|
|
|
HDA-Intel.pcm.front.0 {
|
|
@args [ CARD ]
|
|
@args.CARD {
|
|
type string
|
|
}
|
|
type asym
|
|
playback.pcm {
|
|
type softvol
|
|
slave.pcm {
|
|
type hw
|
|
card $CARD
|
|
subdevice 0
|
|
}
|
|
control {
|
|
name "PCM Playback Volume"
|
|
card $CARD
|
|
}
|
|
}
|
|
capture.pcm {
|
|
type hw
|
|
card $CARD
|
|
}
|
|
}
|
|
|
|
# default with dmix+softvol & dsnoop
|
|
HDA-Intel.pcm.default {
|
|
@args [ CARD ]
|
|
@args.CARD {
|
|
type string
|
|
}
|
|
type asym
|
|
playback.pcm {
|
|
type plug
|
|
slave.pcm {
|
|
type softvol
|
|
slave.pcm {
|
|
@func concat
|
|
strings [ "dmix:" $CARD ]
|
|
}
|
|
control {
|
|
name "PCM Playback Volume"
|
|
card $CARD
|
|
}
|
|
}
|
|
}
|
|
capture.pcm {
|
|
type plug
|
|
slave.pcm {
|
|
type softvol
|
|
slave.pcm {
|
|
@func concat
|
|
strings [ "dsnoop:" $CARD ]
|
|
}
|
|
control {
|
|
name "Digital Capture Volume"
|
|
card $CARD
|
|
}
|
|
min_dB -30.0
|
|
max_dB 30.0
|
|
resolution 121
|
|
}
|
|
# to avoid possible phase inversions with digital mics
|
|
route_policy copy
|
|
}
|
|
hint.device 0
|
|
}
|
|
|
|
<confdir:pcm/surround40.conf>
|
|
<confdir:pcm/surround41.conf>
|
|
<confdir:pcm/surround50.conf>
|
|
<confdir:pcm/surround51.conf>
|
|
<confdir:pcm/surround71.conf>
|
|
|
|
HDA-Intel.pcm.surround40.0 cards.HDA-Intel.pcm.front.0
|
|
HDA-Intel.pcm.surround51.0 cards.HDA-Intel.pcm.front.0
|
|
HDA-Intel.pcm.surround71.0 cards.HDA-Intel.pcm.front.0
|
|
|
|
<confdir:pcm/iec958.conf>
|
|
|
|
HDA-Intel.pcm.iec958.0 {
|
|
@args [ CARD AES0 AES1 AES2 AES3 ]
|
|
@args.CARD {
|
|
type string
|
|
}
|
|
@args.AES0 {
|
|
type integer
|
|
}
|
|
@args.AES1 {
|
|
type integer
|
|
}
|
|
@args.AES2 {
|
|
type integer
|
|
}
|
|
@args.AES3 {
|
|
type integer
|
|
}
|
|
type asym
|
|
playback.pcm {
|
|
type hooks
|
|
slave.pcm {
|
|
type hw
|
|
card $CARD
|
|
device 1
|
|
}
|
|
hooks.0 {
|
|
type ctl_elems
|
|
hook_args [
|
|
{
|
|
name "IEC958 Playback Default"
|
|
index 16
|
|
optional true
|
|
lock true
|
|
preserve true
|
|
value [ $AES0 $AES1 $AES2 $AES3 ]
|
|
}
|
|
{
|
|
name "IEC958 Playback Switch"
|
|
index 16
|
|
optional true
|
|
value true
|
|
# if this element is present, skip the rest
|
|
skip_rest true
|
|
}
|
|
{
|
|
name "IEC958 Playback Default"
|
|
lock true
|
|
preserve true
|
|
value [ $AES0 $AES1 $AES2 $AES3 ]
|
|
}
|
|
{
|
|
name "IEC958 Playback Switch"
|
|
value true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
capture.pcm {
|
|
type hooks
|
|
slave.pcm {
|
|
type hw
|
|
card $CARD
|
|
device 1
|
|
}
|
|
hooks.0 {
|
|
type ctl_elems
|
|
hook_args [
|
|
{
|
|
name "IEC958 Capture Switch"
|
|
lock true
|
|
preserve true
|
|
value true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
hint.device 1
|
|
}
|
|
|
|
<confdir:pcm/hdmi.conf>
|
|
|
|
HDA-Intel.pcm.hdmi.common {
|
|
@args [ CARD DEVICE CTLINDEX AES0 AES1 AES2 AES3 ]
|
|
@args.CARD {
|
|
type string
|
|
}
|
|
@args.DEVICE {
|
|
type integer
|
|
}
|
|
@args.CTLINDEX {
|
|
type integer
|
|
}
|
|
@args.AES0 {
|
|
type integer
|
|
}
|
|
@args.AES1 {
|
|
type integer
|
|
}
|
|
@args.AES2 {
|
|
type integer
|
|
}
|
|
@args.AES3 {
|
|
type integer
|
|
}
|
|
type hooks
|
|
slave.pcm {
|
|
type hw
|
|
card $CARD
|
|
device $DEVICE
|
|
}
|
|
hooks.0 {
|
|
type ctl_elems
|
|
hook_args [
|
|
{
|
|
name "IEC958 Playback Default"
|
|
index $CTLINDEX
|
|
lock true
|
|
preserve true
|
|
value [ $AES0 $AES1 $AES2 $AES3 ]
|
|
}
|
|
{
|
|
name "IEC958 Playback Switch"
|
|
index $CTLINDEX
|
|
value true
|
|
}
|
|
]
|
|
}
|
|
hint.device $DEVICE
|
|
}
|
|
|
|
HDA-Intel.pcm.hdmi.0 {
|
|
@args [ CARD AES0 AES1 AES2 AES3 ]
|
|
@args.CARD { type string }
|
|
@args.AES0 { type integer }
|
|
@args.AES1 { type integer }
|
|
@args.AES2 { type integer }
|
|
@args.AES3 { type integer }
|
|
@func refer
|
|
name {
|
|
@func concat
|
|
strings [
|
|
"cards.HDA-Intel.pcm.hdmi.common:"
|
|
"CARD=" $CARD ","
|
|
"DEVICE=3,"
|
|
"CTLINDEX=0,"
|
|
"AES0=" $AES0 ","
|
|
"AES1=" $AES1 ","
|
|
"AES2=" $AES2 ","
|
|
"AES3=" $AES3
|
|
]
|
|
}
|
|
}
|
|
|
|
HDA-Intel.pcm.hdmi.1 {
|
|
@args [ CARD AES0 AES1 AES2 AES3 ]
|
|
@args.CARD { type string }
|
|
@args.AES0 { type integer }
|
|
@args.AES1 { type integer }
|
|
@args.AES2 { type integer }
|
|
@args.AES3 { type integer }
|
|
@func refer
|
|
name {
|
|
@func concat
|
|
strings [
|
|
"cards.HDA-Intel.pcm.hdmi.common:"
|
|
"CARD=" $CARD ","
|
|
"DEVICE=7,"
|
|
"CTLINDEX=1,"
|
|
"AES0=" $AES0 ","
|
|
"AES1=" $AES1 ","
|
|
"AES2=" $AES2 ","
|
|
"AES3=" $AES3
|
|
]
|
|
}
|
|
}
|
|
|
|
HDA-Intel.pcm.hdmi.2 {
|
|
@args [ CARD AES0 AES1 AES2 AES3 ]
|
|
@args.CARD { type string }
|
|
@args.AES0 { type integer }
|
|
@args.AES1 { type integer }
|
|
@args.AES2 { type integer }
|
|
@args.AES3 { type integer }
|
|
@func refer
|
|
name {
|
|
@func concat
|
|
strings [
|
|
"cards.HDA-Intel.pcm.hdmi.common:"
|
|
"CARD=" $CARD ","
|
|
"DEVICE=8,"
|
|
"CTLINDEX=2,"
|
|
"AES0=" $AES0 ","
|
|
"AES1=" $AES1 ","
|
|
"AES2=" $AES2 ","
|
|
"AES3=" $AES3
|
|
]
|
|
}
|
|
}
|
|
|
|
HDA-Intel.pcm.hdmi.3 {
|
|
@args [ CARD AES0 AES1 AES2 AES3 ]
|
|
@args.CARD { type string }
|
|
@args.AES0 { type integer }
|
|
@args.AES1 { type integer }
|
|
@args.AES2 { type integer }
|
|
@args.AES3 { type integer }
|
|
@func refer
|
|
name {
|
|
@func concat
|
|
strings [
|
|
"cards.HDA-Intel.pcm.hdmi.common:"
|
|
"CARD=" $CARD ","
|
|
"DEVICE=9,"
|
|
"CTLINDEX=3,"
|
|
"AES0=" $AES0 ","
|
|
"AES1=" $AES1 ","
|
|
"AES2=" $AES2 ","
|
|
"AES3=" $AES3
|
|
]
|
|
}
|
|
}
|
|
|
|
<confdir:pcm/modem.conf>
|
|
|
|
HDA-Intel.pcm.modem.0 {
|
|
@args [ CARD ]
|
|
@args.CARD {
|
|
type string
|
|
}
|
|
type hw
|
|
card $CARD
|
|
device 6
|
|
hint.show off
|
|
}
|