@@ -28,6 +28,7 @@
#define __DRM_HDCP_H__
struct drm_connector;
+struct drm_hdcp;
/**
* HDCP Software stack specific
@@ -67,6 +68,43 @@ enum wired_protocol {
WIRED_PROTOCOL_DP
};
+struct drm_hdcp_funcs {
+
+ /**
+ * @link_write:
+ *
+ * Service Function to implement the HDCP protocol write on
+ * I2C/AUX bus based on HDCP protocol.
+ *
+ * returns No of Bytes written on success
+ * else negative error codes
+ **/
+ ssize_t (*link_write)(struct drm_hdcp *hdcp, uint32_t offset,
+ void *buf, size_t size);
+
+ /**
+ * @link_read:
+ *
+ * Service Function to implement the HDCP protocol read on
+ * I2C/AUX bus based on HDCP protocol.
+ *
+ * returns No of Bytes read on success
+ * else negative error codes
+ **/
+ ssize_t (*link_read)(struct drm_hdcp *hdcp, uint32_t offset,
+ void *buf, size_t size);
+
+ /**
+ * @late_init:
+ *
+ * Service function to do any deferred init at platform level.
+ *
+ * returns 0 on success
+ * else negative error codes
+ **/
+ int (*late_init)(struct drm_hdcp *hdcp);
+};
+
/**
* Struct drm_hdcp - central drm hdcp control structure
*/
@@ -83,6 +121,8 @@ struct drm_hdcp {
/* HDMI/DP Protocol */
enum wired_protocol protocol;
+ const struct drm_hdcp_funcs *hdcp_funcs;
+
struct mutex mutex;
};
Callback functions for Platform specific services are defined. These pointers has to be initialized from display driver's hdcp_init and passed onto drm_hdcp_init. drm_hdcp_funcs will have pointers of functions common for all HDCP versions supported on that platform. Signed-off-by: Ramalingam C <ramalingam.c@intel.com> --- include/drm/drm_hdcp.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+)