1220297Sadrian/*- 2220297Sadrian * Copyright (c) 2006 Wojciech A. Koszek <wkoszek@FreeBSD.org> 3220297Sadrian * All rights reserved. 4220297Sadrian * 5220297Sadrian * Redistribution and use in source and binary forms, with or without 6220297Sadrian * modification, are permitted provided that the following conditions 7220297Sadrian * are met: 8220297Sadrian * 1. Redistributions of source code must retain the above copyright 9220297Sadrian * notice, this list of conditions and the following disclaimer. 10220297Sadrian * 2. Redistributions in binary form must reproduce the above copyright 11220297Sadrian * notice, this list of conditions and the following disclaimer in the 12220297Sadrian * documentation and/or other materials provided with the distribution. 13220297Sadrian * 14220297Sadrian * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15220297Sadrian * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16220297Sadrian * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17220297Sadrian * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18220297Sadrian * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19220297Sadrian * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20220297Sadrian * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21220297Sadrian * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22220297Sadrian * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23220297Sadrian * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24220297Sadrian * SUCH DAMAGE. 25220297Sadrian * 26220297Sadrian * $Id$ 27220297Sadrian */ 28220297Sadrian/* 29220297Sadrian * Skeleton of this file was based on respective code for ARM 30220297Sadrian * code written by Olivier Houchard. 31220297Sadrian */ 32220297Sadrian/* 33220297Sadrian * XXXMIPS: This file is hacked from arm/... . XXXMIPS here means this file is 34220297Sadrian * experimental and was written for MIPS32 port. 35220297Sadrian */ 36220297Sadrian#include "opt_uart.h" 37220297Sadrian 38220297Sadrian#include <sys/cdefs.h> 39220297Sadrian__FBSDID("$FreeBSD: releng/11.0/sys/mips/rt305x/uart_cpu_rt305x.c 292703 2015-12-24 18:40:10Z adrian $"); 40220297Sadrian 41220297Sadrian#include <sys/param.h> 42220297Sadrian#include <sys/systm.h> 43220297Sadrian#include <sys/bus.h> 44220297Sadrian#include <sys/cons.h> 45220297Sadrian 46220297Sadrian#include <machine/bus.h> 47220297Sadrian 48220297Sadrian#include <dev/uart/uart.h> 49220297Sadrian#include <dev/uart/uart_cpu.h> 50220297Sadrian 51220297Sadrian#include <mips/rt305x/rt305xreg.h> 52220297Sadrian 53220297Sadrianextern struct uart_class uart_rt305x_uart_class; 54220297Sadrianbus_space_tag_t uart_bus_space_io; 55220297Sadrianbus_space_tag_t uart_bus_space_mem; 56220297Sadrian 57220297Sadrianint 58220297Sadrianuart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) 59220297Sadrian{ 60220297Sadrian 61220297Sadrian return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0); 62220297Sadrian} 63220297Sadrian 64220297Sadrianint 65220297Sadrianuart_cpu_getdev(int devtype, struct uart_devinfo *di) 66220297Sadrian{ 67220297Sadrian di->ops = uart_getops(&uart_rt305x_uart_class); 68220297Sadrian di->bas.chan = 0; 69220297Sadrian di->bas.bst = mips_bus_space_generic; 70220297Sadrian di->bas.regshft = 2; 71220297Sadrian di->bas.rclk = SYSTEM_CLOCK; 72220297Sadrian di->baudrate = 115200; 73220297Sadrian di->databits = 8; 74220297Sadrian di->stopbits = 1; 75220297Sadrian 76220297Sadrian di->parity = UART_PARITY_NONE; 77220297Sadrian 78220297Sadrian uart_bus_space_io = NULL; 79220297Sadrian uart_bus_space_mem = mips_bus_space_generic; 80292703Sadrian#ifdef RT305X_USE_UART 81292703Sadrian di->bas.bsh = MIPS_PHYS_TO_KSEG1(UART_BASE); 82292703Sadrian#else 83220297Sadrian di->bas.bsh = MIPS_PHYS_TO_KSEG1(UARTLITE_BASE); 84292703Sadrian#endif 85220297Sadrian return (0); 86220297Sadrian} 87