1 /* $OpenBSD: mainbus.c,v 1.5 2010/08/30 21:35:57 deraadt 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 #include <machine/bus.h> 53 #include <arm/mainbus/mainbus.h> 54 55 /* 56 * mainbus is a root device so we a bus space tag to pass to children 57 * 58 * The tag is provided by mainbus_io.c and mainbus_io_asm.S 59 */ 60 61 extern struct bus_space mainbus_bs_tag; 62 63 /* Prototypes for functions provided */ 64 65 int mainbusmatch (struct device *, void *, void *); 66 void mainbusattach (struct device *, struct device *, void *); 67 int mainbusprint (void *aux, const char *mainbus); 68 int mainbussearch (struct device *, void *, void *); 69 70 /* attach and device structures for the device */ 71 72 struct cfattach mainbus_ca = { 73 sizeof(struct device), mainbusmatch, mainbusattach, NULL, 74 config_activate_children 75 }; 76 77 struct cfdriver mainbus_cd = { 78 NULL, "mainbus", DV_DULL 79 }; 80 81 /* 82 * int mainbusmatch(struct device *parent, struct cfdata *cf, void *aux) 83 * 84 * Always match for unit 0 85 */ 86 87 int 88 mainbusmatch(struct device *parent, void *cf, void *aux) 89 { 90 return (1); 91 } 92 93 /* 94 * void mainbusattach(struct device *parent, struct device *self, void *aux) 95 * 96 * probe and attach all children 97 */ 98 99 void 100 mainbusattach(struct device *parent, struct device *self, void *aux) 101 { 102 printf("\n"); 103 104 config_search(mainbussearch, self, self); 105 } 106 107 int 108 mainbussearch(struct device *parent, void *c, void *aux) 109 { 110 struct mainbus_attach_args ma; 111 struct cfdata *cf = c; 112 113 114 ma.ma_iot = &mainbus_bs_tag; 115 ma.ma_name = cf->cf_driver->cd_name; 116 117 config_found(parent, &ma, mainbusprint); 118 119 return 1; 120 } 121 122 /* 123 * int mainbusprint(void *aux, const char *mainbus) 124 * 125 * print routine used during config of children 126 */ 127 128 int 129 mainbusprint(void *aux, const char *mainbus) 130 { 131 /* XXXX print flags */ 132 return (QUIET); 133 } 134