@@ -27,6 +27,7 @@
#include <linux/ctype.h>
#include <linux/hdmi.h>
#include <drm/drm_mode_object.h>
+#include <drm/drm_hdcp.h>
#include <uapi/drm/drm_mode.h>
@@ -867,6 +868,10 @@ struct drm_connector {
*/
struct drm_connector_state *state;
+ /* HDCP representation on the connector */
+ struct drm_hdcp *hdcp;
+ uint64_t hdcp_state;
+
/* DisplayID bits */
bool has_tile;
struct drm_tile_group *tile_group;
@@ -27,6 +27,45 @@
#ifndef __DRM_HDCP_H__
#define __DRM_HDCP_H__
+struct drm_connector;
+
+/**
+ * HDCP Software stack specific
+ */
+/* Bit mask for HDCP spec ver support */
+#define HDCP_1_4_SUPPORT (1<<0)
+#define HDCP_2_2_SUPPORT (1<<1)
+
+/**
+ * wired_protocol: Supported integrated wired HDCP protocol.
+ * Based on this value, Minor differenceneeded between wired specifications
+ * are handled.
+ */
+enum wired_protocol {
+ WIRED_PROTOCOL_INVALID,
+ WIRED_PROTOCOL_HDMI,
+ WIRED_PROTOCOL_DP
+};
+
+/**
+ * Struct drm_hdcp - central drm hdcp control structure
+ */
+struct drm_hdcp {
+ struct drm_connector *connector;
+
+ /* HDCP Specifications support flag */
+ uint32_t ver_support_on_plat;
+ uint32_t ver_support_on_panel;
+
+ /* HDCP requested state and also the current state */
+ uint64_t req_state;
+
+ /* HDMI/DP Protocol */
+ enum wired_protocol protocol;
+
+ struct mutex mutex;
+};
+
/**
* HDCP property related information
*/
Structure drm_hdcp is defined to represent the HDCP state of the connector. drm_connector will have a pointer to an instance of this structure. This will be used to hold all specification related information along with state machine parameters. Signed-off-by: Ramalingam C <ramalingam.c@intel.com> --- include/drm/drm_connector.h | 5 +++++ include/drm/drm_hdcp.h | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+)