ide: remove obsoleted "idex=base[,ctl[,irq]]" kernel parameters (take 2)
* Remove obsoleted "idex=base[,ctl[,irq]]" kernel parameters and update Documentation/ide/ide.txt. * Remove no longer needed ide_forced chipset type. v2: * is_chipset_set[] -> is_chipset_set in ide.c. * Documentation/ide/ide.txt fix. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
80aa31cb46
commit
9a0e77f28b
8 changed files with 17 additions and 81 deletions
|
@ -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
|
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).
|
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
|
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.
|
performance penalty, whether on separate cards or a single VLB card.
|
||||||
The IDE driver automatically detects and handles this. However, this may
|
The IDE driver automatically detects and handles this. However, this may
|
||||||
|
@ -199,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
|
driver using the "options=" keyword to insmod, while replacing any ',' with
|
||||||
';'. For example:
|
';'. For example:
|
||||||
|
|
||||||
insmod ide.o options="ide0=serialize ide1=serialize ide2=0x1e8;0x3ee;11"
|
insmod ide.o options="hda=nodma hdb=nodma"
|
||||||
|
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
|
@ -240,14 +217,6 @@ Summary of ide driver parameters for kernel command line
|
||||||
As for VLB, it is safest to not specify it.
|
As for VLB, it is safest to not specify it.
|
||||||
Bigger values are safer than smaller ones.
|
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
|
"idex=serialize" : do not overlap operations on idex. Please note
|
||||||
that you will have to specify this option for
|
that you will have to specify this option for
|
||||||
both the respective primary and secondary channel
|
both the respective primary and secondary channel
|
||||||
|
|
|
@ -93,8 +93,7 @@ static int __init ide_generic_init(void)
|
||||||
ide_hwif_t *hwif = &ide_hwifs[i];
|
ide_hwif_t *hwif = &ide_hwifs[i];
|
||||||
|
|
||||||
if (hwif->io_ports[IDE_DATA_OFFSET] &&
|
if (hwif->io_ports[IDE_DATA_OFFSET] &&
|
||||||
(hwif->chipset == ide_unknown ||
|
hwif->chipset == ide_unknown)
|
||||||
hwif->chipset == ide_forced))
|
|
||||||
idx[i] = i;
|
idx[i] = i;
|
||||||
else
|
else
|
||||||
idx[i] = 0xff;
|
idx[i] = 0xff;
|
||||||
|
|
|
@ -1519,8 +1519,7 @@ int ide_device_add_all(u8 *idx, const struct ide_port_info *d)
|
||||||
hwif = &ide_hwifs[idx[i]];
|
hwif = &ide_hwifs[idx[i]];
|
||||||
|
|
||||||
if (hwif->present) {
|
if (hwif->present) {
|
||||||
if (hwif->chipset == ide_unknown ||
|
if (hwif->chipset == ide_unknown)
|
||||||
hwif->chipset == ide_forced)
|
|
||||||
hwif->chipset = ide_generic;
|
hwif->chipset = ide_generic;
|
||||||
hwif_register_devices(hwif);
|
hwif_register_devices(hwif);
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,9 +46,6 @@ static int proc_ide_read_imodel
|
||||||
int len;
|
int len;
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
/*
|
|
||||||
* Neither ide_unknown nor ide_forced should be set at this point.
|
|
||||||
*/
|
|
||||||
switch (hwif->chipset) {
|
switch (hwif->chipset) {
|
||||||
case ide_generic: name = "generic"; break;
|
case ide_generic: name = "generic"; break;
|
||||||
case ide_pci: name = "pci"; break;
|
case ide_pci: name = "pci"; break;
|
||||||
|
|
|
@ -1170,7 +1170,7 @@ extern int probe_ht6560b;
|
||||||
extern int probe_qd65xx;
|
extern int probe_qd65xx;
|
||||||
extern int cmd640_vlb;
|
extern int cmd640_vlb;
|
||||||
|
|
||||||
static int __initdata is_chipset_set[MAX_HWIFS];
|
static int __initdata is_chipset_set;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ide_setup() gets called VERY EARLY during initialization,
|
* ide_setup() gets called VERY EARLY during initialization,
|
||||||
|
@ -1328,8 +1328,6 @@ static int __init ide_setup(char *s)
|
||||||
"minus10", "four", "qd65xx", "ht6560b", "cmd640_vlb",
|
"minus10", "four", "qd65xx", "ht6560b", "cmd640_vlb",
|
||||||
"dtc2278", "umc8672", "ali14xx", NULL };
|
"dtc2278", "umc8672", "ali14xx", NULL };
|
||||||
|
|
||||||
hw_regs_t hwregs;
|
|
||||||
|
|
||||||
hw = s[3] - '0';
|
hw = s[3] - '0';
|
||||||
hwif = &ide_hwifs[hw];
|
hwif = &ide_hwifs[hw];
|
||||||
i = match_parm(&s[4], ide_words, vals, 3);
|
i = match_parm(&s[4], ide_words, vals, 3);
|
||||||
|
@ -1338,19 +1336,14 @@ static int __init ide_setup(char *s)
|
||||||
* Cryptic check to ensure chipset not already set for hwif.
|
* Cryptic check to ensure chipset not already set for hwif.
|
||||||
* Note: we can't depend on hwif->chipset here.
|
* Note: we can't depend on hwif->chipset here.
|
||||||
*/
|
*/
|
||||||
if ((i >= -18 && i <= -11) || (i > 0 && i <= 3)) {
|
if (i >= -18 && i <= -11) {
|
||||||
/* chipset already specified */
|
/* chipset already specified */
|
||||||
if (is_chipset_set[hw])
|
if (is_chipset_set)
|
||||||
goto bad_option;
|
goto bad_option;
|
||||||
if (i > -18 && i <= -11) {
|
/* these drivers are for "ide0=" only */
|
||||||
/* these drivers are for "ide0=" only */
|
if (hw != 0)
|
||||||
if (hw != 0)
|
goto bad_hwif;
|
||||||
goto bad_hwif;
|
is_chipset_set = 1;
|
||||||
/* chipset already specified for 2nd port */
|
|
||||||
if (is_chipset_set[hw+1])
|
|
||||||
goto bad_option;
|
|
||||||
}
|
|
||||||
is_chipset_set[hw] = 1;
|
|
||||||
printk("\n");
|
printk("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1430,21 +1423,11 @@ static int __init ide_setup(char *s)
|
||||||
case -1: /* "noprobe" */
|
case -1: /* "noprobe" */
|
||||||
hwif->noprobe = 1;
|
hwif->noprobe = 1;
|
||||||
goto obsolete_option;
|
goto obsolete_option;
|
||||||
|
case 0:
|
||||||
case 1: /* base */
|
case 1:
|
||||||
vals[1] = vals[0] + 0x206; /* default ctl */
|
case 2:
|
||||||
case 2: /* base,ctl */
|
case 3:
|
||||||
vals[2] = 0; /* default irq = probe for it */
|
goto bad_option;
|
||||||
case 3: /* base,ctl,irq */
|
|
||||||
memset(&hwregs, 0, sizeof(hwregs));
|
|
||||||
ide_init_hwif_ports(&hwregs, vals[0], vals[1], &hwif->irq);
|
|
||||||
memcpy(hwif->io_ports, hwregs.io_ports, sizeof(hwif->io_ports));
|
|
||||||
hwif->irq = vals[2];
|
|
||||||
hwif->noprobe = 0;
|
|
||||||
hwif->chipset = ide_forced;
|
|
||||||
goto obsolete_option;
|
|
||||||
|
|
||||||
case 0: goto bad_option;
|
|
||||||
default:
|
default:
|
||||||
printk(" -- SUPPORT NOT CONFIGURED IN THIS KERNEL\n");
|
printk(" -- SUPPORT NOT CONFIGURED IN THIS KERNEL\n");
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -415,7 +415,7 @@ static void __init setup_device_ptrs (void)
|
||||||
cmd_hwif1 = &ide_hwifs[1]; /* default, if not found below */
|
cmd_hwif1 = &ide_hwifs[1]; /* default, if not found below */
|
||||||
for (i = 0; i < MAX_HWIFS; i++) {
|
for (i = 0; i < MAX_HWIFS; i++) {
|
||||||
ide_hwif_t *hwif = &ide_hwifs[i];
|
ide_hwif_t *hwif = &ide_hwifs[i];
|
||||||
if (hwif->chipset == ide_unknown || hwif->chipset == ide_forced) {
|
if (hwif->chipset == ide_unknown) {
|
||||||
if (hwif->io_ports[IDE_DATA_OFFSET] == 0x1f0)
|
if (hwif->io_ports[IDE_DATA_OFFSET] == 0x1f0)
|
||||||
cmd_hwif0 = hwif;
|
cmd_hwif0 = hwif;
|
||||||
else if (hwif->io_ports[IDE_DATA_OFFSET] == 0x170)
|
else if (hwif->io_ports[IDE_DATA_OFFSET] == 0x170)
|
||||||
|
|
|
@ -40,17 +40,6 @@ static ide_hwif_t *ide_match_hwif(unsigned long io_base, u8 bootable, const char
|
||||||
int h;
|
int h;
|
||||||
ide_hwif_t *hwif;
|
ide_hwif_t *hwif;
|
||||||
|
|
||||||
/*
|
|
||||||
* Look for a hwif with matching io_base specified using
|
|
||||||
* parameters to ide_setup().
|
|
||||||
*/
|
|
||||||
for (h = 0; h < MAX_HWIFS; ++h) {
|
|
||||||
hwif = &ide_hwifs[h];
|
|
||||||
if (hwif->io_ports[IDE_DATA_OFFSET] == io_base) {
|
|
||||||
if (hwif->chipset == ide_forced)
|
|
||||||
return hwif; /* a perfect match */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*
|
/*
|
||||||
* Look for a hwif with matching io_base default value.
|
* Look for a hwif with matching io_base default value.
|
||||||
* If chipset is "ide_unknown", then claim that hwif slot.
|
* If chipset is "ide_unknown", then claim that hwif slot.
|
||||||
|
|
|
@ -169,7 +169,7 @@ enum { ide_unknown, ide_generic, ide_pci,
|
||||||
ide_rz1000, ide_trm290,
|
ide_rz1000, ide_trm290,
|
||||||
ide_cmd646, ide_cy82c693, ide_4drives,
|
ide_cmd646, ide_cy82c693, ide_4drives,
|
||||||
ide_pmac, ide_etrax100, ide_acorn,
|
ide_pmac, ide_etrax100, ide_acorn,
|
||||||
ide_au1xxx, ide_palm3710, ide_forced
|
ide_au1xxx, ide_palm3710
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef u8 hwif_chipset_t;
|
typedef u8 hwif_chipset_t;
|
||||||
|
|
Loading…
Reference in a new issue