diff options
author | Thomas Bushnell <thomas@gnu.org> | 1997-02-25 21:28:37 +0000 |
---|---|---|
committer | Thomas Bushnell <thomas@gnu.org> | 1997-02-25 21:28:37 +0000 |
commit | f07a4c844da9f0ecae5bbee1ab94be56505f26f7 (patch) | |
tree | 12b07c7e578fc1a5f53dbfde2632408491ff2a70 /i386/i386at/gpl/linux/block/rz1000.c |
Initial source
Diffstat (limited to 'i386/i386at/gpl/linux/block/rz1000.c')
-rw-r--r-- | i386/i386at/gpl/linux/block/rz1000.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/i386/i386at/gpl/linux/block/rz1000.c b/i386/i386at/gpl/linux/block/rz1000.c new file mode 100644 index 0000000..11f1dbd --- /dev/null +++ b/i386/i386at/gpl/linux/block/rz1000.c @@ -0,0 +1,56 @@ +/* + * linux/drivers/block/rz1000.c Version 0.02 Feb 08, 1996 + * + * Copyright (C) 1995-1996 Linus Torvalds & author (see below) + */ + +/* + * Principal Author/Maintainer: mlord@bnr.ca (Mark Lord) + * + * This file provides support for disabling the buggy read-ahead + * mode of the RZ1000 IDE chipset, commonly used on Intel motherboards. + */ + +#undef REALLY_SLOW_IO /* most systems can safely undef this */ + +#include <linux/types.h> +#include <linux/kernel.h> +#include <linux/delay.h> +#include <linux/timer.h> +#include <linux/mm.h> +#include <linux/ioport.h> +#include <linux/blkdev.h> +#include <linux/hdreg.h> +#include <asm/io.h> +#include <linux/bios32.h> +#include <linux/pci.h> +#include "ide.h" + +static void ide_pci_access_error (int rc) +{ + printk("ide: pcibios access failed - %s\n", pcibios_strerror(rc)); +} + +void init_rz1000 (byte bus, byte fn) +{ + int rc; + unsigned short reg; + + printk("ide: buggy RZ1000 interface: "); + if ((rc = pcibios_read_config_word (bus, fn, PCI_COMMAND, ®))) { + ide_pci_access_error (rc); + } else if (!(reg & 1)) { + printk("not enabled\n"); + } else { + if ((rc = pcibios_read_config_word(bus, fn, 0x40, ®)) + || (rc = pcibios_write_config_word(bus, fn, 0x40, reg & 0xdfff))) + { + ide_hwifs[0].no_unmask = 1; + ide_hwifs[1].no_unmask = 1; + ide_hwifs[0].serialized = 1; + ide_pci_access_error (rc); + printk("serialized, disabled unmasking\n"); + } else + printk("disabled read-ahead\n"); + } +} |