]> err.no Git - linux-2.6/blobdiff - drivers/ide/ide.c
avr32/pata: avoid unnecessary memset (updated after comments)
[linux-2.6] / drivers / ide / ide.c
index a4bceeecde709dd7510a23d0cbd5a4919cc4fede..c758dcb13b14209a97bfdca02ef056ee113712a7 100644 (file)
@@ -94,12 +94,6 @@ DEFINE_MUTEX(ide_cfg_mtx);
 
 int noautodma = 0;
 
-#ifdef CONFIG_BLK_DEV_IDEACPI
-int ide_noacpi = 0;
-int ide_noacpitfs = 1;
-int ide_noacpionboot = 1;
-#endif
-
 ide_hwif_t ide_hwifs[MAX_HWIFS];       /* master data repository */
 
 static void ide_port_init_devices_data(ide_hwif_t *);
@@ -293,7 +287,7 @@ EXPORT_SYMBOL_GPL(ide_port_unregister_devices);
 
 /**
  *     ide_unregister          -       free an IDE interface
- *     @index: index of interface (will change soon to a pointer)
+ *     @hwif: IDE interface
  *
  *     Perform the final unregister of an IDE interface. At the moment
  *     we don't refcount interfaces so this will also get split up.
@@ -313,19 +307,16 @@ EXPORT_SYMBOL_GPL(ide_port_unregister_devices);
  *     This is raving bonkers.
  */
 
-void ide_unregister(unsigned int index)
+void ide_unregister(ide_hwif_t *hwif)
 {
-       ide_hwif_t *hwif, *g;
+       ide_hwif_t *g;
        ide_hwgroup_t *hwgroup;
        int irq_count = 0;
 
-       BUG_ON(index >= MAX_HWIFS);
-
        BUG_ON(in_interrupt());
        BUG_ON(irqs_disabled());
        mutex_lock(&ide_cfg_mtx);
        spin_lock_irq(&ide_lock);
-       hwif = &ide_hwifs[index];
        if (!hwif->present)
                goto abort;
        __ide_port_unregister_devices(hwif);
@@ -366,7 +357,7 @@ void ide_unregister(unsigned int index)
                ide_release_dma_engine(hwif);
 
        /* restore hwif data to pristine status */
-       ide_init_port_data(hwif, index);
+       ide_init_port_data(hwif, hwif->index);
 
 abort:
        spin_unlock_irq(&ide_lock);
@@ -377,7 +368,7 @@ EXPORT_SYMBOL(ide_unregister);
 
 void ide_init_port_hw(ide_hwif_t *hwif, hw_regs_t *hw)
 {
-       memcpy(hwif->io_ports, hw->io_ports, sizeof(hwif->io_ports));
+       memcpy(&hwif->io_ports, &hw->io_ports, sizeof(hwif->io_ports));
        hwif->irq = hw->irq;
        hwif->chipset = hw->chipset;
        hwif->gendev.parent = hw->dev;
@@ -573,7 +564,7 @@ static int generic_ide_suspend(struct device *dev, pm_message_t mesg)
        if (!(drive->dn % 2))
                ide_acpi_get_timing(hwif);
 
-       memset(&rq, 0, sizeof(rq));
+       blk_rq_init(NULL, &rq);
        memset(&rqpm, 0, sizeof(rqpm));
        memset(&args, 0, sizeof(args));
        rq.cmd_type = REQ_TYPE_PM_SUSPEND;
@@ -611,7 +602,7 @@ static int generic_ide_resume(struct device *dev)
 
        ide_acpi_exec_tfs(drive);
 
-       memset(&rq, 0, sizeof(rq));
+       blk_rq_init(NULL, &rq);
        memset(&rqpm, 0, sizeof(rqpm));
        memset(&args, 0, sizeof(args));
        rq.cmd_type = REQ_TYPE_PM_RESUME;
@@ -866,7 +857,7 @@ static int __init ide_setup(char *s)
 
                printk(" : Enabled support for IDE doublers\n");
                ide_doubler = 1;
-               return 1;
+               goto obsolete_option;
        }
 #endif /* CONFIG_BLK_DEV_IDEDOUBLER */
 
@@ -880,17 +871,17 @@ static int __init ide_setup(char *s)
        if (!strcmp(s, "ide=noacpi")) {
                //printk(" : Disable IDE ACPI support.\n");
                ide_noacpi = 1;
-               return 1;
+               goto obsolete_option;
        }
        if (!strcmp(s, "ide=acpigtf")) {
                //printk(" : Enable IDE ACPI _GTF support.\n");
-               ide_noacpitfs = 0;
-               return 1;
+               ide_acpigtf = 1;
+               goto obsolete_option;
        }
        if (!strcmp(s, "ide=acpionboot")) {
                //printk(" : Call IDE ACPI methods on boot.\n");
-               ide_noacpionboot = 0;
-               return 1;
+               ide_acpionboot = 1;
+               goto obsolete_option;
        }
 #endif /* CONFIG_BLK_DEV_IDEACPI */
 
@@ -1355,11 +1346,6 @@ int __init init_module (void)
 
 void __exit cleanup_module (void)
 {
-       int index;
-
-       for (index = 0; index < MAX_HWIFS; ++index)
-               ide_unregister(index);
-
        proc_ide_destroy();
 
        class_destroy(ide_port_class);