diff options
Diffstat (limited to 'utils/imxtools/sbtools/sb1.h')
-rw-r--r-- | utils/imxtools/sbtools/sb1.h | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/utils/imxtools/sbtools/sb1.h b/utils/imxtools/sbtools/sb1.h index f0a7a4ebc8..8d8c2d2296 100644 --- a/utils/imxtools/sbtools/sb1.h +++ b/utils/imxtools/sbtools/sb1.h | |||
@@ -58,12 +58,20 @@ struct sb1_cmd_header_t | |||
58 | uint32_t addr; | 58 | uint32_t addr; |
59 | } __attribute__((packed)); | 59 | } __attribute__((packed)); |
60 | 60 | ||
61 | #define SB1_CMD_MAX_SIZE 0x1ff8 | ||
62 | |||
61 | #define SB1_CMD_SIZE(cmd) ((cmd) >> 21) | 63 | #define SB1_CMD_SIZE(cmd) ((cmd) >> 21) |
62 | #define SB1_CMD_CRITICAL(cmd) !!(cmd & (1 << 20)) | 64 | #define SB1_CMD_CRITICAL(cmd) !!(cmd & (1 << 20)) |
63 | #define SB1_CMD_BYTES(cmd) (((cmd) >> 6) & 0x3fff) | 65 | #define SB1_CMD_BYTES(cmd) (((cmd) >> 6) & 0x3fff) |
64 | #define SB1_CMD_DATATYPE(cmd) (((cmd) >> 4) & 0x3) | 66 | #define SB1_CMD_DATATYPE(cmd) (((cmd) >> 4) & 0x3) |
65 | #define SB1_CMD_BOOT(cmd) ((cmd) & 0xf) | 67 | #define SB1_CMD_BOOT(cmd) ((cmd) & 0xf) |
66 | 68 | ||
69 | #define SB1_ADDR_SDRAM_CS(addr) ((addr) & 0x3) | ||
70 | #define SB1_ADDR_SDRAM_SZ(addr) ((addr) >> 16) | ||
71 | |||
72 | int sb1_sdram_size_by_index(int index); // returns - 1 on error | ||
73 | int sb1_sdram_index_by_size(int size); // returns -1 on error | ||
74 | |||
67 | #define SB1_INST_LOAD 0x1 | 75 | #define SB1_INST_LOAD 0x1 |
68 | #define SB1_INST_FILL 0x2 | 76 | #define SB1_INST_FILL 0x2 |
69 | #define SB1_INST_JUMP 0x3 | 77 | #define SB1_INST_JUMP 0x3 |
@@ -71,12 +79,46 @@ struct sb1_cmd_header_t | |||
71 | #define SB1_INST_MODE 0x5 | 79 | #define SB1_INST_MODE 0x5 |
72 | #define SB1_INST_SDRAM 0x6 | 80 | #define SB1_INST_SDRAM 0x6 |
73 | 81 | ||
82 | #define SB1_DATATYPE_UINT32 0 | ||
83 | #define SB1_DATATYPE_UINT16 1 | ||
84 | #define SB1_DATATYPE_UINT8 2 | ||
85 | |||
86 | /******* | ||
87 | * API * | ||
88 | *******/ | ||
89 | |||
90 | struct sb1_inst_t | ||
91 | { | ||
92 | uint8_t cmd; | ||
93 | uint16_t size; | ||
94 | // <union> | ||
95 | struct | ||
96 | { | ||
97 | uint8_t chip_select; | ||
98 | uint8_t size_index; | ||
99 | }sdram; | ||
100 | uint8_t mode; | ||
101 | uint32_t addr; | ||
102 | // </union> | ||
103 | uint8_t datatype; | ||
104 | uint8_t critical; | ||
105 | // <union> | ||
106 | void *data; | ||
107 | uint32_t pattern; | ||
108 | // </union> | ||
109 | }; | ||
110 | |||
74 | struct sb1_file_t | 111 | struct sb1_file_t |
75 | { | 112 | { |
113 | uint32_t rom_version; | ||
114 | uint32_t pad2; // unknown meaning but copy it anyway ! | ||
115 | uint32_t drive_tag; | ||
76 | struct sb1_version_t product_ver; | 116 | struct sb1_version_t product_ver; |
77 | struct sb1_version_t component_ver; | 117 | struct sb1_version_t component_ver; |
78 | void *data; | 118 | int nr_insts; |
79 | int data_size; | 119 | struct sb1_inst_t *insts; |
120 | void *userdata; | ||
121 | int userdata_size; | ||
80 | }; | 122 | }; |
81 | 123 | ||
82 | enum sb1_error_t | 124 | enum sb1_error_t |