提交 28ffb5d3 编写于 作者: L Linus Torvalds

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
...@@ -3658,13 +3658,6 @@ M: romieu@fr.zoreil.com ...@@ -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 ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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,7 +1333,6 @@ static void ide_port_init_devices(ide_hwif_t *hwif) ...@@ -1333,7 +1333,6 @@ 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)
...@@ -1519,7 +1518,7 @@ int ide_device_add_all(u8 *idx, const struct ide_port_info *d) ...@@ -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, ...@@ -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 ...@@ -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, ...@@ -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) ...@@ -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 @@ ...@@ -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 @@ ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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 = { ...@@ -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) ...@@ -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) ...@@ -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 = { ...@@ -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 ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册