mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 01:30:55 +07:00
drm/managed: Cleanup of unused functions and polishing docs
Following functions are only used internally, not by drivers: - devm_drm_dev_init Also, now that we have a very slick and polished way to allocate a drm_device with devm_drm_dev_alloc, update all the docs to reflect the new reality. Mostly this consists of deleting old and misleading hints. Two main ones: - it is no longer required that the drm_device base class is first in the structure. devm_drm_dev_alloc can cope with it being anywhere - obviously embedded now strongly recommends using devm_drm_dev_alloc v2: Fix typos (Noralf) v3: Split out the removal of drm_dev_init, that's blocked on some discussions on how to convert vgem/vkms/i915-selftests. Adjust commit message to reflect that. Cc: Noralf Trønnes <noralf@tronnes.org> Acked-by: Noralf Trønnes <noralf@tronnes.org> (v2) Acked-by: Sam Ravnborg <sam@ravnborg.org> Cc: Luben Tuikov <luben.tuikov@amd.com> Cc: amd-gfx@lists.freedesktop.org Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200902072627.3617301-1-daniel.vetter@ffwll.ch
This commit is contained in:
parent
fe662d846c
commit
4c8e84b887
@ -263,7 +263,7 @@ DMA
|
|||||||
dmam_pool_destroy()
|
dmam_pool_destroy()
|
||||||
|
|
||||||
DRM
|
DRM
|
||||||
devm_drm_dev_init()
|
devm_drm_dev_alloc()
|
||||||
|
|
||||||
GPIO
|
GPIO
|
||||||
devm_gpiod_get()
|
devm_gpiod_get()
|
||||||
|
@ -240,13 +240,13 @@ void drm_minor_release(struct drm_minor *minor)
|
|||||||
* DOC: driver instance overview
|
* DOC: driver instance overview
|
||||||
*
|
*
|
||||||
* A device instance for a drm driver is represented by &struct drm_device. This
|
* A device instance for a drm driver is represented by &struct drm_device. This
|
||||||
* is initialized with drm_dev_init(), usually from bus-specific ->probe()
|
* is allocated and initialized with devm_drm_dev_alloc(), usually from
|
||||||
* callbacks implemented by the driver. The driver then needs to initialize all
|
* bus-specific ->probe() callbacks implemented by the driver. The driver then
|
||||||
* the various subsystems for the drm device like memory management, vblank
|
* needs to initialize all the various subsystems for the drm device like memory
|
||||||
* handling, modesetting support and intial output configuration plus obviously
|
* management, vblank handling, modesetting support and initial output
|
||||||
* initialize all the corresponding hardware bits. Finally when everything is up
|
* configuration plus obviously initialize all the corresponding hardware bits.
|
||||||
* and running and ready for userspace the device instance can be published
|
* Finally when everything is up and running and ready for userspace the device
|
||||||
* using drm_dev_register().
|
* instance can be published using drm_dev_register().
|
||||||
*
|
*
|
||||||
* There is also deprecated support for initalizing device instances using
|
* There is also deprecated support for initalizing device instances using
|
||||||
* bus-specific helpers and the &drm_driver.load callback. But due to
|
* bus-specific helpers and the &drm_driver.load callback. But due to
|
||||||
@ -274,7 +274,7 @@ void drm_minor_release(struct drm_minor *minor)
|
|||||||
*
|
*
|
||||||
* The following example shows a typical structure of a DRM display driver.
|
* The following example shows a typical structure of a DRM display driver.
|
||||||
* The example focus on the probe() function and the other functions that is
|
* The example focus on the probe() function and the other functions that is
|
||||||
* almost always present and serves as a demonstration of devm_drm_dev_init().
|
* almost always present and serves as a demonstration of devm_drm_dev_alloc().
|
||||||
*
|
*
|
||||||
* .. code-block:: c
|
* .. code-block:: c
|
||||||
*
|
*
|
||||||
@ -294,22 +294,12 @@ void drm_minor_release(struct drm_minor *minor)
|
|||||||
* struct drm_device *drm;
|
* struct drm_device *drm;
|
||||||
* int ret;
|
* int ret;
|
||||||
*
|
*
|
||||||
* // devm_kzalloc() can't be used here because the drm_device '
|
* priv = devm_drm_dev_alloc(&pdev->dev, &driver_drm_driver,
|
||||||
* // lifetime can exceed the device lifetime if driver unbind
|
* struct driver_device, drm);
|
||||||
* // happens when userspace still has open file descriptors.
|
* if (IS_ERR(priv))
|
||||||
* priv = kzalloc(sizeof(*priv), GFP_KERNEL);
|
* return PTR_ERR(priv);
|
||||||
* if (!priv)
|
|
||||||
* return -ENOMEM;
|
|
||||||
*
|
|
||||||
* drm = &priv->drm;
|
* drm = &priv->drm;
|
||||||
*
|
*
|
||||||
* ret = devm_drm_dev_init(&pdev->dev, drm, &driver_drm_driver);
|
|
||||||
* if (ret) {
|
|
||||||
* kfree(priv);
|
|
||||||
* return ret;
|
|
||||||
* }
|
|
||||||
* drmm_add_final_kfree(drm, priv);
|
|
||||||
*
|
|
||||||
* ret = drmm_mode_config_init(drm);
|
* ret = drmm_mode_config_init(drm);
|
||||||
* if (ret)
|
* if (ret)
|
||||||
* return ret;
|
* return ret;
|
||||||
@ -550,9 +540,9 @@ static void drm_fs_inode_free(struct inode *inode)
|
|||||||
* following guidelines apply:
|
* following guidelines apply:
|
||||||
*
|
*
|
||||||
* - The entire device initialization procedure should be run from the
|
* - The entire device initialization procedure should be run from the
|
||||||
* &component_master_ops.master_bind callback, starting with drm_dev_init(),
|
* &component_master_ops.master_bind callback, starting with
|
||||||
* then binding all components with component_bind_all() and finishing with
|
* devm_drm_dev_alloc(), then binding all components with
|
||||||
* drm_dev_register().
|
* component_bind_all() and finishing with drm_dev_register().
|
||||||
*
|
*
|
||||||
* - The opaque pointer passed to all components through component_bind_all()
|
* - The opaque pointer passed to all components through component_bind_all()
|
||||||
* should point at &struct drm_device of the device instance, not some driver
|
* should point at &struct drm_device of the device instance, not some driver
|
||||||
@ -706,24 +696,9 @@ static void devm_drm_dev_init_release(void *data)
|
|||||||
drm_dev_put(data);
|
drm_dev_put(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
static int devm_drm_dev_init(struct device *parent,
|
||||||
* devm_drm_dev_init - Resource managed drm_dev_init()
|
struct drm_device *dev,
|
||||||
* @parent: Parent device object
|
struct drm_driver *driver)
|
||||||
* @dev: DRM device
|
|
||||||
* @driver: DRM driver
|
|
||||||
*
|
|
||||||
* Managed drm_dev_init(). The DRM device initialized with this function is
|
|
||||||
* automatically put on driver detach using drm_dev_put().
|
|
||||||
*
|
|
||||||
* Note that drivers must call drmm_add_final_kfree() after this function has
|
|
||||||
* completed successfully.
|
|
||||||
*
|
|
||||||
* RETURNS:
|
|
||||||
* 0 on success, or error code on failure.
|
|
||||||
*/
|
|
||||||
int devm_drm_dev_init(struct device *parent,
|
|
||||||
struct drm_device *dev,
|
|
||||||
struct drm_driver *driver)
|
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -737,7 +712,6 @@ int devm_drm_dev_init(struct device *parent,
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(devm_drm_dev_init);
|
|
||||||
|
|
||||||
void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
|
void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
|
||||||
size_t size, size_t offset)
|
size_t size, size_t offset)
|
||||||
@ -767,19 +741,9 @@ EXPORT_SYMBOL(__devm_drm_dev_alloc);
|
|||||||
* @driver: DRM driver to allocate device for
|
* @driver: DRM driver to allocate device for
|
||||||
* @parent: Parent device object
|
* @parent: Parent device object
|
||||||
*
|
*
|
||||||
* Allocate and initialize a new DRM device. No device registration is done.
|
* This is the deprecated version of devm_drm_dev_alloc(), which does not support
|
||||||
* Call drm_dev_register() to advertice the device to user space and register it
|
* subclassing through embedding the struct &drm_device in a driver private
|
||||||
* with other core subsystems. This should be done last in the device
|
* structure, and which does not support automatic cleanup through devres.
|
||||||
* initialization sequence to make sure userspace can't access an inconsistent
|
|
||||||
* state.
|
|
||||||
*
|
|
||||||
* The initial ref-count of the object is 1. Use drm_dev_get() and
|
|
||||||
* drm_dev_put() to take and drop further ref-counts.
|
|
||||||
*
|
|
||||||
* Note that for purely virtual devices @parent can be NULL.
|
|
||||||
*
|
|
||||||
* Drivers that wish to subclass or embed &struct drm_device into their
|
|
||||||
* own struct should look at using drm_dev_init() instead.
|
|
||||||
*
|
*
|
||||||
* RETURNS:
|
* RETURNS:
|
||||||
* Pointer to new DRM device, or ERR_PTR on failure.
|
* Pointer to new DRM device, or ERR_PTR on failure.
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
* be done directly with drmm_kmalloc() and the related functions. Everything
|
* be done directly with drmm_kmalloc() and the related functions. Everything
|
||||||
* will be released on the final drm_dev_put() in reverse order of how the
|
* will be released on the final drm_dev_put() in reverse order of how the
|
||||||
* release actions have been added and memory has been allocated since driver
|
* release actions have been added and memory has been allocated since driver
|
||||||
* loading started with drm_dev_init().
|
* loading started with devm_drm_dev_alloc().
|
||||||
*
|
*
|
||||||
* Note that release actions and managed memory can also be added and removed
|
* Note that release actions and managed memory can also be added and removed
|
||||||
* during the lifetime of the driver, all the functions are fully concurrent
|
* during the lifetime of the driver, all the functions are fully concurrent
|
||||||
|
@ -92,7 +92,7 @@ struct drm_device {
|
|||||||
* NULL.
|
* NULL.
|
||||||
*
|
*
|
||||||
* Instead of using this pointer it is recommended that drivers use
|
* Instead of using this pointer it is recommended that drivers use
|
||||||
* drm_dev_init() and embed struct &drm_device in their larger
|
* devm_drm_dev_alloc() and embed struct &drm_device in their larger
|
||||||
* per-device structure.
|
* per-device structure.
|
||||||
*/
|
*/
|
||||||
void *dev_private;
|
void *dev_private;
|
||||||
|
@ -163,13 +163,12 @@ struct drm_driver {
|
|||||||
/**
|
/**
|
||||||
* @load:
|
* @load:
|
||||||
*
|
*
|
||||||
* Backward-compatible driver callback to complete
|
* Backward-compatible driver callback to complete initialization steps
|
||||||
* initialization steps after the driver is registered. For
|
* after the driver is registered. For this reason, may suffer from
|
||||||
* this reason, may suffer from race conditions and its use is
|
* race conditions and its use is deprecated for new drivers. It is
|
||||||
* deprecated for new drivers. It is therefore only supported
|
* therefore only supported for existing drivers not yet converted to
|
||||||
* for existing drivers not yet converted to the new scheme.
|
* the new scheme. See devm_drm_dev_alloc() and drm_dev_register() for
|
||||||
* See drm_dev_init() and drm_dev_register() for proper and
|
* proper and race-free way to set up a &struct drm_device.
|
||||||
* race-free way to set up a &struct drm_device.
|
|
||||||
*
|
*
|
||||||
* This is deprecated, do not use!
|
* This is deprecated, do not use!
|
||||||
*
|
*
|
||||||
@ -592,9 +591,6 @@ struct drm_driver {
|
|||||||
int drm_dev_init(struct drm_device *dev,
|
int drm_dev_init(struct drm_device *dev,
|
||||||
struct drm_driver *driver,
|
struct drm_driver *driver,
|
||||||
struct device *parent);
|
struct device *parent);
|
||||||
int devm_drm_dev_init(struct device *parent,
|
|
||||||
struct drm_device *dev,
|
|
||||||
struct drm_driver *driver);
|
|
||||||
|
|
||||||
void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
|
void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver,
|
||||||
size_t size, size_t offset);
|
size_t size, size_t offset);
|
||||||
|
Loading…
Reference in New Issue
Block a user