]> git.ipfire.org Git - ipfire-2.x.git/blame - src/patches/suse-2.6.27.39/patches.drivers/libata-ahci-Withdraw-IGN_SERR_INTERNAL-for-SB800
Fix oinkmaster patch.
[ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.drivers / libata-ahci-Withdraw-IGN_SERR_INTERNAL-for-SB800
CommitLineData
2cb7cef9
BS
1From e427fe042cf90c0652eed9a85e57a8fd8af89890 Mon Sep 17 00:00:00 2001
2From: Shane Huang <shane.huang@amd.com>
3Date: Tue, 30 Dec 2008 10:53:41 +0800
4Subject: ahci: Withdraw IGN_SERR_INTERNAL for SB800 SATA
5References: bnc#449873
6
7There is an issue in ATI SB600/SB700 SATA that PxSERR.E should not be
8set on some conditions, which will lead to many SATA ODD error messages.
9commit 55a61604cd1354e1783364e1c901034f2f474b7d is the workaround.
10Since SB800 fixed this HW issue, IGN_SERR_INTERNAL should be withdrawn
11for SB800.
12
13Signed-off-by: Shane Huang <shane.huang@amd.com>
14Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
15Signed-off-by: Tejun Heo <teheo@suse.de>
16---
17 drivers/ata/ahci.c | 8 ++++++--
18 1 file changed, 6 insertions(+), 2 deletions(-)
19
20Index: linux-2.6.27-SLE11_BRANCH/drivers/ata/ahci.c
21===================================================================
22--- linux-2.6.27-SLE11_BRANCH.orig/drivers/ata/ahci.c
23+++ linux-2.6.27-SLE11_BRANCH/drivers/ata/ahci.c
24@@ -95,7 +95,7 @@ enum {
25 board_ahci_ign_iferr = 2,
26 board_ahci_sb600 = 3,
27 board_ahci_mv = 4,
28- board_ahci_sb700 = 5,
29+ board_ahci_sb700 = 5, /* for SB700 and SB800 */
30 board_ahci_mcp65 = 6,
31 board_ahci_nopmp = 7,
32
33@@ -428,7 +428,7 @@ static const struct ata_port_info ahci_p
34 .udma_mask = ATA_UDMA6,
35 .port_ops = &ahci_ops,
36 },
37- /* board_ahci_sb700 */
38+ /* board_ahci_sb700, for SB700 and SB800 */
39 {
40 AHCI_HFLAGS (AHCI_HFLAG_IGN_SERR_INTERNAL),
41 .flags = AHCI_FLAG_COMMON,
42@@ -2631,6 +2631,10 @@ static int ahci_init_one(struct pci_dev
43 (pdev->revision == 0xa1 || pdev->revision == 0xa2))
44 hpriv->flags |= AHCI_HFLAG_NO_MSI;
45
46+ /* SB800 does NOT need the workaround to ignore SERR_INTERNAL */
47+ if (board_id == board_ahci_sb700 && pdev->revision >= 0x40)
48+ hpriv->flags &= ~AHCI_HFLAG_IGN_SERR_INTERNAL;
49+
50 if ((hpriv->flags & AHCI_HFLAG_NO_MSI) || pci_enable_msi(pdev))
51 pci_intx(pdev, 1);
52