/* OpenFirmware interface */ /* 6.3.2.1 Client interface */ typedef struct _of1275_test_service { const char *service; int n_args; int n_returns; /*in */ const char *name; /*out */ int missing; } of1275_test_service; int of1275_test(const char *name, int *missing); /* 6.3.2.2 Device tree */ typedef struct _of1275_peer_service { const char *service; int n_args; int n_returns; /*in */ int phandle; /*out */ int sibling_phandle; } of1275_peer_service; int of1275_peer(int phandle, int *sibling_phandle); typedef struct _of1275_child_service { const char *service; int n_args; int n_returns; /*in */ int phandle; /*out */ int child_phandle; } of1275_child_service; int of1275_child(int phandle, int *child_phandle); typedef struct _of1275_parent_service { const char *service; int n_args; int n_returns; /*in */ int phandle; /*out */ int parent_phandle; } of1275_parent_service; int of1275_child(int phandle, int *parent_phandle); typedef struct _of1275_instance_to_package_service { const char *service; int n_args; int n_returns; /*in */ int ihandle; /*out */ int phandle; } of1275_instance_to_package_service; int of1275_instance_to_package(int ihandle, int *phandle); typedef struct _of1275_getproplen_service { const char *service; int n_args; int n_returns; /*in */ int phandle; const char *name; /*out */ int proplen; } of1275_getproplen_service; int of1275_getproplen(int phandle, const char *name, int *proplen); typedef struct _of1275_getprop_service { const char *service; int n_args; int n_returns; /*in */ int phandle; const char *name; void *buf; int buflen; /*out */ int size; } of1275_getprop_service; int of1275_getprop(int phandle, const char *name, void *buf, int buflen, int *size); typedef struct _of1275_nextprop_service { const char *service; int n_args; int n_returns; /*in */ int phandle; const char *previous; void *buf; /*out */ int flag; } of1275_nextprop_service; int of1275_nextprop(int phandle, const char *previous, void *buf, int *flag); typedef struct _of1275_setprop_service { const char *service; int n_args; int n_returns; /*in */ int phandle; const char *name; void *buf; int len; /*out */ int size; } of1275_setprop_service; int of1275_setprop(int phandle, const char *name, void *buf, int len, int *size); typedef struct _of1275_canon_service { const char *service; int n_args; int n_returns; /*in */ const char *device_specifier; void *buf; int buflen; /*out */ int length; } of1275_canon_service; int of1275_canon(const char *device_specifier, void *buf, int buflen, int *length); typedef struct _of1275_finddevice_service { const char *service; int n_args; int n_returns; /*in */ const char *device_specifier; /*out */ int phandle; } of1275_finddevice_service; int of1275_finddevice(const char *device_specifier, int *phandle); typedef struct _of1275_instance_to_path_service { const char *service; int n_args; int n_returns; /*in */ int ihandle; void *buf; int buflen; /*out */ int length; } of1275_instance_to_path_service; int of1275_instance_to_path(int ihandle, void *buf, int buflen, int *length); typedef struct _of1275_package_to_path_service { const char *service; int n_args; int n_returns; /*in */ int phandle; void *buf; int buflen; /*out */ int length; } of1275_package_to_path_service; int of1275_package_to_path(int phandle, void *buf, int buflen, int *length); typedef struct _of1275_call_method_service { const char *service; int n_args; int n_returns; /*in */ const char *method; int ihandle; /*... */ int args[0]; } of1275_call_method_service; int of1275_call_method(const char *method, int ihandle, ...); /* 6.3.2.3 Device I/O */ typedef struct _of1275_open_service { const char *service; int n_args; int n_returns; /*in */ const char *device_specifier; /*out */ int ihandle; } of1275_open_service; int of1275_open(const char *device_specifier, int *ihandle); typedef struct _of1275_close_service { const char *service; int n_args; int n_returns; /*in */ int ihandle; /*out */ } of1275_close_service; int of1275_close(int ihandle); typedef struct _of1275_read_service { const char *service; int n_args; int n_returns; /*in */ int ihandle; void *addr; int len; /*out */ int actual; } of1275_read_service; int of1275_read(int ihandle, void *addr, int len, int *actual); typedef struct _of1275_write_service { const char *service; int n_args; int n_returns; /*in */ int ihandle; void *addr; int len; /*out */ int actual; } of1275_write_service; int of1275_write(int ihandle, void *addr, int len, int *actual); typedef struct _of1275_seek_service { const char *service; int n_args; int n_returns; /*in */ int ihandle; int pos_hi; int pos_lo; /*out */ int status; } of1275_seek_service; int of1275_seek(int ihandle, int pos_hi, int pos_lo, int *status); /* 6.3.2.4 Memory */ typedef struct _of1275_claim_service { const char *service; int n_args; int n_returns; /*in */ void *virt; int size; int align; /*out */ void *baseaddr; } of1275_claim_service; int of1275_claim(void *virt, int size, int align, void **baseaddr); typedef struct _of1275_release_service { const char *service; int n_args; int n_returns; /*in */ void *virt; int size; int align; /*out */ } of1275_release_service; int of1275_release(void *virt, int size); /* 6.3.2.5 Control transfer */ typedef struct _of1275_boot_service { const char *service; int n_args; int n_returns; /*in */ const char *bootspec; /*out */ } of1275_boot_service; int of1275_boot(const char *bootspec); typedef struct _of1275_enter_service { const char *service; int n_args; int n_returns; /*in */ /*out */ } of1275_enter_service; int of1275_enter(void); typedef struct _of1275_exit_service { const char *service; int n_args; int n_returns; /*in */ int status; /*out */ } of1275_exit_service; int of1275_exit(int status); typedef struct _of1275_chain_service { const char *service; int n_args; int n_returns; /*in */ void *virt; int size; void *entry; void *args; int len; /*out */ } of1275_chain_service; int of1275_chain(void *virt, int size, void *entry, void *args, int len); /* 6.3.2.6 User interface */ typedef struct _of1275_interpret_service { const char *service; int n_args; int n_returns; /*in */ const char *cmd; int args[0]; /*... */ /*out */ /*... */ } of1275_interpret_service; int of1275_interpret(const char *arg, ...); typedef struct _of1275_set_callback_service { const char *service; int n_args; int n_returns; /*in */ void *newfunc; /*out */ void *oldfunc; } of1275_set_callback_service; int of1275_set_callback(void *newfunc, void **oldfunc); typedef struct _of1275_set_symbol_lookup_service { const char *service; int n_args; int n_returns; /*in */ void *sym_to_value; void *value_to_sym; /*out */ } of1275_set_symbol_lookup_service; int of1275_set_symbol_lookup(void *sym_to_value, void *value_to_sym); /* 6.3.2.7 Time */ typedef struct _of1275_milliseconds_service { const char *service; int n_args; int n_returns; /*in */ /*out */ int ms; } of1275_milliseconds_service; int of1275_milliseconds(int *ms); /* Common and useful utilities */ int of_find_integer_property(const char *path, const char *property); void of_find_string_property(const char *path, const char *property, char *string, int sizeof_string);