drm: Introduce drm_connector_register_all() helper
As a pair to already existing drm_connector_unregister_all() we're adding generic implementation of what is already done in some drivers. Once this helper is implemented we'll be ready to switch existing driver-specific implementations with the generic one. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: David Airlie <airlied@linux.ie> Cc: Boris Brezillon <boris.brezillon@free-electrons.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1461068693-11260-2-git-send-email-abrodkin@synopsys.com
This commit is contained in:
parent
644a80508f
commit
54d2c2da09
|
@ -1067,6 +1067,46 @@ void drm_connector_unregister(struct drm_connector *connector)
|
|||
}
|
||||
EXPORT_SYMBOL(drm_connector_unregister);
|
||||
|
||||
/**
|
||||
* drm_connector_register_all - register all connectors
|
||||
* @dev: drm device
|
||||
*
|
||||
* This function registers all connectors in sysfs and other places so that
|
||||
* userspace can start to access them. Drivers can call it after calling
|
||||
* drm_dev_register() to complete the device registration, if they don't call
|
||||
* drm_connector_register() on each connector individually.
|
||||
*
|
||||
* When a device is unplugged and should be removed from userspace access,
|
||||
* call drm_connector_unregister_all(), which is the inverse of this
|
||||
* function.
|
||||
*
|
||||
* Returns:
|
||||
* Zero on success, error code on failure.
|
||||
*/
|
||||
int drm_connector_register_all(struct drm_device *dev)
|
||||
{
|
||||
struct drm_connector *connector;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&dev->mode_config.mutex);
|
||||
|
||||
drm_for_each_connector(connector, dev) {
|
||||
ret = drm_connector_register(connector);
|
||||
if (ret)
|
||||
goto err;
|
||||
}
|
||||
|
||||
mutex_unlock(&dev->mode_config.mutex);
|
||||
|
||||
return 0;
|
||||
|
||||
err:
|
||||
mutex_unlock(&dev->mode_config.mutex);
|
||||
drm_connector_unregister_all(dev);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_connector_register_all);
|
||||
|
||||
/**
|
||||
* drm_connector_unregister_all - unregister connector userspace interfaces
|
||||
* @dev: drm device
|
||||
|
|
|
@ -715,7 +715,11 @@ EXPORT_SYMBOL(drm_dev_unref);
|
|||
*
|
||||
* Register the DRM device @dev with the system, advertise device to user-space
|
||||
* and start normal device operation. @dev must be allocated via drm_dev_alloc()
|
||||
* previously.
|
||||
* previously. Right after drm_dev_register() the driver should call
|
||||
* drm_connector_register_all() to register all connectors in sysfs. This is
|
||||
* a separate call for backward compatibility with drivers still using
|
||||
* the deprecated ->load() callback, where connectors are registered from within
|
||||
* the ->load() callback.
|
||||
*
|
||||
* Never call this twice on any device!
|
||||
*
|
||||
|
|
|
@ -2249,7 +2249,8 @@ static inline unsigned drm_connector_index(struct drm_connector *connector)
|
|||
return connector->connector_id;
|
||||
}
|
||||
|
||||
/* helper to unregister all connectors from sysfs for device */
|
||||
/* helpers to {un}register all connectors from sysfs for device */
|
||||
extern int drm_connector_register_all(struct drm_device *dev);
|
||||
extern void drm_connector_unregister_all(struct drm_device *dev);
|
||||
|
||||
extern int drm_bridge_add(struct drm_bridge *bridge);
|
||||
|
|
Loading…
Reference in a new issue