87 lines
1.7 KiB
C
87 lines
1.7 KiB
C
#ifndef _IMR_TOC_H_
|
|
#define _IMR_TOC_H_
|
|
|
|
/*
|
|
* IMR Table of Contents format
|
|
*/
|
|
typedef struct {
|
|
uint32_t start_offset;
|
|
uint32_t size;
|
|
uint32_t reserved1;
|
|
uint32_t reserved2;
|
|
} imr_toc_entry_t;
|
|
|
|
typedef struct {
|
|
imr_toc_entry_t entries[8]; /* pick reasonable size to make gcc happy */
|
|
} imr_toc_t;
|
|
|
|
#define MAKE_TOC_VERSION(maj, min) ((min) << 16 | (maj))
|
|
typedef struct {
|
|
uint16_t toc_maj_ver;
|
|
uint16_t toc_min_ver;
|
|
} imr_toc_entry_version_t;
|
|
|
|
/*
|
|
* IMR6 values
|
|
*/
|
|
|
|
#define IMR6_TOC_MAGIC 0x6CD96EDB
|
|
|
|
#define IMR6_TOC_VERSION_MAJ 0x0001
|
|
#define IMR6_TOC_VERSION_MIN 0x0000
|
|
|
|
/* ToC entry order for IMR6 */
|
|
enum imr6_entries {
|
|
IMR_TOC_ENTRY_TOC = 0,
|
|
IMR_TOC_ENTRY_MTX_WB_BUF,
|
|
IMR_TOC_ENTRY_VXE_FW,
|
|
IMR_TOC_ENTRY_VXE_CTX_BUF,
|
|
IMR_TOC_ENTRY_VXE_SEC_PGTBLS,
|
|
IMR_TOC_ENTRY_PC_BUFS,
|
|
IMR_TOC_ENTRY_VXE_SHADOW_PGTBLS,
|
|
IMR_TOC_ENTRY_XEN_EXTRA,
|
|
};
|
|
|
|
|
|
/*
|
|
* IMR7 values
|
|
*/
|
|
|
|
#define IMR7_TOC_MAGIC 0x6ED96CDB
|
|
|
|
#define IMR7_TOC_VERSION_MAJ 0x0001
|
|
#define IMR7_TOC_VERSION_MIN 0x0000
|
|
|
|
/* ToC entry order for IMR7 */
|
|
enum imr7_entries {
|
|
/* IMR_TOC_ENTRY_TOC = 0, */
|
|
IMR_TOC_ENTRY_MAILBOXES = 1, /* contents per imr_ia_chaabi_mailbox_t */
|
|
IMR_TOC_ENTRY_IA_RUNTIME_FW,
|
|
IMR_TOC_ENTRY_XEN
|
|
};
|
|
|
|
/* entry-specific data structures */
|
|
|
|
#define IMR6_PC_BUFS_START_VADDR 0x11223344
|
|
|
|
typedef struct {
|
|
uint32_t hdcp_sess_status;
|
|
union {
|
|
struct {
|
|
uint32_t hdcp_sess_key_00_31;
|
|
uint32_t hdcp_sess_key_32_63;
|
|
uint32_t hdcp_sess_key_64_95;
|
|
uint32_t hdcp_sess_key_96_127;
|
|
};
|
|
uint8_t hdcp_sess_key[16];
|
|
};
|
|
union {
|
|
struct {
|
|
uint32_t hdcp_iv_00_31;
|
|
uint32_t hdcp_iv_32_63;
|
|
};
|
|
uint64_t hdcp_iv;
|
|
};
|
|
} imr_ia_chaabi_mailbox_t;
|
|
|
|
#endif
|