uart_iobus.c revision 160722
12116Sjkh/*- 22116Sjkh * Copyright 2002 by Peter Grehan. All rights reserved. 32116Sjkh * 42116Sjkh * Redistribution and use in source and binary forms, with or without 52116Sjkh * modification, are permitted provided that the following conditions 62116Sjkh * are met: 72116Sjkh * 1. Redistributions of source code must retain the above copyright 88870Srgrimes * notice, this list of conditions and the following disclaimer. 92116Sjkh * 2. Redistributions in binary form must reproduce the above copyright 102116Sjkh * notice, this list of conditions and the following disclaimer in the 112116Sjkh * documentation and/or other materials provided with the distribution. 122116Sjkh * 3. The name of the author may not be used to endorse or promote products 13176451Sdas * derived from this software without specific prior written permission. 14176451Sdas * 152116Sjkh * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 162116Sjkh * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 172116Sjkh * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 182116Sjkh * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 192116Sjkh * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 202116Sjkh * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 212116Sjkh * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 222116Sjkh * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 232116Sjkh * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 242116Sjkh * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 252116Sjkh * SUCH DAMAGE. 26160122Sbde * 272116Sjkh * $FreeBSD: head/sys/powerpc/psim/uart_iobus.c 160722 2006-07-26 19:39:55Z marcel $ 28160122Sbde */ 292116Sjkh 302116Sjkh/* 31160122Sbde * PSIM local bus 16550 322116Sjkh */ 33160122Sbde 342116Sjkh#include <sys/param.h> 352116Sjkh#include <sys/systm.h> 362116Sjkh#include <sys/bus.h> 372116Sjkh#include <sys/conf.h> 382116Sjkh#include <sys/kernel.h> 392116Sjkh#include <sys/lock.h> 40260067Skargl#include <sys/malloc.h> 41260067Skargl#include <sys/mutex.h> 422116Sjkh#include <sys/module.h> 432116Sjkh#include <sys/tty.h> 442116Sjkh#include <machine/bus.h> 45270847Skargl#include <sys/timepps.h> 46270845Skargl 472116Sjkh#include <dev/ofw/openfirm.h> 4897413Salfred#include <powerpc/psim/iobusvar.h> 4997413Salfred 502116Sjkh#include <dev/uart/uart.h> 512116Sjkh#include <dev/uart/uart_bus.h> 522116Sjkh 532116Sjkhstatic int uart_iobus_probe(device_t dev); 542116Sjkh 552116Sjkhstatic device_method_t uart_iobus_methods[] = { 562116Sjkh /* Device interface */ 572116Sjkh DEVMETHOD(device_probe, uart_iobus_probe), 588870Srgrimes DEVMETHOD(device_attach, uart_bus_attach), 592116Sjkh DEVMETHOD(device_detach, uart_bus_detach), 602116Sjkh 612116Sjkh { 0, 0 } 622116Sjkh}; 632116Sjkh 642116Sjkhstatic driver_t uart_iobus_driver = { 65160122Sbde uart_driver_name, 66160122Sbde uart_iobus_methods, 67160122Sbde sizeof(struct uart_softc), 682116Sjkh}; 692116Sjkh 702116Sjkhstatic int 712116Sjkhuart_iobus_probe(device_t dev) 722116Sjkh{ 732116Sjkh struct uart_softc *sc; 742116Sjkh char *type; 75160122Sbde 762116Sjkh type = iobus_get_name(dev); 77160122Sbde if (strncmp(type, "com", 3) != 0) 782116Sjkh return (ENXIO); 792116Sjkh 802116Sjkh sc = device_get_softc(dev); 81260067Skargl sc->sc_class = &uart_ns8250_class; 82260067Skargl 83260067Skargl device_set_desc(dev, "PSIM serial port"); 84260067Skargl return (uart_bus_probe(dev, 0, 0, 0, 0)); 85} 86 87DRIVER_MODULE(uart, iobus, uart_iobus_driver, uart_devclass, 0, 0); 88