Skip to content

Commit

Permalink
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
Browse files Browse the repository at this point in the history
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (63 commits)
  ide: remove REQ_TYPE_ATA_CMD
  ide: switch ide_cmd_ioctl() to use REQ_TYPE_ATA_TASKFILE requests
  ide: switch set_xfer_rate() to use REQ_TYPE_ATA_TASKFILE requests
  ide: fix final status check in drive_cmd_intr()
  ide: check BUSY and ERROR status bits before reading data in drive_cmd_intr()
  ide: don't enable local IRQs for PIO-in in driver_cmd_intr() (take 2)
  ide: convert "empty" REQ_TYPE_ATA_CMD requests to use REQ_TYPE_ATA_TASKFILE
  ide: initialize rq->cmd_type in ide_init_drive_cmd() callers
  ide: use wait_drive_not_busy() in drive_cmd_intr() (take 2)
  ide: kill DATA_READY define
  ide: task_end_request() fix
  ide: use rq->nr_sectors in task_end_request()
  ide: remove needless ->cursg clearing from task_end_request()
  ide: set IDE_TFLAG_IN_* flags before queuing/executing command
  ide-tape: fix handling of non-special requests in ->end_request method
  ide: fix final status check in task_in_intr()
  ide: clear HOB bit for REQ_TYPE_ATA_CMD requests in ide_end_drive_cmd()
  ide: fix ->io_32bit race in ide_taskfile_ioctl()
  cmd64x: remove /proc/ide/cmd64x
  ide: remove broken disk byte-swapping support
  ...
  • Loading branch information
Linus Torvalds committed Jan 27, 2008
2 parents 0444fa7 + 7267c33 commit 1c7c2cd
Show file tree
Hide file tree
Showing 65 changed files with 999 additions and 1,446 deletions.
13 changes: 5 additions & 8 deletions Documentation/ide.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
***
*** The CMD640 is also used on some Vesa Local Bus (VLB) cards, and is *NOT*
*** automatically detected by Linux. For safe, reliable operation with such
*** interfaces, one *MUST* use the "ide0=cmd640_vlb" kernel option.
*** interfaces, one *MUST* use the "cmd640.probe_vlb" kernel option.
***
*** Use of the "serialize" option is no longer necessary.

Expand Down Expand Up @@ -244,10 +244,6 @@ Summary of ide driver parameters for kernel command line

"hdx=nodma" : disallow DMA

"hdx=swapdata" : when the drive is a disk, byte swap all data

"hdx=bswap" : same as above..........

"hdx=scsi" : the return of the ide-scsi flag, this is useful for
allowing ide-floppy, ide-tape, and ide-cdrom|writers
to use ide-scsi emulation on a device specific option.
Expand Down Expand Up @@ -292,9 +288,6 @@ The following are valid ONLY on ide0, which usually corresponds
to the first ATA interface found on the particular host, and the defaults for
the base,ctl ports must not be altered.

"ide0=cmd640_vlb" : *REQUIRED* for VLB cards with the CMD640 chip
(not for PCI -- automatically detected)

"ide=doubler" : probe/support IDE doublers on Amiga

There may be more options than shown -- use the source, Luke!
Expand All @@ -310,6 +303,10 @@ i.e. to enable probing for ALI M14xx chipsets (ali14xx host driver) use:
* "probe" module parameter when ali14xx driver is compiled as module
("modprobe ali14xx probe")

Also for legacy CMD640 host driver (cmd640) you need to use "probe_vlb"
kernel paremeter to enable probing for VLB version of the chipset (PCI ones
are detected automatically).

================================================================================

IDE ATAPI streaming tape driver
Expand Down
50 changes: 27 additions & 23 deletions drivers/ide/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ config BLK_DEV_PLATFORM
If unsure, say N.

config BLK_DEV_CMD640
bool "CMD640 chipset bugfix/support"
tristate "CMD640 chipset bugfix/support"
depends on X86
---help---
The CMD-Technologies CMD640 IDE chip is used on many common 486 and
Expand Down Expand Up @@ -359,9 +359,8 @@ config BLK_DEV_CMD640_ENHANCED
Otherwise say N.

