• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/staging/tidspbridge/include/dspbridge/
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
41int mgr_wait_for_bridge_events(struct dsp_notification
42				      **anotifications,
43				      u32 count, u32 *pu_index,
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:
52 *      mgr_obj:        Location to store created MGR Object handle.
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 )
60 *      mgr_obj != NULL.
61 *  Ensures:
62 *      0:        *mgr_obj is a valid MGR interface to the device.
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 */
69extern int mgr_create(struct mgr_object **mgr_obj,
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 */
90extern 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 */
121extern int mgr_enum_node_info(u32 node_id,
122				     struct dsp_ndbprops *pndb_props,
123				     u32 undb_props_size,
124				     u32 *pu_num_nodes);
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 */
152extern int mgr_enum_processor_info(u32 processor_id,
153					  struct dsp_processorinfo
154					  *processor_info,
155					  u32 processor_info_size,
156					  u8 *pu_num_procs);
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 */
169extern void mgr_exit(void);
170
171/*
172 *  ======== mgr_get_dcd_handle ========
173 *  Purpose:
174 *      Retrieves the MGR handle. Accessor Function
175 *  Parameters:
176 *      mgr_handle:     Handle to the Manager Object
177 *      dcd_handle:     Ptr to receive the DCD Handle.
178 *  Returns:
179 *      0:        Sucess
180 *      -EPERM:      Failure to get the Handle
181 *  Requires:
182 *      MGR is initialized.
183 *      dcd_handle != NULL
184 *  Ensures:
185 *      0 and *dcd_handle != NULL ||
186 *      -EPERM and *dcd_handle == NULL
187 */
188extern int mgr_get_dcd_handle(struct mgr_object
189				     *mgr_handle, u32 *dcd_handle);
190
191/*
192 *  ======== mgr_init ========
193 *  Purpose:
194 *      Initialize MGR's private state, keeping a reference count on each
195 *      call. Intializes the DCD.
196 *  Parameters:
197 *  Returns:
198 *      TRUE if initialized; FALSE if error occured.
199 *  Requires:
200 *  Ensures:
201 *      TRUE: A requirement for the other public MGR functions.
202 */
203extern bool mgr_init(void);
204
205#endif /* MGR_ */
206