mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-18 03:23:53 -04:00
drm/connector: Allow drivers to pass list of supported colorspaces
Drivers might not support all colorspaces defined in dp_colorspaces and hdmi_colorspaces. This results in undefined behavior when userspace is setting an unsupported colorspace. Allow drivers to pass the list of supported colorspaces when creating the colorspace property. v2: - Use 0 to indicate support for all colorspaces (Jani) - Print drm_dbg_kms message when drivers pass 0 to signal that drivers should specify supported colorspaecs explicity (Jani) v3: - Move changes to create a common colorspace_names array to separate patch v6: - Avoid magic when passing 0 for supported_colorspaces; be explicit in treating it as "all DP/HDMI" Signed-off-by: Harry Wentland <harry.wentland@amd.com> Reviewed-by: Sebastian Wick <sebastian.wick@redhat.com> Reviewed-by: Joshua Ashton <joshua@froggi.es> Reviewed-by: Simon Ser <contact@emersion.fr> Cc: Pekka Paalanen <ppaalanen@gmail.com> Cc: Sebastian Wick <sebastian.wick@redhat.com> Cc: Vitaly.Prosyak@amd.com Cc: Uma Shankar <uma.shankar@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Joshua Ashton <joshua@froggi.es> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Simon Ser <contact@emersion.fr> Cc: Melissa Wen <mwen@igalia.com> Cc: dri-devel@lists.freedesktop.org Cc: amd-gfx@lists.freedesktop.org Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
035d53e0f3
commit
c265f340ea
@@ -2210,9 +2210,17 @@ static int drm_mode_create_colorspace_property(struct drm_connector *connector,
|
||||
* Returns:
|
||||
* Zero on success, negative errno on failure.
|
||||
*/
|
||||
int drm_mode_create_hdmi_colorspace_property(struct drm_connector *connector)
|
||||
int drm_mode_create_hdmi_colorspace_property(struct drm_connector *connector,
|
||||
u32 supported_colorspaces)
|
||||
{
|
||||
return drm_mode_create_colorspace_property(connector, hdmi_colorspaces);
|
||||
u32 colorspaces;
|
||||
|
||||
if (supported_colorspaces)
|
||||
colorspaces = supported_colorspaces & hdmi_colorspaces;
|
||||
else
|
||||
colorspaces = hdmi_colorspaces;
|
||||
|
||||
return drm_mode_create_colorspace_property(connector, colorspaces);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_mode_create_hdmi_colorspace_property);
|
||||
|
||||
@@ -2226,9 +2234,17 @@ EXPORT_SYMBOL(drm_mode_create_hdmi_colorspace_property);
|
||||
* Returns:
|
||||
* Zero on success, negative errno on failure.
|
||||
*/
|
||||
int drm_mode_create_dp_colorspace_property(struct drm_connector *connector)
|
||||
int drm_mode_create_dp_colorspace_property(struct drm_connector *connector,
|
||||
u32 supported_colorspaces)
|
||||
{
|
||||
return drm_mode_create_colorspace_property(connector, dp_colorspaces);
|
||||
u32 colorspaces;
|
||||
|
||||
if (supported_colorspaces)
|
||||
colorspaces = supported_colorspaces & dp_colorspaces;
|
||||
else
|
||||
colorspaces = dp_colorspaces;
|
||||
|
||||
return drm_mode_create_colorspace_property(connector, colorspaces);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_mode_create_dp_colorspace_property);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user