config BLK_DEV_IDEPNP
bool "PNP EIDE support"
tristate "PNP EIDE support"
depends on PNP
select IDE_GENERIC
help
If you have a PnP (Plug and Play) compatible EIDE card and
would like the kernel to automatically detect and activate
Expand All @@ -375,7 +374,19 @@ config BLK_DEV_IDEPCI
bool

config IDEPCI_PCIBUS_ORDER
def_bool BLK_DEV_IDE=y && BLK_DEV_IDEPCI
bool "Probe IDE PCI devices in the PCI bus order (DEPRECATED)"
depends on BLK_DEV_IDE=y && BLK_DEV_IDEPCI
default y
help
Probe IDE PCI devices in the order in which they appear on the
PCI bus (i.e. 00:1f.1 PCI device before 02:01.0 PCI device)
instead of the order in which IDE PCI host drivers are loaded.

Please note that this method of assuring stable naming of
IDE devices is unreliable and use other means for achieving
it (i.e. udev).

If in doubt, say N.

# TODO: split it on per host driver config options (or module parameters)
config BLK_DEV_OFFBOARD
Expand Down Expand Up @@ -789,7 +800,7 @@ config BLK_DEV_CELLEB
endif

config BLK_DEV_IDE_PMAC
bool "Builtin PowerMac IDE support"
tristate "Builtin PowerMac IDE support"
depends on PPC_PMAC && IDE=y && BLK_DEV_IDE=y
help
This driver provides support for the built-in IDE controller on
Expand Down Expand Up @@ -843,8 +854,9 @@ config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ
depends on BLK_DEV_IDE_AU1XXX

config IDE_ARM
def_bool ARM && (ARCH_CLPS7500 || ARCH_RPC || ARCH_SHARK)
select IDE_GENERIC
tristate "ARM IDE support"
depends on ARM && (ARCH_CLPS7500 || ARCH_RPC || ARCH_SHARK)
default y

config BLK_DEV_IDE_ICSIDE
tristate "ICS IDE interface support"
Expand Down Expand Up @@ -876,10 +888,9 @@ config BLK_DEV_IDE_BAST
Simtec BAST or the Thorcom VR1000

config ETRAX_IDE
bool "ETRAX IDE support"
tristate "ETRAX IDE support"
depends on CRIS && BROKEN
select BLK_DEV_IDEDMA
select IDE_GENERIC
help
Enables the ETRAX IDE driver.

Expand Down Expand Up @@ -911,17 +922,15 @@ config ETRAX_IDE_G27_RESET
endchoice

config IDE_H8300
bool "H8300 IDE support"
tristate "H8300 IDE support"
depends on H8300
select IDE_GENERIC
default y
help
Enables the H8300 IDE driver.

config BLK_DEV_GAYLE
bool "Amiga Gayle IDE interface support"
tristate "Amiga Gayle IDE interface support"
depends on AMIGA
select IDE_GENERIC
help
This is the IDE driver for the Amiga Gayle IDE interface. It supports
both the `A1200 style' and `A4000 style' of the Gayle IDE interface,
Expand Down Expand Up @@ -951,9 +960,8 @@ config BLK_DEV_IDEDOUBLER
runtime using the "ide=doubler" kernel boot parameter.

config BLK_DEV_BUDDHA
bool "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)"
tristate "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)"
depends on ZORRO && EXPERIMENTAL
select IDE_GENERIC
help
This is the IDE driver for the IDE interfaces on the Buddha,
Catweasel and X-Surf expansion boards. It supports up to two interfaces
Expand All @@ -964,19 +972,17 @@ config BLK_DEV_BUDDHA
to one of its IDE interfaces.

config BLK_DEV_FALCON_IDE
bool "Falcon IDE interface support"
tristate "Falcon IDE interface support"
depends on ATARI
select IDE_GENERIC
help
This is the IDE driver for the builtin IDE interface on the Atari
Falcon. Say Y if you have a Falcon and want to use IDE devices (hard
disks, CD-ROM drives, etc.) that are connected to the builtin IDE
interface.

