staging: dgap: remove unneeded status variables
authorAlexey Khoroshilov <khoroshilov@ispras.ru>
Sat, 8 Mar 2014 21:01:33 +0000 (01:01 +0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 9 Mar 2014 06:44:35 +0000 (22:44 -0800)
dgap_driver_start and dgap_Major_Control_Registered are used
to keep status of initialization of the driver as a whole and its "Major Control".
But the code that checks them is executed once on module init/unload.
That makes no sense in these variables as far as their values are predictable
at any time.

Also "dgap_downld" device was removed, while
device_destroy(MKDEV(DIGI_DGAP_MAJOR, 1)) is still in dgap_cleanup_module().
The patch removes it by the way.

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/dgap/dgap.c

index d00283a226a2b7c7e74dda84a00b4258c4b5d27e..ad5afbc1e69447e7d22443416f6d68fd73dc78bb 100644 (file)
@@ -254,9 +254,6 @@ static int dgap_poll_tick = 20;     /* Poll interval - 20 ms */
 /*
  * Static vars.
  */
-static int dgap_Major_Control_Registered = FALSE;
-static uint dgap_driver_start = FALSE;
-
 static struct class *dgap_class;
 
 static struct board_t *dgap_BoardsByMajor[256];
@@ -551,52 +548,44 @@ static int dgap_start(void)
        int rc = 0;
        unsigned long flags;
 
-       if (dgap_driver_start == FALSE) {
+       /*
+        * make sure that the globals are
+        * init'd before we do anything else
+        */
+       dgap_init_globals();
 
-               dgap_driver_start = TRUE;
+       dgap_NumBoards = 0;
 
-               /*
-                * make sure that the globals are
-                * init'd before we do anything else
-                */
-               dgap_init_globals();
+       pr_info("For the tools package please visit http://www.digi.com\n");
 
-               dgap_NumBoards = 0;
+       /*
+        * Register our base character device into the kernel.
+        */
 
-               pr_info("For the tools package please visit http://www.digi.com\n");
+       /*
+        * Register management/dpa devices
+        */
+       rc = register_chrdev(DIGI_DGAP_MAJOR, "dgap", &DgapBoardFops);
+       if (rc < 0)
+               return rc;
 
-               /*
-                * Register our base character device into the kernel.
-                */
-               if (!dgap_Major_Control_Registered) {
-                       /*
-                        * Register management/dpa devices
-                        */
-                       rc = register_chrdev(DIGI_DGAP_MAJOR, "dgap",
-                                                &DgapBoardFops);
-                       if (rc < 0)
-                               return rc;
-
-                       dgap_class = class_create(THIS_MODULE, "dgap_mgmt");
-                       device_create(dgap_class, NULL,
-                               MKDEV(DIGI_DGAP_MAJOR, 0),
-                               NULL, "dgap_mgmt");
-                       dgap_Major_Control_Registered = TRUE;
-               }
+       dgap_class = class_create(THIS_MODULE, "dgap_mgmt");
+       device_create(dgap_class, NULL,
+               MKDEV(DIGI_DGAP_MAJOR, 0),
+               NULL, "dgap_mgmt");
 
-               /* Start the poller */
-               DGAP_LOCK(dgap_poll_lock, flags);
-               init_timer(&dgap_poll_timer);
-               dgap_poll_timer.function = dgap_poll_handler;
-               dgap_poll_timer.data = 0;
-               dgap_poll_time = jiffies + dgap_jiffies_from_ms(dgap_poll_tick);
-               dgap_poll_timer.expires = dgap_poll_time;
-               DGAP_UNLOCK(dgap_poll_lock, flags);
+       /* Start the poller */
+       DGAP_LOCK(dgap_poll_lock, flags);
+       init_timer(&dgap_poll_timer);
+       dgap_poll_timer.function = dgap_poll_handler;
+       dgap_poll_timer.data = 0;
+       dgap_poll_time = jiffies + dgap_jiffies_from_ms(dgap_poll_tick);
+       dgap_poll_timer.expires = dgap_poll_time;
+       DGAP_UNLOCK(dgap_poll_lock, flags);
 
-               add_timer(&dgap_poll_timer);
+       add_timer(&dgap_poll_timer);
 
-               dgap_driver_state = DRIVER_NEED_CONFIG_LOAD;
-       }
+       dgap_driver_state = DRIVER_NEED_CONFIG_LOAD;
 
        return rc;
 }
@@ -658,13 +647,9 @@ static void dgap_cleanup_module(void)
 
        dgap_remove_driver_sysfiles(&dgap_driver);
 
-
-       if (dgap_Major_Control_Registered) {
-               device_destroy(dgap_class, MKDEV(DIGI_DGAP_MAJOR, 0));
-               device_destroy(dgap_class, MKDEV(DIGI_DGAP_MAJOR, 1));
-               class_destroy(dgap_class);
-               unregister_chrdev(DIGI_DGAP_MAJOR, "dgap");
-       }
+       device_destroy(dgap_class, MKDEV(DIGI_DGAP_MAJOR, 0));
+       class_destroy(dgap_class);
+       unregister_chrdev(DIGI_DGAP_MAJOR, "dgap");
 
        kfree(dgap_config_buf);