Merge tag 'xfs-5.3-merge-13' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
[linux-2.6-microblaze.git] / drivers / gpu / drm / drm_atomic_uapi.c
index 428d826..abe38bd 100644 (file)
@@ -490,7 +490,7 @@ drm_atomic_crtc_get_property(struct drm_crtc *crtc,
        struct drm_mode_config *config = &dev->mode_config;
 
        if (property == config->prop_active)
-               *val = state->active;
+               *val = drm_atomic_crtc_effectively_active(state);
        else if (property == config->prop_mode_id)
                *val = (state->mode_blob) ? state->mode_blob->base.id : 0;
        else if (property == config->prop_vrr_enabled)
@@ -676,6 +676,8 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
 {
        struct drm_device *dev = connector->dev;
        struct drm_mode_config *config = &dev->mode_config;
+       bool replaced = false;
+       int ret;
 
        if (property == config->prop_crtc_id) {
                struct drm_crtc *crtc = drm_crtc_find(dev, file_priv, val);
@@ -726,13 +728,20 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
                 */
                if (state->link_status != DRM_LINK_STATUS_GOOD)
                        state->link_status = val;
+       } else if (property == config->hdr_output_metadata_property) {
+               ret = drm_atomic_replace_property_blob_from_id(dev,
+                               &state->hdr_output_metadata,
+                               val,
+                               sizeof(struct hdr_output_metadata), -1,
+                               &replaced);
+               return ret;
        } else if (property == config->aspect_ratio_property) {
                state->picture_aspect_ratio = val;
        } else if (property == config->content_type_property) {
                state->content_type = val;
        } else if (property == connector->scaling_mode_property) {
                state->scaling_mode = val;
-       } else if (property == connector->content_protection_property) {
+       } else if (property == config->content_protection_property) {
                if (val == DRM_MODE_CONTENT_PROTECTION_ENABLED) {
                        DRM_DEBUG_KMS("only drivers can set CP Enabled\n");
                        return -EINVAL;
@@ -779,7 +788,10 @@ drm_atomic_connector_get_property(struct drm_connector *connector,
        if (property == config->prop_crtc_id) {
                *val = (state->crtc) ? state->crtc->base.id : 0;
        } else if (property == config->dpms_property) {
-               *val = connector->dpms;
+               if (state->crtc && state->crtc->state->self_refresh_active)
+                       *val = DRM_MODE_DPMS_ON;
+               else
+                       *val = connector->dpms;
        } else if (property == config->tv_select_subconnector_property) {
                *val = state->tv.subconnector;
        } else if (property == config->tv_left_margin_property) {
@@ -814,7 +826,10 @@ drm_atomic_connector_get_property(struct drm_connector *connector,
                *val = state->colorspace;
        } else if (property == connector->scaling_mode_property) {
                *val = state->scaling_mode;
-       } else if (property == connector->content_protection_property) {
+       } else if (property == config->hdr_output_metadata_property) {
+               *val = state->hdr_output_metadata ?
+                       state->hdr_output_metadata->base.id : 0;
+       } else if (property == config->content_protection_property) {
                *val = state->content_protection;
        } else if (property == config->writeback_fb_id_property) {
                /* Writeback framebuffer is one-shot, write and forget */