From 168db1cd2977f29c1181482aec69c22c20da7d72 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sat, 13 Sep 2014 16:15:52 -0700 Subject: [PATCH] greybus: tty driver fixes to get init working properly --- drivers/staging/greybus/core.c | 16 ++++++++++++---- drivers/staging/greybus/uart-gb.c | 30 ++++++++++++++++++++++-------- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/drivers/staging/greybus/core.c b/drivers/staging/greybus/core.c index 647bc5b..1d9efd4 100644 --- a/drivers/staging/greybus/core.c +++ b/drivers/staging/greybus/core.c @@ -508,22 +508,30 @@ static int __init gb_init(void) int retval; retval = gb_debugfs_init(); - if (retval) + if (retval) { + pr_err("debugfs failed\n"); return retval; + } retval = bus_register(&greybus_bus_type); - if (retval) + if (retval) { + pr_err("bus_register failed\n"); goto error_bus; + } retval = gb_thread_init(); - if (retval) + if (retval) { + pr_err("gb_thread_init failed\n"); goto error_thread; + } // FIXME - more gb core init goes here retval = gb_tty_init(); - if (retval) + if (retval) { + pr_err("gb_tty_init failed\n"); goto error_tty; + } return 0; diff --git a/drivers/staging/greybus/uart-gb.c b/drivers/staging/greybus/uart-gb.c index 852dd0c5..5c01b0a 100644 --- a/drivers/staging/greybus/uart-gb.c +++ b/drivers/staging/greybus/uart-gb.c @@ -8,6 +8,7 @@ * Heavily based on drivers/usb/class/cdc-acm.c and * drivers/usb/serial/usb-serial.c. */ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #include #include @@ -27,7 +28,7 @@ #include #include "greybus.h" -#define GB_TTY_MAJOR 180 /* FIXME use a real number!!! */ +#define GB_TTY_MAJOR 230 /* FIXME use a real number!!! */ #define GB_NUM_MINORS 255 /* 255 is enough for anyone... */ #define GB_NAME "ttyGB" @@ -473,20 +474,27 @@ int __init gb_tty_init(void) int retval = 0; dev_t dev; +#if 0 + retval = alloc_chrdev_region(&dev, 0, GB_NUM_MINORS, GB_NAME); - if (retval) + if (retval) { + pr_err("Can not allocate minors\n"); return retval; + } +#endif + gb_tty_driver = tty_alloc_driver(GB_NUM_MINORS, 0); if (IS_ERR(gb_tty_driver)) { + pr_err("Can not allocate tty driver\n"); retval = -ENOMEM; goto fail_unregister_dev; } gb_tty_driver->driver_name = "gb"; gb_tty_driver->name = GB_NAME; - gb_tty_driver->major = MAJOR(dev); - gb_tty_driver->minor_start = MINOR(dev); + gb_tty_driver->major = 0; + gb_tty_driver->minor_start = 0; gb_tty_driver->type = TTY_DRIVER_TYPE_SERIAL; gb_tty_driver->subtype = SERIAL_TYPE_NORMAL; gb_tty_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; @@ -495,12 +503,18 @@ int __init gb_tty_init(void) tty_set_operations(gb_tty_driver, &gb_ops); retval = tty_register_driver(gb_tty_driver); - if (retval) + if (retval) { + pr_err("Can not register tty driver: %d\n", retval); goto fail_put_gb_tty; + } +#if 0 retval = greybus_register(&tty_gb_driver); - if (retval) + if (retval) { + pr_err("Can not register greybus driver.\n"); goto fail_unregister_gb_tty; + } +#endif return 0; @@ -509,7 +523,7 @@ int __init gb_tty_init(void) fail_put_gb_tty: put_tty_driver(gb_tty_driver); fail_unregister_dev: - unregister_chrdev_region(dev, GB_NUM_MINORS); +// unregister_chrdev_region(dev, GB_NUM_MINORS); return retval; } @@ -517,7 +531,7 @@ void __exit gb_tty_exit(void) { int major = MAJOR(gb_tty_driver->major); int minor = gb_tty_driver->minor_start; - greybus_deregister(&tty_gb_driver); +// greybus_deregister(&tty_gb_driver); tty_unregister_driver(gb_tty_driver); put_tty_driver(gb_tty_driver); unregister_chrdev_region(MKDEV(major, minor), GB_NUM_MINORS); -- 2.7.4