p!ranha?
Server IP : 103.169.32.36  /  Your IP : 216.73.217.13
Web Server : Apache
System : Linux web.dpmptsp 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User : apache ( 48)
PHP Version : 5.6.40
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/modules/3.10.0-1160.105.1.el7.x86_64/build/include/drm/

Upload File :
Curr3nt_D!r [ Writeable ] D0cum3nt_r0Ot [ Writeable ]

 
Command :
Current File : /usr/lib/modules/3.10.0-1160.105.1.el7.x86_64/build/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

#define DRM_HDCP_1_4_SRM_ID			0x8
#define DRM_HDCP_1_4_VRL_LENGTH_SIZE		3
#define DRM_HDCP_1_4_DCP_SIG_SIZE		40

/* Protocol message definition for HDCP2.2 specification */
/*
 * Protected content streams are classified into 2 types:
 * - Type0: Can be transmitted with HDCP 1.4+
 * - Type1: Can be transmitted with HDCP 2.2+
 */
#define HDCP_STREAM_TYPE0			0x00
#define HDCP_STREAM_TYPE1			0x01

/* HDCP2.2 Msg IDs */
#define HDCP_2_2_NULL_MSG			1
#define HDCP_2_2_AKE_INIT			2
#define HDCP_2_2_AKE_SEND_CERT			3
#define HDCP_2_2_AKE_NO_STORED_KM		4
#define HDCP_2_2_AKE_STORED_KM			5
#define HDCP_2_2_AKE_SEND_HPRIME		7
#define HDCP_2_2_AKE_SEND_PAIRING_INFO		8
#define HDCP_2_2_LC_INIT			9
#define HDCP_2_2_LC_SEND_LPRIME			10
#define HDCP_2_2_SKE_SEND_EKS			11
#define HDCP_2_2_REP_SEND_RECVID_LIST		12
#define HDCP_2_2_REP_SEND_ACK			15
#define HDCP_2_2_REP_STREAM_MANAGE		16
#define HDCP_2_2_REP_STREAM_READY		17
#define HDCP_2_2_ERRATA_DP_STREAM_TYPE		50

#define HDCP_2_2_RTX_LEN			8
#define HDCP_2_2_RRX_LEN			8

#define HDCP_2_2_K_PUB_RX_MOD_N_LEN		128
#define HDCP_2_2_K_PUB_RX_EXP_E_LEN		3
#define HDCP_2_2_K_PUB_RX_LEN			(HDCP_2_2_K_PUB_RX_MOD_N_LEN + \
						 HDCP_2_2_K_PUB_RX_EXP_E_LEN)

#define HDCP_2_2_DCP_LLC_SIG_LEN		384

#define HDCP_2_2_E_KPUB_KM_LEN			128
#define HDCP_2_2_E_KH_KM_M_LEN			(16 + 16)
#define HDCP_2_2_H_PRIME_LEN			32
#define HDCP_2_2_E_KH_KM_LEN			16
#define HDCP_2_2_RN_LEN				8
#define HDCP_2_2_L_PRIME_LEN			32
#define HDCP_2_2_E_DKEY_KS_LEN			16
#define HDCP_2_2_RIV_LEN			8
#define HDCP_2_2_SEQ_NUM_LEN			3
#define HDCP_2_2_V_PRIME_HALF_LEN		(HDCP_2_2_L_PRIME_LEN / 2)
#define HDCP_2_2_RECEIVER_ID_LEN		DRM_HDCP_KSV_LEN
#define HDCP_2_2_MAX_DEVICE_COUNT		31
#define HDCP_2_2_RECEIVER_IDS_MAX_LEN		(HDCP_2_2_RECEIVER_ID_LEN * \
						 HDCP_2_2_MAX_DEVICE_COUNT)
#define HDCP_2_2_MPRIME_LEN			32

/* Following Macros take a byte at a time for bit(s) masking */
/*
 * TODO: This has to be changed for DP MST, as multiple stream on
 * same port is possible.
 * For HDCP2.2 on HDMI and DP SST this value is always 1.
 */
