static int dev_unload(struct drm_device *dev) { struct omap_drm_private *priv = dev->dev_private; int i; DBG("unload: dev=%p", dev); drm_kms_helper_poll_fini(dev); if (priv->fbdev) omap_fbdev_free(dev); /* flush crtcs so the fbs get released */ for (i = 0; i < priv->num_crtcs; i++) omap_crtc_flush(priv->crtcs[i]); omap_modeset_free(dev); omap_gem_deinit(dev); destroy_workqueue(priv->wq); drm_vblank_cleanup(dev); omap_drm_irq_uninstall(dev); kfree(dev->dev_private); dev->dev_private = NULL; dev_set_drvdata(dev->dev, NULL); return 0; }
static int dev_unload(struct drm_device *dev) { DBG("unload: dev=%p", dev); drm_vblank_cleanup(dev); drm_kms_helper_poll_fini(dev); omap_fbdev_free(dev); omap_modeset_free(dev); kfree(dev->dev_private); dev->dev_private = NULL; return 0; }
static int dev_unload(struct drm_device *dev) { struct omap_drm_private *priv = dev->dev_private; DBG("unload: dev=%p", dev); drm_vblank_cleanup(dev); drm_kms_helper_poll_fini(dev); omap_fbdev_free(dev); omap_modeset_free(dev); omap_gem_deinit(dev); flush_workqueue(priv->wq); destroy_workqueue(priv->wq); kfree(dev->dev_private); dev->dev_private = NULL; return 0; }