You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
2.7 KiB

/*
* Copyright (c) Hisilicon Technologies Co., Ltd. 2020-2020. All rights reserved.
* Description: hdmirx mpi-part
* Author: hdmirx
* Create: 2020-06-19
*/
#ifndef __MPI_HDMIRX_H__
#define __MPI_HDMIRX_H__
#include "soc_log.h"
#include "drv_ioctl_hdmirx.h"
#include "drv_ioctl_sys.h"
#ifndef CONFIG_HDMIRX_EXCLUDE_HDCP
#include "uapi_cipher.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#undef LOG_MODULE_ID
#define LOG_MODULE_ID SOC_ID_HDMIRX
#define ext_err_hdmirx(fmt...) soc_log_err(fmt)
#define ext_info_hdmirx(fmt...) soc_log_info(fmt)
#ifndef CONFIG_HDMIRX_EXCLUDE_HDCP
#define HDMIRX_HDCP_ENC_PK_SZ 16
#define HDMIRX_HDCP_KEY_MAX_SZ 1024
#define HDMIRX_ALGORITHM_AES128_GCM 0x10
#define HDMIRX_ALGORITHM_SM4_CTR 0x11
#endif
typedef struct ext_mpi_hdmirx_ctx {
td_bool inited;
td_bool connected[EXT_DRV_HDMIRX_PORT_MAX];
td_s32 fd;
ext_drv_sig_status en_sig_status;
ext_sys_version sys_version;
} ext_mpi_hdmirx_ctx;
typedef struct {
td_u32 iapi_video_format;
ext_drv_pixel_format drv_video_format;
} ext_hdmirx_video_format_convert;
typedef struct {
ext_drv_hdmirx_aud_data_type drv_audio_format;
td_u32 iapi_audio_format;
} ext_hdmirx_audio_format_convert;
#ifndef CONFIG_HDMIRX_EXCLUDE_HDCP
typedef enum {
HDMIRX_HDCP_KEY_TYPE_OEM = 0,
HDMIRX_HDCP_KEY_TYPE_SOCT,
HDMIRX_HDCP_KEY_TYPE_MAX
} ext_hdmirx_hdcp_key_type;
enum {
HDMIRX_OTP_KEY_TYPE_SOCT,
HDMIRX_OTP_KEY_TYPE_RESERVED,
HDMIRX_OTP_KEY_TYPE_STBM,
HDMIRX_OTP_KEY_TYPE_CLEAR_PK
};
enum {
HDMIRX_HDCP14_TX_KEY = 0x10,
HDMIRX_HDCP14_RX_KEY = 0x11,
HDMIRX_HDCP22_RX_KEY = 0x12,
HDMIRX_HDCP22_TX_KEY = 0x13,
};
typedef struct {
td_u32 image_type;
td_u32 structure_version;
td_u32 data_type;
td_u32 key_area_offset;
td_u32 data_area_offset;
td_u32 data_area_length;
} ext_hdmirx_hdcp_package_header;
typedef struct {
td_u32 algorithm;
td_u32 otp_key_type;
td_u32 vendor_id;
td_u32 reserved;
td_u8 enc_pk[HDMIRX_HDCP_ENC_PK_SZ];
} ext_hdmirx_hdcp_package_pk;
typedef struct {
td_u8 manufacture_name[UAPI_CIPHER_HDCP_AES_GCM_AAD_LEN];
td_u8 iv[UAPI_CIPHER_HDCP_AES_GCM_IV_LEN];
td_u8 tag[UAPI_CIPHER_HDCP_AES_GCM_TAG_LEN];
td_u32 key_len;
td_u8 key[HDMIRX_HDCP_KEY_MAX_SZ];
} ext_hdmirx_hdcp_package_key;
typedef struct {
ext_hdmirx_hdcp_package_header header;
ext_hdmirx_hdcp_package_pk pk;
ext_hdmirx_hdcp_package_key key;
td_u32 crc32;
} ext_hdmirx_hdcp_package;
#endif
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __MPI_HDMIRX_H__ */