Skip to content
Snippets Groups Projects
Commit 857c283e authored by Simon Glass's avatar Simon Glass Committed by Wolfgang Denk
Browse files

Small refactor to remove duplicate serial code


This tidies up duplicate code, and checks that default_serial_console() does
in fact produce a device.

Signed-off-by: default avatarSimon Glass <sjg@chromium.org>
Acked-by: default avatarMike Frysinger <vapier@gentoo.org>
parent 025421ea
No related branches found
No related tags found
No related merge requests found
...@@ -158,73 +158,49 @@ void serial_reinit_all (void) ...@@ -158,73 +158,49 @@ void serial_reinit_all (void)
} }
} }
int serial_init (void) static struct serial_device *get_current(void)
{ {
if (!(gd->flags & GD_FLG_RELOC) || !serial_current) { struct serial_device *dev;
struct serial_device *dev = default_serial_console ();
return dev->init (); if (!(gd->flags & GD_FLG_RELOC) || !serial_current) {
} dev = default_serial_console();
/* We must have a console device */
if (!dev)
panic("Cannot find console");
} else
dev = serial_current;
return dev;
}
return serial_current->init (); int serial_init(void)
{
return get_current()->init();
} }
void serial_setbrg (void) void serial_setbrg (void)
{ {
if (!(gd->flags & GD_FLG_RELOC) || !serial_current) { get_current()->setbrg();
struct serial_device *dev = default_serial_console ();
dev->setbrg ();
return;
}
serial_current->setbrg ();
} }
int serial_getc (void) int serial_getc (void)
{ {
if (!(gd->flags & GD_FLG_RELOC) || !serial_current) { return get_current()->getc();
struct serial_device *dev = default_serial_console ();
return dev->getc ();
}
return serial_current->getc ();
} }
int serial_tstc (void) int serial_tstc (void)
{ {
if (!(gd->flags & GD_FLG_RELOC) || !serial_current) { return get_current()->tstc();
struct serial_device *dev = default_serial_console ();
return dev->tstc ();
}
return serial_current->tstc ();
} }
void serial_putc (const char c) void serial_putc (const char c)
{ {
if (!(gd->flags & GD_FLG_RELOC) || !serial_current) { get_current()->putc(c);
struct serial_device *dev = default_serial_console ();
dev->putc (c);
return;
}
serial_current->putc (c);
} }
void serial_puts (const char *s) void serial_puts (const char *s)
{ {
if (!(gd->flags & GD_FLG_RELOC) || !serial_current) { get_current()->puts(s);
struct serial_device *dev = default_serial_console ();
dev->puts (s);
return;
}
serial_current->puts (s);
} }
#if CONFIG_POST & CONFIG_SYS_POST_UART #if CONFIG_POST & CONFIG_SYS_POST_UART
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment