Commit bc965a7f authored by Russell King's avatar Russell King Committed by Russell King

[SERIAL] Fix serial8250 driver initialisation ordering

Commit 7493a314 changed the ordering
of the registration of the platform device driver vs the 8250 drivers
internal initialisation.  This led to the probe function being called
before the driver had finished its internal initialisation, causing
mayhem.  Revert the ordering change.
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 7eb9b2f5
...@@ -2595,15 +2595,11 @@ static int __init serial8250_init(void) ...@@ -2595,15 +2595,11 @@ static int __init serial8250_init(void)
if (ret) if (ret)
goto out; goto out;
ret = platform_driver_register(&serial8250_isa_driver);
if (ret)
goto unreg_uart_drv;
serial8250_isa_devs = platform_device_alloc("serial8250", serial8250_isa_devs = platform_device_alloc("serial8250",
PLAT8250_DEV_LEGACY); PLAT8250_DEV_LEGACY);
if (!serial8250_isa_devs) { if (!serial8250_isa_devs) {
ret = -ENOMEM; ret = -ENOMEM;
goto unreg_plat_drv; goto unreg_uart_drv;
} }
ret = platform_device_add(serial8250_isa_devs); ret = platform_device_add(serial8250_isa_devs);
...@@ -2612,12 +2608,13 @@ static int __init serial8250_init(void) ...@@ -2612,12 +2608,13 @@ static int __init serial8250_init(void)
serial8250_register_ports(&serial8250_reg, &serial8250_isa_devs->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_del(serial8250_isa_devs);
put_dev: put_dev:
platform_device_put(serial8250_isa_devs); platform_device_put(serial8250_isa_devs);
unreg_plat_drv:
platform_driver_unregister(&serial8250_isa_driver);
unreg_uart_drv: unreg_uart_drv:
uart_unregister_driver(&serial8250_reg); uart_unregister_driver(&serial8250_reg);
out: out:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment