drm: Add drm_connector_init() variant with ddc
Allow passing ddc adapter pointer to the init function. Even if drm_connector_init() sometime in the future decides to e.g. memset() all connector fields to zeros, the newly added function ensures that at its completion the ddc member of connector is correctly set. Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Link: https://patchwork.freedesktop.org/patch/msgid/3915224ae895240fd0973cf7f06b9d453e4d8520.1564161140.git.andrzej.p@collabora.com
This commit is contained in:
parent
e1a29c6c59
commit
100163df42
|
@ -297,6 +297,41 @@ out_put:
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(drm_connector_init);
|
EXPORT_SYMBOL(drm_connector_init);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* drm_connector_init_with_ddc - Init a preallocated connector
|
||||||
|
* @dev: DRM device
|
||||||
|
* @connector: the connector to init
|
||||||
|
* @funcs: callbacks for this connector
|
||||||
|
* @connector_type: user visible type of the connector
|
||||||
|
* @ddc: pointer to the associated ddc adapter
|
||||||
|
*
|
||||||
|
* Initialises a preallocated connector. Connectors should be
|
||||||
|
* subclassed as part of driver connector objects.
|
||||||
|
*
|
||||||
|
* Ensures that the ddc field of the connector is correctly set.
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* Zero on success, error code on failure.
|
||||||
|
*/
|
||||||
|
int drm_connector_init_with_ddc(struct drm_device *dev,
|
||||||
|
struct drm_connector *connector,
|
||||||
|
const struct drm_connector_funcs *funcs,
|
||||||
|
int connector_type,
|
||||||
|
struct i2c_adapter *ddc)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = drm_connector_init(dev, connector, funcs, connector_type);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
/* provide ddc symlink in sysfs */
|
||||||
|
connector->ddc = ddc;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(drm_connector_init_with_ddc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* drm_connector_attach_edid_property - attach edid property.
|
* drm_connector_attach_edid_property - attach edid property.
|
||||||
* @connector: the connector
|
* @connector: the connector
|
||||||
|
|
|
@ -1319,6 +1319,8 @@ struct drm_connector {
|
||||||
* this field, then an appropriate symbolic link is created in connector
|
* this field, then an appropriate symbolic link is created in connector
|
||||||
* sysfs directory to make it easy for the user to tell which i2c
|
* sysfs directory to make it easy for the user to tell which i2c
|
||||||
* adapter is for a particular display.
|
* adapter is for a particular display.
|
||||||
|
*
|
||||||
|
* The field should be set by calling drm_connector_init_with_ddc().
|
||||||
*/
|
*/
|
||||||
struct i2c_adapter *ddc;
|
struct i2c_adapter *ddc;
|
||||||
|
|
||||||
|
@ -1410,6 +1412,11 @@ int drm_connector_init(struct drm_device *dev,
|
||||||
struct drm_connector *connector,
|
struct drm_connector *connector,
|
||||||
const struct drm_connector_funcs *funcs,
|
const struct drm_connector_funcs *funcs,
|
||||||
int connector_type);
|
int connector_type);
|
||||||
|
int drm_connector_init_with_ddc(struct drm_device *dev,
|
||||||
|
struct drm_connector *connector,
|
||||||
|
const struct drm_connector_funcs *funcs,
|
||||||
|
int connector_type,
|
||||||
|
struct i2c_adapter *ddc);
|
||||||
void drm_connector_attach_edid_property(struct drm_connector *connector);
|
void drm_connector_attach_edid_property(struct drm_connector *connector);
|
||||||
int drm_connector_register(struct drm_connector *connector);
|
int drm_connector_register(struct drm_connector *connector);
|
||||||
void drm_connector_unregister(struct drm_connector *connector);
|
void drm_connector_unregister(struct drm_connector *connector);
|
||||||
|
|
Loading…
Reference in New Issue