config BLK_DEV_MAC_IDE
bool "Macintosh Quadra/Powerbook IDE interface support"
tristate "Macintosh Quadra/Powerbook IDE interface support"
depends on MAC
select IDE_GENERIC
help
This is the IDE driver for the builtin IDE interface on some m68k
Macintosh models. It supports both the `Quadra style' (used in
Expand All @@ -988,18 +994,16 @@ config BLK_DEV_MAC_IDE
builtin IDE interface.

config BLK_DEV_Q40IDE
bool "Q40/Q60 IDE interface support"
tristate "Q40/Q60 IDE interface support"
depends on Q40
select IDE_GENERIC
help
Enable the on-board IDE controller in the Q40/Q60. This should
normally be on; disable it only if you are running a custom hard
drive subsystem through an expansion card.

config BLK_DEV_MPC8xx_IDE
bool "MPC8xx IDE support"
tristate "MPC8xx IDE support"
depends on 8xx && (LWMON || IVMS8 || IVML24 || TQM8xxL) && IDE=y && BLK_DEV_IDE=y && !PPC_MERGE
select IDE_GENERIC
help
This option provides support for IDE on Motorola MPC8xx Systems.
Please see 'Type of MPC8xx IDE interface' for details.
Expand Down
58 changes: 34 additions & 24 deletions drivers/ide/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,48 +7,58 @@
# Note : at this point, these files are compiled on all systems.
# In the future, some of these should be built conditionally.
#
# First come modules that register themselves with the core
# link order is important here

EXTRA_CFLAGS += -Idrivers/ide

obj-$(CONFIG_BLK_DEV_IDE) += pci/

ide-core-y += ide.o ide-io.o ide-iops.o ide-lib.o ide-probe.o ide-taskfile.o

ide-core-$(CONFIG_BLK_DEV_CMD640) += pci/cmd640.o

# Core IDE code - must come before legacy
# core IDE code
ide-core-$(CONFIG_BLK_DEV_IDEPCI) += setup-pci.o
ide-core-$(CONFIG_BLK_DEV_IDEDMA) += ide-dma.o
ide-core-$(CONFIG_IDE_PROC_FS) += ide-proc.o
ide-core-$(CONFIG_BLK_DEV_IDEPNP) += ide-pnp.o
ide-core-$(CONFIG_BLK_DEV_IDEACPI) += ide-acpi.o

# built-in only drivers from arm/
ide-core-$(CONFIG_IDE_ARM) += arm/ide_arm.o
obj-$(CONFIG_BLK_DEV_IDE) += ide-core.o

# built-in only drivers from legacy/
ide-core-$(CONFIG_BLK_DEV_BUDDHA) += legacy/buddha.o
ide-core-$(CONFIG_BLK_DEV_FALCON_IDE) += legacy/falconide.o
ide-core-$(CONFIG_BLK_DEV_GAYLE) += legacy/gayle.o
ide-core-$(CONFIG_BLK_DEV_MAC_IDE) += legacy/macide.o
ide-core-$(CONFIG_BLK_DEV_Q40IDE) += legacy/q40ide.o
ifeq ($(CONFIG_IDE_ARM), y)
ide-arm-core-y += arm/ide_arm.o
obj-y += ide-arm-core.o
endif

# built-in only drivers from ppc/
ide-core-$(CONFIG_BLK_DEV_MPC8xx_IDE) += ppc/mpc8xx.o
ide-core-$(CONFIG_BLK_DEV_IDE_PMAC) += ppc/pmac.o
obj-$(CONFIG_BLK_DEV_IDE) += legacy/ pci/

# built-in only drivers from h8300/
ide-core-$(CONFIG_IDE_H8300) += h8300/ide-h8300.o
obj-$(CONFIG_IDEPCI_PCIBUS_ORDER) += ide-scan-pci.o

obj-$(CONFIG_BLK_DEV_IDE) += ide-core.o
ifeq ($(CONFIG_BLK_DEV_CMD640), y)
cmd640-core-y += pci/cmd640.o
obj-y += cmd640-core.o
endif

obj-$(CONFIG_BLK_DEV_IDE) += cris/ ppc/
obj-$(CONFIG_BLK_DEV_IDEPNP) += ide-pnp.o
obj-$(CONFIG_IDE_H8300) += h8300/
obj-$(CONFIG_IDE_GENERIC) += ide-generic.o

obj-$(CONFIG_BLK_DEV_IDEDISK) += ide-disk.o
obj-$(CONFIG_BLK_DEV_IDECD) += ide-cd.o
obj-$(CONFIG_BLK_DEV_IDETAPE) += ide-tape.o
obj-$(CONFIG_BLK_DEV_IDEFLOPPY) += ide-floppy.o

obj-$(CONFIG_BLK_DEV_IDE) += legacy/ arm/ mips/
obj-$(CONFIG_BLK_DEV_HD) += legacy/
obj-$(CONFIG_ETRAX_IDE) += cris/
ifeq ($(CONFIG_BLK_DEV_IDECS), y)
ide-cs-core-y += legacy/ide-cs.o
obj-y += ide-cs-core.o
endif

ifeq ($(CONFIG_BLK_DEV_PLATFORM), y)
ide-platform-core-y += legacy/ide_platform.o
obj-y += ide-platform-core.o
endif

obj-$(CONFIG_BLK_DEV_IDE) += arm/ mips/

# old hd driver must be last
ifeq ($(CONFIG_BLK_DEV_HD), y)
hd-core-y += legacy/hd.o
obj-y += hd-core.o
endif
4 changes: 4 additions & 0 deletions drivers/ide/arm/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,8 @@ obj-$(CONFIG_BLK_DEV_IDE_ICSIDE) += icside.o
obj-$(CONFIG_BLK_DEV_IDE_RAPIDE) += rapide.o
obj-$(CONFIG_BLK_DEV_IDE_BAST) += bast-ide.o

ifeq ($(CONFIG_IDE_ARM), m)
obj-m += ide_arm.o
endif

EXTRA_CFLAGS := -Idrivers/ide
2 changes: 1 addition & 1 deletion drivers/ide/arm/bast-ide.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ bastide_register(unsigned int base, unsigned int aux, int irq,
hw.io_ports[IDE_CONTROL_OFFSET] = aux + (6 * 0x20);
hw.irq = irq;

ide_register_hw(&hw, NULL, 0, hwif);
ide_register_hw(&hw, NULL, hwif);

return 0;
}
Expand Down
23 changes: 2 additions & 21 deletions drivers/ide/arm/icside.c
Original file line number Diff line number Diff line change
Expand Up @@ -287,26 +287,10 @@ static void icside_set_dma_mode(ide_drive_t *drive, const u8 xfer_mode)
ide_xfer_verbose(xfer_mode), 2000 / drive->drive_data);
}

static void icside_dma_host_off(ide_drive_t *drive)
static void icside_dma_host_set(ide_drive_t *drive, int on)
{
}

static void icside_dma_off_quietly(ide_drive_t *drive)
{
drive->using_dma = 0;
}

static void icside_dma_host_on(ide_drive_t *drive)
{
}

static int icside_dma_on(ide_drive_t *drive)
{
drive->using_dma = 1;

return 0;
}

static int icside_dma_end(ide_drive_t *drive)
{
ide_hwif_t *hwif = HWIF(drive);
Expand Down Expand Up @@ -422,10 +406,7 @@ static void icside_dma_init(ide_hwif_t *hwif)
hwif->dmatable_dma = 0;
hwif->set_dma_mode = icside_set_dma_mode;

hwif->dma_host_off = icside_dma_host_off;
hwif->dma_off_quietly = icside_dma_off_quietly;
hwif->dma_host_on = icside_dma_host_on;
hwif->ide_dma_on = icside_dma_on;
hwif->dma_host_set = icside_dma_host_set;
hwif->dma_setup = icside_dma_setup;
hwif->dma_exec_cmd = icside_dma_exec_cmd;
hwif->dma_start = icside_dma_start;
Expand Down
17 changes: 15 additions & 2 deletions drivers/ide/arm/ide_arm.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,25 @@
# define IDE_ARM_IRQ IRQ_HARDDISK
#endif

void __init ide_arm_init(void)
static int __init ide_arm_init(void)
{
ide_hwif_t *hwif;
hw_regs_t hw;
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };

memset(&hw, 0, sizeof(hw));
ide_std_init_ports(&hw, IDE_ARM_IO, IDE_ARM_IO + 0x206);
hw.irq = IDE_ARM_IRQ;
ide_register_hw(&hw, NULL, 1, NULL);

hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
if (hwif) {
ide_init_port_hw(hwif, &hw);
idx[0] = hwif->index;

ide_device_add(idx);
}

return 0;
}

module_init(ide_arm_init);
Loading

0 comments on commit 1c7c2cd

Please sign in to comment.