Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 188da988 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (58 commits)
  ide: remove ide_init_default_irq() macro
  ide: move default IDE ports setup to ide_generic host driver
  ide: remove obsoleted "idex=noprobe" kernel parameter (take 2)
  ide: remove needless hwif->irq check from ide_hwif_configure()
  ide: init hwif->{io_ports,irq} explicitly in legacy VLB host drivers
  ide: limit legacy VLB host drivers to alpha, x86 and mips
  cmd640: init hwif->{io_ports,irq} explicitly
  cmd640: cleanup setup_device_ptrs()
  ide: add ide-4drives host driver (take 3)
  ide: remove ppc ifdef from init_ide_data()
  ide: remove ide_default_io_ctl() macro
  ide: remove CONFIG_IDE_ARCH_OBSOLETE_INIT
  ide: add CONFIG_IDE_ARCH_OBSOLETE_DEFAULTS (take 2)
  ppc/pmac: remove no longer needed IDE quirk
  ppc: don't include <linux/ide.h>
  ppc: remove ppc_ide_md
  ppc/pplus: remove ppc_ide_md.ide_init_hwif hook
  ppc/sandpoint: remove ppc_ide_md hooks
  ppc/lopec: remove ppc_ide_md hooks
  ppc/mpc8xx: remove ppc_ide_md hooks
  ...
parents 07fe944e 273b8385
Loading
Loading
Loading
Loading
+4 −43
Original line number Diff line number Diff line
@@ -71,29 +71,6 @@ This driver automatically probes for most IDE interfaces (including all PCI
ones), for the drives/geometries attached to those interfaces, and for the IRQ
lines being used by the interfaces (normally 14, 15 for ide0/ide1).

For special cases, interfaces may be specified using kernel "command line"
options.  For example,

	ide3=0x168,0x36e,10	/* ioports 0x168-0x16f,0x36e, irq 10 */

Normally the irq number need not be specified, as ide.c will probe for it:

	ide3=0x168,0x36e	/* ioports 0x168-0x16f,0x36e */

The standard port, and irq values are these:

	ide0=0x1f0,0x3f6,14
	ide1=0x170,0x376,15
	ide2=0x1e8,0x3ee,11
	ide3=0x168,0x36e,10

Note that the first parameter reserves 8 contiguous ioports, whereas the
second value denotes a single ioport. If in doubt, do a 'cat /proc/ioports'.

In all probability the device uses these ports and IRQs if it is attached
to the appropriate ide channel.  Pass the parameter for the correct ide
channel to the kernel, as explained above.

Any number of interfaces may share a single IRQ if necessary, at a slight
performance penalty, whether on separate cards or a single VLB card.
The IDE driver automatically detects and handles this.  However, this may
@@ -184,13 +161,6 @@ provided it is mounted with the default block size of 1024 (as above).
Please pass on any feedback on any of this stuff to the maintainer,
whose address can be found in linux/MAINTAINERS.

Note that if BOTH hd.c and ide.c are configured into the kernel,
hd.c will normally be allowed to control the primary IDE interface.
This is useful for older hardware that may be incompatible with ide.c,
and still allows newer hardware to run on the 2nd/3rd/4th IDE ports
under control of ide.c.   To have ide.c also "take over" the primary
IDE port in this situation, use the "command line" parameter:  ide0=0x1f0

The IDE driver is modularized.  The high level disk/CD-ROM/tape/floppy
drivers can always be compiled as loadable modules, the chipset drivers
can only be compiled into the kernel, and the core code (ide.c) can be
@@ -206,7 +176,7 @@ When ide.c is used as a module, you can pass command line parameters to the
driver using the "options=" keyword to insmod, while replacing any ',' with
';'.  For example:

	insmod ide.o options="ide0=serialize ide1=serialize ide2=0x1e8;0x3ee;11"
	insmod ide.o options="hda=nodma hdb=nodma"


