]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/2.6.27.14/libata-pata_via-support-vx855-future-chips-whose-ide-controller-use-0x0571.patch
Linux 4.14.95
[thirdparty/kernel/stable-queue.git] / releases / 2.6.27.14 / libata-pata_via-support-vx855-future-chips-whose-ide-controller-use-0x0571.patch
CommitLineData
3414f2ca
GKH
1From e4d866cdea24543ee16ce6d07d80c513e86ba983 Mon Sep 17 00:00:00 2001
2From: JosephChan@via.com.tw <JosephChan@via.com.tw>
3Date: Fri, 23 Jan 2009 15:37:39 +0800
4Subject: libata: pata_via: support VX855, future chips whose IDE controller use 0x0571
5
6From: JosephChan@via.com.tw <JosephChan@via.com.tw>
7
8commit e4d866cdea24543ee16ce6d07d80c513e86ba983 upstream.
9
10It supports VX855 and future chips whose IDE controller uses PCI ID 0x0571.
11
12Signed-off-by: Joseph Chan <josephchan@via.com.tw>
13Acked-by: Tejun Heo <tj@kernel.org>
14Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
15Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
16
17---
18 drivers/ata/pata_via.c | 22 +++++++++++++++++-----
19 include/linux/pci_ids.h | 4 ++++
20 2 files changed, 21 insertions(+), 5 deletions(-)
21
22--- a/drivers/ata/pata_via.c
23+++ b/drivers/ata/pata_via.c
24@@ -87,6 +87,10 @@ enum {
25 VIA_SATA_PATA = 0x800, /* SATA/PATA combined configuration */
26 };
27
28+enum {
29+ VIA_IDFLAG_SINGLE = (1 << 0), /* single channel controller) */
30+};
31+
32 /*
33 * VIA SouthBridge chips.
34 */
35@@ -98,8 +102,12 @@ static const struct via_isa_bridge {
36 u8 rev_max;
37 u16 flags;
38 } via_isa_bridges[] = {
39+ { "vx855", PCI_DEVICE_ID_VIA_VX855, 0x00, 0x2f,
40+ VIA_UDMA_133 | VIA_BAD_AST | VIA_SATA_PATA },
41 { "vx800", PCI_DEVICE_ID_VIA_VX800, 0x00, 0x2f, VIA_UDMA_133 |
42 VIA_BAD_AST | VIA_SATA_PATA },
43+ { "vt8261", PCI_DEVICE_ID_VIA_8261, 0x00, 0x2f,
44+ VIA_UDMA_133 | VIA_BAD_AST },
45 { "vt8237s", PCI_DEVICE_ID_VIA_8237S, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
46 { "vt8251", PCI_DEVICE_ID_VIA_8251, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
47 { "cx700", PCI_DEVICE_ID_VIA_CX700, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST | VIA_SATA_PATA },
48@@ -123,6 +131,8 @@ static const struct via_isa_bridge {
49 { "vt82c586", PCI_DEVICE_ID_VIA_82C586_0, 0x00, 0x0f, VIA_UDMA_NONE | VIA_SET_FIFO },
50 { "vt82c576", PCI_DEVICE_ID_VIA_82C576, 0x00, 0x2f, VIA_UDMA_NONE | VIA_SET_FIFO | VIA_NO_UNMASK },
51 { "vt82c576", PCI_DEVICE_ID_VIA_82C576, 0x00, 0x2f, VIA_UDMA_NONE | VIA_SET_FIFO | VIA_NO_UNMASK | VIA_BAD_ID },
52+ { "vtxxxx", PCI_DEVICE_ID_VIA_ANON, 0x00, 0x2f,
53+ VIA_UDMA_133 | VIA_BAD_AST },
54 { NULL }
55 };
56
57@@ -461,6 +471,7 @@ static int via_init_one(struct pci_dev *
58 static int printed_version;
59 u8 enable;
60 u32 timing;
61+ unsigned long flags = id->driver_data;
62 int rc;
63
64 if (!printed_version++)
65@@ -470,9 +481,13 @@ static int via_init_one(struct pci_dev *
66 if (rc)
67 return rc;
68
69+ if (flags & VIA_IDFLAG_SINGLE)
70+ ppi[1] = &ata_dummy_port_info;
71+
72 /* To find out how the IDE will behave and what features we
73 actually have to look at the bridge not the IDE controller */
74- for (config = via_isa_bridges; config->id; config++)
75+ for (config = via_isa_bridges; config->id != PCI_DEVICE_ID_VIA_ANON;
76+ config++)
77 if ((isa = pci_get_device(PCI_VENDOR_ID_VIA +
78 !!(config->flags & VIA_BAD_ID),
79 config->id, NULL))) {
80@@ -483,10 +498,6 @@ static int via_init_one(struct pci_dev *
81 pci_dev_put(isa);
82 }
83
84- if (!config->id) {
85- printk(KERN_WARNING "via: Unknown VIA SouthBridge, disabling.\n");
86- return -ENODEV;
87- }
88 pci_dev_put(isa);
89
90 if (!(config->flags & VIA_NO_ENABLES)) {
91@@ -588,6 +599,7 @@ static const struct pci_device_id via[]
92 { PCI_VDEVICE(VIA, 0x1571), },
93 { PCI_VDEVICE(VIA, 0x3164), },
94 { PCI_VDEVICE(VIA, 0x5324), },
95+ { PCI_VDEVICE(VIA, 0xC409), VIA_IDFLAG_SINGLE },
96
97 { },
98 };
99--- a/include/linux/pci_ids.h
100+++ b/include/linux/pci_ids.h
101@@ -1346,6 +1346,7 @@
102 #define PCI_DEVICE_ID_VIA_8783_0 0x3208
103 #define PCI_DEVICE_ID_VIA_8237 0x3227
104 #define PCI_DEVICE_ID_VIA_8251 0x3287
105+#define PCI_DEVICE_ID_VIA_8261 0x3402
106 #define PCI_DEVICE_ID_VIA_8237A 0x3337
107 #define PCI_DEVICE_ID_VIA_8237S 0x3372
108 #define PCI_DEVICE_ID_VIA_SATA_EIDE 0x5324
109@@ -1355,10 +1356,13 @@
110 #define PCI_DEVICE_ID_VIA_CX700 0x8324
111 #define PCI_DEVICE_ID_VIA_CX700_IDE 0x0581
112 #define PCI_DEVICE_ID_VIA_VX800 0x8353
113+#define PCI_DEVICE_ID_VIA_VX855 0x8409
114 #define PCI_DEVICE_ID_VIA_8371_1 0x8391
115 #define PCI_DEVICE_ID_VIA_82C598_1 0x8598
116 #define PCI_DEVICE_ID_VIA_838X_1 0xB188
117 #define PCI_DEVICE_ID_VIA_83_87XX_1 0xB198
118+#define PCI_DEVICE_ID_VIA_C409_IDE 0XC409
119+#define PCI_DEVICE_ID_VIA_ANON 0xFFFF
120
121 #define PCI_VENDOR_ID_SIEMENS 0x110A
122 #define PCI_DEVICE_ID_SIEMENS_DSCC4 0x2102