Re: [patch 6/6] serial8250: convert to the new platform deviceinterface

From: Kumar Gala
Date: Mon Jan 16 2006 - 19:00:40 EST


On Mon, 16 Jan 2006, Russell King wrote:

> On Mon, Jan 16, 2006 at 04:27:17PM -0600, Kumar Gala wrote:
> > 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?
>
> Mea Culpa - should've spotted that - that patch is actually rather
> broken. platform_driver_register() can't be moved from where it
> initially was.

This seems to fix my issue on arch/powerpc and arch/ppc, please push to
Linus ASAP.

thanks

- kumar

> diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
> --- a/drivers/serial/8250.c
> +++ b/drivers/serial/8250.c
> @@ -2595,15 +2595,11 @@ static int __init serial8250_init(void)
> if (ret)
> goto out;
>
> - 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;
> + goto unreg_uart_drv;
> }
>
> ret = platform_device_add(serial8250_isa_devs);
> @@ -2612,12 +2608,13 @@ static int __init serial8250_init(void)
>
> serial8250_register_ports(&serial8250_reg, &serial8250_isa_devs->dev);
>
> - goto out;
> + ret = platform_driver_register(&serial8250_isa_driver);
> + if (ret == 0)
> + goto out;
>
> + platform_device_del(serial8250_isa_devs);
> 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:
>
>
>

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