staging: most: core: track aim modules with linked list
authorChristian Gromm <christian.gromm@microchip.com>
Tue, 21 Nov 2017 14:04:52 +0000 (15:04 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Nov 2017 08:20:35 +0000 (09:20 +0100)
The core needs to know what modules are registered. This patch makes the
core keep track of the registered modules.

Signed-off-by: Christian Gromm <christian.gromm@microchip.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/most/core.c
drivers/staging/most/core.h

index 779464a..41a3538 100644 (file)
@@ -1294,8 +1294,8 @@ int most_register_aim(struct most_aim *aim)
                pr_err("registering device %s failed\n", aim->name);
                return ret;
        }
-       pr_info("registered new application interfacing module %s\n",
-               aim->name);
+       list_add_tail(&aim->list, &mc.mod_list);
+       pr_info("registered new application interfacing module %s\n", aim->name);
        return 0;
 }
 EXPORT_SYMBOL_GPL(most_register_aim);
@@ -1326,6 +1326,7 @@ int most_deregister_aim(struct most_aim *aim)
                }
        }
        device_unregister(&aim->dev);
+       list_del(&aim->list);
        pr_info("deregistering application interfacing module %s\n", aim->name);
        return 0;
 }
@@ -1545,6 +1546,7 @@ static int __init most_init(void)
 
        pr_info("init()\n");
        INIT_LIST_HEAD(&instance_list);
+       INIT_LIST_HEAD(&mc.mod_list);
        ida_init(&mdev_id);
 
        mc.bus.name = "most",
index 29595d9..845e1d6 100644 (file)
@@ -263,6 +263,7 @@ struct most_interface {
  */
 struct most_aim {
        struct device dev;
+       struct list_head list;
        const char *name;
        int (*probe_channel)(struct most_interface *iface, int channel_idx,
                             struct most_channel_config *cfg, char *name);