| /* | |
| * 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)) | |
| unsigned long | |
| serial_init(int chan, void *ignored) | |
| { | |
| /* Clear the RX FIFO */ | |
| out_be32(UARTLITE_BASEADDR + 0x0C, 0x2); | |
| return 0; | |
| } | |
| 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); | |
| } |