greybus: register the bus with the driver core and add framework for debugfs files.

This commit is contained in:
Greg Kroah-Hartman 2014-08-31 13:54:59 -07:00
parent 6f83ab76b8
commit 27fb83109a
4 changed files with 59 additions and 5 deletions

View File

@ -1,4 +1,4 @@
greybus-y := core.o gbuf.o i2c-gb.o gpio-gb.o sdio-gb.o uart-gb.o greybus-y := core.o gbuf.o debugfs.o i2c-gb.o gpio-gb.o sdio-gb.o uart-gb.o
obj-m += greybus.o obj-m += greybus.o
obj-m += es1-ap-usb.o obj-m += es1-ap-usb.o

View File

@ -86,7 +86,7 @@ static int greybus_uevent(struct device *dev, struct kobj_uevent_env *env)
return 0; return 0;
} }
struct bus_type greybus_bus_type = { static struct bus_type greybus_bus_type = {
.name = "greybus", .name = "greybus",
.match = greybus_device_match, .match = greybus_device_match,
.uevent = greybus_uevent, .uevent = greybus_uevent,
@ -199,16 +199,36 @@ static int __init gb_init(void)
{ {
int retval; int retval;
retval = gb_tty_init(); retval = greybus_debugfs_init();
if (retval) if (retval)
return retval; return retval;
retval = bus_register(&greybus_bus_type);
if (retval)
goto error_bus;
// FIXME - more gb core init goes here
retval = gb_tty_init();
if (retval)
goto error_tty;
return 0; return 0;
error_tty:
bus_unregister(&greybus_bus_type);
error_bus:
greybus_debugfs_cleanup();
return retval;
} }
static void __exit gb_exit(void) static void __exit gb_exit(void)
{ {
gb_tty_exit(); gb_tty_exit();
bus_unregister(&greybus_bus_type);
greybus_debugfs_cleanup();
} }
module_init(gb_init); module_init(gb_init);

View File

@ -0,0 +1,34 @@
/*
* Greybus debugfs code
*
* Copyright 2014 Google Inc.
*
* Released under the GPLv2 only.
*/
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/types.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/device.h>
#include <linux/debugfs.h>
#include "greybus.h"
static struct dentry *gb_debug_root;
int greybus_debugfs_init(void)
{
gb_debug_root = debugfs_create_dir("greybus", NULL);
if (!gb_debug_root)
return -ENOENT;
return 0;
}
void greybus_debugfs_cleanup(void)
{
debugfs_remove_recursive(gb_debug_root);
}

View File

@ -174,10 +174,10 @@ void greybus_deregister(struct greybus_driver *driver);
#define module_greybus_driver(__greybus_driver) \ #define module_greybus_driver(__greybus_driver) \
module_driver(__greybus_driver, greybus_register, greybus_deregister) module_driver(__greybus_driver, greybus_register, greybus_deregister)
extern struct bus_type greybus_bus_type;
int greybus_disabled(void); int greybus_disabled(void);
int greybus_debugfs_init(void);
void greybus_debugfs_cleanup(void);
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* __LINUX_GREYBUS_H */ #endif /* __LINUX_GREYBUS_H */