aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Boyer2013-03-10 09:33:40 -0500
committerGreg Kroah-Hartman2013-03-20 15:10:53 -0500
commitafe509cd07fb6af0356b7c49a96fc4bb1dbf5210 (patch)
tree9c70d9bbc8941d55b6b86a58e8a63c3cb369905a
parenteec98f82c63730d039e4a87f623cfcf5ac612683 (diff)
downloadkernel-omap-afe509cd07fb6af0356b7c49a96fc4bb1dbf5210.tar.gz
kernel-omap-afe509cd07fb6af0356b7c49a96fc4bb1dbf5210.tar.xz
kernel-omap-afe509cd07fb6af0356b7c49a96fc4bb1dbf5210.zip
serial: 8250: Keep 8250.<xxxx> module options functional after driver rename
commit f2b8dfd9e480c3db3bad0c25c590a5d11b31f4ef upstream. With commit 835d844d1 (8250_pnp: do pnp probe before legacy probe), the 8250 driver was renamed to 8250_core. This means any existing usage of the 8259.<xxxx> module parameters or as a kernel command line switch is now broken, as the 8250_core driver doesn't parse options belonging to something called "8250". To solve this, we redefine the module options in a dummy function using a redefined MODULE_PARAM_PREFX when built into the kernel. In the case where we're building as a module, we provide an alias to the old 8250 name. The dummy function prevents compiler errors due to global variable redefinitions that happen as part of the module_param_ macro expansions. Signed-off-by: Josh Boyer <jwboyer@redhat.com> Acked-by: Jiri Slaby <jslaby@suse.cz> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/tty/serial/8250/8250.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c
index f9320437a649..1c4ca8a0d07f 100644
--- a/drivers/tty/serial/8250/8250.c
+++ b/drivers/tty/serial/8250/8250.c
@@ -3430,3 +3430,32 @@ module_param_array(probe_rsa, ulong, &probe_rsa_count, 0444);
3430MODULE_PARM_DESC(probe_rsa, "Probe I/O ports for RSA"); 3430MODULE_PARM_DESC(probe_rsa, "Probe I/O ports for RSA");
3431#endif 3431#endif
3432MODULE_ALIAS_CHARDEV_MAJOR(TTY_MAJOR); 3432MODULE_ALIAS_CHARDEV_MAJOR(TTY_MAJOR);
3433
3434#ifndef MODULE
3435/* This module was renamed to 8250_core in 3.7. Keep the old "8250" name
3436 * working as well for the module options so we don't break people. We
3437 * need to keep the names identical and the convenient macros will happily
3438 * refuse to let us do that by failing the build with redefinition errors
3439 * of global variables. So we stick them inside a dummy function to avoid
3440 * those conflicts. The options still get parsed, and the redefined
3441 * MODULE_PARAM_PREFIX lets us keep the "8250." syntax alive.
3442 *
3443 * This is hacky. I'm sorry.
3444 */
3445static void __used s8250_options(void)
3446{
3447#undef MODULE_PARAM_PREFIX
3448#define MODULE_PARAM_PREFIX "8250."
3449
3450 module_param_cb(share_irqs, &param_ops_uint, &share_irqs, 0644);
3451 module_param_cb(nr_uarts, &param_ops_uint, &nr_uarts, 0644);
3452 module_param_cb(skip_txen_test, &param_ops_uint, &skip_txen_test, 0644);
3453#ifdef CONFIG_SERIAL_8250_RSA
3454 __module_param_call(MODULE_PARAM_PREFIX, probe_rsa,
3455 &param_array_ops, .arr = &__param_arr_probe_rsa,
3456 0444, -1);
3457#endif
3458}
3459#else
3460MODULE_ALIAS("8250");
3461#endif