char: lp: introduce list to save port number
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>
Fri, 7 Dec 2018 14:27:30 +0000 (14:27 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Dec 2018 09:40:17 +0000 (10:40 +0100)
When we are registering lp in LP_PARPORT_AUTO mode, we are not keeping
any record of the parallel port number to which lp is connecting.
Add an array to save the port number to it.

Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/lp.c

index e0a92d7..7e207ff 100644 (file)
 
 static DEFINE_MUTEX(lp_mutex);
 static struct lp_struct lp_table[LP_NO];
+static int port_num[LP_NO];
 
 static unsigned int lp_count = 0;
 static struct class *lp_class;
@@ -938,6 +939,7 @@ static int lp_register(int nr, struct parport *port)
                               CONSOLE_LP, port->name);
        }
 #endif
+       port_num[nr] = port->number;
 
        return 0;
 }
@@ -1013,6 +1015,7 @@ static int __init lp_init(void)
                init_waitqueue_head(&lp_table[i].dataq);
                mutex_init(&lp_table[i].port_mutex);
                lp_table[i].timeout = 10 * HZ;
+               port_num[i] = -1;
        }
 
        if (register_chrdev(LP_MAJOR, "lp", &lp_fops)) {
@@ -1091,6 +1094,7 @@ static void lp_cleanup_module(void)
        for (offset = 0; offset < LP_NO; offset++) {
                if (lp_table[offset].dev == NULL)
                        continue;
+               port_num[offset] = -1;
                parport_unregister_device(lp_table[offset].dev);
                device_destroy(lp_class, MKDEV(LP_MAJOR, offset));
        }