Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6:
  cs5520: disable VDMA
  ide/Kconfig: couple of fixes
  alim15x3: remove WDC_ALI15X3 config option
  alim15x3: add "wdc_udma" module parameter
  alim15x3: remove stale warning about ATI RS100 northbridge
  alim15x3: trivial cleanup for ali_set_pio_mode()
  make ide-iops.c:SELECT_MASK() static
  SWARM IDE: Fix up following changes to ide_hwif_t
This commit is contained in:
Linus Torvalds 2008-05-14 14:29:34 -07:00
commit db973ffa11
6 changed files with 39 additions and 86 deletions

View File

@ -1,8 +1,6 @@
#
# IDE ATA ATAPI Block device driver configuration
#
# Andre Hedrick <andre@linux-ide.org>
#
# Select HAVE_IDE if IDE is supported
config HAVE_IDE
@ -335,7 +333,7 @@ config BLK_DEV_CMD640
This driver will work automatically in PCI based systems (most new
systems have PCI slots). But if your system uses VESA local bus
(VLB) instead of PCI, you must also supply a kernel boot parameter
to enable the CMD640 bugfix/support: "ide0=cmd640_vlb". (Try "man
to enable the CMD640 bugfix/support: "cmd640.probe_vlb". (Try "man
bootparam" or see the documentation of your boot loader about how to
pass options to the kernel.)
@ -457,27 +455,11 @@ config BLK_DEV_ALI15X3
onboard chipsets. It also tests for Simplex mode and enables
normal dual channel support.
If you say Y here, you also need to say Y to "Use DMA by default
when available", above. Please read the comments at the top of
Please read the comments at the top of
<file:drivers/ide/pci/alim15x3.c>.
If unsure, say N.
config WDC_ALI15X3
bool "ALI M15x3 WDC support (DANGEROUS)"
depends on BLK_DEV_ALI15X3
---help---
This allows for UltraDMA support for WDC drives that ignore CRC
checking. You are a fool for enabling this option, but there have
been requests. DO NOT COMPLAIN IF YOUR DRIVE HAS FS CORRUPTION, IF
YOU ENABLE THIS! No one will listen, just laugh for ignoring this
SERIOUS WARNING.
Using this option can allow WDC drives to run at ATA-4/5 transfer
rates with only an ATA-2 support structure.
SAY N!
config BLK_DEV_AMD74XX
tristate "AMD and nVidia IDE support"
depends on !ARM
@ -520,9 +502,6 @@ config BLK_DEV_CY82C693
This driver adds detection and support for the CY82C693 chipset
used on Digital's PC-Alpha 164SX boards.
If you say Y here, you need to say Y to "Use DMA by default
when available" as well.
config BLK_DEV_CS5520
tristate "Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTAL)"
depends on EXPERIMENTAL
@ -613,13 +592,12 @@ config BLK_DEV_SC1200
National SCx200 series of embedded x86 "Geode" systems.
config BLK_DEV_PIIX
tristate "Intel PIIXn chipsets support"
tristate "Intel PIIX/ICH chipsets support"
select BLK_DEV_IDEDMA_PCI
help
This driver adds explicit support for Intel PIIX and ICH chips
and also for the Efar Victory66 (slc90e66) chip. This allows
the kernel to change PIO, DMA and UDMA speeds and to configure
the chip to optimum performance.
This driver adds explicit support for Intel PIIX and ICH chips.
This allows the kernel to change PIO, DMA and UDMA speeds and to
configure the chip to optimum performance.
config BLK_DEV_IT8213
tristate "IT8213 IDE support"
@ -657,11 +635,7 @@ config BLK_DEV_PDC202XX_OLD
happen if the BIOS revisions of all installed cards (three-max) do
not match, the driver attempts to do dynamic tuning of the chipset
at boot-time for max-speed. Ultra33 BIOS 1.25 or newer is required
for more than one card. This card may require that you say Y to
"Special UDMA Feature".
If you say Y here, you need to say Y to "Use DMA by default when
available" as well.
for more than one card.
Please read the comments at the top of
<file:drivers/ide/pci/pdc202xx_old.c>.
@ -710,9 +684,6 @@ config BLK_DEV_SIS5513
ATA100: SiS635, SiS645, SiS650, SiS730, SiS735, SiS740,
SiS745, SiS750
If you say Y here, you need to say Y to "Use DMA by default when
available" as well.
Please read the comments at the top of <file:drivers/ide/pci/sis5513.c>.
config BLK_DEV_SL82C105
@ -734,9 +705,6 @@ config BLK_DEV_SLC90E66
and it will handle timing cycles. Since this is an improved
look-a-like to the PIIX4 it should be a nice addition.
If you say Y here, you need to say Y to "Use DMA by default when
available" as well.
Please read the comments at the top of
<file:drivers/ide/pci/slc90e66.c>.
@ -888,17 +856,17 @@ config BLK_DEV_IDEDOUBLER
bool "Amiga IDE Doubler support (EXPERIMENTAL)"
depends on BLK_DEV_GAYLE && EXPERIMENTAL
---help---
This driver provides support for the so-called `IDE doublers' (made
This feature provides support for the so-called `IDE doublers' (made
by various manufacturers, e.g. Eyetech) that can be connected to
the on-board IDE interface of some Amiga models. Using such an IDE
doubler, you can connect up to four instead of two IDE devices to
the Amiga's on-board IDE interface.
Note that the normal Amiga Gayle IDE driver may not work correctly
if you have an IDE doubler and don't enable this driver!
if you have an IDE doubler and don't enable this feature!
Say Y if you have an IDE doubler. The driver is enabled at kernel
runtime using the "ide=doubler" kernel boot parameter.
Say Y if you have an IDE doubler. The feature is enabled at kernel
runtime using the "gayle.doubler" kernel boot parameter.
config BLK_DEV_BUDDHA
tristate "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)"

