return capable;
 }
 
-/* Is HDCP2.2 capable on Platform and Sink */
-bool intel_hdcp2_capable(struct intel_connector *connector)
+/*
+ * Check if the source has all the building blocks ready to make
+ * HDCP 2.2 work
+ */
+static bool intel_hdcp2_prerequisite(struct intel_connector *connector)
 {
        struct drm_i915_private *i915 = to_i915(connector->base.dev);
        struct intel_hdcp *hdcp = &connector->hdcp;
-       bool capable = false;
 
        /* I915 support for HDCP2.2 */
        if (!hdcp->hdcp2_supported)
        }
        mutex_unlock(&i915->display.hdcp.hdcp_mutex);
 
+       return true;
+}
+
+/* Is HDCP2.2 capable on Platform and Sink */
+bool intel_hdcp2_capable(struct intel_connector *connector)
+{
+       struct intel_hdcp *hdcp = &connector->hdcp;
+       bool capable = false;
+
+       if (!intel_hdcp2_prerequisite(connector))
+               return false;
+
        /* Sink's capability for HDCP2.2 */
        hdcp->shim->hdcp_2_2_capable(connector, &capable);