aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt2
-rw-r--r--sound/pci/hda/hda_intel.c15
2 files changed, 7 insertions, 10 deletions
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 529073dea196..ab28f7b62f29 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -753,7 +753,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
753 753
754 [Multiple options for each card instance] 754 [Multiple options for each card instance]
755 model - force the model name 755 model - force the model name
756 position_fix - Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size) 756 position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF)
757 probe_mask - Bitmask to probe codecs (default = -1, meaning all slots) 757 probe_mask - Bitmask to probe codecs (default = -1, meaning all slots)
758 758
759 [Single (global) options] 759 [Single (global) options]
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 1ec3fd4c8940..0ff8b9b9629e 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -70,7 +70,7 @@ module_param_array(model, charp, NULL, 0444);
70MODULE_PARM_DESC(model, "Use the given board model."); 70MODULE_PARM_DESC(model, "Use the given board model.");
71module_param_array(position_fix, int, NULL, 0444); 71module_param_array(position_fix, int, NULL, 0444);
72MODULE_PARM_DESC(position_fix, "Fix DMA pointer " 72MODULE_PARM_DESC(position_fix, "Fix DMA pointer "
73 "(0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size)."); 73 "(0 = auto, 1 = none, 2 = POSBUF).");
74module_param_array(probe_mask, int, NULL, 0444); 74module_param_array(probe_mask, int, NULL, 0444);
75MODULE_PARM_DESC(probe_mask, "Bitmask to probe codecs (default = -1)."); 75MODULE_PARM_DESC(probe_mask, "Bitmask to probe codecs (default = -1).");
76module_param(single_cmd, bool, 0444); 76module_param(single_cmd, bool, 0444);
@@ -266,9 +266,8 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO1, SDO2, SDO3 };
266/* position fix mode */ 266/* position fix mode */
267enum { 267enum {
268 POS_FIX_AUTO, 268 POS_FIX_AUTO,
269 POS_FIX_NONE, 269 POS_FIX_LPIB,
270 POS_FIX_POSBUF, 270 POS_FIX_POSBUF,
271 POS_FIX_FIFO,
272}; 271};
273 272
274/* Defines for ATI HD Audio support in SB450 south bridge */ 273/* Defines for ATI HD Audio support in SB450 south bridge */
@@ -1506,8 +1505,6 @@ static unsigned int azx_get_position(struct azx *chip,
1506 } else { 1505 } else {
1507 /* read LPIB */ 1506 /* read LPIB */
1508 pos = azx_sd_readl(azx_dev, SD_LPIB); 1507 pos = azx_sd_readl(azx_dev, SD_LPIB);
1509 if (chip->position_fix == POS_FIX_FIFO)
1510 pos += azx_dev->fifo_size;
1511 } 1508 }
1512 if (pos >= azx_dev->bufsize) 1509 if (pos >= azx_dev->bufsize)
1513 pos = 0; 1510 pos = 0;
@@ -1542,7 +1539,7 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev)
1542 printk(KERN_WARNING 1539 printk(KERN_WARNING
1543 "hda-intel: Invalid position buffer, " 1540 "hda-intel: Invalid position buffer, "
1544 "using LPIB read method instead.\n"); 1541 "using LPIB read method instead.\n");
1545 chip->position_fix = POS_FIX_NONE; 1542 chip->position_fix = POS_FIX_LPIB;
1546 pos = azx_get_position(chip, azx_dev); 1543 pos = azx_get_position(chip, azx_dev);
1547 } else 1544 } else
1548 chip->position_fix = POS_FIX_POSBUF; 1545 chip->position_fix = POS_FIX_POSBUF;
@@ -1917,9 +1914,9 @@ static int azx_dev_free(struct snd_device *device)
1917 * white/black-listing for position_fix 1914 * white/black-listing for position_fix
1918 */ 1915 */
1919static struct snd_pci_quirk position_fix_list[] __devinitdata = { 1916static struct snd_pci_quirk position_fix_list[] __devinitdata = {
1920 SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_NONE), 1917 SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_LPIB),
1921 SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_NONE), 1918 SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_LPIB),
1922 SND_PCI_QUIRK(0x1043, 0x813d, "ASUS P5AD2", POS_FIX_NONE), 1919 SND_PCI_QUIRK(0x1043, 0x813d, "ASUS P5AD2", POS_FIX_LPIB),
1923 {} 1920 {}
1924}; 1921};
1925 1922