1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
/* $NetBSD: openfirm.h,v 1.48 2022/01/22 11:49:18 thorpej Exp $ */
/*
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
* Copyright (C) 1995, 1996 TooLs GmbH.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by TooLs GmbH.
* 4. The name of TooLs GmbH may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _OPENFIRM_H_
#define _OPENFIRM_H_
#include <sys/device.h>
#include <prop/proplib.h>
/*
* Prototypes for OpenFirmware Interface Routines
*/
/*
* Machine-independent OpenFirmware-related structures.
* XXX THESE DO NOT BELONG HERE.
*/
/*
* Generic OpenFirmware probe argument.
* This is how all probe structures must start
* in order to support generic OpenFirmware device drivers.
*/
struct ofbus_attach_args {
const char *oba_busname;
char oba_ofname[64];
int oba_phandle;
/*
* Special unit field for disk devices.
* This is a KLUDGE to work around the fact that OpenFirmware
* doesn't probe the scsi bus completely.
* YES, I THINK THIS IS A BUG IN THE OPENFIRMWARE DEFINITION!!! XXX
* See also ofdisk.c.
*/
int oba_unit;
};
/*
* Functions and variables provided by machine-dependent code.
*/
extern char *OF_buf;
void OF_boot(const char *) __dead;
int OF_call_method(const char *, int, int, int, ...);
int OF_call_method_1(const char *, int, int, ...);
int OF_child(int);
void *OF_claim(void *, u_int, u_int);
void OF_close(int);
void OF_enter(void);
void OF_exit(void) __dead;
int OF_finddevice(const char *);
int OF_getprop(int, const char *, void *, int);
int OF_getproplen(int, const char *);
int OF_instance_to_package(int);
int OF_instance_to_path(int, char *, int);
int OF_interpret(const char *, int, int, ...);
int OF_milliseconds(void);
int OF_nextprop(int, const char *, void *);
int OF_open(const char *);
int OF_package_to_path(int, char *, int);
int OF_parent(int);
int OF_peer(int);
void OF_quiesce(void);
int OF_read(int, void *, int);
void OF_release(void *, u_int);
int OF_seek(int, u_quad_t);
void (*OF_set_callback(void(*)(void *)))(void *);
int OF_setprop(int, const char *, const void *, int);
int OF_write(int, const void *, int);
int openfirmware(void *);
/*
* Functions and variables provided by machine-independent code.
*/
#ifdef _KERNEL
struct device_compatible_entry;
devhandle_t devhandle_from_of(devhandle_t, int);
int devhandle_to_of(devhandle_t);
#define OF_DEVICE_CALL_REGISTER(_n_, _c_) \
DEVICE_CALL_REGISTER(of_device_calls, _n_, _c_)
int of_compatible(int, const char * const *);
int of_compatible_match(int, const struct device_compatible_entry *);
const struct device_compatible_entry *
of_compatible_lookup(int, const struct device_compatible_entry *);
int of_decode_int(const unsigned char *);
int of_packagename(int, char *, int);
int of_find_firstchild_byname(int, const char *);
int of_find_bycompat(int, const char *);
int of_getnode_byname(int, const char *);
bool of_to_uint32_prop(prop_dictionary_t, int, const char *, const char *);
bool of_to_dataprop(prop_dictionary_t, int, const char *, const char *);
device_t of_device_from_phandle(int);
int *of_network_decode_media(int, int *, int *);
char *of_get_mode_string(char *, int);
void of_enter_i2c_devs(prop_dictionary_t, int, size_t, int);
void of_enter_spi_devs(prop_dictionary_t, int, size_t);
#endif /* _KERNEL */
bool of_hasprop(int, const char *);
#define of_getprop_bool of_hasprop
int of_getprop_uint32(int, const char *, uint32_t *);
int of_getprop_uint32_array(int, const char *, uint32_t *, int);
int of_getprop_uint64(int, const char *, uint64_t *);
#endif /*_OPENFIRM_H_*/
|