#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