]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] ide: ide-pnp update
authorBartlomiej Zolnierkiewicz <b.zolnierkiewicz@elka.pw.edu.pl>
Tue, 15 Jun 2004 13:18:26 +0000 (06:18 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 15 Jun 2004 13:18:26 +0000 (06:18 -0700)
- do not unregister ide-pnp driver while detaching random
  IDE device from random IDE device driver if IDE is modular
  (somebody added this in 2.3.51)
- clear 'hw_regs_t hw' allocated from stack
- mark idepnp_init() with __init
- use ide_std_init_ports() instead of ide_setup_ports()

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@elka.pw.edu.pl>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/ide/ide-pnp.c
drivers/ide/ide.c

index 5b5db478123a73b08af9cf989af763b88d916dc7..6b9bcdb6ce15f4992355320755162bc226e63add 100644 (file)
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  
  */
 
-#include <linux/ide.h>
 #include <linux/init.h>
-
 #include <linux/pnp.h>
-
-#define GENERIC_HD_DATA                0
-#define GENERIC_HD_ERROR       1
-#define GENERIC_HD_NSECTOR     2
-#define GENERIC_HD_SECTOR      3
-#define GENERIC_HD_LCYL                4
-#define GENERIC_HD_HCYL                5
-#define GENERIC_HD_SELECT      6
-#define GENERIC_HD_STATUS      7
-
-static int generic_ide_offsets[IDE_NR_PORTS] = {
-       GENERIC_HD_DATA, GENERIC_HD_ERROR, GENERIC_HD_NSECTOR, 
-       GENERIC_HD_SECTOR, GENERIC_HD_LCYL, GENERIC_HD_HCYL,
-       GENERIC_HD_SELECT, GENERIC_HD_STATUS, -1, -1
-};
+#include <linux/ide.h>
 
 /* Add your devices here :)) */
 struct pnp_device_id idepnp_devices[] = {
@@ -52,12 +36,11 @@ static int idepnp_probe(struct pnp_dev * dev, const struct pnp_device_id *dev_id
        if (!(pnp_port_valid(dev, 0) && pnp_port_valid(dev, 1) && pnp_irq_valid(dev, 0)))
                return -1;
 
-       ide_setup_ports(&hw, (unsigned long) pnp_port_start(dev, 0),
-                       generic_ide_offsets,
-                       (unsigned long) pnp_port_start(dev, 1),
-                       0, NULL,
-//                     generic_pnp_ide_iops,
-                       pnp_irq(dev, 0));
+       memset(&hw, 0, sizeof(hw));
+       ide_std_init_ports(&hw, pnp_port_start(dev, 0),
+                               pnp_port_start(dev, 1));
+       hw.irq = pnp_irq(dev, 0);
+       hw.dma = NO_DMA;
 
        index = ide_register_hw(&hw, &hwif);
 
@@ -86,11 +69,7 @@ static struct pnp_driver idepnp_driver = {
        .remove         = idepnp_remove,
 };
 
-
-void pnpide_init(int enable)
+void __init pnpide_init(void)
 {
-       if(enable)
-               pnp_register_driver(&idepnp_driver);
-       else
-               pnp_unregister_driver(&idepnp_driver);
+       pnp_register_driver(&idepnp_driver);
 }
index c84923bf7492eac8ca7c3a31e56cdb1255392c2b..2714aa1a3e4a3475184397cf13e16604a2c7d28a 100644 (file)
@@ -2003,6 +2003,7 @@ done:
        return 1;
 }
 
+extern void pnpide_init(void);
 extern void h8300_ide_init(void);
 
 /*
@@ -2069,12 +2070,9 @@ static void __init probe_for_hwifs (void)
                buddha_init();
        }
 #endif /* CONFIG_BLK_DEV_BUDDHA */
-#if defined(CONFIG_BLK_DEV_IDEPNP) && defined(CONFIG_PNP)
-       {
-               extern void pnpide_init(int enable);
-               pnpide_init(1);
-       }
-#endif /* CONFIG_BLK_DEV_IDEPNP */
+#ifdef CONFIG_BLK_DEV_IDEPNP
+       pnpide_init();
+#endif
 #ifdef CONFIG_H8300
        h8300_ide_init();
 #endif
@@ -2212,9 +2210,6 @@ int ide_unregister_subdriver (ide_drive_t *drive)
                up(&ide_setting_sem);
                return 1;
        }
-#if defined(CONFIG_BLK_DEV_IDEPNP) && defined(CONFIG_PNP) && defined(MODULE)
-       pnpide_init(0);
-#endif /* CONFIG_BLK_DEV_IDEPNP */
 #ifdef CONFIG_PROC_FS
        ide_remove_proc_entries(drive->proc, DRIVER(drive)->proc);
        ide_remove_proc_entries(drive->proc, generic_subdriver_entries);