diff options
Diffstat (limited to 'drivers/gpu/drm/drm_connector.c')
| -rw-r--r-- | drivers/gpu/drm/drm_connector.c | 44 | 
1 files changed, 43 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c index 48b08c9611a7..272d6254ea47 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -33,6 +33,7 @@  #include <drm/drm_sysfs.h>  #include <drm/drm_utils.h> +#include <linux/export.h>  #include <linux/platform_device.h>  #include <linux/property.h>  #include <linux/uaccess.h> @@ -279,6 +280,7 @@ static int drm_connector_init_only(struct drm_device *dev,  	INIT_LIST_HEAD(&connector->probed_modes);  	INIT_LIST_HEAD(&connector->modes);  	mutex_init(&connector->mutex); +	mutex_init(&connector->cec.mutex);  	mutex_init(&connector->eld_mutex);  	mutex_init(&connector->edid_override_mutex);  	mutex_init(&connector->hdmi.infoframes.lock); @@ -702,6 +704,46 @@ static void drm_mode_remove(struct drm_connector *connector,  }  /** + * drm_connector_cec_phys_addr_invalidate - invalidate CEC physical address + * @connector: connector undergoing CEC operation + * + * Invalidated CEC physical address set for this DRM connector. + */ +void drm_connector_cec_phys_addr_invalidate(struct drm_connector *connector) +{ +	mutex_lock(&connector->cec.mutex); + +	if (connector->cec.funcs && +	    connector->cec.funcs->phys_addr_invalidate) +		connector->cec.funcs->phys_addr_invalidate(connector); + +	mutex_unlock(&connector->cec.mutex); +} +EXPORT_SYMBOL(drm_connector_cec_phys_addr_invalidate); + +/** + * drm_connector_cec_phys_addr_set - propagate CEC physical address + * @connector: connector undergoing CEC operation + * + * Propagate CEC physical address from the display_info to this DRM connector. + */ +void drm_connector_cec_phys_addr_set(struct drm_connector *connector) +{ +	u16 addr; + +	mutex_lock(&connector->cec.mutex); + +	addr = connector->display_info.source_physical_address; + +	if (connector->cec.funcs && +	    connector->cec.funcs->phys_addr_set) +		connector->cec.funcs->phys_addr_set(connector, addr); + +	mutex_unlock(&connector->cec.mutex); +} +EXPORT_SYMBOL(drm_connector_cec_phys_addr_set); + +/**   * drm_connector_cleanup - cleans up an initialised connector   * @connector: connector to cleanup   * @@ -1645,7 +1687,7 @@ EXPORT_SYMBOL(drm_hdmi_connector_get_output_format_name);   *	structure from userspace. This is received as blob and stored in   *	&drm_connector_state.hdr_output_metadata. It parses EDID and saves the   *	sink metadata in &struct hdr_sink_metadata, as - *	&drm_connector.hdr_sink_metadata.  Driver uses + *	&drm_connector.display_info.hdr_sink_metadata.  Driver uses   *	drm_hdmi_infoframe_set_hdr_metadata() helper to set the HDR metadata,   *	hdmi_drm_infoframe_pack() to pack the infoframe as per spec, in case of   *	HDMI encoder.  | 
