This patch introduces the structure "mostcore" to bundle core specific
data structures.

Signed-off-by: Christian Gromm <christian.gr...@microchip.com>
---
v2: fix patch numeration
v3: - add cover letter
    - create patches with -M switch to make file movement visible

 drivers/staging/most/core.c | 64 ++++++++++++++++++++++++---------------------
 1 file changed, 34 insertions(+), 30 deletions(-)

diff --git a/drivers/staging/most/core.c b/drivers/staging/most/core.c
index 9d37ace..1af5b1c 100644
--- a/drivers/staging/most/core.c
+++ b/drivers/staging/most/core.c
@@ -32,11 +32,19 @@
 #define MAX_CHANNELS   64
 #define STRING_SIZE    80
 
-static struct class *most_class;
-static struct device core_dev;
 static struct ida mdev_id;
 static int dummy_num_buffers;
 
+static struct mostcore {
+       struct device dev;
+       struct device_driver drv;
+       struct bus_type bus;
+       struct class *class;
+       struct list_head mod_list;
+} mc;
+
+#define to_driver(d) container_of(d, struct mostcore, drv);
+
 struct pipe {
        struct most_aim *aim;
        int refs;
@@ -98,15 +106,6 @@ int most_match(struct device *dev, struct device_driver 
*drv)
                return 1;
 }
 
-static struct bus_type most_bus_type = {
-       .name = "most",
-       .match = most_match,
-};
-
-static struct device_driver mostcore = {
-       .name = "most_core",
-       .bus = &most_bus_type,
-};
 /**
  * list_pop_mbo - retrieves the first MBO of the list and removes it
  * @ptr: the list head to grab the MBO from.
@@ -1297,8 +1296,8 @@ int most_register_aim(struct most_aim *aim)
                return -EINVAL;
        }
        aim->dev.init_name = aim->name;
-       aim->dev.bus = &most_bus_type;
-       aim->dev.parent = &core_dev;
+       aim->dev.bus = &mc.bus;
+       aim->dev.parent = &mc.dev;
        aim->dev.groups = aim_attr_groups;
        aim->dev.release = release_aim;
        ret = device_register(&aim->dev);
@@ -1394,8 +1393,8 @@ int most_register_interface(struct most_interface *iface)
        list_add_tail(&inst->list, &instance_list);
        snprintf(name, STRING_SIZE, "mdev%d", id);
        iface->dev.init_name = name;
-       iface->dev.bus = &most_bus_type;
-       iface->dev.parent = &core_dev;
+       iface->dev.bus = &mc.bus;
+       iface->dev.parent = &mc.dev;
        iface->dev.groups = interface_attr_groups;
        iface->dev.release = release_interface;
        if (device_register(&iface->dev)) {
@@ -1560,47 +1559,52 @@ static int __init most_init(void)
        INIT_LIST_HEAD(&aim_list);
        ida_init(&mdev_id);
 
-       err = bus_register(&most_bus_type);
+       mc.bus.name = "most",
+       mc.bus.match = most_match,
+       mc.drv.name = "most_core",
+       mc.drv.bus = &mc.bus,
+
+       err = bus_register(&mc.bus);
        if (err) {
                pr_info("Cannot register most bus\n");
                return err;
        }
-       most_class = class_create(THIS_MODULE, "most");
-       if (IS_ERR(most_class)) {
+       mc.class = class_create(THIS_MODULE, "most");
+       if (IS_ERR(mc.class)) {
                pr_info("No udev support.\n");
-               err = PTR_ERR(most_class);
+               err = PTR_ERR(mc.class);
                goto exit_bus;
        }
 
-       err = driver_register(&mostcore);
+       err = driver_register(&mc.drv);
        if (err) {
                pr_info("Cannot register core driver\n");
                goto exit_class;
        }
-       core_dev.init_name = "most_bus";
-       core_dev.release = release_most_sub;
-       if (device_register(&core_dev)) {
+       mc.dev.init_name = "most_bus";
+       mc.dev.release = release_most_sub;
+       if (device_register(&mc.dev)) {
                err = -ENOMEM;
                goto exit_driver;
        }
        return 0;
 
 exit_driver:
-       driver_unregister(&mostcore);
+       driver_unregister(&mc.drv);
 exit_class:
-       class_destroy(most_class);
+       class_destroy(mc.class);
 exit_bus:
-       bus_unregister(&most_bus_type);
+       bus_unregister(&mc.bus);
        return err;
 }
 
 static void __exit most_exit(void)
 {
        pr_info("exit core module\n");
-       device_unregister(&core_dev);
-       driver_unregister(&mostcore);
-       class_destroy(most_class);
-       bus_unregister(&most_bus_type);
+       device_unregister(&mc.dev);
+       driver_unregister(&mc.drv);
+       class_destroy(mc.class);
+       bus_unregister(&mc.bus);
        ida_destroy(&mdev_id);
 }
 
-- 
1.9.1

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to