| /* |
| * mgr.h |
| * |
| * DSP-BIOS Bridge driver support functions for TI OMAP processors. |
| * |
| * This is the DSP API RM module interface. |
| * |
| * Copyright (C) 2005-2006 Texas Instruments, Inc. |
| * |
| * This package is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| * |
| * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR |
| * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED |
| * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
| */ |
| |
| #ifndef MGR_ |
| #define MGR_ |
| |
| #include <dspbridge/mgrpriv.h> |
| |
| #define MAX_EVENTS 32 |
| |
| /* |
| * ======== mgr_wait_for_bridge_events ======== |
| * Purpose: |
| * Block on any Bridge event(s) |
| * Parameters: |
| * anotifications : array of pointers to notification objects. |
| * count : number of elements in above array |
| * pu_index : index of signaled event object |
| * utimeout : timeout interval in milliseocnds |
| * Returns: |
| * 0 : Success. |
| * -ETIME : Wait timed out. *pu_index is undetermined. |
| * Details: |
| */ |
| |
| int mgr_wait_for_bridge_events(struct dsp_notification |
| **anotifications, |
| u32 count, u32 *pu_index, |
| u32 utimeout); |
| |
| /* |
| * ======== mgr_create ======== |
| * Purpose: |
| * Creates the Manager Object. This is done during the driver loading. |
| * There is only one Manager Object in the DSP/BIOS Bridge. |
| * Parameters: |
| * mgr_obj: Location to store created MGR Object handle. |
| * dev_node_obj: Device object as known to the system. |
| * Returns: |
| * 0: Success |
| * -ENOMEM: Failed to Create the Object |
| * -EPERM: General Failure |
| * Requires: |
| * MGR Initialized (refs > 0 ) |
| * mgr_obj != NULL. |
| * Ensures: |
| * 0: *mgr_obj is a valid MGR interface to the device. |
| * MGR Object stores the DCD Manager Handle. |
| * MGR Object stored in the Regsitry. |
| * !0: MGR Object not created |
| * Details: |
| * DCD Dll is loaded and MGR Object stores the handle of the DLL. |
| */ |
| extern int mgr_create(struct mgr_object **mgr_obj, |
| struct cfg_devnode *dev_node_obj); |
| |
| /* |
| * ======== mgr_destroy ======== |
| * Purpose: |
| * Destroys the MGR object. Called upon driver unloading. |
| * Parameters: |
| * hmgr_obj: Handle to Manager object . |
| * Returns: |
| * 0: Success. |
| * DCD Manager freed; MGR Object destroyed; |
| * MGR Object deleted from the Registry. |
| * -EPERM: Failed to destroy MGR Object |
| * Requires: |
| * MGR Initialized (refs > 0 ) |
| * hmgr_obj is a valid MGR handle . |
| * Ensures: |
| * 0: MGR Object destroyed and hmgr_obj is Invalid MGR |
| * Handle. |
| */ |
| extern int mgr_destroy(struct mgr_object *hmgr_obj); |
| |
| /* |
| * ======== mgr_enum_node_info ======== |
| * Purpose: |
| * Enumerate and get configuration information about nodes configured |
| * in the node database. |
| * Parameters: |
| * node_id: The node index (base 0). |
| * pndb_props: Ptr to the dsp_ndbprops structure for output. |
| * undb_props_size: Size of the dsp_ndbprops structure. |
| * pu_num_nodes: Location where the number of nodes configured |
| * in the database will be returned. |
| * Returns: |
| * 0: Success. |
| * -EINVAL: Parameter node_id is > than the number of nodes. |
| * configutred in the system |
| * -EIDRM: During Enumeration there has been a change in |
| * the number of nodes configured or in the |
| * the properties of the enumerated nodes. |
| * -EPERM: Failed to querry the Node Data Base |
| * Requires: |
| * pNDBPROPS is not null |
| * undb_props_size >= sizeof(dsp_ndbprops) |
| * pu_num_nodes is not null |
| * MGR Initialized (refs > 0 ) |
| * Ensures: |
| * SUCCESS on successful retreival of data and *pu_num_nodes > 0 OR |
| * DSP_FAILED && *pu_num_nodes == 0. |
| * Details: |
| */ |
| extern int mgr_enum_node_info(u32 node_id, |
| struct dsp_ndbprops *pndb_props, |
| u32 undb_props_size, |
| u32 *pu_num_nodes); |
| |
| /* |
| * ======== mgr_enum_processor_info ======== |
| * Purpose: |
| * Enumerate and get configuration information about available DSP |
| * processors |
| * Parameters: |
| * processor_id: The processor index (zero-based). |
| * processor_info: Ptr to the dsp_processorinfo structure . |
| * processor_info_size: Size of dsp_processorinfo structure. |
| * pu_num_procs: Location where the number of DSPs configured |
| * in the database will be returned |
| * Returns: |
| * 0: Success. |
| * -EINVAL: Parameter processor_id is > than the number of |
| * DSP Processors in the system. |
| * -EPERM: Failed to querry the Node Data Base |
| * Requires: |
| * processor_info is not null |
| * pu_num_procs is not null |
| * processor_info_size >= sizeof(dsp_processorinfo) |
| * MGR Initialized (refs > 0 ) |
| * Ensures: |
| * SUCCESS on successful retreival of data and *pu_num_procs > 0 OR |
| * DSP_FAILED && *pu_num_procs == 0. |
| * Details: |
| */ |
| extern int mgr_enum_processor_info(u32 processor_id, |
| struct dsp_processorinfo |
| *processor_info, |
| u32 processor_info_size, |
| u8 *pu_num_procs); |
| /* |
| * ======== mgr_exit ======== |
| * Purpose: |
| * Decrement reference count, and free resources when reference count is |
| * 0. |
| * Parameters: |
| * Returns: |
| * Requires: |
| * MGR is initialized. |
| * Ensures: |
| * When reference count == 0, MGR's private resources are freed. |
| */ |
| extern void mgr_exit(void); |
| |
| /* |
| * ======== mgr_get_dcd_handle ======== |
| * Purpose: |
| * Retrieves the MGR handle. Accessor Function |
| * Parameters: |
| * mgr_handle: Handle to the Manager Object |
| * dcd_handle: Ptr to receive the DCD Handle. |
| * Returns: |
| * 0: Success |
| * -EPERM: Failure to get the Handle |
| * Requires: |
| * MGR is initialized. |
| * dcd_handle != NULL |
| * Ensures: |
| * 0 and *dcd_handle != NULL || |
| * -EPERM and *dcd_handle == NULL |
| */ |
| extern int mgr_get_dcd_handle(struct mgr_object |
| *mgr_handle, u32 *dcd_handle); |
| |
| /* |
| * ======== mgr_init ======== |
| * Purpose: |
| * Initialize MGR's private state, keeping a reference count on each |
| * call. Initializes the DCD. |
| * Parameters: |
| * Returns: |
| * TRUE if initialized; FALSE if error occurred. |
| * Requires: |
| * Ensures: |
| * TRUE: A requirement for the other public MGR functions. |
| */ |
| extern bool mgr_init(void); |
| |
| #endif /* MGR_ */ |