Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8b01653a authored by Grant Likely's avatar Grant Likely Committed by Paul Mackerras
Browse files

[POWERPC] Add uartlite boot console driver for the zImage wrapper

parent 8c38fc2b
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -57,7 +57,8 @@ unsigned char *ISA_io = NULL;

#if defined(CONFIG_SERIAL_CPM_CONSOLE) || defined(CONFIG_SERIAL_8250_CONSOLE) \
	|| defined(CONFIG_SERIAL_MPC52xx_CONSOLE) \
	|| defined(CONFIG_SERIAL_MPSC_CONSOLE)
	|| defined(CONFIG_SERIAL_MPSC_CONSOLE) \
	|| defined(CONFIG_SERIAL_UARTLITE_CONSOLE)
extern unsigned long com_port;

extern int serial_tstc(unsigned long com_port);
@@ -80,7 +81,8 @@ int tstc(void)
{
#if defined(CONFIG_SERIAL_CPM_CONSOLE) || defined(CONFIG_SERIAL_8250_CONSOLE) \
	|| defined(CONFIG_SERIAL_MPC52xx_CONSOLE) \
	|| defined(CONFIG_SERIAL_MPSC_CONSOLE)
	|| defined(CONFIG_SERIAL_MPSC_CONSOLE) \
	|| defined(CONFIG_SERIAL_UARTLITE_CONSOLE)
	if(keyb_present)
		return (CRT_tstc() || serial_tstc(com_port));
	else
@@ -95,7 +97,8 @@ int getc(void)
	while (1) {
#if defined(CONFIG_SERIAL_CPM_CONSOLE) || defined(CONFIG_SERIAL_8250_CONSOLE) \
	|| defined(CONFIG_SERIAL_MPC52xx_CONSOLE) \
	|| defined(CONFIG_SERIAL_MPSC_CONSOLE)
	|| defined(CONFIG_SERIAL_MPSC_CONSOLE) \
	|| defined(CONFIG_SERIAL_UARTLITE_CONSOLE)
		if (serial_tstc(com_port))
			return (serial_getc(com_port));
#endif /* serial console */
@@ -112,7 +115,8 @@ putc(const char c)

#if defined(CONFIG_SERIAL_CPM_CONSOLE) || defined(CONFIG_SERIAL_8250_CONSOLE) \
	|| defined(CONFIG_SERIAL_MPC52xx_CONSOLE) \
	|| defined(CONFIG_SERIAL_MPSC_CONSOLE)
	|| defined(CONFIG_SERIAL_MPSC_CONSOLE) \
	|| defined(CONFIG_SERIAL_UARTLITE_CONSOLE)
	serial_putc(com_port, c);
	if ( c == '\n' )
		serial_putc(com_port, '\r');
@@ -161,7 +165,8 @@ void puts(const char *s)
	while ( ( c = *s++ ) != '\0' ) {
#if defined(CONFIG_SERIAL_CPM_CONSOLE) || defined(CONFIG_SERIAL_8250_CONSOLE) \
	|| defined(CONFIG_SERIAL_MPC52xx_CONSOLE) \
	|| defined(CONFIG_SERIAL_MPSC_CONSOLE)
	|| defined(CONFIG_SERIAL_MPSC_CONSOLE) \
	|| defined(CONFIG_SERIAL_UARTLITE_CONSOLE)
	        serial_putc(com_port, c);
	        if ( c == '\n' ) serial_putc(com_port, '\r');
#endif /* serial console */
+1 −0
Original line number Diff line number Diff line
@@ -201,6 +201,7 @@ boot-$(CONFIG_8260) += m8260_tty.o
endif
boot-$(CONFIG_SERIAL_MPC52xx_CONSOLE)	+= mpc52xx_tty.o
boot-$(CONFIG_SERIAL_MPSC_CONSOLE)	+= mv64x60_tty.o
boot-$(CONFIG_SERIAL_UARTLITE_CONSOLE)	+= uartlite_tty.o

LIBS				:= $(common)/lib.a $(bootlib)/lib.a
ifeq ($(CONFIG_PPC_PREP),y)
+37 −0
Original line number Diff line number Diff line
/*
 * Xilinx UARTLITE bootloader driver
 *
 * Copyright (c) 2007 Secret Lab Technologies Ltd.
 *
 * This program is free software; you can redistribute  it and/or modify it
 * under  the terms of  the GNU General  Public License as published by the
 * Free Software Foundation;  either version 2 of the  License, or (at your
 * option) any later version.
 */

#include <linux/types.h>
#include <asm/serial.h>
#include <asm/io.h>
#include <platforms/4xx/xparameters/xparameters.h>

#define UARTLITE_BASEADDR ((void*)(XPAR_UARTLITE_0_BASEADDR))

void
serial_putc(unsigned long com_port, unsigned char c)
{
	while ((in_be32(UARTLITE_BASEADDR + 0x8) & 0x08) != 0); /* spin */
	out_be32(UARTLITE_BASEADDR + 0x4, c);
}

unsigned char
serial_getc(unsigned long com_port)
{
	while ((in_be32(UARTLITE_BASEADDR + 0x8) & 0x01) == 0); /* spin */
	return in_be32(UARTLITE_BASEADDR);
}

int
serial_tstc(unsigned long com_port)
{
	return ((in_be32(UARTLITE_BASEADDR + 0x8) & 0x01) != 0);
}