1 /* $OpenBSD: mainbus.c,v 1.7 2013/05/30 16:15:01 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/device.h> 49 50 #include <arm/mainbus/mainbus.h> 51 52 /* Prototypes for functions provided */ 53 54 int mainbusmatch(struct device *, void *, void *); 55 void mainbusattach(struct device *, struct device *, void *); 56 int mainbusprint(void *aux, const char *mainbus); 57 int mainbussearch(struct device *, void *, void *); 58 59 /* attach and device structures for the device */ 60 61 struct cfattach mainbus_ca = { 62 sizeof(struct device), mainbusmatch, mainbusattach 63 }; 64 65 struct cfdriver mainbus_cd = { 66 NULL, "mainbus", DV_DULL 67 }; 68 69 /* 70 * int mainbusmatch(struct device *parent, struct cfdata *cf, void *aux) 71 */ 72 73 int 74 mainbusmatch(struct device *parent, void *cf, void *aux) 75 { 76 return (1); 77 } 78 79 /* 80 * void mainbusattach(struct device *parent, struct device *self, void *aux) 81 * 82 * probe and attach all children 83 */ 84 85 void 86 mainbusattach(struct device *parent, struct device *self, void *aux) 87 { 88 printf("\n"); 89 90 config_search(mainbussearch, self, aux); 91 } 92 93 int 94 mainbussearch(struct device *parent, void *vcf, void *aux) 95 { 96 struct mainbus_attach_args ma; 97 struct cfdata *cf = vcf; 98 99 ma.ma_name = cf->cf_driver->cd_name; 100 101 /* allow for devices to be disabled in UKC */ 102 if ((*cf->cf_attach->ca_match)(parent, cf, &ma) == 0) 103 return 0; 104 105 config_attach(parent, cf, &ma, mainbusprint); 106 return 1; 107 } 108 109 /* 110 * int mainbusprint(void *aux, const char *mainbus) 111 * 112 * print routine used during config of children 113 */ 114 115 int 116 mainbusprint(void *aux, const char *mainbus) 117 { 118 struct mainbus_attach_args *ma = aux; 119 120 if (mainbus != NULL) 121 printf("%s at %s", ma->ma_name, mainbus); 122 123 return (UNCONF); 124 } 125