Messages in this thread | | | Date | Mon, 16 Jan 2006 17:54:28 -0600 (CST) | From | Kumar Gala <> | Subject | Re: [patch 6/6] serial8250: convert to the new platform device interface |
| |
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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |