aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_intel.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-02-19 05:36:35 -0500
committerTakashi Iwai <tiwai@suse.de>2008-04-24 06:00:12 -0400
commit8b6ed8e70d9a7c39748a9902d64138e070d4064b (patch)
tree5051073d3b623542f5de74b0e960b444c7e519e1 /sound/pci/hda/hda_intel.c
parent49c88b85b53767f97eb8c9171cb0b976c62a0114 (diff)
[ALSA] hda-intel - Clean up stream definitions
Clean up the code to define playback/capture streams. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_intel.c')
-rw-r--r--sound/pci/hda/hda_intel.c29
1 files changed, 8 insertions, 21 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 66dceffa1217..cf1a1d0124fe 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -185,21 +185,15 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO1, SDO2, SDO3 };
185 185
186/* max number of SDs */ 186/* max number of SDs */
187/* ICH, ATI and VIA have 4 playback and 4 capture */ 187/* ICH, ATI and VIA have 4 playback and 4 capture */
188#define ICH6_CAPTURE_INDEX 0
189#define ICH6_NUM_CAPTURE 4 188#define ICH6_NUM_CAPTURE 4
190#define ICH6_PLAYBACK_INDEX 4
191#define ICH6_NUM_PLAYBACK 4 189#define ICH6_NUM_PLAYBACK 4
192 190
193/* ULI has 6 playback and 5 capture */ 191/* ULI has 6 playback and 5 capture */
194#define ULI_CAPTURE_INDEX 0
195#define ULI_NUM_CAPTURE 5 192#define ULI_NUM_CAPTURE 5
196#define ULI_PLAYBACK_INDEX 5
197#define ULI_NUM_PLAYBACK 6 193#define ULI_NUM_PLAYBACK 6
198 194
199/* ATI HDMI has 1 playback and 0 capture */ 195/* ATI HDMI has 1 playback and 0 capture */
200#define ATIHDMI_CAPTURE_INDEX 0
201#define ATIHDMI_NUM_CAPTURE 0 196#define ATIHDMI_NUM_CAPTURE 0
202#define ATIHDMI_PLAYBACK_INDEX 0
203#define ATIHDMI_NUM_PLAYBACK 1 197#define ATIHDMI_NUM_PLAYBACK 1
204 198
205/* this number is statically defined for simplicity */ 199/* this number is statically defined for simplicity */
@@ -1846,38 +1840,31 @@ static int __devinit azx_create(struct snd_card *card, struct pci_dev *pci,
1846 if ((gcap & 0x01) && !pci_set_dma_mask(pci, DMA_64BIT_MASK)) 1840 if ((gcap & 0x01) && !pci_set_dma_mask(pci, DMA_64BIT_MASK))
1847 pci_set_consistent_dma_mask(pci, DMA_64BIT_MASK); 1841 pci_set_consistent_dma_mask(pci, DMA_64BIT_MASK);
1848 1842
1849 if (gcap) { 1843 /* read number of streams from GCAP register instead of using
1850 /* read number of streams from GCAP register instead of using 1844 * hardcoded value
1851 * hardcoded value 1845 */
1852 */ 1846 chip->capture_streams = (gcap >> 8) & 0x0f;
1853 chip->playback_streams = (gcap & (0xF << 12)) >> 12; 1847 chip->playback_streams = (gcap >> 12) & 0x0f;
1854 chip->capture_streams = (gcap & (0xF << 8)) >> 8; 1848 if (!chip->playback_streams && !chip->capture_streams) {
1855 chip->playback_index_offset = chip->capture_streams;
1856 chip->capture_index_offset = 0;
1857 } else {
1858 /* gcap didn't give any info, switching to old method */ 1849 /* gcap didn't give any info, switching to old method */
1859 1850
1860 switch (chip->driver_type) { 1851 switch (chip->driver_type) {
1861 case AZX_DRIVER_ULI: 1852 case AZX_DRIVER_ULI:
1862 chip->playback_streams = ULI_NUM_PLAYBACK; 1853 chip->playback_streams = ULI_NUM_PLAYBACK;
1863 chip->capture_streams = ULI_NUM_CAPTURE; 1854 chip->capture_streams = ULI_NUM_CAPTURE;
1864 chip->playback_index_offset = ULI_PLAYBACK_INDEX;
1865 chip->capture_index_offset = ULI_CAPTURE_INDEX;
1866 break; 1855 break;
1867 case AZX_DRIVER_ATIHDMI: 1856 case AZX_DRIVER_ATIHDMI:
1868 chip->playback_streams = ATIHDMI_NUM_PLAYBACK; 1857 chip->playback_streams = ATIHDMI_NUM_PLAYBACK;
1869 chip->capture_streams = ATIHDMI_NUM_CAPTURE; 1858 chip->capture_streams = ATIHDMI_NUM_CAPTURE;
1870 chip->playback_index_offset = ATIHDMI_PLAYBACK_INDEX;
1871 chip->capture_index_offset = ATIHDMI_CAPTURE_INDEX;
1872 break; 1859 break;
1873 default: 1860 default:
1874 chip->playback_streams = ICH6_NUM_PLAYBACK; 1861 chip->playback_streams = ICH6_NUM_PLAYBACK;
1875 chip->capture_streams = ICH6_NUM_CAPTURE; 1862 chip->capture_streams = ICH6_NUM_CAPTURE;
1876 chip->playback_index_offset = ICH6_PLAYBACK_INDEX;
1877 chip->capture_index_offset = ICH6_CAPTURE_INDEX;
1878 break; 1863 break;
1879 } 1864 }
1880 } 1865 }
1866 chip->capture_index_offset = 0;
1867 chip->playback_index_offset = chip->capture_streams;
1881 chip->num_streams = chip->playback_streams + chip->capture_streams; 1868 chip->num_streams = chip->playback_streams + chip->capture_streams;
1882 chip->azx_dev = kcalloc(chip->num_streams, sizeof(*chip->azx_dev), 1869 chip->azx_dev = kcalloc(chip->num_streams, sizeof(*chip->azx_dev),
1883 GFP_KERNEL); 1870 GFP_KERNEL);