root/sys/dev/drm/include/drm/drm_hdcp.h
/* SPDX-License-Identifier: MIT */
/*
 * Copyright (C) 2017 Google, Inc.
 *
 * Authors:
 * Sean Paul <seanpaul@chromium.org>
 */

#ifndef _DRM_HDCP_H_INCLUDED_
#define _DRM_HDCP_H_INCLUDED_

/* Period of hdcp checks (to ensure we're still authenticated) */
#define DRM_HDCP_CHECK_PERIOD_MS                (128 * 16)

/* Shared lengths/masks between HDMI/DVI/DisplayPort */
#define DRM_HDCP_AN_LEN                         8
#define DRM_HDCP_BSTATUS_LEN                    2
#define DRM_HDCP_KSV_LEN                        5
#define DRM_HDCP_RI_LEN                         2
#define DRM_HDCP_V_PRIME_PART_LEN               4
#define DRM_HDCP_V_PRIME_NUM_PARTS              5
#define DRM_HDCP_NUM_DOWNSTREAM(x)              (x & 0x7f)
#define DRM_HDCP_MAX_CASCADE_EXCEEDED(x)        (x & BIT(3))
#define DRM_HDCP_MAX_DEVICE_EXCEEDED(x)         (x & BIT(7))

/* Slave address for the HDCP registers in the receiver */
#define DRM_HDCP_DDC_ADDR                       0x3A

/* HDCP register offsets for HDMI/DVI devices */
#define DRM_HDCP_DDC_BKSV                       0x00
#define DRM_HDCP_DDC_RI_PRIME                   0x08
#define DRM_HDCP_DDC_AKSV                       0x10
#define DRM_HDCP_DDC_AN                         0x18
#define DRM_HDCP_DDC_V_PRIME(h)                 (0x20 + h * 4)
#define DRM_HDCP_DDC_BCAPS                      0x40
#define  DRM_HDCP_DDC_BCAPS_REPEATER_PRESENT    BIT(6)
#define  DRM_HDCP_DDC_BCAPS_KSV_FIFO_READY      BIT(5)
#define DRM_HDCP_DDC_BSTATUS                    0x41
#define DRM_HDCP_DDC_KSV_FIFO                   0x43

#endif