mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 17:30:02 +00:00
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>
This commit is contained in:
parent
f898f98955
commit
14ae5f0383
1 changed files with 34 additions and 39 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue