drm: move content protection property to mode_config
authorRamalingam C <ramalingam.c@intel.com>
Tue, 7 May 2019 16:27:35 +0000 (21:57 +0530)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 9 May 2019 07:44:41 +0000 (09:44 +0200)
Content protection property is created once and stored in
drm_mode_config. And attached to all HDCP capable connectors.

Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Dave Airlie <airlied@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20190507162745.25600-2-ramalingam.c@intel.com
drivers/gpu/drm/drm_atomic_uapi.c
drivers/gpu/drm/drm_connector.c
include/drm/drm_connector.h
include/drm/drm_mode_config.h

index 428d82662dc41ede2597b133d0f3033acd8e637d..4131e669785aeb5190e4e90cdab401959d2f65ed 100644 (file)
@@ -732,7 +732,7 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
                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;
@@ -814,7 +814,7 @@ 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->content_protection_property) {
                *val = state->content_protection;
        } else if (property == config->writeback_fb_id_property) {
                /* Writeback framebuffer is one-shot, write and forget */
index 2355124849db9ecb0f8ceb5118c13ea729dd6215..7c0eda9cca600da35c682809c08fbb6369d8c737 100644 (file)
@@ -1534,18 +1534,19 @@ int drm_connector_attach_content_protection_property(
                struct drm_connector *connector)
 {
        struct drm_device *dev = connector->dev;
-       struct drm_property *prop;
+       struct drm_property *prop =
+                       dev->mode_config.content_protection_property;
 
-       prop = drm_property_create_enum(dev, 0, "Content Protection",
-                                       drm_cp_enum_list,
-                                       ARRAY_SIZE(drm_cp_enum_list));
+       if (!prop)
+               prop = drm_property_create_enum(dev, 0, "Content Protection",
+                                               drm_cp_enum_list,
+                                               ARRAY_SIZE(drm_cp_enum_list));
        if (!prop)
                return -ENOMEM;
 
        drm_object_attach_property(&connector->base, prop,
                                   DRM_MODE_CONTENT_PROTECTION_UNDESIRED);
-
-       connector->content_protection_property = prop;
+       dev->mode_config.content_protection_property = prop;
 
        return 0;
 }
index 02a131202adde10648228c080b261c0dcb799a10..5e41942e5679d152f1166f46665469805c69e856 100644 (file)
@@ -1061,12 +1061,6 @@ struct drm_connector {
         */
        struct drm_property *vrr_capable_property;
 
-       /**
-        * @content_protection_property: DRM ENUM property for content
-        * protection. See drm_connector_attach_content_protection_property().
-        */
-       struct drm_property *content_protection_property;
-
        /**
         * @colorspace_property: Connector property to set the suitable
         * colorspace supported by the sink.
index 7f60e8eb269acdaff4d5151e8b5b73b8a3bf7d09..5764ee3c7453e4f9f23b9fb96096207211cdca06 100644 (file)
@@ -836,6 +836,12 @@ struct drm_mode_config {
         */
        struct drm_property *writeback_out_fence_ptr_property;
 
+       /**
+        * @content_protection_property: DRM ENUM property for content
+        * protection. See drm_connector_attach_content_protection_property().
+        */
+       struct drm_property *content_protection_property;
+
        /* dumb ioctl parameters */
        uint32_t preferred_depth, prefer_shadow;