Content protection property is created once and stored in
drm_mode_config. And attached to all HDCP capable connectors.

Signed-off-by: Ramalingam C <ramalinga...@intel.com>
---
 drivers/gpu/drm/drm_atomic_uapi.c |  4 ++--
 drivers/gpu/drm/drm_connector.c   | 13 +++++++------
 include/drm/drm_connector.h       |  6 ------
 include/drm/drm_mode_config.h     |  6 ++++++
 4 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/drm_atomic_uapi.c 
b/drivers/gpu/drm/drm_atomic_uapi.c
index ea797d4c82ee..002dcede7915 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
@@ -727,7 +727,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;
@@ -807,7 +807,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 */
diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
index 2355124849db..7c0eda9cca60 100644
--- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c
@@ -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;
 }
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 02a131202add..5e41942e5679 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -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.
diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
index 7f60e8eb269a..5764ee3c7453 100644
--- a/include/drm/drm_mode_config.h
+++ b/include/drm/drm_mode_config.h
@@ -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;
 
-- 
2.19.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to