aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/most
diff options
context:
space:
mode:
authorChristian Gromm <christian.gromm@microchip.com>2017-11-21 15:04:51 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-11-27 09:20:35 +0100
commit14ae5f0383924e502139a2a6e8cbfadc985d3218 (patch)
tree7b635204e29d2ead033ff91a9a200b1f8f0da3fa /drivers/staging/most
parentstaging: most: core: rename members aim* of struct most_channel (diff)
downloadlinux-dev-14ae5f0383924e502139a2a6e8cbfadc985d3218.tar.xz
linux-dev-14ae5f0383924e502139a2a6e8cbfadc985d3218.zip
staging: most: core: use structure to pack driver specific data
This patch introduces the structure "mostcore" to bundle core specific data structures. Signed-off-by: Christian Gromm <christian.gromm@microchip.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/most')
-rw-r--r--drivers/staging/most/core.c73
1 files changed, 34 insertions, 39 deletions
diff --git a/drivers/staging/most/core.c b/drivers/staging/most/core.c
index d7a28035f4a2..779464a58674 100644
--- a/drivers/staging/most/core.c
+++ b/drivers/staging/most/core.c
@@ -26,11 +26,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;
@@ -777,22 +785,6 @@ int most_match(struct device *dev, struct device_driver *drv)
return 1;
}
-/**
- * Instantiation of the MOST bus
- */
-static struct bus_type most_bus = {
- .name = "most",
- .match = most_match,
-};
-
-/**
- * Instantiation of the core driver
- */
-static struct device_driver mostcore = {
- .name = "mostcore",
- .bus = &most_bus,
-};
-
static inline void trash_mbo(struct mbo *mbo)
{
unsigned long flags;
@@ -1293,8 +1285,8 @@ int most_register_aim(struct most_aim *aim)
return -EINVAL;
}
aim->dev.init_name = aim->name;
- aim->dev.bus = &most_bus;
- 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);
@@ -1391,8 +1383,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;
- 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)) {
@@ -1555,28 +1547,31 @@ static int __init most_init(void)
INIT_LIST_HEAD(&instance_list);
ida_init(&mdev_id);
- err = bus_register(&most_bus);
+ 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;
}
@@ -1584,21 +1579,21 @@ static int __init most_init(void)
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);
+ 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);
+ device_unregister(&mc.dev);
+ driver_unregister(&mc.drv);
+ class_destroy(mc.class);
+ bus_unregister(&mc.bus);
ida_destroy(&mdev_id);
}