18e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin#ifndef _IMR_TOC_H_ 28e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin#define _IMR_TOC_H_ 38e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 48e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin/* 58e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin * IMR Table of Contents format 68e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin */ 78e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugintypedef struct { 88e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint32_t start_offset; 98e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint32_t size; 108e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint32_t reserved1; 118e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint32_t reserved2; 128e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin} imr_toc_entry_t; 138e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 148e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugintypedef struct { 158e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin imr_toc_entry_t entries[8]; /* pick reasonable size to make gcc happy */ 168e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin} imr_toc_t; 178e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 188e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin#define MAKE_TOC_VERSION(maj, min) ((min) << 16 | (maj)) 198e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugintypedef struct { 208e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint16_t toc_maj_ver; 218e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint16_t toc_min_ver; 228e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin} imr_toc_entry_version_t; 238e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 248e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin/* 258e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin * IMR6 values 268e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin */ 278e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 288e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin#define IMR6_TOC_MAGIC 0x6CD96EDB 298e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 308e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin#define IMR6_TOC_VERSION_MAJ 0x0001 318e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin#define IMR6_TOC_VERSION_MIN 0x0000 328e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 338e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin/* ToC entry order for IMR6 */ 348e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kaluginenum imr6_entries { 358e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin IMR_TOC_ENTRY_TOC = 0, 368e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin IMR_TOC_ENTRY_MTX_WB_BUF, 378e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin IMR_TOC_ENTRY_VXE_FW, 388e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin IMR_TOC_ENTRY_VXE_CTX_BUF, 398e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin IMR_TOC_ENTRY_VXE_SEC_PGTBLS, 408e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin IMR_TOC_ENTRY_PC_BUFS, 418e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin IMR_TOC_ENTRY_VXE_SHADOW_PGTBLS, 428e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin IMR_TOC_ENTRY_XEN_EXTRA, 438e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin}; 448e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 458e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 468e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin/* 478e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin * IMR7 values 488e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin */ 498e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 508e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin#define IMR7_TOC_MAGIC 0x6ED96CDB 518e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 528e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin#define IMR7_TOC_VERSION_MAJ 0x0001 538e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin#define IMR7_TOC_VERSION_MIN 0x0000 548e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 558e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin/* ToC entry order for IMR7 */ 568e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kaluginenum imr7_entries { 578e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin /* IMR_TOC_ENTRY_TOC = 0, */ 588e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin IMR_TOC_ENTRY_MAILBOXES = 1, /* contents per imr_ia_chaabi_mailbox_t */ 598e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin IMR_TOC_ENTRY_IA_RUNTIME_FW, 608e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin IMR_TOC_ENTRY_XEN 618e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin}; 628e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 638e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin/* entry-specific data structures */ 648e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 658e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin#define IMR6_PC_BUFS_START_VADDR 0x11223344 668e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 678e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugintypedef struct { 688e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint32_t hdcp_sess_status; 698e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin union { 708e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin struct { 718e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint32_t hdcp_sess_key_00_31; 728e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint32_t hdcp_sess_key_32_63; 738e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint32_t hdcp_sess_key_64_95; 748e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint32_t hdcp_sess_key_96_127; 758e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin }; 768e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint8_t hdcp_sess_key[16]; 778e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin }; 788e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin union { 798e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin struct { 808e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint32_t hdcp_iv_00_31; 818e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint32_t hdcp_iv_32_63; 828e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin }; 838e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin uint64_t hdcp_iv; 848e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin }; 858e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin} imr_ia_chaabi_mailbox_t; 868e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin 878e8bf00a43ca772040ce02b2a8096d523171a8a4Evgeny Kalugin#endif 88