]>
Commit | Line | Data |
---|---|---|
6280238c ORL |
1 | /* |
2 | * mgr.h | |
3 | * | |
4 | * DSP-BIOS Bridge driver support functions for TI OMAP processors. | |
5 | * | |
6 | * This is the DSP API RM module interface. | |
7 | * | |
8 | * Copyright (C) 2005-2006 Texas Instruments, Inc. | |
9 | * | |
10 | * This package is free software; you can redistribute it and/or modify | |
11 | * it under the terms of the GNU General Public License version 2 as | |
12 | * published by the Free Software Foundation. | |
13 | * | |
14 | * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR | |
15 | * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED | |
16 | * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. | |
17 | */ | |
18 | ||
19 | #ifndef MGR_ | |
20 | #define MGR_ | |
21 | ||
22 | #include <dspbridge/mgrpriv.h> | |
23 | ||
24 | #define MAX_EVENTS 32 | |
25 | ||
26 | /* | |
27 | * ======== mgr_wait_for_bridge_events ======== | |
28 | * Purpose: | |
29 | * Block on any Bridge event(s) | |
30 | * Parameters: | |
31 | * anotifications : array of pointers to notification objects. | |
32 | * count : number of elements in above array | |
33 | * pu_index : index of signaled event object | |
34 | * utimeout : timeout interval in milliseocnds | |
35 | * Returns: | |
36 | * 0 : Success. | |
37 | * -ETIME : Wait timed out. *pu_index is undetermined. | |
38 | * Details: | |
39 | */ | |
40 | ||
41 | int mgr_wait_for_bridge_events(struct dsp_notification | |
42 | **anotifications, | |
e6bf74f0 | 43 | u32 count, u32 *pu_index, |
6280238c ORL |
44 | u32 utimeout); |
45 | ||
46 | /* | |
47 | * ======== mgr_create ======== | |
48 | * Purpose: | |
49 | * Creates the Manager Object. This is done during the driver loading. | |
50 | * There is only one Manager Object in the DSP/BIOS Bridge. | |
51 | * Parameters: | |
e436d07d | 52 | * mgr_obj: Location to store created MGR Object handle. |
6280238c ORL |
53 | * dev_node_obj: Device object as known to the system. |
54 | * Returns: | |
55 | * 0: Success | |
56 | * -ENOMEM: Failed to Create the Object | |
57 | * -EPERM: General Failure | |
58 | * Requires: | |
59 | * MGR Initialized (refs > 0 ) | |
e436d07d | 60 | * mgr_obj != NULL. |
6280238c | 61 | * Ensures: |
e436d07d | 62 | * 0: *mgr_obj is a valid MGR interface to the device. |
6280238c ORL |
63 | * MGR Object stores the DCD Manager Handle. |
64 | * MGR Object stored in the Regsitry. | |
65 | * !0: MGR Object not created | |
66 | * Details: | |
67 | * DCD Dll is loaded and MGR Object stores the handle of the DLL. | |
68 | */ | |
e6bf74f0 | 69 | extern int mgr_create(struct mgr_object **mgr_obj, |
6280238c ORL |
70 | struct cfg_devnode *dev_node_obj); |
71 | ||
72 | /* | |
73 | * ======== mgr_destroy ======== | |
74 | * Purpose: | |
75 | * Destroys the MGR object. Called upon driver unloading. | |
76 | * Parameters: | |
77 | * hmgr_obj: Handle to Manager object . | |
78 | * Returns: | |
79 | * 0: Success. | |
80 | * DCD Manager freed; MGR Object destroyed; | |
81 | * MGR Object deleted from the Registry. | |
82 | * -EPERM: Failed to destroy MGR Object | |
83 | * Requires: | |
84 | * MGR Initialized (refs > 0 ) | |
85 | * hmgr_obj is a valid MGR handle . | |
86 | * Ensures: | |
87 | * 0: MGR Object destroyed and hmgr_obj is Invalid MGR | |
88 | * Handle. | |
89 | */ | |
90 | extern int mgr_destroy(struct mgr_object *hmgr_obj); | |
91 | ||
92 | /* | |
93 | * ======== mgr_enum_node_info ======== | |
94 | * Purpose: | |
95 | * Enumerate and get configuration information about nodes configured | |
96 | * in the node database. | |
97 | * Parameters: | |
98 | * node_id: The node index (base 0). | |
99 | * pndb_props: Ptr to the dsp_ndbprops structure for output. | |
100 | * undb_props_size: Size of the dsp_ndbprops structure. | |
101 | * pu_num_nodes: Location where the number of nodes configured | |
102 | * in the database will be returned. | |
103 | * Returns: | |
104 | * 0: Success. | |
105 | * -EINVAL: Parameter node_id is > than the number of nodes. | |
106 | * configutred in the system | |
107 | * -EIDRM: During Enumeration there has been a change in | |
108 | * the number of nodes configured or in the | |
109 | * the properties of the enumerated nodes. | |
110 | * -EPERM: Failed to querry the Node Data Base | |
111 | * Requires: | |
112 | * pNDBPROPS is not null | |
113 | * undb_props_size >= sizeof(dsp_ndbprops) | |
114 | * pu_num_nodes is not null | |
115 | * MGR Initialized (refs > 0 ) | |
116 | * Ensures: | |
117 | * SUCCESS on successful retreival of data and *pu_num_nodes > 0 OR | |
118 | * DSP_FAILED && *pu_num_nodes == 0. | |
119 | * Details: | |
120 | */ | |
121 | extern int mgr_enum_node_info(u32 node_id, | |
e6bf74f0 | 122 | struct dsp_ndbprops *pndb_props, |
6280238c | 123 | u32 undb_props_size, |
e6bf74f0 | 124 | u32 *pu_num_nodes); |
6280238c ORL |
125 | |
126 | /* | |
127 | * ======== mgr_enum_processor_info ======== | |
128 | * Purpose: | |
129 | * Enumerate and get configuration information about available DSP | |
130 | * processors | |
131 | * Parameters: | |
132 | * processor_id: The processor index (zero-based). | |
133 | * processor_info: Ptr to the dsp_processorinfo structure . | |
134 | * processor_info_size: Size of dsp_processorinfo structure. | |
135 | * pu_num_procs: Location where the number of DSPs configured | |
136 | * in the database will be returned | |
137 | * Returns: | |
138 | * 0: Success. | |
139 | * -EINVAL: Parameter processor_id is > than the number of | |
140 | * DSP Processors in the system. | |
141 | * -EPERM: Failed to querry the Node Data Base | |
142 | * Requires: | |
143 | * processor_info is not null | |
144 | * pu_num_procs is not null | |
145 | * processor_info_size >= sizeof(dsp_processorinfo) | |
146 | * MGR Initialized (refs > 0 ) | |
147 | * Ensures: | |
148 | * SUCCESS on successful retreival of data and *pu_num_procs > 0 OR | |
149 | * DSP_FAILED && *pu_num_procs == 0. | |
150 | * Details: | |
151 | */ | |
152 | extern int mgr_enum_processor_info(u32 processor_id, | |
e6bf74f0 | 153 | struct dsp_processorinfo |
6280238c ORL |
154 | *processor_info, |
155 | u32 processor_info_size, | |
e6bf74f0 | 156 | u8 *pu_num_procs); |
6280238c ORL |
157 | /* |
158 | * ======== mgr_exit ======== | |
159 | * Purpose: | |
160 | * Decrement reference count, and free resources when reference count is | |
161 | * 0. | |
162 | * Parameters: | |
163 | * Returns: | |
164 | * Requires: | |
165 | * MGR is initialized. | |
166 | * Ensures: | |
167 | * When reference count == 0, MGR's private resources are freed. | |
168 | */ | |
169 | extern void mgr_exit(void); | |
170 | ||
171 | /* | |
172 | * ======== mgr_get_dcd_handle ======== | |
173 | * Purpose: | |
174 | * Retrieves the MGR handle. Accessor Function | |
175 | * Parameters: | |
e6890692 | 176 | * mgr_handle: Handle to the Manager Object |
a5120278 | 177 | * dcd_handle: Ptr to receive the DCD Handle. |
6280238c | 178 | * Returns: |
25985edc | 179 | * 0: Success |
6280238c ORL |
180 | * -EPERM: Failure to get the Handle |
181 | * Requires: | |
182 | * MGR is initialized. | |
a5120278 | 183 | * dcd_handle != NULL |
6280238c | 184 | * Ensures: |
a5120278 RS |
185 | * 0 and *dcd_handle != NULL || |
186 | * -EPERM and *dcd_handle == NULL | |
6280238c | 187 | */ |
9d7d0a52 | 188 | extern int mgr_get_dcd_handle(struct mgr_object |
e6bf74f0 | 189 | *mgr_handle, u32 *dcd_handle); |
6280238c ORL |
190 | |
191 | /* | |
192 | * ======== mgr_init ======== | |
193 | * Purpose: | |
194 | * Initialize MGR's private state, keeping a reference count on each | |
9b0131cb | 195 | * call. Initializes the DCD. |
6280238c ORL |
196 | * Parameters: |
197 | * Returns: | |
25985edc | 198 | * TRUE if initialized; FALSE if error occurred. |
6280238c ORL |
199 | * Requires: |
200 | * Ensures: | |
201 | * TRUE: A requirement for the other public MGR functions. | |
202 | */ | |
203 | extern bool mgr_init(void); | |
204 | ||
205 | #endif /* MGR_ */ |