lkml.org 
[lkml]   [2006]   [Jan]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [patch 6/6] serial8250: convert to the new platform device interface
Date
This patch is breaking arch/ppc & arch/powerpc usage of 8250.c.  The  
issue appears to be with the order in which platform_driver_register
() is called vs platform_device_add().

arch/powerpc/kernel/legacy_serial.c registers an 8250 device on the
platform bus before 8250_init() gets called.

Changing the order of platform_driver_register() vs
platform_device_add() fixes the issue. I'm still not sure what the
correct solution to this is. Ideas? comments?

- kumar

On Jan 11, 2006, at 12:47 AM, Dmitry Torokhov wrote:

> serial8250: convert to the new platform device interface
>
> Do not use platform_device_register_simple() as it is going away.
> Also set up driver's owner to create link driver->module in sysfs.
>
> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
> ---
>
> drivers/serial/8250.c | 30 ++++++++++++++++++++----------
> 1 files changed, 20 insertions(+), 10 deletions(-)
>
> Index: work/drivers/serial/8250.c
> ===================================================================
> --- work.orig/drivers/serial/8250.c
> +++ work/drivers/serial/8250.c
> @@ -2453,6 +2453,7 @@ static struct platform_driver serial8250
> .resume = serial8250_resume,
> .driver = {
> .name = "serial8250",
> + .owner = THIS_MODULE,
> },
> };
>
> @@ -2593,21 +2594,30 @@ static int __init serial8250_init(void)
> if (ret)
> goto out;
>
> - serial8250_isa_devs = platform_device_register_simple("serial8250",
> - PLAT8250_DEV_LEGACY, NULL, 0);
> - if (IS_ERR(serial8250_isa_devs)) {
> - ret = PTR_ERR(serial8250_isa_devs);
> - goto unreg;
> + ret = platform_driver_register(&serial8250_isa_driver);
> + if (ret)
> + goto unreg_uart_drv;
> +
> + serial8250_isa_devs = platform_device_alloc("serial8250",
> + PLAT8250_DEV_LEGACY);
> + if (!serial8250_isa_devs) {
> + ret = -ENOMEM;
> + goto unreg_plat_drv;
> }
>
> + ret = platform_device_add(serial8250_isa_devs);
> + if (ret)
> + goto put_dev;
> +
> serial8250_register_ports(&serial8250_reg, &serial8250_isa_devs-
> >dev);
>
> - ret = platform_driver_register(&serial8250_isa_driver);
> - if (ret == 0)
> - goto out;
> + goto out;
>
> - platform_device_unregister(serial8250_isa_devs);
> - unreg:
> + put_dev:
> + platform_device_put(serial8250_isa_devs);
> + unreg_plat_drv:
> + platform_driver_unregister(&serial8250_isa_driver);
> + unreg_uart_drv:
> uart_unregister_driver(&serial8250_reg);
> out:
> return ret;
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-
> kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-01-16 23:29    [W:0.087 / U:1.076 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site