View File

@ -95,7 +95,7 @@ void SELECT_DRIVE (ide_drive_t *drive)
hwif->OUTB(drive->select.all, hwif->io_ports.device_addr);
}
void SELECT_MASK (ide_drive_t *drive, int mask)
static void SELECT_MASK(ide_drive_t *drive, int mask)
{
const struct ide_port_ops *port_ops = drive->hwif->port_ops;

View File

@ -4,7 +4,7 @@
* Author: Manish Lachwani, mlachwani@mvista.com
* Copyright (C) 2004 MIPS Technologies, Inc. All rights reserved.
* Author: Maciej W. Rozycki <macro@mips.com>
* Copyright (c) 2006 Maciej W. Rozycki
* Copyright (c) 2006, 2008 Maciej W. Rozycki
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@ -70,8 +70,9 @@ static int __devinit swarm_ide_probe(struct device *dev)
ide_hwif_t *hwif;
u8 __iomem *base;
phys_t offset, size;
hw_regs_t hw;
int i;
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
u8 idx[] = { 0xff, 0xff, 0xff, 0xff };
if (!SIBYTE_HAVE_IDE)
return -ENODEV;
@ -112,14 +113,15 @@ static int __devinit swarm_ide_probe(struct device *dev)
hwif->host_flags = IDE_HFLAG_MMIO;
default_hwif_mmiops(hwif);
hwif->chipset = ide_generic;
for (i = 0; i <= 7; i++)
hwif->io_ports_array[i] =
hw.io_ports_array[i] =
(unsigned long)(base + ((0x1f0 + i) << 5));
hwif->io_ports.ctl_addr =
hw.io_ports.ctl_addr =
(unsigned long)(base + (0x3f6 << 5));
hwif->irq = K_INT_GB_IDE;
hw.irq = K_INT_GB_IDE;
hw.chipset = ide_generic;
ide_init_port_hw(hwif, &hw);
idx[0] = hwif->index;

View File

@ -38,6 +38,16 @@
#include <asm/io.h>
/*
* Allow UDMA on M1543C-E chipset for WDC disks that ignore CRC checking
* (this is DANGEROUS and could result in data corruption).
*/
static int wdc_udma;
module_param(wdc_udma, bool, 0);
MODULE_PARM_DESC(wdc_udma,
"allow UDMA on M1543C-E chipset for WDC disks (DANGEROUS)");
/*
* ALi devices are not plug in. Otherwise these static values would
* need to go. They ought to go away anyway
@ -76,11 +86,6 @@ static void ali_set_pio_mode(ide_drive_t *drive, const u8 pio)
a_clc = 0;
c_time = ide_pio_timings[pio].cycle_time;
#if 0
if ((r_clc = ((c_time - s_time - a_time) * bus_speed + 999) / 1000) >= 16)
r_clc = 0;
#endif
if (!(r_clc = (c_time * bus_speed + 999) / 1000 - a_clc - s_clc)) {
r_clc = 1;
} else {
@ -110,16 +115,6 @@ static void ali_set_pio_mode(ide_drive_t *drive, const u8 pio)
pci_write_config_byte(dev, port, s_clc);
pci_write_config_byte(dev, port+drive->select.b.unit+2, (a_clc << 4) | r_clc);
local_irq_restore(flags);
/*
* setup active rec
* { 70, 165, 365 }, PIO Mode 0
* { 50, 125, 208 }, PIO Mode 1
* { 30, 100, 110 }, PIO Mode 2
* { 30, 80, 70 }, PIO Mode 3 with IORDY
* { 25, 70, 25 }, PIO Mode 4 with IORDY ns
* { 20, 50, 30 } PIO Mode 5 with IORDY (nonstandard)
*/
}
/**
@ -131,9 +126,7 @@ static void ali_set_pio_mode(ide_drive_t *drive, const u8 pio)
* The actual rules for the ALi are:
* No UDMA on revisions <= 0x20
* Disk only for revisions < 0xC2
* Not WDC drives for revisions < 0xC2
*
* FIXME: WDC ifdef needs to die
* Not WDC drives on M1543C-E (?)
*/
static u8 ali_udma_filter(ide_drive_t *drive)
@ -141,10 +134,9 @@ static u8 ali_udma_filter(ide_drive_t *drive)
if (m5229_revision > 0x20 && m5229_revision < 0xC2) {
if (drive->media != ide_disk)
return 0;
#ifndef CONFIG_WDC_ALI15X3
if (chip_is_1543c_e && strstr(drive->id->model, "WDC "))
if (chip_is_1543c_e && strstr(drive->id->model, "WDC ") &&
wdc_udma == 0)
return 0;
#endif
}
return drive->hwif->ultra_mask;
@ -537,17 +529,9 @@ static const struct ide_port_info ali15x3_chipset __devinitdata = {
static int __devinit alim15x3_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{
static struct pci_device_id ati_rs100[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS100) },
{ },
};
struct ide_port_info d = ali15x3_chipset;
u8 rev = dev->revision, idx = id->driver_data;
if (pci_dev_present(ati_rs100))
printk(KERN_WARNING "alim15x3: ATI Radeon IGP Northbridge is not yet fully tested.\n");
/* don't use LBA48 DMA on ALi devices before rev 0xC5 */
if (rev <= 0xC4)
d.host_flags |= IDE_HFLAG_NO_LBA48_DMA;