#define HDCP_2_2_MAX_CONTENT_STREAMS_CNT	1
#define HDCP_2_2_TXCAP_MASK_LEN			2
#define HDCP_2_2_RXCAPS_LEN			3
#define HDCP_2_2_RX_REPEATER(x)			((x) & BIT(0))
#define HDCP_2_2_DP_HDCP_CAPABLE(x)		((x) & BIT(1))
#define HDCP_2_2_RXINFO_LEN			2

/* HDCP1.x compliant device in downstream */
#define HDCP_2_2_HDCP1_DEVICE_CONNECTED(x)	((x) & BIT(0))

/* HDCP2.0 Compliant repeater in downstream */
#define HDCP_2_2_HDCP_2_0_REP_CONNECTED(x)	((x) & BIT(1))
#define HDCP_2_2_MAX_CASCADE_EXCEEDED(x)	((x) & BIT(2))
#define HDCP_2_2_MAX_DEVS_EXCEEDED(x)		((x) & BIT(3))
#define HDCP_2_2_DEV_COUNT_LO(x)		(((x) & (0xF << 4)) >> 4)
#define HDCP_2_2_DEV_COUNT_HI(x)		((x) & BIT(0))
#define HDCP_2_2_DEPTH(x)			(((x) & (0x7 << 1)) >> 1)

struct hdcp2_cert_rx {
	u8	receiver_id[HDCP_2_2_RECEIVER_ID_LEN];
	u8	kpub_rx[HDCP_2_2_K_PUB_RX_LEN];
	u8	reserved[2];
	u8	dcp_signature[HDCP_2_2_DCP_LLC_SIG_LEN];
} __packed;

struct hdcp2_streamid_type {
	u8	stream_id;
	u8	stream_type;
} __packed;

/*
 * The TxCaps field specified in the HDCP HDMI, DP specs
 * This field is big endian as specified in the errata.
 */
struct hdcp2_tx_caps {
	/* Transmitter must set this to 0x2 */
	u8	version;

	/* Reserved for HDCP and DP Spec. Read as Zero */
	u8	tx_cap_mask[HDCP_2_2_TXCAP_MASK_LEN];
} __packed;

/* Main structures for HDCP2.2 protocol communication */
struct hdcp2_ake_init {
	u8			msg_id;
	u8			r_tx[HDCP_2_2_RTX_LEN];
	struct hdcp2_tx_caps	tx_caps;
} __packed;

struct hdcp2_ake_send_cert {
	u8			msg_id;
	struct hdcp2_cert_rx	cert_rx;
	u8			r_rx[HDCP_2_2_RRX_LEN];
	u8			rx_caps[HDCP_2_2_RXCAPS_LEN];
} __packed;

struct hdcp2_ake_no_stored_km {
	u8	msg_id;
	u8	e_kpub_km[HDCP_2_2_E_KPUB_KM_LEN];
} __packed;

struct hdcp2_ake_stored_km {
	u8	msg_id;
	u8	e_kh_km_m[HDCP_2_2_E_KH_KM_M_LEN];
} __packed;

struct hdcp2_ake_send_hprime {
	u8	msg_id;
	u8	h_prime[HDCP_2_2_H_PRIME_LEN];
} __packed;

struct hdcp2_ake_send_pairing_info {
	u8	msg_id;
	u8	e_kh_km[HDCP_2_2_E_KH_KM_LEN];
} __packed;

struct hdcp2_lc_init {
	u8	msg_id;
	u8	r_n[HDCP_2_2_RN_LEN];
} __packed;

struct hdcp2_lc_send_lprime {
	u8	msg_id;
	u8	l_prime[HDCP_2_2_L_PRIME_LEN];
} __packed;

struct hdcp2_ske_send_eks {
	u8	msg_id;
	u8	e_dkey_ks[HDCP_2_2_E_DKEY_KS_LEN];
	u8	riv[HDCP_2_2_RIV_LEN];
} __packed;

