bi_mainbus.c revision 1.12
11.12Sragge/* $NetBSD: bi_mainbus.c,v 1.12 2017/05/22 16:53:59 ragge Exp $ */ 21.1Sragge/* 31.1Sragge * Copyright (c) 1999 Ludd, University of Lule}, Sweden. 41.1Sragge * All rights reserved. 51.1Sragge * 61.1Sragge * Redistribution and use in source and binary forms, with or without 71.1Sragge * modification, are permitted provided that the following conditions 81.1Sragge * are met: 91.1Sragge * 1. Redistributions of source code must retain the above copyright 101.1Sragge * notice, this list of conditions and the following disclaimer. 111.1Sragge * 2. Redistributions in binary form must reproduce the above copyright 121.1Sragge * notice, this list of conditions and the following disclaimer in the 131.1Sragge * documentation and/or other materials provided with the distribution. 141.1Sragge * 151.1Sragge * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 161.1Sragge * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 171.1Sragge * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 181.1Sragge * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 191.1Sragge * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 201.1Sragge * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 211.1Sragge * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 221.1Sragge * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 231.1Sragge * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 241.1Sragge * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 251.1Sragge */ 261.8Slukem 271.8Slukem#include <sys/cdefs.h> 281.12Sragge__KERNEL_RCSID(0, "$NetBSD: bi_mainbus.c,v 1.12 2017/05/22 16:53:59 ragge Exp $"); 291.11Smatt 301.11Smatt#define _VAX_BUS_DMA_PRIVATE 311.1Sragge 321.1Sragge#include <sys/param.h> 331.1Sragge#include <sys/device.h> 341.11Smatt#include <sys/bus.h> 351.11Smatt#include <sys/cpu.h> 361.1Sragge 371.1Sragge#include <machine/nexus.h> 381.1Sragge#include <machine/sid.h> 391.2Sragge#include <machine/scb.h> 401.10Smatt#include <machine/mainbus.h> 411.1Sragge 421.1Sragge#include <dev/bi/bivar.h> 431.4Sragge#include <dev/bi/bireg.h> 441.1Sragge 451.10Smatt#include "ioconf.h" 461.1Sragge 471.10Smattstatic int bi_mainbus_match(device_t, cfdata_t, void *); 481.10Smattstatic void bi_mainbus_attach(device_t, device_t, void *); 491.10Smatt 501.10SmattCFATTACH_DECL_NEW(bi_mainbus, sizeof(struct bi_softc), 511.7Sthorpej bi_mainbus_match, bi_mainbus_attach, NULL, NULL); 521.1Sragge 531.3Smattstatic int 541.10Smattbi_mainbus_match(device_t parent, cfdata_t cf, void *aux) 551.1Sragge{ 561.10Smatt struct mainbus_attach_args * const ma = aux; 571.10Smatt 581.10Smatt return !strcmp(bi_cd.cd_name, ma->ma_type); 591.1Sragge} 601.1Sragge 611.3Smattstatic void 621.10Smattbi_mainbus_attach(device_t parent, device_t self, void *aux) 631.1Sragge{ 641.10Smatt struct bi_softc * const sc = device_private(self); 651.10Smatt struct mainbus_attach_args * const ma = aux; 661.1Sragge 671.10Smatt sc->sc_dev = self; 681.1Sragge /* 691.1Sragge * Fill in bus specific data. 701.1Sragge */ 711.4Sragge sc->sc_addr = (bus_addr_t)BI_BASE(0, 0); 721.10Smatt sc->sc_iot = ma->ma_iot; /* No special I/O handling */ 731.10Smatt sc->sc_dmat = ma->ma_dmat; /* No special DMA handling either */ 741.4Sragge sc->sc_intcpu = 1 << mfpr(PR_BINID); 751.4Sragge sc->sc_lastiv = 256; /* Lowest available vector address */ 761.1Sragge 771.1Sragge bi_attach(sc); 781.1Sragge} 79