Skip to content

Commit

Permalink
serial/arc-uart: split probe from probe_earlyprintk
Browse files Browse the repository at this point in the history
This is in preparation for devicetree based probing, where earlyprintk
won't have access to DT serial aliases which the normal probe would
absolutely rely on.

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Cc: Alan Cox <alan@linux.intel.com>
Cc: Jiri Slaby <jslaby@suse.cz>
Cc: linux-serial@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Vineet Gupta authored and Greg Kroah-Hartman committed Jan 16, 2013
1 parent 026bb29 commit e163d1f
Showing 1 changed file with 11 additions and 10 deletions.
21 changes: 11 additions & 10 deletions drivers/tty/serial/arc_uart.c
Original file line number Diff line number Diff line change
Expand Up @@ -651,7 +651,7 @@ static struct __initdata console arc_early_serial_console = {
.index = -1
};

static int arc_serial_probe_earlyprintk(struct platform_device *pdev)
static int __init arc_serial_probe_earlyprintk(struct platform_device *pdev)
{
int dev_id = pdev->id < 0 ? 0 : pdev->id;
int rc;
Expand All @@ -667,20 +667,12 @@ static int arc_serial_probe_earlyprintk(struct platform_device *pdev)
register_console(&arc_early_serial_console);
return 0;
}
#else
static int arc_serial_probe_earlyprintk(struct platform_device *pdev)
{
return -ENODEV;
}
#endif /* CONFIG_SERIAL_ARC_CONSOLE */

static int arc_serial_probe(struct platform_device *pdev)
{
int rc, dev_id;

if (is_early_platform_device(pdev))
return arc_serial_probe_earlyprintk(pdev);

dev_id = pdev->id < 0 ? 0 : pdev->id;
rc = arc_uart_init_one(pdev, dev_id);
if (rc)
Expand All @@ -706,14 +698,23 @@ static struct platform_driver arc_platform_driver = {
};

#ifdef CONFIG_SERIAL_ARC_CONSOLE

static struct platform_driver early_arc_platform_driver = {
.probe = arc_serial_probe_earlyprintk,
.remove = arc_serial_remove,
.driver = {
.name = DRIVER_NAME,
.owner = THIS_MODULE,
},
};
/*
* Register an early platform driver of "earlyprintk" class.
* ARCH platform code installs the driver and probes the early devices
* The installation could rely on user specifying earlyprintk=xyx in cmd line
* or it could be done independently, for all "earlyprintk" class drivers.
* [see arch/arc/plat-arcfpga/platform.c]
*/
early_platform_init("earlyprintk", &arc_platform_driver);
early_platform_init("earlyprintk", &early_arc_platform_driver);

#endif /* CONFIG_SERIAL_ARC_CONSOLE */

Expand Down

0 comments on commit e163d1f

Please sign in to comment.