|
|
1.1 ! root 1: /* ! 2: * linux/drivers/block/rz1000.c Version 0.03 Mar 20, 1996 ! 3: * ! 4: * Copyright (C) 1995-1996 Linus Torvalds & author (see below) ! 5: */ ! 6: ! 7: /* ! 8: * Principal Author/Maintainer: [email protected] (Mark Lord) ! 9: * ! 10: * This file provides support for disabling the buggy read-ahead ! 11: * mode of the RZ1000 IDE chipset, commonly used on Intel motherboards. ! 12: */ ! 13: ! 14: #undef REALLY_SLOW_IO /* most systems can safely undef this */ ! 15: ! 16: #include <linux/types.h> ! 17: #include <linux/kernel.h> ! 18: #include <linux/delay.h> ! 19: #include <linux/timer.h> ! 20: #include <linux/mm.h> ! 21: #include <linux/ioport.h> ! 22: #include <linux/blkdev.h> ! 23: #include <linux/hdreg.h> ! 24: #include <asm/io.h> ! 25: #include <linux/bios32.h> ! 26: #include <linux/pci.h> ! 27: #include "ide.h" ! 28: ! 29: static void ide_pci_access_error (int rc) ! 30: { ! 31: printk("ide: pcibios access failed - %s\n", pcibios_strerror(rc)); ! 32: } ! 33: ! 34: void init_rz1000 (byte bus, byte fn) ! 35: { ! 36: int rc; ! 37: unsigned short reg; ! 38: ! 39: printk("ide0: buggy RZ1000 interface: "); ! 40: if ((rc = pcibios_read_config_word (bus, fn, PCI_COMMAND, ®))) { ! 41: ide_pci_access_error (rc); ! 42: } else if (!(reg & 1)) { ! 43: printk("not enabled\n"); ! 44: } else { ! 45: if ((rc = pcibios_read_config_word(bus, fn, 0x40, ®)) ! 46: || (rc = pcibios_write_config_word(bus, fn, 0x40, reg & 0xdfff))) ! 47: { ! 48: ide_hwifs[0].drives[0].no_unmask = 1; ! 49: ide_hwifs[0].drives[1].no_unmask = 1; ! 50: ide_hwifs[1].drives[0].no_unmask = 1; ! 51: ide_hwifs[1].drives[1].no_unmask = 1; ! 52: ide_hwifs[0].serialized = 1; ! 53: ide_hwifs[1].serialized = 1; ! 54: ide_pci_access_error (rc); ! 55: printk("serialized, disabled unmasking\n"); ! 56: } else ! 57: printk("disabled read-ahead\n"); ! 58: } ! 59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.