]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/scsi/megaraid/megaraid_mm.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[linux-2.6-omap-h63xx.git] / drivers / scsi / megaraid / megaraid_mm.c
index 84d9c27133d4088e0ac0527fafa0867da37616fd..0ad215e27b83358a55f61f9b8a5b00f6e4f6b154 100644 (file)
@@ -59,7 +59,6 @@ EXPORT_SYMBOL(mraid_mm_register_adp);
 EXPORT_SYMBOL(mraid_mm_unregister_adp);
 EXPORT_SYMBOL(mraid_mm_adapter_app_handle);
 
-static int majorno;
 static uint32_t drvr_ver       = 0x02200207;
 
 static int adapters_count_g;
@@ -76,6 +75,12 @@ static const struct file_operations lsi_fops = {
        .owner  = THIS_MODULE,
 };
 
+static struct miscdevice megaraid_mm_dev = {
+       .minor  = MISC_DYNAMIC_MINOR,
+       .name   = "megadev0",
+       .fops   = &lsi_fops,
+};
+
 /**
  * mraid_mm_open - open routine for char node interface
  * @inode      : unused
@@ -890,12 +895,11 @@ mraid_mm_register_adp(mraid_mmadp_t *lld_adp)
        if (lld_adp->drvr_type != DRVRTYPE_MBOX)
                return (-EINVAL);
 
-       adapter = kmalloc(sizeof(mraid_mmadp_t), GFP_KERNEL);
+       adapter = kzalloc(sizeof(mraid_mmadp_t), GFP_KERNEL);
 
        if (!adapter)
                return -ENOMEM;
 
-       memset(adapter, 0, sizeof(mraid_mmadp_t));
 
        adapter->unique_id      = lld_adp->unique_id;
        adapter->drvr_type      = lld_adp->drvr_type;
@@ -1185,15 +1189,16 @@ mraid_mm_teardown_dma_pools(mraid_mmadp_t *adp)
 static int __init
 mraid_mm_init(void)
 {
+       int err;
+
        // Announce the driver version
        con_log(CL_ANN, (KERN_INFO "megaraid cmm: %s %s\n",
                LSI_COMMON_MOD_VERSION, LSI_COMMON_MOD_EXT_VERSION));
 
-       majorno = register_chrdev(0, "megadev", &lsi_fops);
-
-       if (majorno < 0) {
-               con_log(CL_ANN, ("megaraid cmm: cannot get major\n"));
-               return majorno;
+       err = misc_register(&megaraid_mm_dev);
+       if (err < 0) {
+               con_log(CL_ANN, ("megaraid cmm: cannot register misc device\n"));
+               return err;
        }
 
        init_waitqueue_head(&wait_q);
@@ -1231,7 +1236,7 @@ mraid_mm_exit(void)
 {
        con_log(CL_DLEVEL1 , ("exiting common mod\n"));
 
-       unregister_chrdev(majorno, "megadev");
+       misc_deregister(&megaraid_mm_dev);
 }
 
 module_init(mraid_mm_init);