aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_intel.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/hda/hda_intel.c')
-rw-r--r--sound/pci/hda/hda_intel.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 3d9f0bd63ba6..9a20fb1bef4f 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -1059,9 +1059,12 @@ static int azx_setup_controller(struct azx *chip, struct azx_dev *azx_dev)
1059 azx_sd_writel(azx_dev, SD_BDLPU, upper_32bit(azx_dev->bdl.addr)); 1059 azx_sd_writel(azx_dev, SD_BDLPU, upper_32bit(azx_dev->bdl.addr));
1060 1060
1061 /* enable the position buffer */ 1061 /* enable the position buffer */
1062 if (!(azx_readl(chip, DPLBASE) & ICH6_DPLBASE_ENABLE)) 1062 if (chip->position_fix == POS_FIX_POSBUF ||
1063 azx_writel(chip, DPLBASE, 1063 chip->position_fix == POS_FIX_AUTO) {
1064 (u32)chip->posbuf.addr |ICH6_DPLBASE_ENABLE); 1064 if (!(azx_readl(chip, DPLBASE) & ICH6_DPLBASE_ENABLE))
1065 azx_writel(chip, DPLBASE,
1066 (u32)chip->posbuf.addr | ICH6_DPLBASE_ENABLE);
1067 }
1065 1068
1066 /* set the interrupt enable bits in the descriptor control register */ 1069 /* set the interrupt enable bits in the descriptor control register */
1067 azx_sd_writel(azx_dev, SD_CTL, 1070 azx_sd_writel(azx_dev, SD_CTL,
@@ -1707,6 +1710,7 @@ static int azx_dev_free(struct snd_device *device)
1707static struct snd_pci_quirk position_fix_list[] __devinitdata = { 1710static struct snd_pci_quirk position_fix_list[] __devinitdata = {
1708 SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_NONE), 1711 SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_NONE),
1709 SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_NONE), 1712 SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_NONE),
1713 SND_PCI_QUIRK(0x1043, 0x813d, "ASUS P5AD2", POS_FIX_NONE),
1710 {} 1714 {}
1711}; 1715};
1712 1716