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