struct hdcp2_rep_send_receiverid_list {
	u8	msg_id;
	u8	rx_info[HDCP_2_2_RXINFO_LEN];
	u8	seq_num_v[HDCP_2_2_SEQ_NUM_LEN];
	u8	v_prime[HDCP_2_2_V_PRIME_HALF_LEN];
	u8	receiver_ids[HDCP_2_2_RECEIVER_IDS_MAX_LEN];
} __packed;

struct hdcp2_rep_send_ack {
	u8	msg_id;
	u8	v[HDCP_2_2_V_PRIME_HALF_LEN];
} __packed;

struct hdcp2_rep_stream_manage {
	u8			msg_id;
	u8			seq_num_m[HDCP_2_2_SEQ_NUM_LEN];
	__be16			k;
	struct hdcp2_streamid_type streams[HDCP_2_2_MAX_CONTENT_STREAMS_CNT];
} __packed;

struct hdcp2_rep_stream_ready {
	u8	msg_id;
	u8	m_prime[HDCP_2_2_MPRIME_LEN];
} __packed;

struct hdcp2_dp_errata_stream_type {
	u8	msg_id;
	u8	stream_type;
} __packed;

/* HDCP2.2 TIMEOUTs in mSec */
#define HDCP_2_2_CERT_TIMEOUT_MS		100
#define HDCP_2_2_HPRIME_NO_PAIRED_TIMEOUT_MS	1000
#define HDCP_2_2_HPRIME_PAIRED_TIMEOUT_MS	200
#define HDCP_2_2_PAIRING_TIMEOUT_MS		200
#define	HDCP_2_2_HDMI_LPRIME_TIMEOUT_MS		20
#define HDCP_2_2_DP_LPRIME_TIMEOUT_MS		7
#define HDCP_2_2_RECVID_LIST_TIMEOUT_MS		3000
#define HDCP_2_2_STREAM_READY_TIMEOUT_MS	100

/* HDMI HDCP2.2 Register Offsets */
#define HDCP_2_2_HDMI_REG_VER_OFFSET		0x50
#define HDCP_2_2_HDMI_REG_WR_MSG_OFFSET		0x60
#define HDCP_2_2_HDMI_REG_RXSTATUS_OFFSET	0x70
#define HDCP_2_2_HDMI_REG_RD_MSG_OFFSET		0x80
#define HDCP_2_2_HDMI_REG_DBG_OFFSET		0xC0

#define HDCP_2_2_HDMI_SUPPORT_MASK		BIT(2)
#define HDCP_2_2_RX_CAPS_VERSION_VAL		0x02
#define HDCP_2_2_SEQ_NUM_MAX			0xFFFFFF
#define	HDCP_2_2_DELAY_BEFORE_ENCRYPTION_EN	200

/* Below macros take a byte at a time and mask the bit(s) */
#define HDCP_2_2_HDMI_RXSTATUS_LEN		2
#define HDCP_2_2_HDMI_RXSTATUS_MSG_SZ_HI(x)	((x) & 0x3)
#define HDCP_2_2_HDMI_RXSTATUS_READY(x)		((x) & BIT(2))
#define HDCP_2_2_HDMI_RXSTATUS_REAUTH_REQ(x)	((x) & BIT(3))

