aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-06-10 11:53:34 -0400
committerJaroslav Kysela <perex@perex.cz>2008-06-13 10:30:43 -0400
commitd2e1c97331d37a477ef7e9a272b4de4e53b893be (patch)
treec5623d5c8dd1720274054cf60fe084a8a097650c /sound/pci
parent675f25d4d3ff6501cbce608bcc2333a56ec4c105 (diff)
ALSA: hda - remove position_fix=3
position_fix=3 is the option to correct the DMA position with the FIFO size. But, it never worked correctly, and we have now more other workarounds for the DMA position fixes. Thus better to remove it. Also, change POS_FIX_NONE to POS_FIX_LPIB to represent its real role better. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'sound/pci')
-rw-r--r--sound/pci/hda/hda_intel.c15
1 files changed, 6 insertions, 9 deletions
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