1 /* OpenFirmware interface */ 2 3 4 /* 6.3.2.1 Client interface */ 5 6 7 typedef struct _of1275_test_service { 8 const char *service; 9 int n_args; 10 int n_returns; 11 /*in */ 12 const char *name; 13 /*out */ 14 int missing; 15 } of1275_test_service; 16 17 int of1275_test(const char *name, int *missing); 18 19 20 /* 6.3.2.2 Device tree */ 21 22 23 typedef struct _of1275_peer_service { 24 const char *service; 25 int n_args; 26 int n_returns; 27 /*in */ 28 int phandle; 29 /*out */ 30 int sibling_phandle; 31 } of1275_peer_service; 32 33 int of1275_peer(int phandle, int *sibling_phandle); 34 35 36 typedef struct _of1275_child_service { 37 const char *service; 38 int n_args; 39 int n_returns; 40 /*in */ 41 int phandle; 42 /*out */ 43 int child_phandle; 44 } of1275_child_service; 45 46 int of1275_child(int phandle, int *child_phandle); 47 48 49 typedef struct _of1275_parent_service { 50 const char *service; 51 int n_args; 52 int n_returns; 53 /*in */ 54 int phandle; 55 /*out */ 56 int parent_phandle; 57 } of1275_parent_service; 58 59 int of1275_child(int phandle, int *parent_phandle); 60 61 62 typedef struct _of1275_instance_to_package_service { 63 const char *service; 64 int n_args; 65 int n_returns; 66 /*in */ 67 int ihandle; 68 /*out */ 69 int phandle; 70 } of1275_instance_to_package_service; 71 72 int of1275_instance_to_package(int ihandle, int *phandle); 73 74 75 typedef struct _of1275_getproplen_service { 76 const char *service; 77 int n_args; 78 int n_returns; 79 /*in */ 80 int phandle; 81 const char *name; 82 /*out */ 83 int proplen; 84 } of1275_getproplen_service; 85 86 int of1275_getproplen(int phandle, const char *name, int *proplen); 87 88 89 typedef struct _of1275_getprop_service { 90 const char *service; 91 int n_args; 92 int n_returns; 93 /*in */ 94 int phandle; 95 const char *name; 96 void *buf; 97 int buflen; 98 /*out */ 99 int size; 100 } of1275_getprop_service; 101 102 int of1275_getprop(int phandle, const char *name, void *buf, int buflen, 103 int *size); 104 105 106 typedef struct _of1275_nextprop_service { 107 const char *service; 108 int n_args; 109 int n_returns; 110 /*in */ 111 int phandle; 112 const char *previous; 113 void *buf; 114 /*out */ 115 int flag; 116 } of1275_nextprop_service; 117 118 int of1275_nextprop(int phandle, const char *previous, void *buf, 119 int *flag); 120 121 122 typedef struct _of1275_setprop_service { 123 const char *service; 124 int n_args; 125 int n_returns; 126 /*in */ 127 int phandle; 128 const char *name; 129 void *buf; 130 int len; 131 /*out */ 132 int size; 133 } of1275_setprop_service; 134 135 int of1275_setprop(int phandle, const char *name, void *buf, int len, 136 int *size); 137 138 139 typedef struct _of1275_canon_service { 140 const char *service; 141 int n_args; 142 int n_returns; 143 /*in */ 144 const char *device_specifier; 145 void *buf; 146 int buflen; 147 /*out */ 148 int length; 149 } of1275_canon_service; 150 151 int of1275_canon(const char *device_specifier, void *buf, int buflen, 152 int *length); 153 154 155 typedef struct _of1275_finddevice_service { 156 const char *service; 157 int n_args; 158 int n_returns; 159 /*in */ 160 const char *device_specifier; 161 /*out */ 162 int phandle; 163 } of1275_finddevice_service; 164 165 int of1275_finddevice(const char *device_specifier, int *phandle); 166 167 168 typedef struct _of1275_instance_to_path_service { 169 const char *service; 170 int n_args; 171 int n_returns; 172 /*in */ 173 int ihandle; 174 void *buf; 175 int buflen; 176 /*out */ 177 int length; 178 } of1275_instance_to_path_service; 179 180 int of1275_instance_to_path(int ihandle, void *buf, int buflen, 181 int *length); 182 183 184 typedef struct _of1275_package_to_path_service { 185 const char *service; 186 int n_args; 187 int n_returns; 188 /*in */ 189 int phandle; 190 void *buf; 191 int buflen; 192 /*out */ 193 int length; 194 } of1275_package_to_path_service; 195 196 int of1275_package_to_path(int phandle, void *buf, int buflen, 197 int *length); 198 199 200 typedef struct _of1275_call_method_service { 201 const char *service; 202 int n_args; 203 int n_returns; 204 /*in */ 205 const char *method; 206 int ihandle; 207 /*... */ 208 int args[0]; 209 } of1275_call_method_service; 210 211 int of1275_call_method(const char *method, int ihandle, ...); 212 213 214 /* 6.3.2.3 Device I/O */ 215 216 217 typedef struct _of1275_open_service { 218 const char *service; 219 int n_args; 220 int n_returns; 221 /*in */ 222 const char *device_specifier; 223 /*out */ 224 int ihandle; 225 } of1275_open_service; 226 227 int of1275_open(const char *device_specifier, int *ihandle); 228 229 230 typedef struct _of1275_close_service { 231 const char *service; 232 int n_args; 233 int n_returns; 234 /*in */ 235 int ihandle; 236 /*out */ 237 } of1275_close_service; 238 239 int of1275_close(int ihandle); 240 241 242 typedef struct _of1275_read_service { 243 const char *service; 244 int n_args; 245 int n_returns; 246 /*in */ 247 int ihandle; 248 void *addr; 249 int len; 250 /*out */ 251 int actual; 252 } of1275_read_service; 253 254 int of1275_read(int ihandle, void *addr, int len, int *actual); 255 256 257 typedef struct _of1275_write_service { 258 const char *service; 259 int n_args; 260 int n_returns; 261 /*in */ 262 int ihandle; 263 void *addr; 264 int len; 265 /*out */ 266 int actual; 267 } of1275_write_service; 268 269 int of1275_write(int ihandle, void *addr, int len, int *actual); 270 271 272 typedef struct _of1275_seek_service { 273 const char *service; 274 int n_args; 275 int n_returns; 276 /*in */ 277 int ihandle; 278 int pos_hi; 279 int pos_lo; 280 /*out */ 281 int status; 282 } of1275_seek_service; 283 284 int of1275_seek(int ihandle, int pos_hi, int pos_lo, int *status); 285 286 287 /* 6.3.2.4 Memory */ 288 289 290 typedef struct _of1275_claim_service { 291 const char *service; 292 int n_args; 293 int n_returns; 294 /*in */ 295 void *virt; 296 int size; 297 int align; 298 /*out */ 299 void *baseaddr; 300 } of1275_claim_service; 301 302 int of1275_claim(void *virt, int size, int align, void **baseaddr); 303 304 305 typedef struct _of1275_release_service { 306 const char *service; 307 int n_args; 308 int n_returns; 309 /*in */ 310 void *virt; 311 int size; 312 int align; 313 /*out */ 314 } of1275_release_service; 315 316 int of1275_release(void *virt, int size); 317 318 319 /* 6.3.2.5 Control transfer */ 320 321 322 typedef struct _of1275_boot_service { 323 const char *service; 324 int n_args; 325 int n_returns; 326 /*in */ 327 const char *bootspec; 328 /*out */ 329 } of1275_boot_service; 330 331 int of1275_boot(const char *bootspec); 332 333 334 typedef struct _of1275_enter_service { 335 const char *service; 336 int n_args; 337 int n_returns; 338 /*in */ 339 /*out */ 340 } of1275_enter_service; 341 342 int of1275_enter(void); 343 344 typedef struct _of1275_exit_service { 345 const char *service; 346 int n_args; 347 int n_returns; 348 /*in */ 349 int status; 350 /*out */ 351 } of1275_exit_service; 352 353 int of1275_exit(int status); 354 355 356 typedef struct _of1275_chain_service { 357 const char *service; 358 int n_args; 359 int n_returns; 360 /*in */ 361 void *virt; 362 int size; 363 void *entry; 364 void *args; 365 int len; 366 /*out */ 367 } of1275_chain_service; 368 369 int of1275_chain(void *virt, int size, void *entry, void *args, int len); 370 371 372 /* 6.3.2.6 User interface */ 373 374 375 typedef struct _of1275_interpret_service { 376 const char *service; 377 int n_args; 378 int n_returns; 379 /*in */ 380 const char *cmd; 381 int args[0]; 382 /*... */ 383 /*out */ 384 /*... */ 385 } of1275_interpret_service; 386 387 int of1275_interpret(const char *arg, ...); 388 389 390 typedef struct _of1275_set_callback_service { 391 const char *service; 392 int n_args; 393 int n_returns; 394 /*in */ 395 void *newfunc; 396 /*out */ 397 void *oldfunc; 398 } of1275_set_callback_service; 399 400 int of1275_set_callback(void *newfunc, void **oldfunc); 401 402 403 typedef struct _of1275_set_symbol_lookup_service { 404 const char *service; 405 int n_args; 406 int n_returns; 407 /*in */ 408 void *sym_to_value; 409 void *value_to_sym; 410 /*out */ 411 } of1275_set_symbol_lookup_service; 412 413 int of1275_set_symbol_lookup(void *sym_to_value, void *value_to_sym); 414 415 416 /* 6.3.2.7 Time */ 417 418 419 typedef struct _of1275_milliseconds_service { 420 const char *service; 421 int n_args; 422 int n_returns; 423 /*in */ 424 /*out */ 425 int ms; 426 } of1275_milliseconds_service; 427 428 int of1275_milliseconds(int *ms); 429 430 431 /* Common and useful utilities */ 432 433 434 int of_find_integer_property(const char *path, const char *property); 435 436 void of_find_string_property(const char *path, const char *property, 437 char *string, int sizeof_string); 438