openfirm.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /* $OpenBSD: openfirm.h,v 1.10 2007/10/14 17:26:59 kettenis Exp $ */
  2. /* $NetBSD: openfirm.h,v 1.1 1996/09/30 16:35:10 ws Exp $ */
  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. #include <sys/param.h>
  37. #include <sys/device.h>
  38. int openfirmware(void *);
  39. extern char OF_buf[];
  40. int OF_peer(int phandle);
  41. int OF_child(int phandle);
  42. int OF_parent(int phandle);
  43. int OF_instance_to_package(int ihandle);
  44. int OF_getproplen(int handle, char *prop);
  45. int OF_getprop(int handle, char *prop, void *buf, int buflen);
  46. int OF_setprop(int, char *, const void *, int);
  47. int OF_nextprop(int, char *, void *);
  48. int OF_finddevice(char *name);
  49. int OF_instance_to_path(int ihandle, char *buf, int buflen);
  50. int OF_package_to_path(int phandle, char *buf, int buflen);
  51. int OF_call_method_1(char *method, int ihandle, int nargs, ...);
  52. int OF_call_method(char *method, int ihandle, int nargs, int nreturns, ...);
  53. int OF_open(char *dname);
  54. void OF_close(int handle);
  55. int OF_read(int handle, void *addr, int len);
  56. int OF_write(int handle, void *addr, int len);
  57. int OF_seek(int handle, u_quad_t pos);
  58. void OF_boot(char *bootspec);
  59. void OF_enter(void);
  60. void OF_exit(void) __attribute__((__noreturn__));
  61. int OF_interpret(char *cmd, int nreturns, ...);
  62. #if 0
  63. void (*OF_set_callback(void (*newfunc)(void *))) ();
  64. #endif
  65. int OF_getnodebyname(int, const char *);
  66. /*
  67. * Some generic routines for OpenFirmware handling.
  68. */
  69. int ofnmmatch(char *cp1, char *cp2);
  70. void ofw_intr_establish(void);
  71. /*
  72. * Generic OpenFirmware probe argument.
  73. * This is how all probe structures must start
  74. * in order to support generic OpenFirmware device drivers.
  75. */
  76. struct ofprobe {
  77. int phandle;
  78. /*
  79. * Special unit field for disk devices.
  80. * This is a KLUDGE to work around the fact that OpenFirmware
  81. * doesn't probe the scsi bus completely.
  82. * YES, I THINK THIS IS A BUG IN THE OPENFIRMWARE DEFINITION!!! XXX
  83. * See also ofdisk.c.
  84. */
  85. int unit;
  86. };
  87. /*
  88. * The softc structure for devices we might be booted from (i.e. we might
  89. * want to set root/swap to) needs to start with these fields: XXX
  90. */
  91. struct ofb_softc {
  92. struct device sc_dev;
  93. int sc_phandle;
  94. int sc_unit; /* Might be missing for non-disk devices */
  95. };