1 /* $OpenBSD: mainbus.c,v 1.6 2011/09/22 17:45:59 miod 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, NULL, 63 config_activate_children 64 }; 65 66 struct cfdriver mainbus_cd = { 67 NULL, "mainbus", DV_DULL 68 }; 69 70 /* 71 * int mainbusmatch(struct device *parent, struct cfdata *cf, void *aux) 72 */ 73 74 int 75 mainbusmatch(struct device *parent, void *cf, void *aux) 76 { 77 return (1); 78 } 79 80 /* 81 * void mainbusattach(struct device *parent, struct device *self, void *aux) 82 * 83 * probe and attach all children 84 */ 85 86 void 87 mainbusattach(struct device *parent, struct device *self, void *aux) 88 { 89 printf("\n"); 90 91 config_search(mainbussearch, self, aux); 92 } 93 94 int 95 mainbussearch(struct device *parent, void *vcf, void *aux) 96 { 97 struct mainbus_attach_args ma; 98 struct cfdata *cf = vcf; 99 100 ma.ma_name = cf->cf_driver->cd_name; 101 102 /* allow for devices to be disabled in UKC */ 103 if ((*cf->cf_attach->ca_match)(parent, cf, &ma) == 0) 104 return 0; 105 106 config_attach(parent, cf, &ma, mainbusprint); 107 return 1; 108 } 109 110 /* 111 * int mainbusprint(void *aux, const char *mainbus) 112 * 113 * print routine used during config of children 114 */ 115 116 int 117 mainbusprint(void *aux, const char *mainbus) 118 { 119 struct mainbus_attach_args *ma = aux; 120 121 if (mainbus != NULL) 122 printf("%s at %s", ma->ma_name, mainbus); 123 124 return (UNCONF); 125 } 126