diff options
Diffstat (limited to 'sound/pci/hda/hda_intel.c')
-rw-r--r-- | sound/pci/hda/hda_intel.c | 10 |
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) | |||
1707 | static struct snd_pci_quirk position_fix_list[] __devinitdata = { | 1710 | static 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 | ||