diff options
author | Takashi Iwai <tiwai@suse.de> | 2008-02-06 08:03:20 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-04-24 06:00:07 -0400 |
commit | 7ba72ba1fe891a94b1e9d506236507e4dc50e872 (patch) | |
tree | 4c3dc43b6fbb1e9a3f28191a38da563e15180e44 /sound/pci/hda/hda_codec.h | |
parent | 6c4cc3a8ed15aacc06a5fd369639fef633cee2bc (diff) |
[ALSA] hda-intel - Fix PCM device number assignment
In the current scheme, PCM device numbers are assigned incrementally
in the order of codecs. This causes problems when the codec number
is irregular, e.g. codec #0 for HDMI and codec #1 for analog. Then
the HDMI becomes the first PCM, which is picked up as the default
output device. Unfortuantely this doesn't work well with normal
setups.
This patch introduced the fixed device numbers for the PCM types,
namely, analog, SPDIF, HDMI and modem. The PCM devices are assigned
according to the corresponding PCM type. After this patch, HDMI will
be always assigned to PCM #3, SPDIF to PCM #1, and the first analog
to PCM #0, etc.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_codec.h')
-rw-r--r-- | sound/pci/hda/hda_codec.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h index f14871151be..301b5227bfb 100644 --- a/sound/pci/hda/hda_codec.h +++ b/sound/pci/hda/hda_codec.h | |||
@@ -590,11 +590,21 @@ struct hda_pcm_stream { | |||
590 | struct hda_pcm_ops ops; | 590 | struct hda_pcm_ops ops; |
591 | }; | 591 | }; |
592 | 592 | ||
593 | /* PCM types */ | ||
594 | enum { | ||
595 | HDA_PCM_TYPE_AUDIO, | ||
596 | HDA_PCM_TYPE_SPDIF, | ||
597 | HDA_PCM_TYPE_HDMI, | ||
598 | HDA_PCM_TYPE_MODEM, | ||
599 | HDA_PCM_NTYPES | ||
600 | }; | ||
601 | |||
593 | /* for PCM creation */ | 602 | /* for PCM creation */ |
594 | struct hda_pcm { | 603 | struct hda_pcm { |
595 | char *name; | 604 | char *name; |
596 | struct hda_pcm_stream stream[2]; | 605 | struct hda_pcm_stream stream[2]; |
597 | unsigned int is_modem; /* modem codec? */ | 606 | unsigned int pcm_type; /* HDA_PCM_TYPE_XXX */ |
607 | int device; /* assigned device number */ | ||
598 | }; | 608 | }; |
599 | 609 | ||
600 | /* codec information */ | 610 | /* codec information */ |