1 /* $OpenBSD: mainbus.c,v 1.3 2005/12/31 23:03:58 drahn Exp $ */ 2 /* $NetBSD: mainbus.c,v 1.3 2001/06/13 17:52:43 nathanw Exp $ */ 3 4 /* 5 * Copyright (c) 1994,1995 Mark Brinicombe. 6 * Copyright (c) 1994 Brini. 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 3. All advertising materials mentioning features or use of this software 18 * must display the following acknowledgement: 19 * This product includes software developed by Brini. 20 * 4. The name of the company nor the name of the author may be used to 21 * endorse or promote products derived from this software without specific 22 * prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY BRINI ``AS IS'' AND ANY EXPRESS OR IMPLIED 25 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 26 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 27 * IN NO EVENT SHALL BRINI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 28 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 29 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34 * SUCH DAMAGE. 35 * 36 * RiscBSD kernel project 37 * 38 * mainbus.c 39 * 40 * mainbus configuration 41 * 42 * Created : 15/12/94 43 */ 44 45 #include <sys/param.h> 46 #include <sys/systm.h> 47 #include <sys/kernel.h> 48 #include <sys/conf.h> 49 #include <sys/malloc.h> 50 #include <sys/device.h> 51 52 #if defined(arm32) /* XXX */ 53 #include <machine/io.h> 54 #endif 55 #include <machine/bus.h> 56 #include <arm/mainbus/mainbus.h> 57 /* 58 #include "locators.h" 59 */ 60 61 /* 62 * mainbus is a root device so we a bus space tag to pass to children 63 * 64 * The tag is provided by mainbus_io.c and mainbus_io_asm.S 65 */ 66 67 extern struct bus_space mainbus_bs_tag; 68 69 /* Prototypes for functions provided */ 70 71 int mainbusmatch (struct device *, void *, void *); 72 void mainbusattach (struct device *, struct device *, void *); 73 int mainbusprint (void *aux, const char *mainbus); 74 int mainbussearch (struct device *, void *, void *); 75 76 /* attach and device structures for the device */ 77 78 struct cfattach mainbus_ca = { 79 sizeof(struct device), mainbusmatch, mainbusattach 80 }; 81 82 struct cfdriver mainbus_cd = { 83 NULL, "mainbus", DV_DULL 84 }; 85 86 /* 87 * int mainbusmatch(struct device *parent, struct cfdata *cf, void *aux) 88 * 89 * Always match for unit 0 90 */ 91 92 int 93 mainbusmatch(struct device *parent, void *cf, void *aux) 94 { 95 return (1); 96 } 97 98 /* 99 * void mainbusattach(struct device *parent, struct device *self, void *aux) 100 * 101 * probe and attach all children 102 */ 103 104 void 105 mainbusattach(struct device *parent, struct device *self, void *aux) 106 { 107 printf("\n"); 108 109 config_search(mainbussearch, self, self); 110 } 111 112 int 113 mainbussearch(struct device *parent, void *c, void *aux) 114 { 115 struct mainbus_attach_args ma; 116 struct cfdata *cf = c; 117 118 119 ma.ma_iot = &mainbus_bs_tag; 120 ma.ma_name = cf->cf_driver->cd_name; 121 122 config_found(parent, &ma, mainbusprint); 123 124 return 1; 125 } 126 127 /* 128 * int mainbusprint(void *aux, const char *mainbus) 129 * 130 * print routine used during config of children 131 */ 132 133 int 134 mainbusprint(void *aux, const char *mainbus) 135 { 136 /* XXXX print flags */ 137 return (QUIET); 138 } 139