diff options
| author | Wolfram Sang <wsa@the-dreams.de> | 2018-10-12 00:07:30 +0300 | 
|---|---|---|
| committer | Wolfram Sang <wsa@the-dreams.de> | 2018-10-12 00:07:30 +0300 | 
| commit | 90fb814b6c025da45f71db1703cffe3fe87f575c (patch) | |
| tree | 5fd739d407654df6f9d6e82900a45e027dd8b9f0 /drivers/gpu/drm/drm_client.c | |
| parent | b30f2f65568f840e5ca522d98ba2ad73b8f59cde (diff) | |
| parent | 0238df646e6224016a45505d2c111a24669ebe21 (diff) | |
| download | linux-90fb814b6c025da45f71db1703cffe3fe87f575c.tar.xz | |
Merge tag 'v4.19-rc7' into i2c/for-4.20
This is the 4.19-rc7 release
Diffstat (limited to 'drivers/gpu/drm/drm_client.c')
| -rw-r--r-- | drivers/gpu/drm/drm_client.c | 35 | 
1 files changed, 26 insertions, 9 deletions
diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c index baff50a4c234..df31c3815092 100644 --- a/drivers/gpu/drm/drm_client.c +++ b/drivers/gpu/drm/drm_client.c @@ -63,20 +63,21 @@ static void drm_client_close(struct drm_client_dev *client)  EXPORT_SYMBOL(drm_client_close);  /** - * drm_client_new - Create a DRM client + * drm_client_init - Initialise a DRM client   * @dev: DRM device   * @client: DRM client   * @name: Client name   * @funcs: DRM client functions (optional)   * + * This initialises the client and opens a &drm_file. Use drm_client_add() to complete the process.   * The caller needs to hold a reference on @dev before calling this function.   * The client is freed when the &drm_device is unregistered. See drm_client_release().   *   * Returns:   * Zero on success or negative error code on failure.   */ -int drm_client_new(struct drm_device *dev, struct drm_client_dev *client, -		   const char *name, const struct drm_client_funcs *funcs) +int drm_client_init(struct drm_device *dev, struct drm_client_dev *client, +		    const char *name, const struct drm_client_funcs *funcs)  {  	int ret; @@ -95,10 +96,6 @@ int drm_client_new(struct drm_device *dev, struct drm_client_dev *client,  	if (ret)  		goto err_put_module; -	mutex_lock(&dev->clientlist_mutex); -	list_add(&client->list, &dev->clientlist); -	mutex_unlock(&dev->clientlist_mutex); -  	drm_dev_get(dev);  	return 0; @@ -109,13 +106,33 @@ err_put_module:  	return ret;  } -EXPORT_SYMBOL(drm_client_new); +EXPORT_SYMBOL(drm_client_init); + +/** + * drm_client_add - Add client to the device list + * @client: DRM client + * + * Add the client to the &drm_device client list to activate its callbacks. + * @client must be initialized by a call to drm_client_init(). After + * drm_client_add() it is no longer permissible to call drm_client_release() + * directly (outside the unregister callback), instead cleanup will happen + * automatically on driver unload. + */ +void drm_client_add(struct drm_client_dev *client) +{ +	struct drm_device *dev = client->dev; + +	mutex_lock(&dev->clientlist_mutex); +	list_add(&client->list, &dev->clientlist); +	mutex_unlock(&dev->clientlist_mutex); +} +EXPORT_SYMBOL(drm_client_add);  /**   * drm_client_release - Release DRM client resources   * @client: DRM client   * - * Releases resources by closing the &drm_file that was opened by drm_client_new(). + * Releases resources by closing the &drm_file that was opened by drm_client_init().   * It is called automatically if the &drm_client_funcs.unregister callback is _not_ set.   *   * This function should only be called from the unregister callback. An exception  | 