View File

@ -119,6 +119,7 @@ static const struct ide_dma_ops cs5520_dma_ops = {
.dma_timeout = ide_dma_timeout,
};
/* FIXME: VDMA is disabled because it caused system hangs */
#define DECLARE_CS_DEV(name_str) \
{ \
.name = name_str, \
@ -126,7 +127,6 @@ static const struct ide_dma_ops cs5520_dma_ops = {
.dma_ops = &cs5520_dma_ops, \
.host_flags = IDE_HFLAG_ISA_PORTS | \
IDE_HFLAG_CS5520 | \
IDE_HFLAG_VDMA | \
IDE_HFLAG_NO_ATAPI_DMA | \
IDE_HFLAG_ABUSE_SET_DMA_MODE, \
.pio_mask = ATA_PIO4, \

View File

@ -965,7 +965,6 @@ typedef struct ide_task_s {
void ide_tf_dump(const char *, struct ide_taskfile *);
extern void SELECT_DRIVE(ide_drive_t *);
extern void SELECT_MASK(ide_drive_t *, int);
extern int drive_is_ready(ide_drive_t *);
@ -1058,8 +1057,8 @@ enum {
IDE_HFLAG_NO_SET_MODE = (1 << 9),
/* trust BIOS for programming chipset/device for DMA */
IDE_HFLAG_TRUST_BIOS_FOR_DMA = (1 << 10),
/* host uses VDMA (tied with IDE_HFLAG_CS5520 for now) */
IDE_HFLAG_VDMA = (1 << 11),
/* host is CS5510/CS5520 */
IDE_HFLAG_CS5520 = (1 << 11),
/* ATAPI DMA is unsupported */
IDE_HFLAG_NO_ATAPI_DMA = (1 << 12),
/* set if host is a "non-bootable" controller */
@ -1070,8 +1069,6 @@ enum {
IDE_HFLAG_NO_AUTODMA = (1 << 15),
/* host uses MMIO */
IDE_HFLAG_MMIO = (1 << 16),
/* host is CS5510/CS5520 */
IDE_HFLAG_CS5520 = IDE_HFLAG_VDMA,
/* no LBA48 */
IDE_HFLAG_NO_LBA48 = (1 << 17),
/* no LBA48 DMA */
@ -1101,6 +1098,8 @@ enum {
IDE_HFLAG_NO_IO_32BIT = (1 << 30),
/* never unmask IRQs */
IDE_HFLAG_NO_UNMASK_IRQS = (1 << 31),
/* host uses VDMA (disabled for now) */
IDE_HFLAG_VDMA = 0,
};
#ifdef CONFIG_BLK_DEV_OFFBOARD