]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/ide/ide-pnp.c
IDE: Fix HDIO_DRIVE_RESET handling
[linux-2.6-omap-h63xx.git] / drivers / ide / ide-pnp.c
index 10c20e9a5785e0717efb30be564237599c40e783..03f2ef5470a3756cfac07a093110ef4dd234a9e0 100644 (file)
@@ -33,6 +33,8 @@ static int idepnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)
        ide_hwif_t *hwif;
        unsigned long base, ctl;
 
+       printk(KERN_INFO DRV_NAME ": generic PnP IDE interface\n");
+
        if (!(pnp_port_valid(dev, 0) && pnp_port_valid(dev, 1) && pnp_irq_valid(dev, 0)))
                return -1;
 
@@ -55,16 +57,15 @@ static int idepnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)
        memset(&hw, 0, sizeof(hw));
        ide_std_init_ports(&hw, base, ctl);
        hw.irq = pnp_irq(dev, 0);
+       hw.chipset = ide_generic;
 
        hwif = ide_find_port();
        if (hwif) {
                u8 index = hwif->index;
                u8 idx[4] = { index, 0xff, 0xff, 0xff };
 
-               ide_init_port_data(hwif, index);
                ide_init_port_hw(hwif, &hw);
 
-               printk(KERN_INFO "ide%d: generic PnP IDE interface\n", index);
                pnp_set_drvdata(dev, hwif);
 
                ide_device_add(idx, NULL);
@@ -82,10 +83,7 @@ static void idepnp_remove(struct pnp_dev *dev)
 {
        ide_hwif_t *hwif = pnp_get_drvdata(dev);
 
-       if (hwif)
-               ide_unregister(hwif->index);
-       else
-               printk(KERN_ERR "idepnp: Unable to remove device, please report.\n");
+       ide_unregister(hwif);
 
        release_region(pnp_port_start(dev, 1), 1);
        release_region(pnp_port_start(dev, 0), 8);