+Cris +Stanley Loop in DSP guys in case they would have something to add. > -----Original Message----- > From: Felipe Contreras [mailto:felipe.contreras@xxxxxxxxx] > Sent: Sunday, May 16, 2010 10:46 AM > To: linux-omap > Cc: Ramirez Luna, Omar; Guzman Lugo, Fernando; Felipe Contreras > Subject: [PATCH 11/14] dspbridge: access deh directly > > Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx> > --- > arch/arm/plat-omap/include/dspbridge/dspdefs.h | 56 ------------------- > ----- > drivers/dsp/bridge/core/tiomap3430.c | 5 -- > drivers/dsp/bridge/pmgr/dev.c | 15 +----- > drivers/dsp/bridge/rmgr/node.c | 5 +- > drivers/dsp/bridge/rmgr/proc.c | 18 +++---- > 5 files changed, 14 insertions(+), 85 deletions(-) > > diff --git a/arch/arm/plat-omap/include/dspbridge/dspdefs.h > b/arch/arm/plat-omap/include/dspbridge/dspdefs.h > index a5d410f..268c217 100644 > --- a/arch/arm/plat-omap/include/dspbridge/dspdefs.h > +++ b/arch/arm/plat-omap/include/dspbridge/dspdefs.h > @@ -731,57 +731,6 @@ typedef dsp_status(*fxn_dev_ctrl) (struct > bridge_dev_context *hDevContext, > typedef dsp_status(*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: > - * DSP_SOK: Success. > - * -ENOMEM: Memory allocation failure. > - * -EPERM: Creation failed. > - * Requires: > - * hdev_obj != NULL; > - * phDehMgr != NULL; > - * Ensures: > - */ > -typedef dsp_status(*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: > - * DSP_SOK: Success. > - * -EPERM: Destroy failed. > - * Requires: > - * hdeh_mgr != NULL; > - * Ensures: > - */ > -typedef dsp_status(*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: > - * DSP_SOK: Success. > - * -EPERM: Destroy failed. > - * Requires: > - * hdeh_mgr != NULL; > - * Ensures: > - */ > -typedef dsp_status(*fxn_deh_registernotify) > - (struct deh_mgr *hdeh_mgr, > - u32 event_mask, u32 notify_type, struct dsp_notification > *hnotification); > - > -/* > * ======== bridge_io_create ======== > * Purpose: > * Create an object that manages I/O between CHNL and msg_ctrl. > @@ -1066,11 +1015,6 @@ struct bridge_drv_interface { > 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 */ > diff --git a/drivers/dsp/bridge/core/tiomap3430.c > b/drivers/dsp/bridge/core/tiomap3430.c > index 99bf966..f6b421e 100644 > --- a/drivers/dsp/bridge/core/tiomap3430.c > +++ b/drivers/dsp/bridge/core/tiomap3430.c > @@ -192,11 +192,6 @@ static struct bridge_drv_interface drv_interface_fxns > = { > 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, > diff --git a/drivers/dsp/bridge/pmgr/dev.c b/drivers/dsp/bridge/pmgr/dev.c > index b1c8d8b..3f7eb47 100644 > --- a/drivers/dsp/bridge/pmgr/dev.c > +++ b/drivers/dsp/bridge/pmgr/dev.c > @@ -49,6 +49,7 @@ > #include <dspbridge/io.h> > #include <dspbridge/msg.h> > #include <dspbridge/cmm.h> > +#include <dspbridge/dspdeh.h> > > /* ----------------------------------- This */ > #include <dspbridge/dev.h> > @@ -235,8 +236,7 @@ dsp_status dev_create_device(OUT struct dev_object > **phDevObject, > /* 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, > @@ -371,8 +371,7 @@ dsp_status dev_destroy_device(struct dev_object > *hdev_obj) > > 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) { > @@ -1117,10 +1116,6 @@ static void store_interface_fxns(struct > bridge_drv_interface *drv_fxns, > 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); > @@ -1157,10 +1152,6 @@ static void store_interface_fxns(struct > bridge_drv_interface *drv_fxns, > 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); > diff --git a/drivers/dsp/bridge/rmgr/node.c > b/drivers/dsp/bridge/rmgr/node.c > index cdd60e6..23aed68 100644 > --- a/drivers/dsp/bridge/rmgr/node.c > +++ b/drivers/dsp/bridge/rmgr/node.c > @@ -69,6 +69,8 @@ > #include <dspbridge/resourcecleanup.h> > #include <_tiomap.h> > > +#include <dspbridge/dspdeh.h> > + > #define HOSTPREFIX "/host" > #define PIPEPREFIX "/dbpipe" > > @@ -2470,8 +2472,7 @@ dsp_status node_terminate(struct node_object *hnode, > OUT dsp_status *pstatus) > 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: > diff --git a/drivers/dsp/bridge/rmgr/proc.c > b/drivers/dsp/bridge/rmgr/proc.c > index f86958a..1cccc89 100644 > --- a/drivers/dsp/bridge/rmgr/proc.c > +++ b/drivers/dsp/bridge/rmgr/proc.c > @@ -1192,22 +1192,20 @@ dsp_status proc_register_notify(void *hprocessor, > u32 event_mask, > 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); > > } > } > -- > 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html