1 /* $NetBSD: openfirm.h,v 1.1 1996/09/30 16:35:10 ws Exp $ */ 2 3 /* 4 * Copyright (C) 1995, 1996 Wolfgang Solfrank. 5 * Copyright (C) 1995, 1996 TooLs GmbH. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 3. All advertising materials mentioning features or use of this software 17 * must display the following acknowledgement: 18 * This product includes software developed by TooLs GmbH. 19 * 4. The name of TooLs GmbH may not be used to endorse or promote products 20 * derived from this software without specific prior written permission. 21 * 22 * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR 23 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 24 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 25 * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 28 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 29 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 30 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 31 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 /* 34 * Prototypes for OpenFirmware Interface Routines 35 */ 36 37 #include <sys/param.h> 38 #include <sys/device.h> 39 40 int openfirmware __P((void *)); 41 42 extern char *OF_buf; 43 44 int OF_peer __P((int phandle)); 45 int OF_child __P((int phandle)); 46 int OF_parent __P((int phandle)); 47 int OF_instance_to_package __P((int ihandle)); 48 int OF_getprop __P((int handle, char *prop, void *buf, int buflen)); 49 int OF_finddevice __P((char *name)); 50 int OF_instance_to_path __P((int ihandle, char *buf, int buflen)); 51 int OF_package_to_path __P((int phandle, char *buf, int buflen)); 52 int OF_call_method_1 __P((char *method, int ihandle, int nargs, ...)); 53 int OF_call_method __P((char *method, int ihandle, int nargs, int nreturns, ...)); 54 int OF_open __P((char *dname)); 55 void OF_close __P((int handle)); 56 int OF_read __P((int handle, void *addr, int len)); 57 int OF_write __P((int handle, void *addr, int len)); 58 int OF_seek __P((int handle, u_quad_t pos)); 59 void OF_boot __P((char *bootspec)) __attribute__((__noreturn__)); 60 void OF_enter __P((void)); 61 void OF_exit __P((void)) __attribute__((__noreturn__)); 62 void (*OF_set_callback __P((void (*newfunc)(void *)))) (); 63 64 /* 65 * Some generic routines for OpenFirmware handling. 66 */ 67 int ofnmmatch __P((char *cp1, char *cp2)); 68 69 /* 70 * Generic OpenFirmware probe argument. 71 * This is how all probe structures must start 72 * in order to support generic OpenFirmware device drivers. 73 */ 74 struct ofprobe { 75 int phandle; 76 /* 77 * Special unit field for disk devices. 78 * This is a KLUDGE to work around the fact that OpenFirmware 79 * doesn't probe the scsi bus completely. 80 * YES, I THINK THIS IS A BUG IN THE OPENFIRMWARE DEFINITION!!! XXX 81 * See also ofdisk.c. 82 */ 83 int unit; 84 }; 85 86 /* 87 * The softc structure for devices we might be booted from (i.e. we might 88 * want to set root/swap to) needs to start with these fields: XXX 89 */ 90 struct ofb_softc { 91 struct device sc_dev; 92 int sc_phandle; 93 int sc_unit; /* Might be missing for non-disk devices */ 94 }; 95