160 pci_read_config_byte(dev, (0x56|hwif->channel), &ultra_timing);
161 pci_read_config_byte(dev, 0x54, &ultra_enable);
162
163 ultra_timing &= ~(0x0F << (4*unit));
164 ultra_enable &= ~(0x01 << drive->dn);
165
166 if (speed >= XFER_UDMA_0) {
167 dma_timing |= dma_modes[2];
168 ultra_timing |= (udma_modes[speed - XFER_UDMA_0] << (4 * unit));
169 ultra_enable |= (0x01 << drive->dn);
170 } else if (speed >= XFER_MW_DMA_0)
171 dma_timing |= dma_modes[speed - XFER_MW_DMA_0];
172
173 pci_write_config_byte(dev, drive_pci2[drive->dn], dma_timing);
174 pci_write_config_byte(dev, (0x56|hwif->channel), ultra_timing);
175 pci_write_config_byte(dev, 0x54, ultra_enable);
176}
177
178static unsigned int init_chipset_svwks(struct pci_dev *dev)
179{
180 unsigned int reg;
181 u8 btr;
182
183
184 pci_write_config_byte(dev, PCI_LATENCY_TIMER, 0x40);
185
186
187 if (dev->device == PCI_DEVICE_ID_SERVERWORKS_OSB4IDE) {
188 isa_dev = pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
189 PCI_DEVICE_ID_SERVERWORKS_OSB4, NULL);
190 if (isa_dev) {
191 pci_read_config_dword(isa_dev, 0x64, ®);
192 reg &= ~0x00002000;
193 if(!(reg & 0x00004000))
194 printk(KERN_DEBUG DRV_NAME " %s: UDMA not BIOS "
195 "enabled.\n", pci_name(dev));
196 reg |= 0x00004000;
197 pci_write_config_dword(isa_dev, 0x64, reg);
198 }
199 }
200