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);
|
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
|
* drm_connector_unregister_all - unregister connector userspace interfaces
|
||||||
* @dev: drm device
|
* @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
|
* 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()
|
* 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!
|
* 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;
|
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 void drm_connector_unregister_all(struct drm_device *dev);
|
||||||
|
|
||||||
extern int drm_bridge_add(struct drm_bridge *bridge);
|
extern int drm_bridge_add(struct drm_bridge *bridge);
|
||||||
|
Loading…
Reference in New Issue
Block a user