summaryrefslogtreecommitdiff
path: root/tests/kms_content_protection.c
diff options
context:
space:
mode:
authorRamalingam C <ramalingam.c@intel.com>2019-02-07 20:37:02 +0530
committerRamalingam C <ramalingam.c@intel.com>2019-02-14 17:12:33 +0530
commitd4c40ff002bdc4b599634f20d5676f81c8647cdf (patch)
tree23c318f69c34fedfebad7dfa5afcaf064b3ef1f1 /tests/kms_content_protection.c
parentbc20c44c25bb3df9f9ac83e77349a88af0cce57e (diff)
kms_content_protection: Test CP along with modeset
As we have two different patch for commitng the HDCP request 1. DDI_enable (during the modeset) 2. update_pipe (during fastset execution) Currently our kms_content_protection covers only fastset path. So this test adds the coverage for the HDCP during the modeset by performing DPMS off-on and check for HDCP status. But with respect to HDCP we allow few retries from userspace before reporting the failure. So only first attempt at kernel will be on modeset path, next retries will become fastset commiting of HDCP. v2: dpms test is added within existing implementation with a flag [Daniel] v3: ret declared. Signed-off-by: Ramalingam C <ramalingam.c@intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'tests/kms_content_protection.c')
-rw-r--r--tests/kms_content_protection.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index f6b441d8..7d82c733 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -216,11 +216,13 @@ static bool igt_pipe_is_free(igt_display_t *display, enum pipe pipe)
static void test_content_protection_on_output(igt_output_t *output,
- enum igt_commit_style s)
+ enum igt_commit_style s,
+ bool dpms_test)
{
igt_display_t *display = &data.display;
igt_plane_t *primary;
enum pipe pipe;
+ bool ret;
for_each_pipe(display, pipe) {
if (!igt_pipe_connector_valid(pipe, output))
@@ -237,8 +239,22 @@ static void test_content_protection_on_output(igt_output_t *output,
modeset_with_fb(pipe, output, s);
test_cp_enable_with_retry(output, s, 3);
- test_cp_disable(output, s);
+ if (dpms_test) {
+ igt_pipe_set_prop_value(display, pipe,
+ IGT_CRTC_ACTIVE, 0);
+ igt_display_commit2(display, s);
+
+ igt_pipe_set_prop_value(display, pipe,
+ IGT_CRTC_ACTIVE, 1);
+ igt_display_commit2(display, s);
+
+ ret = wait_for_prop_value(output, 2, 18000);
+ if (!ret)
+ test_cp_enable_with_retry(output, s, 2);
+ }
+
+ test_cp_disable(output, s);
primary = igt_output_get_plane_type(output,
DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(primary, NULL);
@@ -282,7 +298,7 @@ static bool sink_hdcp_capable(igt_output_t *output)
static void
-test_content_protection(enum igt_commit_style s)
+test_content_protection(enum igt_commit_style s, bool dpms_test)
{
igt_display_t *display = &data.display;
igt_output_t *output;
@@ -299,7 +315,7 @@ test_content_protection(enum igt_commit_style s)
continue;
}
- test_content_protection_on_output(output, s);
+ test_content_protection_on_output(output, s, dpms_test);
valid_tests++;
}
@@ -317,11 +333,16 @@ igt_main
}
igt_subtest("legacy")
- test_content_protection(COMMIT_LEGACY);
+ test_content_protection(COMMIT_LEGACY, false);
igt_subtest("atomic") {
igt_require(data.display.is_atomic);
- test_content_protection(COMMIT_ATOMIC);
+ test_content_protection(COMMIT_ATOMIC, false);
+ }
+
+ igt_subtest("atomic-dpms") {
+ igt_require(data.display.is_atomic);
+ test_content_protection(COMMIT_ATOMIC, true);
}
igt_fixture