#endif
N4m3
5!z3
L45t M0d!f!3d
0wn3r / Gr0up
P3Rm!55!0n5
0pt!0n5
..
--
January 19 2024 08:12:51
0 / 0
0755
bridge
--
January 19 2024 08:12:50
0 / 0
0755
i2c
--
January 19 2024 08:12:50
0 / 0
0755
ttm
--
January 19 2024 08:12:50
0 / 0
0755
amd_asic_type.h
1.585 KB
November 06 2023 09:15:52
0 / 0
0644
ati_pcigart.h
0.714 KB
November 06 2023 09:15:52
0 / 0
0644
drmP.h
3.393 KB
November 06 2023 09:15:52
0 / 0
0644
drm_agpsupport.h
3.814 KB
November 06 2023 09:15:52
0 / 0
0644
drm_atomic.h
32.294 KB
November 06 2023 09:15:52
0 / 0
0644
drm_atomic_helper.h
9.297 KB
November 06 2023 09:15:52
0 / 0
0644
drm_atomic_state_helper.h
3.153 KB
November 06 2023 09:15:52
0 / 0
0644
drm_atomic_uapi.h
2.166 KB
November 06 2023 09:15:52
0 / 0
0644
drm_audio_component.h
3.533 KB
November 06 2023 09:15:52
0 / 0
0644
drm_auth.h
3.396 KB
November 06 2023 09:15:52
0 / 0
0644
drm_backport.h
10.174 KB
November 06 2023 09:15:52
0 / 0
0644
drm_blend.h
2.351 KB
November 06 2023 09:15:52
0 / 0
0644
drm_bridge.h
11.726 KB
November 06 2023 09:15:52
0 / 0
0644
drm_cache.h
2.843 KB
November 06 2023 09:15:52
0 / 0
0644
drm_client.h
2.799 KB
November 06 2023 09:15:52
0 / 0
0644
drm_color_mgmt.h
2.364 KB
November 06 2023 09:15:52
0 / 0
0644
drm_connector.h
43.663 KB
November 06 2023 09:15:52
0 / 0
0644
drm_crtc.h
39.406 KB
November 06 2023 09:15:52
0 / 0
0644
drm_crtc_helper.h
2.978 KB
November 06 2023 09:15:52
0 / 0
0644
drm_damage_helper.h
3.827 KB
November 06 2023 09:15:52
0 / 0
0644
drm_debugfs.h
3.358 KB
November 06 2023 09:15:52
0 / 0
0644
drm_debugfs_crc.h
2.659 KB
November 06 2023 09:15:52
0 / 0
0644
drm_device.h
6.156 KB
November 06 2023 09:15:52
0 / 0
0644
drm_displayid.h
2.783 KB
November 06 2023 09:15:52
0 / 0
0644
drm_dp_dual_mode_helper.h
4.426 KB
November 06 2023 09:15:52
0 / 0
0644
drm_dp_helper.h
53.182 KB
November 06 2023 09:15:52
0 / 0
0644
drm_dp_mst_helper.h
16.713 KB
November 06 2023 09:15:52
0 / 0
0644
drm_drv.h
21.855 KB
November 06 2023 09:15:52
0 / 0
0644
drm_dsc.h
13.993 KB
November 06 2023 09:15:52
0 / 0
0644
drm_edid.h
15.09 KB
November 06 2023 09:15:52
0 / 0
0644
drm_encoder.h
8.471 KB
November 06 2023 09:15:52
0 / 0
0644
drm_encoder_slave.h
6.457 KB
November 06 2023 09:15:52
0 / 0
0644
drm_fb_cma_helper.h
1.093 KB
November 06 2023 09:15:52
0 / 0
0644
drm_fb_helper.h
18.467 KB
November 06 2023 09:15:52
0 / 0
0644
drm_file.h
10.608 KB
November 06 2023 09:15:52
0 / 0
0644
drm_fixed.h
4.712 KB
November 06 2023 09:15:52
0 / 0
0644
drm_flip_work.h
3.008 KB
November 06 2023 09:15:52
0 / 0
0644
drm_fourcc.h
5.93 KB
November 06 2023 09:15:52
0 / 0
0644
drm_framebuffer.h
9.382 KB
November 06 2023 09:15:52
0 / 0
0644
drm_gem.h
10.829 KB
November 06 2023 09:15:52
0 / 0
0644
drm_gem_cma_helper.h
4.396 KB
November 06 2023 09:15:52
0 / 0
0644
drm_gem_framebuffer_helper.h
1.335 KB
November 06 2023 09:15:52
0 / 0
0644
drm_hashtab.h
3.011 KB
November 06 2023 09:15:52
0 / 0
0644
drm_hdcp.h
7.163 KB
November 06 2023 09:15:52
0 / 0
0644
drm_ioctl.h
6.065 KB
November 06 2023 09:15:52
0 / 0
0644
drm_irq.h
1.292 KB
November 06 2023 09:15:52
0 / 0
0644
drm_lease.h
1.432 KB
November 06 2023 09:15:52
0 / 0
0644
drm_legacy.h
6.77 KB
November 06 2023 09:15:52
0 / 0
0644
drm_mipi_dsi.h
10.459 KB
November 06 2023 09:15:52
0 / 0
0644
drm_mm.h
17.377 KB
November 06 2023 09:15:52
0 / 0
0644
drm_mode_config.h
29.939 KB
November 06 2023 09:15:52
0 / 0
0644
drm_mode_object.h
5.17 KB
November 06 2023 09:15:52
0 / 0
0644
drm_modes.h
18.52 KB
November 06 2023 09:15:52
0 / 0
0644
drm_modeset_helper.h
1.688 KB
November 06 2023 09:15:52
0 / 0
0644
drm_modeset_helper_vtables.h
48.672 KB
November 06 2023 09:15:52
0 / 0
0644
drm_modeset_lock.h
6.38 KB
November 06 2023 09:15:52
0 / 0
0644
drm_of.h
3.367 KB
November 06 2023 09:15:52
0 / 0
0644
drm_os_linux.h
2.043 KB
November 06 2023 09:15:52
0 / 0
0644
drm_panel.h
7.082 KB
November 06 2023 09:15:52
0 / 0
0644
drm_pci.h
2.226 KB
November 06 2023 09:15:52
0 / 0
0644
drm_pciids.h
66.475 KB
November 06 2023 09:15:52
0 / 0
0644
drm_plane.h
26.25 KB
November 06 2023 09:15:52
0 / 0
0644
drm_plane_helper.h
1.745 KB
November 06 2023 09:15:52
0 / 0
0644
drm_prime.h
3.79 KB
November 06 2023 09:15:52
0 / 0
0644
drm_print.h
12.398 KB
November 06 2023 09:15:52
0 / 0
0644
drm_property.h
11.494 KB
November 06 2023 09:15:52
0 / 0
0644
drm_rect.h
5.845 KB
November 06 2023 09:15:52
0 / 0
0644
drm_scdc_helper.h
4.338 KB
November 06 2023 09:15:52
0 / 0
0644
drm_simple_kms_helper.h
6.041 KB
November 06 2023 09:15:52
0 / 0
0644
drm_syncobj.h
4.284 KB
November 06 2023 09:15:52
0 / 0
0644
drm_sysfs.h
0.28 KB
November 06 2023 09:15:52
0 / 0
0644
drm_util.h
1.355 KB
November 06 2023 09:15:52
0 / 0
0644
drm_utils.h
0.405 KB
November 06 2023 09:15:52
0 / 0
0644
drm_vblank.h
6.684 KB
November 06 2023 09:15:52
0 / 0
0644
drm_vma_manager.h
7.654 KB
November 06 2023 09:15:52
0 / 0
0644
drm_writeback.h
3.423 KB
November 06 2023 09:15:52
0 / 0
0644
gma_drm.h
1.009 KB
November 06 2023 09:15:52
0 / 0
0644
gpu_scheduler.h
12.498 KB
November 06 2023 09:15:52
0 / 0
0644
i915_component.h
1.685 KB
November 06 2023 09:15:52
0 / 0
0644
i915_drm.h
3.638 KB
November 06 2023 09:15:52
0 / 0
0644
i915_pciids.h
16.013 KB
November 06 2023 09:15:52
0 / 0
0644
intel-gtt.h
0.953 KB
November 06 2023 09:15:52
0 / 0
0644
intel_lpe_audio.h
1.717 KB
November 06 2023 09:15:52
0 / 0
0644
spsc_queue.h
3.058 KB
November 06 2023 09:15:52
0 / 0
0644