1 diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla/drivers/pci/oldproc.c linux.21p2/drivers/pci/oldproc.c
2 --- linux.vanilla/drivers/pci/oldproc.c Sat Dec 29 16:57:22 2001
3 +++ linux.21p2/drivers/pci/oldproc.c Tue Jan 1 22:40:32 2002
5 DEVICE( VIA, VIA_82C585, "VT 82C585 Apollo VP1/VPX"),
6 DEVICE( VIA, VIA_82C586_0, "VT 82C586 Apollo ISA"),
7 DEVICE( VIA, VIA_82C595, "VT 82C595 Apollo VP2"),
8 - DEVICE( VIA, VIA_82C596_0, "VT 82C596 Apollo Pro"),
9 + DEVICE( VIA, VIA_82C596, "VT 82C596 Apollo Pro"),
10 DEVICE( VIA, VIA_82C597_0, "VT 82C597 Apollo VP3"),
11 DEVICE( VIA, VIA_82C598_0, "VT 82C598 Apollo MVP3"),
12 DEVICE( VIA, VIA_82C926, "VT 82C926 Amazon"),
13 - DEVICE( VIA, VIA_82C416, "VT 82C416MV"),
14 + DEVICE( VIA, VIA_82C576_1, "VT 82C416MV"),
15 DEVICE( VIA, VIA_82C595_97, "VT 82C595 Apollo VP2/97"),
16 DEVICE( VIA, VIA_82C586_2, "VT 82C586 Apollo USB"),
17 DEVICE( VIA, VIA_82C586_3, "VT 82C586B Apollo ACPI"),
18 diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla/drivers/pci/quirks.c linux.21p2/drivers/pci/quirks.c
19 --- linux.vanilla/drivers/pci/quirks.c Sun Mar 25 17:31:36 2001
20 +++ linux.21p2/drivers/pci/quirks.c Tue Jan 1 22:39:14 2002
26 + * VIA Apollo KT133 needs PCI latency patch
27 + * Made according to a windows driver based patch by George E. Breese
28 + * see PCI Latency Adjust on http://www.viahardware.com/download/viatweak.shtm
29 + * Also see http://home.tiscalinet.de/au-ja/review-kt133a-1-en.html for
30 + * the info on which Mr Breese based his work.
32 + * Updated based on further information from the site and also on
33 + * information provided by VIA
36 +__initfunc(static void quirk_vialatency(struct pci_dev *dev, int arg))
41 + /* Ok we have a potential problem chipset here. Now see if we have
42 + a buggy southbridge */
44 + p=pci_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, NULL);
47 + pci_read_config_byte(p, PCI_CLASS_REVISION, &rev);
48 + /* 0x40 - 0x4f == 686B, 0x10 - 0x2f == 686A; thanks Dan Hollis */
49 + /* Check for buggy part revisions */
50 + if (rev < 0x40 || rev > 0x42)
55 + p = pci_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8231, NULL);
56 + if(p==NULL) /* No problem parts */
58 + pci_read_config_byte(p, PCI_CLASS_REVISION, &rev);
59 + /* Check for buggy part revisions */
60 + if (rev < 0x10 || rev > 0x12)
65 + * Ok we have the problem. Now set the PCI master grant to
66 + * occur every master grant. The apparent bug is that under high
67 + * PCI load (quite common in Linux of course) you can get data
68 + * loss when the CPU is held off the bus for 3 bus master requests
69 + * This happens to include the IDE controllers....
71 + * VIA only apply this fix when an SB Live! is present but under
72 + * both Linux and Windows this isnt enough, and we have seen
73 + * corruption without SB Live! but with things like 3 UDMA IDE
74 + * controllers. So we ignore that bit of the VIA recommendation..
77 + pci_read_config_byte(dev, 0x76, &busarb);
78 + /* Set bit 4 and bi 5 of byte 76 to 0x01
79 + "Master priority rotation on every PCI master grant */
82 + pci_write_config_byte(dev, 0x76, busarb);
83 + printk(KERN_INFO "Applying VIA southbridge workaround.\n");
87 + * Fix some problems with 'movntq' copies on Athlons. We need to ensure the
88 + * non functional memory stuff wasn't enabled by the BIOS (and thus fix
89 + * crashes when we use 100% memory bandwidth)
92 + * VIA 8363,8622,8361 Northbridges:
93 + * - bits 5, 6, 7 at offset 0x55 need to be turned off
94 + * VIA 8367 (KT266x) Northbridges:
95 + * - bits 5, 6, 7 at offset 0x95 need to be turned off
98 +__initfunc(static void pci_fixup_via_athlon_bug(struct pci_dev *d, int arg))
103 + if (d->device == PCI_DEVICE_ID_VIA_8367_0) {
104 + where = 0x95; /* the memory write queue timer register is
105 + different for the kt266x's: 0x95 not 0x55 */
107 + pci_read_config_byte(d, where, &v);
109 + printk("Trying to stomp on Athlon bug...\n");
110 + v &= 0x1f; /* clear bits 5, 6, 7 */
111 + pci_write_config_byte(d, where, v);
116 typedef void (*quirk_handler)(struct pci_dev *, int);
120 { quirk_passive_release,"Passive release enable" },
121 { quirk_isa_dma_hangs, "Work around ISA DMA hangs" },
122 + { pci_fixup_via_athlon_bug, "Athlon/VIA fixup" },
127 * This is the 82C586 variants.
129 { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0, quirk_isa_dma_hangs, 0x00 },
130 - { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C596_0, quirk_isa_dma_hangs, 0x00 },
131 + { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C596, quirk_isa_dma_hangs, 0x00 },
132 + { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, pci_fixup_via_athlon_bug, 0x00 },
133 + { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8622, pci_fixup_via_athlon_bug, 0x00 },
134 + { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8361, pci_fixup_via_athlon_bug, 0x00 },
135 + { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8367_0, pci_fixup_via_athlon_bug, 0x00 },
136 + { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, quirk_vialatency, 0x00 },
137 + { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8371_1, quirk_vialatency, 0x00 },
138 + { PCI_VENDOR_ID_VIA, 0x3112 /* Not out yet ? */, quirk_vialatency, 0x00 },
141 __initfunc(void pci_quirks_init(void))
142 diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla/include/linux/pci.h linux.21p2/include/linux/pci.h
143 --- linux.vanilla/include/linux/pci.h Sat Dec 29 16:57:24 2001
144 +++ linux.21p2/include/linux/pci.h Tue Jan 1 22:42:06 2002
146 #define PCI_DEVICE_ID_TTI_HPT343 0x0003
148 #define PCI_VENDOR_ID_VIA 0x1106
149 -#define PCI_DEVICE_ID_VIA_8371_0 0x0391
150 +#define PCI_DEVICE_ID_VIA_8363_0 0x0305
151 +#define PCI_DEVICE_ID_VIA_8371_0 0x0391
152 +#define PCI_DEVICE_ID_VIA_8501_0 0x0501
153 #define PCI_DEVICE_ID_VIA_82C505 0x0505
154 #define PCI_DEVICE_ID_VIA_82C561 0x0561
155 #define PCI_DEVICE_ID_VIA_82C586_1 0x0571
156 @@ -838,18 +840,47 @@
157 #define PCI_DEVICE_ID_VIA_82C585 0x0585
158 #define PCI_DEVICE_ID_VIA_82C586_0 0x0586
159 #define PCI_DEVICE_ID_VIA_82C595 0x0595
160 -#define PCI_DEVICE_ID_VIA_82C596_0 0x0596
161 +#define PCI_DEVICE_ID_VIA_82C596 0x0596
162 #define PCI_DEVICE_ID_VIA_82C597_0 0x0597
163 -#define PCI_DEVICE_ID_VIA_82C598_0 0x0598
164 +#define PCI_DEVICE_ID_VIA_82C598_0 0x0598
165 +#define PCI_DEVICE_ID_VIA_8601_0 0x0601
166 +#define PCI_DEVICE_ID_VIA_8605_0 0x0605
167 +#define PCI_DEVICE_ID_VIA_82C680 0x0680
168 +#define PCI_DEVICE_ID_VIA_82C686 0x0686
169 +#define PCI_DEVICE_ID_VIA_82C691 0x0691
170 +#define PCI_DEVICE_ID_VIA_82C693 0x0693
171 +#define PCI_DEVICE_ID_VIA_82C693_1 0x0698
172 #define PCI_DEVICE_ID_VIA_82C926 0x0926
173 -#define PCI_DEVICE_ID_VIA_82C416 0x1571
174 +#define PCI_DEVICE_ID_VIA_82C576_1 0x1571
175 #define PCI_DEVICE_ID_VIA_82C595_97 0x1595
176 #define PCI_DEVICE_ID_VIA_82C586_2 0x3038
177 #define PCI_DEVICE_ID_VIA_82C586_3 0x3040
178 +#define PCI_DEVICE_ID_VIA_6305 0x3044
179 +#define PCI_DEVICE_ID_VIA_82C596_3 0x3050
180 +#define PCI_DEVICE_ID_VIA_82C596B_3 0x3051
181 +#define PCI_DEVICE_ID_VIA_82C686_4 0x3057
182 #define PCI_DEVICE_ID_VIA_82C686_5 0x3058
183 +#define PCI_DEVICE_ID_VIA_8233_5 0x3059
184 +#define PCI_DEVICE_ID_VIA_8233_7 0x3065
185 +#define PCI_DEVICE_ID_VIA_82C686_6 0x3068
186 +#define PCI_DEVICE_ID_VIA_8233_0 0x3074
187 +#define PCI_DEVICE_ID_VIA_8233C_0 0x3109
188 +#define PCI_DEVICE_ID_VIA_8633_0 0x3091
189 +#define PCI_DEVICE_ID_VIA_8367_0 0x3099
190 +#define PCI_DEVICE_ID_VIA_8622 0x3102
191 +#define PCI_DEVICE_ID_VIA_8361 0x3112
192 #define PCI_DEVICE_ID_VIA_86C100A 0x6100
193 +#define PCI_DEVICE_ID_VIA_8231 0x8231
194 +#define PCI_DEVICE_ID_VIA_8231_4 0x8235
195 +#define PCI_DEVICE_ID_VIA_8365_1 0x8305
196 +#define PCI_DEVICE_ID_VIA_8371_1 0x8391
197 +#define PCI_DEVICE_ID_VIA_8501_1 0x8501
198 #define PCI_DEVICE_ID_VIA_82C597_1 0x8597
199 -#define PCI_DEVICE_ID_VIA_82C598_1 0x8598
200 +#define PCI_DEVICE_ID_VIA_82C598_1 0x8598
201 +#define PCI_DEVICE_ID_VIA_8601_1 0x8601
202 +#define PCI_DEVICE_ID_VIA_8505_1 0X8605
203 +#define PCI_DEVICE_ID_VIA_8633_1 0xB091
204 +#define PCI_DEVICE_ID_VIA_8367_1 0xB099
206 #define PCI_VENDOR_ID_SMC2 0x1113
207 #define PCI_DEVICE_ID_SMC2_1211TX 0x1211
208 @@ -1070,6 +1101,7 @@
209 #define PCI_DEVICE_ID_AVM_A1 0x0a00
210 #define PCI_DEVICE_ID_AVM_B1 0x0700
211 #define PCI_DEVICE_ID_AVM_C4 0x0800
212 +#define PCI_DEVICE_ID_AVM_C2 0x1100
213 #define PCI_DEVICE_ID_AVM_T1 0x1200
215 #define PCI_VENDOR_ID_DIPIX 0x1246