]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/staging/tidspbridge/rmgr/dspdrv.c
Merge branch 'master' into csb1725
[mv-sheeva.git] / drivers / staging / tidspbridge / rmgr / dspdrv.c
index 714f348f526aa34c602d62ac2938359919dd23ce..7a6fc737872c31c2cd261562196854b573c556e0 100644 (file)
@@ -26,9 +26,6 @@
 /*  ----------------------------------- Trace & Debug */
 #include <dspbridge/dbc.h>
 
-/*  ----------------------------------- OS Adaptation Layer */
-#include <dspbridge/cfg.h>
-
 /*  ----------------------------------- Platform Manager */
 #include <dspbridge/drv.h>
 #include <dspbridge/dev.h>
@@ -121,6 +118,7 @@ bool dsp_deinit(u32 device_context)
        bool ret = true;
        u32 device_node;
        struct mgr_object *mgr_obj = NULL;
+       struct drv_data *drv_datap = dev_get_drvdata(bridge);
 
        while ((device_node = drv_get_first_dev_extension()) != 0) {
                (void)dev_remove_device((struct cfg_devnode *)device_node);
@@ -131,10 +129,14 @@ bool dsp_deinit(u32 device_context)
 
        (void)drv_destroy((struct drv_object *)device_context);
 
-       /* Get the Manager Object from Registry
+       /* Get the Manager Object from driver data
         * MGR Destroy will unload the DCD dll */
-       if (!cfg_get_object((u32 *) &mgr_obj, REG_MGR_OBJECT))
+       if (drv_datap && drv_datap->mgr_object) {
+               mgr_obj = drv_datap->mgr_object;
                (void)mgr_destroy(mgr_obj);
+       } else {
+               pr_err("%s: Failed to retrieve the object handle\n", __func__);
+       }
 
        api_exit();