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@xxxxxxxxx> --- include/drm/drm_hdcp.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/include/drm/drm_hdcp.h b/include/drm/drm_hdcp.h index bf77d37..2a48ef9 100644 --- a/include/drm/drm_hdcp.h +++ b/include/drm/drm_hdcp.h @@ -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; }; -- 2.7.4 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel