drm: Document deprecated load/unload hook
authorGabriel Krisman Bertazi <krisman@collabora.co.uk>
Mon, 2 Jan 2017 14:20:08 +0000 (12:20 -0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 4 Jan 2017 08:55:57 +0000 (09:55 +0100)
v2:
 - Replace discouraged with deprecated
 - Link to new initialization/teardown functions

Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20170102142008.22174-3-krisman@collabora.co.uk
include/drm/drm_drv.h

index c4fc49583dc0e3e98fd7aa8ac467b26e8d06b8b6..9c2d9f0bb043797a8ce70e651fb92bd68dfb6cab 100644 (file)
@@ -64,12 +64,47 @@ struct drm_mode_create_dumb;
  * structure for GEM drivers.
  */
 struct drm_driver {
+
+       /**
+        * @load:
+        *
+        * Backward-compatible driver callback to complete
+        * initialization steps after the driver is registered.  For
+        * this reason, may suffer from race conditions and its use is
+        * deprecated for new drivers.  It is therefore only supported
+        * for existing drivers not yet converted to the new scheme.
+        * See drm_dev_init() and drm_dev_register() for proper and
+        * race-free way to set up a &struct drm_device.
+        *
+        * Returns:
+        *
+        * Zero on success, non-zero value on failure.
+        */
        int (*load) (struct drm_device *, unsigned long flags);
        int (*firstopen) (struct drm_device *);
        int (*open) (struct drm_device *, struct drm_file *);
        void (*preclose) (struct drm_device *, struct drm_file *file_priv);
        void (*postclose) (struct drm_device *, struct drm_file *);
        void (*lastclose) (struct drm_device *);
+
+       /**
+        * @unload:
+        *
+        * Reverse the effects of the driver load callback.  Ideally,
+        * the clean up performed by the driver should happen in the
+        * reverse order of the initialization.  Similarly to the load
+        * hook, this handler is deprecated and its usage should be
+        * dropped in favor of an open-coded teardown function at the
+        * driver layer.  See drm_dev_unregister() and drm_dev_unref()
+        * for the proper way to remove a &struct drm_device.
+        *
+        * The unload() hook is called right after unregistering
+        * the device.
+        *
+        * Returns:
+        *
+        * The return value is ignored.
+        */
        int (*unload) (struct drm_device *);
        int (*dma_ioctl) (struct drm_device *dev, void *data, struct drm_file *file_priv);
        int (*dma_quiescent) (struct drm_device *);