Home | History | Annotate | Download | only in bootstub
      1 #ifndef _IMR_TOC_H_
      2 #define _IMR_TOC_H_
      3 
      4 /*
      5  * IMR Table of Contents format
      6  */
      7 typedef struct {
      8     uint32_t start_offset;
      9     uint32_t size;
     10     uint32_t reserved1;
     11     uint32_t reserved2;
     12 } imr_toc_entry_t;
     13 
     14 typedef struct {
     15     imr_toc_entry_t entries[8];    /* pick reasonable size to make gcc happy */
     16 } imr_toc_t;
     17 
     18 #define MAKE_TOC_VERSION(maj, min)  ((min) << 16 | (maj))
     19 typedef struct {
     20     uint16_t toc_maj_ver;
     21     uint16_t toc_min_ver;
     22 } imr_toc_entry_version_t;
     23 
     24 /*
     25  * IMR6 values
     26  */
     27 
     28 #define IMR6_TOC_MAGIC       0x6CD96EDB
     29 
     30 #define IMR6_TOC_VERSION_MAJ 0x0001
     31 #define IMR6_TOC_VERSION_MIN 0x0000
     32 
     33 /* ToC entry order for IMR6 */
     34 enum imr6_entries {
     35     IMR_TOC_ENTRY_TOC = 0,
     36     IMR_TOC_ENTRY_MTX_WB_BUF,
     37     IMR_TOC_ENTRY_VXE_FW,
     38     IMR_TOC_ENTRY_VXE_CTX_BUF,
     39     IMR_TOC_ENTRY_VXE_SEC_PGTBLS,
     40     IMR_TOC_ENTRY_PC_BUFS,
     41     IMR_TOC_ENTRY_VXE_SHADOW_PGTBLS,
     42     IMR_TOC_ENTRY_XEN_EXTRA,
     43 };
     44 
     45 
     46 /*
     47  * IMR7 values
     48  */
     49 
     50 #define IMR7_TOC_MAGIC       0x6ED96CDB
     51 
     52 #define IMR7_TOC_VERSION_MAJ 0x0001
     53 #define IMR7_TOC_VERSION_MIN 0x0000
     54 
     55 /* ToC entry order for IMR7 */
     56 enum imr7_entries {
     57     /* IMR_TOC_ENTRY_TOC = 0, */
     58     IMR_TOC_ENTRY_MAILBOXES = 1,     /* contents per imr_ia_chaabi_mailbox_t */
     59     IMR_TOC_ENTRY_IA_RUNTIME_FW,
     60     IMR_TOC_ENTRY_XEN
     61 };
     62 
     63 /* entry-specific data structures */
     64 
     65 #define IMR6_PC_BUFS_START_VADDR  0x11223344
     66 
     67 typedef struct {
     68     uint32_t hdcp_sess_status;
     69     union {
     70         struct {
     71 	    uint32_t hdcp_sess_key_00_31;
     72 	    uint32_t hdcp_sess_key_32_63;
     73 	    uint32_t hdcp_sess_key_64_95;
     74 	    uint32_t hdcp_sess_key_96_127;
     75 	};
     76         uint8_t hdcp_sess_key[16];
     77     };
     78     union {
     79         struct {
     80 	    uint32_t hdcp_iv_00_31;
     81 	    uint32_t hdcp_iv_32_63;
     82 	};
     83         uint64_t hdcp_iv;
     84     };
     85 } imr_ia_chaabi_mailbox_t;
     86 
     87 #endif
     88