mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 18:39:59 +00:00
[ALSA] hda-intel - Fix power-off hang on ASUS P5AD2
The hda-intel driver has a problem at power-off on ASUS P5AD2. It's caused when the position-buffer is enabled -- most likely a hardware-specific problem. This patch adds a quirk to avoid the unnecessary enablement of position-buffer. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
3da23cac3d
commit
ee9d6b9a30
1 changed files with 7 additions and 3 deletions
|
@ -1059,9 +1059,12 @@ static int azx_setup_controller(struct azx *chip, struct azx_dev *azx_dev)
|
||||||
azx_sd_writel(azx_dev, SD_BDLPU, upper_32bit(azx_dev->bdl.addr));
|
azx_sd_writel(azx_dev, SD_BDLPU, upper_32bit(azx_dev->bdl.addr));
|
||||||
|
|
||||||
/* enable the position buffer */
|
/* enable the position buffer */
|
||||||
if (!(azx_readl(chip, DPLBASE) & ICH6_DPLBASE_ENABLE))
|
if (chip->position_fix == POS_FIX_POSBUF ||
|
||||||
azx_writel(chip, DPLBASE,
|
chip->position_fix == POS_FIX_AUTO) {
|
||||||
(u32)chip->posbuf.addr |ICH6_DPLBASE_ENABLE);
|
if (!(azx_readl(chip, DPLBASE) & ICH6_DPLBASE_ENABLE))
|
||||||
|
azx_writel(chip, DPLBASE,
|
||||||
|
(u32)chip->posbuf.addr | ICH6_DPLBASE_ENABLE);
|
||||||
|
}
|
||||||
|
|
||||||
/* set the interrupt enable bits in the descriptor control register */
|
/* set the interrupt enable bits in the descriptor control register */
|
||||||
azx_sd_writel(azx_dev, SD_CTL,
|
azx_sd_writel(azx_dev, SD_CTL,
|
||||||
|
@ -1707,6 +1710,7 @@ static int azx_dev_free(struct snd_device *device)
|
||||||
static struct snd_pci_quirk position_fix_list[] __devinitdata = {
|
static struct snd_pci_quirk position_fix_list[] __devinitdata = {
|
||||||
SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_NONE),
|
SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_NONE),
|
||||||
SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_NONE),
|
SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_NONE),
|
||||||
|
SND_PCI_QUIRK(0x1043, 0x813d, "ASUS P5AD2", POS_FIX_NONE),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue