com_mainbus.c revision 1.3
11.3Sthorpej/* $NetBSD: com_mainbus.c,v 1.3 2002/10/02 05:39:04 thorpej Exp $ */ 21.1Such 31.1Such/*- 41.1Such * Copyright (c) 2002 The NetBSD Foundation, Inc. 51.1Such * All rights reserved. 61.1Such * 71.1Such * Redistribution and use in source and binary forms, with or without 81.1Such * modification, are permitted provided that the following conditions 91.1Such * are met: 101.1Such * 1. Redistributions of source code must retain the above copyright 111.1Such * notice, this list of conditions and the following disclaimer. 121.1Such * 2. Redistributions in binary form must reproduce the above copyright 131.1Such * notice, this list of conditions and the following disclaimer in the 141.1Such * documentation and/or other materials provided with the distribution. 151.1Such * 3. All advertising materials mentioning features or use of this software 161.1Such * must display the following acknowledgement: 171.1Such * This product includes software developed by the NetBSD 181.1Such * Foundation, Inc. and its contributors. 191.1Such * 4. Neither the name of The NetBSD Foundation nor the names of its 201.1Such * contributors may be used to endorse or promote products derived 211.1Such * from this software without specific prior written permission. 221.1Such * 231.1Such * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 241.1Such * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 251.1Such * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 261.1Such * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 271.1Such * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 281.1Such * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 291.1Such * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 301.1Such * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 311.1Such * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 321.1Such * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 331.1Such * POSSIBILITY OF SUCH DAMAGE. 341.1Such */ 351.1Such 361.1Such#include <sys/param.h> 371.1Such#include <sys/systm.h> 381.1Such#include <sys/device.h> 391.1Such 401.1Such#include <sys/termios.h> 411.1Such#include <dev/cons.h> 421.1Such#include <sys/conf.h> 431.1Such 441.1Such#include <machine/bus.h> 451.1Such#include <machine/intr.h> 461.1Such#include <machine/autoconf.h> 471.1Such#include <machine/mmeye.h> 481.1Such 491.1Such#include <dev/ic/comvar.h> 501.1Such#include <dev/ic/comreg.h> 511.1Such 521.1Such#ifndef COMCN_SPEED 531.1Such#define COMCN_SPEED 19200 541.1Such#endif 551.1Such#ifndef CONADDR 561.1Such#define CONADDR 0xa4000000 571.1Such#endif 581.1Such#ifndef CONMODE 591.1Such#define CONMODE ((TTYDEF_CFLAG & ~(CSIZE | CSTOPB | PARENB)) | CS8) /* 8N1 */ 601.1Such#endif 611.1Such 621.1Suchstruct com_mainbus_softc { 631.1Such struct com_softc sc_com; /* real "com" softc */ 641.1Such}; 651.1Such 661.1Suchint com_mainbus_match(struct device *, struct cfdata *, void *); 671.1Suchvoid com_mainbus_attach(struct device *, struct device *, void *); 681.1Suchvoid comcnprobe(struct consdev *); 691.1Suchvoid comcninit(struct consdev *); 701.1Such 711.3SthorpejCFATTACH_DECL(com_mainbus, sizeof(struct com_mainbus_softc), 721.3Sthorpej com_mainbus_match, com_mainbus_attach, NULL, NULL); 731.1Such 741.1Suchint 751.1Suchcom_mainbus_match(struct device *parent, struct cfdata *match, void *aux) 761.1Such{ 771.1Such extern struct cfdriver com_cd; 781.1Such struct mainbus_attach_args *ma = aux; 791.1Such 801.1Such if (strcmp(ma->ma_name, com_cd.cd_name) == 0) 811.1Such return (1); 821.1Such 831.1Such return (0); 841.1Such} 851.1Such 861.1Suchvoid 871.1Suchcom_mainbus_attach(struct device *parent, struct device *self, void *aux) 881.1Such{ 891.1Such struct mainbus_attach_args *ma = aux; 901.1Such struct com_mainbus_softc *sc = (void *)self; 911.1Such struct com_softc *csc = &sc->sc_com; 921.1Such 931.1Such csc->sc_iot = 0; 941.1Such csc->sc_ioh = ma->ma_addr1; 951.1Such csc->sc_iobase = 0; 961.1Such csc->sc_frequency = COM_FREQ; 971.1Such 981.1Such /* sanity check */ 991.1Such if (!comprobe1(csc->sc_iot, csc->sc_ioh)) { 1001.1Such printf(": device problem. don't attach.\n"); 1011.1Such return; 1021.1Such } 1031.1Such 1041.1Such com_attach_subr(csc); 1051.1Such 1061.1Such mmeye_intr_establish(ma->ma_irq1, IST_LEVEL, IPL_SERIAL, comintr, sc); 1071.1Such} 1081.1Such 1091.1Suchvoid 1101.1Suchcomcnprobe(struct consdev *cp) 1111.1Such{ 1121.1Such 1131.1Such#ifdef COMCONSOLE 1141.1Such cp->cn_pri = CN_REMOTE; /* Force a serial port console */ 1151.1Such#else 1161.1Such cp->cn_pri = CN_NORMAL; 1171.1Such#endif 1181.1Such} 1191.1Such 1201.1Suchvoid 1211.1Suchcomcninit(cp) 1221.1Such struct consdev *cp; 1231.1Such{ 1241.1Such 1251.1Such comcnattach(0, CONADDR, COMCN_SPEED, COM_FREQ, CONMODE); 1261.1Such} 127