summaryrefslogtreecommitdiff
path: root/utils/imxtools/sbtools/sb1.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/imxtools/sbtools/sb1.h')
-rw-r--r--utils/imxtools/sbtools/sb1.h46
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
72int sb1_sdram_size_by_index(int index); // returns - 1 on error
73int 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
90struct 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
74struct sb1_file_t 111struct 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
82enum sb1_error_t 124enum sb1_error_t