================================================================================
@@ -247,21 +217,11 @@ Summary of ide driver parameters for kernel command line
			  As for VLB, it is safest to not specify it.
			  Bigger values are safer than smaller ones.

 "idex=base"		: probe for an interface at the addr specified,
			  where "base" is usually 0x1f0 or 0x170
			  and "ctl" is assumed to be "base"+0x206

 "idex=base,ctl"	: specify both base and ctl

 "idex=base,ctl,irq"	: specify base, ctl, and irq number

 "idex=serialize"	: do not overlap operations on idex. Please note
			  that you will have to specify this option for
			  both the respective primary and secondary channel
			  to take effect.

 "idex=four"		: four drives on idex and ide(x^1) share same ports

 "idex=reset"		: reset interface after probe

 "idex=ata66"		: informs the interface that it has an 80c cable
@@ -269,8 +229,6 @@ Summary of ide driver parameters for kernel command line
			  ability to bit test for detection is currently
			  unknown.

 "ide=reverse"		: formerly called to pci sub-system, but now local.

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

There may be more options than shown -- use the source, Luke!
@@ -290,6 +248,9 @@ 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).

You also need to use "probe" kernel parameter for ide-4drives driver
(support for IDE generic chipset with four drives on one port).

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

Some Terminology
+13 −0
Original line number Diff line number Diff line

IDE warm-plug HOWTO
===================

To warm-plug devices on a port 'idex':

# echo -n "1" > /sys/class/ide_port/idex/delete_devices

unplug old device(s) and plug new device(s)

# echo -n "1" > /sys/class/ide_port/idex/scan

done
+2 −2
Original line number Diff line number Diff line
@@ -763,11 +763,11 @@ and is between 256 and 4096 characters. It is defined in the file
			Format: <io>[,<membase>[,<icn_id>[,<icn_id2>]]]

	ide=		[HW] (E)IDE subsystem
			Format: ide=nodma or ide=doubler or ide=reverse
			Format: ide=nodma or ide=doubler
			See Documentation/ide/ide.txt.

	ide?=		[HW] (E)IDE subsystem
			Format: ide?=noprobe or chipset specific parameters.
			Format: ide?=ata66 or chipset specific parameters.
			See Documentation/ide/ide.txt.

	idebus=		[HW] (E)IDE subsystem - VLB/PCI bus speed
+0 −8
Original line number Diff line number Diff line
@@ -10,9 +10,6 @@
#include <linux/reboot.h>
#include <linux/delay.h>
#include <linux/initrd.h>
#if defined(CONFIG_IDE) || defined(CONFIG_IDE_MODULE)
#include <linux/ide.h>
#endif
#include <linux/tty.h>
#include <linux/bootmem.h>
#include <linux/seq_file.h>
@@ -51,11 +48,6 @@

extern void bootx_init(unsigned long r4, unsigned long phys);

#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
struct ide_machdep_calls ppc_ide_md;
EXPORT_SYMBOL(ppc_ide_md);
#endif

int boot_cpuid;
EXPORT_SYMBOL_GPL(boot_cpuid);
int boot_cpuid_phys;
+0 −22
Original line number Diff line number Diff line
@@ -1144,28 +1144,6 @@ void __init pmac_pcibios_after_init(void)
{
	struct device_node* nd;

#ifdef CONFIG_BLK_DEV_IDE
	struct pci_dev *dev = NULL;

	/* OF fails to initialize IDE controllers on macs
	 * (and maybe other machines)
	 *
	 * Ideally, this should be moved to the IDE layer, but we need
	 * to check specifically with Andre Hedrick how to do it cleanly
	 * since the common IDE code seem to care about the fact that the
	 * BIOS may have disabled a controller.
	 *
	 * -- BenH
	 */
	for_each_pci_dev(dev) {
		if ((dev->class >> 16) != PCI_BASE_CLASS_STORAGE)
			continue;
		if (pci_enable_device(dev))
			printk(KERN_WARNING
			       "pci: Failed to enable %s\n", pci_name(dev));
	}
#endif /* CONFIG_BLK_DEV_IDE */

	for_each_node_by_name(nd, "firewire") {
		if (nd->parent && (of_device_is_compatible(nd, "pci106b,18") ||
				   of_device_is_compatible(nd, "pci106b,30") ||
Loading