kgdb: kgdboc pl011 I/O module
Implement the serial polling hooks for the pl011 uart for use with kgdboc. This patch was specifically tested on the ARM Versatile AB reference platform. [ mingo@elte.hu: minor cleanups. ] Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Родитель
b4b8ac524d
Коммит
84b5ae1521
|
@ -314,6 +314,32 @@ static void pl011_break_ctl(struct uart_port *port, int break_state)
|
||||||
spin_unlock_irqrestore(&uap->port.lock, flags);
|
spin_unlock_irqrestore(&uap->port.lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_CONSOLE_POLL
|
||||||
|
static int pl010_get_poll_char(struct uart_port *port)
|
||||||
|
{
|
||||||
|
struct uart_amba_port *uap = (struct uart_amba_port *)port;
|
||||||
|
unsigned int status;
|
||||||
|
|
||||||
|
do {
|
||||||
|
status = readw(uap->port.membase + UART01x_FR);
|
||||||
|
} while (status & UART01x_FR_RXFE);
|
||||||
|
|
||||||
|
return readw(uap->port.membase + UART01x_DR);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void pl010_put_poll_char(struct uart_port *port,
|
||||||
|
unsigned char ch)
|
||||||
|
{
|
||||||
|
struct uart_amba_port *uap = (struct uart_amba_port *)port;
|
||||||
|
|
||||||
|
while (readw(uap->port.membase + UART01x_FR) & UART01x_FR_TXFF)
|
||||||
|
barrier();
|
||||||
|
|
||||||
|
writew(ch, uap->port.membase + UART01x_DR);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_CONSOLE_POLL */
|
||||||
|
|
||||||
static int pl011_startup(struct uart_port *port)
|
static int pl011_startup(struct uart_port *port)
|
||||||
{
|
{
|
||||||
struct uart_amba_port *uap = (struct uart_amba_port *)port;
|
struct uart_amba_port *uap = (struct uart_amba_port *)port;
|
||||||
|
@ -572,6 +598,10 @@ static struct uart_ops amba_pl011_pops = {
|
||||||
.request_port = pl010_request_port,
|
.request_port = pl010_request_port,
|
||||||
.config_port = pl010_config_port,
|
.config_port = pl010_config_port,
|
||||||
.verify_port = pl010_verify_port,
|
.verify_port = pl010_verify_port,
|
||||||
|
#ifdef CONFIG_CONSOLE_POLL
|
||||||
|
.poll_get_char = pl010_get_poll_char,
|
||||||
|
.poll_put_char = pl010_put_poll_char,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct uart_amba_port *amba_ports[UART_NR];
|
static struct uart_amba_port *amba_ports[UART_NR];
|
||||||
|
|
Загрузка…
Ссылка в новой задаче