Add support for HDCP 2.3
bug:120040804
Change-Id: Id4643829bce31131e3bc7b628737579bb597e736
diff --git a/drm/1.2/IDrmPlugin.hal b/drm/1.2/IDrmPlugin.hal
index 88ace0b..3c21815 100644
--- a/drm/1.2/IDrmPlugin.hal
+++ b/drm/1.2/IDrmPlugin.hal
@@ -184,6 +184,40 @@
generates (Status status, vec<uint8_t> request, string defaultUrl);
/**
+ * Return the currently negotiated and max supported HDCP levels.
+ *
+ * This method only differs from @1.1 version by the addition of
+ * support for HDCP 2.3.
+ *
+ * The current level is based on the display(s) the device is connected to.
+ * If multiple HDCP-capable displays are simultaneously connected to
+ * separate interfaces, this method returns the lowest negotiated HDCP level
+ * of all interfaces.
+ *
+ * The maximum HDCP level is the highest level that can potentially be
+ * negotiated. It is a constant for any device, i.e. it does not depend on
+ * downstream receiving devices that could be connected. For example, if
+ * the device has HDCP 1.x keys and is capable of negotiating HDCP 1.x, but
+ * does not have HDCP 2.x keys, then the maximum HDCP capability would be
+ * reported as 1.x. If multiple HDCP-capable interfaces are present, it
+ * indicates the highest of the maximum HDCP levels of all interfaces.
+ *
+ * This method should only be used for informational purposes, not for
+ * enforcing compliance with HDCP requirements. Trusted enforcement of HDCP
+ * policies must be handled by the DRM system.
+ *
+ * @return status the status of the call. The status must be OK or
+ * ERROR_DRM_INVALID_STATE if the HAL is in a state where the HDCP
+ * level cannot be queried.
+ * @return connectedLevel the lowest HDCP level for any connected
+ * displays
+ * @return maxLevel the highest HDCP level that can be supported
+ * by the device
+ */
+ getHdcpLevels_1_2() generates (Status status, HdcpLevel connectedLevel,
+ HdcpLevel maxLevel);
+
+ /**
* Send a session lost state event to the listener. This event
* indicates that a session's state has become invalid because the
* device crypto hardware is incapable of retaining crypto session
diff --git a/drm/1.2/types.hal b/drm/1.2/types.hal
index 6e1acde..28c8e67 100644
--- a/drm/1.2/types.hal
+++ b/drm/1.2/types.hal
@@ -17,6 +17,7 @@
package android.hardware.drm@1.2;
import @1.0::Status;
+import @1.1::HdcpLevel;
enum OfflineLicenseState : uint32_t {
/**
@@ -72,6 +73,19 @@
};
/**
+ * HDCP specifications are defined by Digital Content Protection LLC (DCP).
+ * "HDCP Specification Rev. 2.3 Interface Independent Adaptation"
+ * "HDCP 2.3 on HDMI Specification"
+ */
+enum HdcpLevel : @1.1::HdcpLevel {
+ /**
+ * HDCP version 2.3 Type 1.
+ */
+ HDCP_V2_3
+};
+
+
+/**
* KeySetId is an identifier that references a set of keys in an
* offline license. The keySetId is created by the HAL implementation
* and returned from provideKeyResponse and getOfflineLicenseIds. The