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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux