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: fix BLK_DEV_HD_ONLY on ARM dependencies ide: export ide_doubler palm_bk3710: add warm-plug support delkin_cb: add missing __init/__exit tags delkin_cb: add warm-plug support delkin_cb: use struct ide_port_info delkin_cb: set proper hwif->gendev.parent value ide: fix host drivers missing hwif->chipset initialization ide-generic: add missing hwif->chipset setup sis5513: add missing pci_enable_device() call MAINTAINERS: remove SIS 5513 IDE entry ide: remove the ide_etrax100 chipset type
This commit is contained in:
commit
28ffb5d3e0
|
@ -3658,13 +3658,6 @@ M: romieu@fr.zoreil.com
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
SIS 5513 IDE CONTROLLER DRIVER
|
|
||||||
P: Lionel Bouton
|
|
||||||
M: Lionel.Bouton@inet6.fr
|
|
||||||
W: http://inet6.dyn.dhs.org/sponsoring/sis5513/index.html
|
|
||||||
W: http://gyver.homeip.net/sis5513/index.html
|
|
||||||
S: Maintained
|
|
||||||
|
|
||||||
SIS 900/7016 FAST ETHERNET DRIVER
|
SIS 900/7016 FAST ETHERNET DRIVER
|
||||||
P: Daniele Venzano
|
P: Daniele Venzano
|
||||||
M: venza@brownhat.org
|
M: venza@brownhat.org
|
||||||
|
|
|
@ -1028,6 +1028,7 @@ endif
|
||||||
|
|
||||||
config BLK_DEV_HD_ONLY
|
config BLK_DEV_HD_ONLY
|
||||||
bool "Old hard disk (MFM/RLL/IDE) driver"
|
bool "Old hard disk (MFM/RLL/IDE) driver"
|
||||||
|
depends on !ARM || ARCH_RPC || ARCH_SHARK || BROKEN
|
||||||
help
|
help
|
||||||
There are two drivers for MFM/RLL/IDE hard disks. Most people use
|
There are two drivers for MFM/RLL/IDE hard disks. Most people use
|
||||||
the newer enhanced driver, but this old one is still around for two
|
the newer enhanced driver, but this old one is still around for two
|
||||||
|
|
|
@ -42,6 +42,7 @@ static int __init bastide_register(unsigned int base, unsigned int aux, int irq)
|
||||||
|
|
||||||
hw.io_ports.ctl_addr = aux + (6 * 0x20);
|
hw.io_ports.ctl_addr = aux + (6 * 0x20);
|
||||||
hw.irq = irq;
|
hw.irq = irq;
|
||||||
|
hw.chipset = ide_generic;
|
||||||
|
|
||||||
hwif = ide_find_port();
|
hwif = ide_find_port();
|
||||||
if (hwif == NULL)
|
if (hwif == NULL)
|
||||||
|
|
|
@ -49,6 +49,7 @@ static int __init ide_arm_init(void)
|
||||||
memset(&hw, 0, sizeof(hw));
|
memset(&hw, 0, sizeof(hw));
|
||||||
ide_std_init_ports(&hw, base, ctl);
|
ide_std_init_ports(&hw, base, ctl);
|
||||||
hw.irq = IDE_ARM_IRQ;
|
hw.irq = IDE_ARM_IRQ;
|
||||||
|
hw.chipset = ide_generic;
|
||||||
|
|
||||||
hwif = ide_find_port();
|
hwif = ide_find_port();
|
||||||
if (hwif) {
|
if (hwif) {
|
||||||
|
|
|
@ -409,9 +409,6 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
ide_device_add(idx, &palm_bk3710_port_info);
|
ide_device_add(idx, &palm_bk3710_port_info);
|
||||||
|
|
||||||
if (!hwif->present)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
out:
|
out:
|
||||||
printk(KERN_WARNING "Palm Chip BK3710 IDE Register Fail\n");
|
printk(KERN_WARNING "Palm Chip BK3710 IDE Register Fail\n");
|
||||||
|
|
|
@ -125,6 +125,7 @@ static int __init ide_generic_init(void)
|
||||||
memset(&hw, 0, sizeof(hw));
|
memset(&hw, 0, sizeof(hw));
|
||||||
ide_std_init_ports(&hw, io_addr, io_addr + 0x206);
|
ide_std_init_ports(&hw, io_addr, io_addr + 0x206);
|
||||||
hw.irq = ide_default_irq(io_addr);
|
hw.irq = ide_default_irq(io_addr);
|
||||||
|
hw.chipset = ide_generic;
|
||||||
ide_init_port_hw(hwif, &hw);
|
ide_init_port_hw(hwif, &hw);
|
||||||
|
|
||||||
idx[i] = i;
|
idx[i] = i;
|
||||||
|
|
|
@ -55,6 +55,7 @@ static int idepnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)
|
||||||
memset(&hw, 0, sizeof(hw));
|
memset(&hw, 0, sizeof(hw));
|
||||||
ide_std_init_ports(&hw, base, ctl);
|
ide_std_init_ports(&hw, base, ctl);
|
||||||
hw.irq = pnp_irq(dev, 0);
|
hw.irq = pnp_irq(dev, 0);
|
||||||
|
hw.chipset = ide_generic;
|
||||||
|
|
||||||
hwif = ide_find_port();
|
hwif = ide_find_port();
|
||||||
if (hwif) {
|
if (hwif) {
|
||||||
|
|
|
@ -1333,8 +1333,7 @@ static void ide_port_init_devices(ide_hwif_t *hwif)
|
||||||
static void ide_init_port(ide_hwif_t *hwif, unsigned int port,
|
static void ide_init_port(ide_hwif_t *hwif, unsigned int port,
|
||||||
const struct ide_port_info *d)
|
const struct ide_port_info *d)
|
||||||
{
|
{
|
||||||
if (d->chipset != ide_etrax100)
|
hwif->channel = port;
|
||||||
hwif->channel = port;
|
|
||||||
|
|
||||||
if (d->chipset)
|
if (d->chipset)
|
||||||
hwif->chipset = d->chipset;
|
hwif->chipset = d->chipset;
|
||||||
|
@ -1519,7 +1518,7 @@ int ide_device_add_all(u8 *idx, const struct ide_port_info *d)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d->chipset != ide_etrax100 && (i & 1) && mate) {
|
if ((i & 1) && mate) {
|
||||||
hwif->mate = mate;
|
hwif->mate = mate;
|
||||||
mate->mate = hwif;
|
mate->mate = hwif;
|
||||||
}
|
}
|
||||||
|
@ -1665,6 +1664,7 @@ static void ide_legacy_init_one(u8 *idx, hw_regs_t *hw, u8 port_no,
|
||||||
|
|
||||||
ide_std_init_ports(hw, base, ctl);
|
ide_std_init_ports(hw, base, ctl);
|
||||||
hw->irq = irq;
|
hw->irq = irq;
|
||||||
|
hw->chipset = d->chipset;
|
||||||
|
|
||||||
hwif = ide_find_port_slot(d);
|
hwif = ide_find_port_slot(d);
|
||||||
if (hwif) {
|
if (hwif) {
|
||||||
|
|
|
@ -63,7 +63,6 @@ static int proc_ide_read_imodel
|
||||||
case ide_pmac: name = "mac-io"; break;
|
case ide_pmac: name = "mac-io"; break;
|
||||||
case ide_au1xxx: name = "au1xxx"; break;
|
case ide_au1xxx: name = "au1xxx"; break;
|
||||||
case ide_palm3710: name = "palm3710"; break;
|
case ide_palm3710: name = "palm3710"; break;
|
||||||
case ide_etrax100: name = "etrax100"; break;
|
|
||||||
case ide_acorn: name = "acorn"; break;
|
case ide_acorn: name = "acorn"; break;
|
||||||
default: name = "(unknown)"; break;
|
default: name = "(unknown)"; break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,6 +138,8 @@ static void __init buddha_setup_ports(hw_regs_t *hw, unsigned long base,
|
||||||
|
|
||||||
hw->irq = IRQ_AMIGA_PORTS;
|
hw->irq = IRQ_AMIGA_PORTS;
|
||||||
hw->ack_intr = ack_intr;
|
hw->ack_intr = ack_intr;
|
||||||
|
|
||||||
|
hw->chipset = ide_generic;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -81,6 +81,8 @@ static void __init falconide_setup_ports(hw_regs_t *hw)
|
||||||
|
|
||||||
hw->irq = IRQ_MFP_IDE;
|
hw->irq = IRQ_MFP_IDE;
|
||||||
hw->ack_intr = NULL;
|
hw->ack_intr = NULL;
|
||||||
|
|
||||||
|
hw->chipset = ide_generic;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include <linux/ide.h>
|
#include <linux/ide.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/zorro.h>
|
#include <linux/zorro.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <asm/amigahw.h>
|
#include <asm/amigahw.h>
|
||||||
|
@ -62,7 +63,10 @@
|
||||||
GAYLE_NUM_HWIFS-1)
|
GAYLE_NUM_HWIFS-1)
|
||||||
#define GAYLE_HAS_CONTROL_REG (!ide_doubler)
|
#define GAYLE_HAS_CONTROL_REG (!ide_doubler)
|
||||||
#define GAYLE_IDEREG_SIZE (ide_doubler ? 0x1000 : 0x2000)
|
#define GAYLE_IDEREG_SIZE (ide_doubler ? 0x1000 : 0x2000)
|
||||||
|
|
||||||
int ide_doubler = 0; /* support IDE doublers? */
|
int ide_doubler = 0; /* support IDE doublers? */
|
||||||
|
EXPORT_SYMBOL_GPL(ide_doubler);
|
||||||
|
|
||||||
module_param_named(doubler, ide_doubler, bool, 0);
|
module_param_named(doubler, ide_doubler, bool, 0);
|
||||||
MODULE_PARM_DESC(doubler, "enable support for IDE doublers");
|
MODULE_PARM_DESC(doubler, "enable support for IDE doublers");
|
||||||
#endif /* CONFIG_BLK_DEV_IDEDOUBLER */
|
#endif /* CONFIG_BLK_DEV_IDEDOUBLER */
|
||||||
|
@ -112,6 +116,8 @@ static void __init gayle_setup_ports(hw_regs_t *hw, unsigned long base,
|
||||||
|
|
||||||
hw->irq = IRQ_AMIGA_PORTS;
|
hw->irq = IRQ_AMIGA_PORTS;
|
||||||
hw->ack_intr = ack_intr;
|
hw->ack_intr = ack_intr;
|
||||||
|
|
||||||
|
hw->chipset = ide_generic;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -78,6 +78,8 @@ static void __init macide_setup_ports(hw_regs_t *hw, unsigned long base,
|
||||||
|
|
||||||
hw->irq = irq;
|
hw->irq = irq;
|
||||||
hw->ack_intr = ack_intr;
|
hw->ack_intr = ack_intr;
|
||||||
|
|
||||||
|
hw->chipset = ide_generic;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *mac_ide_name[] =
|
static const char *mac_ide_name[] =
|
||||||
|
|
|
@ -70,6 +70,8 @@ static void q40_ide_setup_ports(hw_regs_t *hw, unsigned long base,
|
||||||
|
|
||||||
hw->irq = irq;
|
hw->irq = irq;
|
||||||
hw->ack_intr = ack_intr;
|
hw->ack_intr = ack_intr;
|
||||||
|
|
||||||
|
hw->chipset = ide_generic;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void q40ide_input_data(ide_drive_t *drive, struct request *rq,
|
static void q40ide_input_data(ide_drive_t *drive, struct request *rq,
|
||||||
|
|
|
@ -747,9 +747,11 @@ static int __init cmd640x_init(void)
|
||||||
|
|
||||||
ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
|
ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
|
||||||
hw[0].irq = 14;
|
hw[0].irq = 14;
|
||||||
|
hw[0].chipset = ide_cmd640;
|
||||||
|
|
||||||
ide_std_init_ports(&hw[1], 0x170, 0x376);
|
ide_std_init_ports(&hw[1], 0x170, 0x376);
|
||||||
hw[1].irq = 15;
|
hw[1].irq = 15;
|
||||||
|
hw[1].chipset = ide_cmd640;
|
||||||
|
|
||||||
printk(KERN_INFO "cmd640: buggy cmd640%c interface on %s, config=0x%02x"
|
printk(KERN_INFO "cmd640: buggy cmd640%c interface on %s, config=0x%02x"
|
||||||
"\n", 'a' + cmd640_chip_version - 1, bus_type, cfr);
|
"\n", 'a' + cmd640_chip_version - 1, bus_type, cfr);
|
||||||
|
|
|
@ -47,13 +47,18 @@ static const struct ide_port_ops delkin_cb_port_ops = {
|
||||||
.quirkproc = ide_undecoded_slave,
|
.quirkproc = ide_undecoded_slave,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct ide_port_info delkin_cb_port_info = {
|
||||||
|
.port_ops = &delkin_cb_port_ops,
|
||||||
|
.host_flags = IDE_HFLAG_IO_32BIT | IDE_HFLAG_UNMASK_IRQS |
|
||||||
|
IDE_HFLAG_NO_DMA,
|
||||||
|
};
|
||||||
|
|
||||||
static int __devinit
|
static int __devinit
|
||||||
delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
|
delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
|
||||||
{
|
{
|
||||||
unsigned long base;
|
unsigned long base;
|
||||||
hw_regs_t hw;
|
hw_regs_t hw;
|
||||||
ide_hwif_t *hwif = NULL;
|
ide_hwif_t *hwif = NULL;
|
||||||
ide_drive_t *drive;
|
|
||||||
int i, rc;
|
int i, rc;
|
||||||
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
|
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
|
||||||
|
|
||||||
|
@ -79,6 +84,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
|
||||||
memset(&hw, 0, sizeof(hw));
|
memset(&hw, 0, sizeof(hw));
|
||||||
ide_std_init_ports(&hw, base + 0x10, base + 0x1e);
|
ide_std_init_ports(&hw, base + 0x10, base + 0x1e);
|
||||||
hw.irq = dev->irq;
|
hw.irq = dev->irq;
|
||||||
|
hw.dev = &dev->dev;
|
||||||
hw.chipset = ide_pci; /* this enables IRQ sharing */
|
hw.chipset = ide_pci; /* this enables IRQ sharing */
|
||||||
|
|
||||||
hwif = ide_find_port();
|
hwif = ide_find_port();
|
||||||
|
@ -89,26 +95,16 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
|
||||||
|
|
||||||
ide_init_port_data(hwif, i);
|
ide_init_port_data(hwif, i);
|
||||||
ide_init_port_hw(hwif, &hw);
|
ide_init_port_hw(hwif, &hw);
|
||||||
hwif->port_ops = &delkin_cb_port_ops;
|
|
||||||
|
|
||||||
idx[0] = i;
|
idx[0] = i;
|
||||||
|
|
||||||
ide_device_add(idx, NULL);
|
ide_device_add(idx, &delkin_cb_port_info);
|
||||||
|
|
||||||
if (!hwif->present)
|
|
||||||
goto out_disable;
|
|
||||||
|
|
||||||
pci_set_drvdata(dev, hwif);
|
pci_set_drvdata(dev, hwif);
|
||||||
hwif->dev = &dev->dev;
|
|
||||||
drive = &hwif->drives[0];
|
|
||||||
if (drive->present) {
|
|
||||||
drive->io_32bit = 1;
|
|
||||||
drive->unmask = 1;
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
out_disable:
|
out_disable:
|
||||||
printk(KERN_ERR "delkin_cb: no IDE devices found\n");
|
|
||||||
pci_release_regions(dev);
|
pci_release_regions(dev);
|
||||||
pci_disable_device(dev);
|
pci_disable_device(dev);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
@ -139,14 +135,12 @@ static struct pci_driver driver = {
|
||||||
.remove = delkin_cb_remove,
|
.remove = delkin_cb_remove,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int __init delkin_cb_init(void)
|
||||||
delkin_cb_init (void)
|
|
||||||
{
|
{
|
||||||
return pci_register_driver(&driver);
|
return pci_register_driver(&driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void __exit delkin_cb_exit(void)
|
||||||
delkin_cb_exit (void)
|
|
||||||
{
|
{
|
||||||
pci_unregister_driver(&driver);
|
pci_unregister_driver(&driver);
|
||||||
}
|
}
|
||||||
|
|
|
@ -569,6 +569,11 @@ static int __devinit sis5513_init_one(struct pci_dev *dev, const struct pci_devi
|
||||||
{
|
{
|
||||||
struct ide_port_info d = sis5513_chipset;
|
struct ide_port_info d = sis5513_chipset;
|
||||||
u8 udma_rates[] = { 0x00, 0x00, 0x07, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f };
|
u8 udma_rates[] = { 0x00, 0x00, 0x07, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f };
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
rc = pci_enable_device(dev);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
if (sis_find_family(dev) == 0)
|
if (sis_find_family(dev) == 0)
|
||||||
return -ENOTSUPP;
|
return -ENOTSUPP;
|
||||||
|
|
|
@ -303,6 +303,8 @@ static int __init m8xx_ide_init_ports(hw_regs_t *hw, unsigned long data_port)
|
||||||
pcmp->pcmc_per = 0x100000 >> (16 * _slot_);
|
pcmp->pcmc_per = 0x100000 >> (16 * _slot_);
|
||||||
#endif /* CONFIG_IDE_8xx_PCCARD */
|
#endif /* CONFIG_IDE_8xx_PCCARD */
|
||||||
|
|
||||||
|
hw->chipset = ide_generic;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IDE_8xx_PCCARD || CONFIG_IDE_8xx_DIRECT */
|
#endif /* CONFIG_IDE_8xx_PCCARD || CONFIG_IDE_8xx_DIRECT */
|
||||||
|
@ -377,6 +379,8 @@ static int __init m8xx_ide_init_ports(hw_regs_t *hw, unsigned long data_port)
|
||||||
((immap_t *) IMAP_ADDR)->im_siu_conf.sc_siel |=
|
((immap_t *) IMAP_ADDR)->im_siu_conf.sc_siel |=
|
||||||
(0x80000000 >> ioport_dsc[data_port].irq);
|
(0x80000000 >> ioport_dsc[data_port].irq);
|
||||||
|
|
||||||
|
hw->chipset = ide_generic;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IDE_8xx_DIRECT */
|
#endif /* CONFIG_IDE_8xx_DIRECT */
|
||||||
|
|
|
@ -153,7 +153,7 @@ enum { ide_unknown, ide_generic, ide_pci,
|
||||||
ide_qd65xx, ide_umc8672, ide_ht6560b,
|
ide_qd65xx, ide_umc8672, ide_ht6560b,
|
||||||
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_acorn,
|
||||||
ide_au1xxx, ide_palm3710
|
ide_au1xxx, ide_palm3710
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue