1248843Sadrian/*- 2248843Sadrian * Copyright (c) 2012 Adrian Chadd <adrian@FreeBSD.org> 3248843Sadrian * All rights reserved. 4248843Sadrian * 5248843Sadrian * Redistribution and use in source and binary forms, with or without 6248843Sadrian * modification, are permitted provided that the following conditions 7248843Sadrian * are met: 8248843Sadrian * 1. Redistributions of source code must retain the above copyright 9248843Sadrian * notice, this list of conditions and the following disclaimer. 10248843Sadrian * 2. Redistributions in binary form must reproduce the above copyright 11248843Sadrian * notice, this list of conditions and the following disclaimer in the 12248843Sadrian * documentation and/or other materials provided with the distribution. 13248843Sadrian * 14248843Sadrian * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15248843Sadrian * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16248843Sadrian * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17248843Sadrian * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18248843Sadrian * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19248843Sadrian * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20248843Sadrian * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21248843Sadrian * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22248843Sadrian * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23248843Sadrian * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24248843Sadrian * SUCH DAMAGE. 25248843Sadrian * 26248843Sadrian */ 27248843Sadrian#include "opt_uart.h" 28248843Sadrian 29248843Sadrian#include <sys/cdefs.h> 30248843Sadrian__FBSDID("$FreeBSD$"); 31248843Sadrian 32248843Sadrian#include <sys/param.h> 33248843Sadrian#include <sys/systm.h> 34248843Sadrian#include <sys/bus.h> 35248843Sadrian 36248843Sadrian#include <machine/bus.h> 37248843Sadrian 38248843Sadrian#include <dev/uart/uart.h> 39248843Sadrian#include <dev/uart/uart_cpu.h> 40248843Sadrian 41248843Sadrian#include <mips/atheros/ar71xxreg.h> 42248843Sadrian#include <mips/atheros/ar71xx_cpudef.h> 43248843Sadrian#include <mips/atheros/ar71xx_bus_space_reversed.h> 44248843Sadrian 45248843Sadrian#include <mips/atheros/uart_dev_ar933x.h> 46248843Sadrian 47248843Sadrianbus_space_tag_t uart_bus_space_io; 48248843Sadrianbus_space_tag_t uart_bus_space_mem; 49248843Sadrian 50248843Sadrianint 51248843Sadrianuart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) 52248843Sadrian{ 53248843Sadrian return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0); 54248843Sadrian} 55248843Sadrian 56248843Sadrianint 57248843Sadrianuart_cpu_getdev(int devtype, struct uart_devinfo *di) 58248843Sadrian{ 59248843Sadrian uint64_t freq; 60248843Sadrian 61253509Sadrian freq = ar71xx_uart_freq(); 62248843Sadrian 63248843Sadrian di->ops = uart_getops(&uart_ar933x_class); 64248843Sadrian di->bas.chan = 0; 65248843Sadrian di->bas.bst = ar71xx_bus_space_reversed; 66248843Sadrian di->bas.regshft = 0; /* We'll do "correct" dword addressing here */ 67248843Sadrian di->bas.rclk = freq; 68248843Sadrian di->baudrate = 115200; 69248843Sadrian di->databits = 8; 70248843Sadrian di->stopbits = 1; 71248843Sadrian 72248843Sadrian di->parity = UART_PARITY_NONE; 73248843Sadrian 74248843Sadrian uart_bus_space_io = NULL; 75248843Sadrian uart_bus_space_mem = ar71xx_bus_space_reversed; 76248843Sadrian di->bas.bsh = MIPS_PHYS_TO_KSEG1(AR71XX_UART_ADDR); 77248843Sadrian return (0); 78248843Sadrian} 79