xref: /netbsd-src/sys/arch/vax/bi/bi_mainbus.c (revision 6a6027692662ba623e7bf5274322989a7b5d1440)
1*6a602769Sragge /*	$NetBSD: bi_mainbus.c,v 1.12 2017/05/22 16:53:59 ragge Exp $	   */
2bc163cccSragge /*
3bc163cccSragge  * Copyright (c) 1999 Ludd, University of Lule}, Sweden.
4bc163cccSragge  * All rights reserved.
5bc163cccSragge  *
6bc163cccSragge  * Redistribution and use in source and binary forms, with or without
7bc163cccSragge  * modification, are permitted provided that the following conditions
8bc163cccSragge  * are met:
9bc163cccSragge  * 1. Redistributions of source code must retain the above copyright
10bc163cccSragge  *    notice, this list of conditions and the following disclaimer.
11bc163cccSragge  * 2. Redistributions in binary form must reproduce the above copyright
12bc163cccSragge  *    notice, this list of conditions and the following disclaimer in the
13bc163cccSragge  *    documentation and/or other materials provided with the distribution.
14bc163cccSragge  *
15bc163cccSragge  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16bc163cccSragge  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17bc163cccSragge  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18bc163cccSragge  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19bc163cccSragge  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20bc163cccSragge  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21bc163cccSragge  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22bc163cccSragge  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23bc163cccSragge  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24bc163cccSragge  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25bc163cccSragge  */
26bc163cccSragge 
273b4fb6d0Slukem #include <sys/cdefs.h>
28*6a602769Sragge __KERNEL_RCSID(0, "$NetBSD: bi_mainbus.c,v 1.12 2017/05/22 16:53:59 ragge Exp $");
2906386a01Smatt 
3006386a01Smatt #define _VAX_BUS_DMA_PRIVATE
313b4fb6d0Slukem 
32bc163cccSragge #include <sys/param.h>
33bc163cccSragge #include <sys/device.h>
3406386a01Smatt #include <sys/bus.h>
3506386a01Smatt #include <sys/cpu.h>
36bc163cccSragge 
37bc163cccSragge #include <machine/nexus.h>
38bc163cccSragge #include <machine/sid.h>
39aef1518cSragge #include <machine/scb.h>
40dfba8166Smatt #include <machine/mainbus.h>
41bc163cccSragge 
42bc163cccSragge #include <dev/bi/bivar.h>
43c034e1d4Sragge #include <dev/bi/bireg.h>
44bc163cccSragge 
45dfba8166Smatt #include "ioconf.h"
46bc163cccSragge 
47dfba8166Smatt static	int bi_mainbus_match(device_t, cfdata_t, void *);
48dfba8166Smatt static	void bi_mainbus_attach(device_t, device_t, void *);
49dfba8166Smatt 
50dfba8166Smatt CFATTACH_DECL_NEW(bi_mainbus, sizeof(struct bi_softc),
514bf871a7Sthorpej     bi_mainbus_match, bi_mainbus_attach, NULL, NULL);
52bc163cccSragge 
537c240690Smatt static int
bi_mainbus_match(device_t parent,cfdata_t cf,void * aux)54dfba8166Smatt bi_mainbus_match(device_t parent, cfdata_t cf, void *aux)
55bc163cccSragge {
56dfba8166Smatt 	struct mainbus_attach_args * const ma = aux;
57dfba8166Smatt 
58dfba8166Smatt 	return !strcmp(bi_cd.cd_name, ma->ma_type);
59bc163cccSragge }
60bc163cccSragge 
617c240690Smatt static void
bi_mainbus_attach(device_t parent,device_t self,void * aux)62dfba8166Smatt bi_mainbus_attach(device_t parent, device_t self, void *aux)
63bc163cccSragge {
64dfba8166Smatt 	struct bi_softc * const sc = device_private(self);
65dfba8166Smatt 	struct mainbus_attach_args * const ma = aux;
66bc163cccSragge 
67dfba8166Smatt 	sc->sc_dev = self;
68bc163cccSragge 	/*
69bc163cccSragge 	 * Fill in bus specific data.
70bc163cccSragge 	 */
71c034e1d4Sragge 	sc->sc_addr = (bus_addr_t)BI_BASE(0, 0);
72dfba8166Smatt 	sc->sc_iot = ma->ma_iot;	/* No special I/O handling */
73dfba8166Smatt 	sc->sc_dmat = ma->ma_dmat;	/* No special DMA handling either */
74c034e1d4Sragge 	sc->sc_intcpu = 1 << mfpr(PR_BINID);
75c034e1d4Sragge 	sc->sc_lastiv = 256; /* Lowest available vector address */
76bc163cccSragge 
77bc163cccSragge 	bi_attach(sc);
78bc163cccSragge }
79