Subversion Repositories HelenOS-historic

Rev

Rev 186 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 186 Rev 191
Line 33... Line 33...
33
 
33
 
34
#define MAX_OFW_ARGS    10
34
#define MAX_OFW_ARGS    10
35
 
35
 
36
typedef __u32 ofw_arg_t;
36
typedef __u32 ofw_arg_t;
37
typedef __u32 ihandle;
37
typedef __u32 ihandle;
-
 
38
typedef __u32 phandle;
38
 
39
 
-
 
40
/** OpenFirmware command structure
-
 
41
 *
-
 
42
 */
-
 
43
typedef struct {
-
 
44
    const char *service;          /**< Command name */
-
 
45
    __u32 nargs;                  /**< Number of in arguments */
-
 
46
    __u32 nret;                   /**< Number of out arguments */
-
 
47
    ofw_arg_t args[MAX_OFW_ARGS]; /**< List of arguments */
39
struct ofw_args_t {
48
} ofw_args_t;
-
 
49
 
-
 
50
/** OpenFirmware device address range structure
-
 
51
 *
-
 
52
 */
-
 
53
typedef struct {
40
    const char *service;
54
    __u32 space;
41
    int nargs;
55
    __u32 address;
42
    int nret;
56
    __u32 size;
-
 
57
} address_range_t;
-
 
58
 
-
 
59
/** OpenFirmware device interrupt structure
-
 
60
 *
-
 
61
 */
-
 
62
typedef struct {
-
 
63
    __u32 line;  /**< Interrupt number */
-
 
64
    __u32 flags; /**< Interrupt flags/logic */
-
 
65
} interrupt_info_t;
-
 
66
 
-
 
67
/** OpenFirmware property structure
-
 
68
 *
-
 
69
 */
43
    ofw_arg_t args[MAX_OFW_ARGS];
70
typedef struct property_t {
-
 
71
    char *name;              /**< Property name */
-
 
72
    __u32 length;            /**< Value length */
-
 
73
    char *value;             /**< Property value */
-
 
74
    struct property_t *next; /**< Next property in list */
-
 
75
} property_t;
-
 
76
 
-
 
77
/** OpenFirmware device descritor
44
};
78
 *
-
 
79
 */
-
 
80
typedef struct device_node_t {
-
 
81
    char *name;                     /**< Device name */
-
 
82
    char *type;                     /**< Device type */
-
 
83
    phandle node;                   /**< Device handle */
-
 
84
   
-
 
85
    __u32 n_addrs;                  /**< Number of address ranges */
-
 
86
    address_range_t *addrs;         /**< Address ranges list */
-
 
87
   
-
 
88
    __u32 n_intrs;                  /**< Number of interrupts */
-
 
89
    interrupt_info_t *intrs;        /**< Interrupts list */
-
 
90
   
-
 
91
    char *full_name;                /**< Device full name */
-
 
92
   
-
 
93
    property_t *properties;         /**< Device properties */
-
 
94
   
-
 
95
    struct device_node_t *parent;   /**< Parent device */
-
 
96
    struct device_node_t *child;    /**< First child in tree */
-
 
97
    struct device_node_t *sibling;  /**< Next device on tree level */
-
 
98
    struct device_node_t *next;     /**< Next device of the same type */
-
 
99
    struct device_node_t *next_all; /**< Next device in list of all nodes */
-
 
100
} device_node_t;
45
 
101
 
46
typedef void (*ofw_entry)(struct ofw_args_t *);
102
typedef void (*ofw_entry)(ofw_args_t *);
47
 
103
 
48
extern ofw_entry ofw;
104
extern ofw_entry ofw;
49
 
105
 
50
extern void ofw_init(void);
106
extern void ofw_init(void);
51
extern void ofw_done(void);
107
extern void ofw_done(void);
52
extern int ofw_call(const char *service, const int nargs, const int nret, ...);
108
extern int ofw_call(const char *service, const int nargs, const int nret, ...);
53
extern void ofw_putchar(const char ch);
109
extern void ofw_putchar(const char ch);
-
 
110
extern phandle ofw_find_device(const char *name);
-
 
111
extern int ofw_get_property(const phandle device, const char *name, void *buf, const int buflen);
54
extern void putchar(const char ch);
112
extern void putchar(const char ch);
55
 
113
 
56
#endif
114
#endif