bridge_chnl_get_mgr_info,
bridge_chnl_idle,
bridge_chnl_register_notify,
- /* The following DEH functions are provided by tihelen_ue_deh.c */
- bridge_deh_create,
- bridge_deh_destroy,
- bridge_deh_notify,
- bridge_deh_register_notify,
/* The following IO functions are provided by chnl_io.lib: */
bridge_io_create,
bridge_io_destroy,
*/
typedef int(*fxn_dev_destroy) (struct bridge_dev_context *hDevContext);
-/*
- * ======== bridge_deh_create ========
- * Purpose:
- * Create an object that manages DSP exceptions from the GPP.
- * Parameters:
- * phDehMgr: Location to store DEH manager on output.
- * hdev_obj: Handle to DEV object.
- * Returns:
- * 0: Success.
- * -ENOMEM: Memory allocation failure.
- * -EPERM: Creation failed.
- * Requires:
- * hdev_obj != NULL;
- * phDehMgr != NULL;
- * Ensures:
- */
-typedef int(*fxn_deh_create) (OUT struct deh_mgr
- **phDehMgr, struct dev_object *hdev_obj);
-
-/*
- * ======== bridge_deh_destroy ========
- * Purpose:
- * Destroy the DEH object.
- * Parameters:
- * hdeh_mgr: Handle to DEH manager object.
- * Returns:
- * 0: Success.
- * -EPERM: Destroy failed.
- * Requires:
- * hdeh_mgr != NULL;
- * Ensures:
- */
-typedef int(*fxn_deh_destroy) (struct deh_mgr *hdeh_mgr);
-
-/*
- * ======== bridge_deh_register_notify ========
- * Purpose:
- * Register for DEH event notification.
- * Parameters:
- * hdeh_mgr: Handle to DEH manager object.
- * Returns:
- * 0: Success.
- * -EPERM: Destroy failed.
- * Requires:
- * hdeh_mgr != NULL;
- * Ensures:
- */
-typedef int(*fxn_deh_registernotify)
- (struct deh_mgr *hdeh_mgr,
- u32 event_mask, u32 notify_type, struct dsp_notification *hnotification);
-
/*
* ======== bridge_io_create ========
* Purpose:
fxn_chnl_idle pfn_chnl_idle; /* Idle the channel */
/* Register for notif. */
fxn_chnl_registernotify pfn_chnl_register_notify;
- fxn_deh_create pfn_deh_create; /* Create DEH manager */
- fxn_deh_destroy pfn_deh_destroy; /* Destroy DEH manager */
- fxn_deh_notify pfn_deh_notify; /* Notify of DSP error */
- /* register for deh notif. */
- fxn_deh_registernotify pfn_deh_register_notify;
fxn_io_create pfn_io_create; /* Create IO manager */
fxn_io_destroy pfn_io_destroy; /* Destroy IO manager */
fxn_io_onloaded pfn_io_on_loaded; /* Notify of program loaded */
#include <dspbridge/io.h>
#include <dspbridge/msg.h>
#include <dspbridge/cmm.h>
+#include <dspbridge/dspdeh.h>
/* ----------------------------------- This */
#include <dspbridge/dev.h>
/* Only create DEH manager if we have an IO manager */
if (DSP_SUCCEEDED(status)) {
/* Instantiate the DEH module */
- status = (*dev_obj->bridge_interface.pfn_deh_create)
- (&dev_obj->hdeh_mgr, dev_obj);
+ status = bridge_deh_create(&dev_obj->hdeh_mgr, dev_obj);
}
/* Create DMM mgr . */
status = dmm_create(&dev_obj->dmm_mgr,
if (dev_obj->hdeh_mgr) {
/* Uninitialize DEH module. */
- (*dev_obj->bridge_interface.pfn_deh_destroy)
- (dev_obj->hdeh_mgr);
+ bridge_deh_destroy(dev_obj->hdeh_mgr);
dev_obj->hdeh_mgr = NULL;
}
if (dev_obj->hcmm_mgr) {
STORE_FXN(fxn_chnl_getmgrinfo, pfn_chnl_get_mgr_info);
STORE_FXN(fxn_chnl_idle, pfn_chnl_idle);
STORE_FXN(fxn_chnl_registernotify, pfn_chnl_register_notify);
- STORE_FXN(fxn_deh_create, pfn_deh_create);
- STORE_FXN(fxn_deh_destroy, pfn_deh_destroy);
- STORE_FXN(fxn_deh_notify, pfn_deh_notify);
- STORE_FXN(fxn_deh_registernotify, pfn_deh_register_notify);
STORE_FXN(fxn_io_create, pfn_io_create);
STORE_FXN(fxn_io_destroy, pfn_io_destroy);
STORE_FXN(fxn_io_onloaded, pfn_io_on_loaded);
DBC_ENSURE(intf_fxns->pfn_chnl_get_mgr_info != NULL);
DBC_ENSURE(intf_fxns->pfn_chnl_idle != NULL);
DBC_ENSURE(intf_fxns->pfn_chnl_register_notify != NULL);
- DBC_ENSURE(intf_fxns->pfn_deh_create != NULL);
- DBC_ENSURE(intf_fxns->pfn_deh_destroy != NULL);
- DBC_ENSURE(intf_fxns->pfn_deh_notify != NULL);
- DBC_ENSURE(intf_fxns->pfn_deh_register_notify != NULL);
DBC_ENSURE(intf_fxns->pfn_io_create != NULL);
DBC_ENSURE(intf_fxns->pfn_io_destroy != NULL);
DBC_ENSURE(intf_fxns->pfn_io_on_loaded != NULL);
#include <dspbridge/resourcecleanup.h>
#include <_tiomap.h>
+#include <dspbridge/dspdeh.h>
+
#define HOSTPREFIX "/host"
#define PIPEPREFIX "/dbpipe"
if (!hdeh_mgr)
goto func_cont;
- (*intf_fxns->pfn_deh_notify)(hdeh_mgr, DSP_SYSERROR,
- DSP_EXCEPTIONABORT);
+ bridge_deh_notify(hdeh_mgr, DSP_SYSERROR, DSP_EXCEPTIONABORT);
}
}
func_cont:
status =
dev_get_deh_mgr(p_proc_object->hdev_obj,
&hdeh_mgr);
- DBC_ASSERT(p_proc_object->
- intf_fxns->pfn_deh_register_notify);
status =
- (*p_proc_object->
- intf_fxns->pfn_deh_register_notify)
- (hdeh_mgr, event_mask, notify_type,
- hnotification);
+ bridge_deh_register_notify(hdeh_mgr,
+ event_mask,
+ notify_type,
+ hnotification);
}
} else {
status = dev_get_deh_mgr(p_proc_object->hdev_obj,
&hdeh_mgr);
- DBC_ASSERT(p_proc_object->
- intf_fxns->pfn_deh_register_notify);
status =
- (*p_proc_object->intf_fxns->pfn_deh_register_notify)
- (hdeh_mgr, event_mask, notify_type, hnotification);
+ bridge_deh_register_notify(hdeh_mgr,
+ event_mask,
+ notify_type,
+ hnotification);
}
}