19 #define MB (1024*1024)
20 #define ERASE_REGION(num, size) (((size/256) << 16) | (num-1))
29 .interface_desc = 0x0,
30 .max_buf_write_size = 0x0,
32 .num_erase_regions = 1,
33 .erase_region_info = {
42 .interface_desc = 0x0,
43 .max_buf_write_size = 0x0,
45 .num_erase_regions = 1,
46 .erase_region_info = {
55 .interface_desc = 0x0,
56 .max_buf_write_size = 0x0,
58 .num_erase_regions = 1,
59 .erase_region_info = {
68 .interface_desc = 0x0,
69 .max_buf_write_size = 0x0,
71 .num_erase_regions = 1,
72 .erase_region_info = {
81 .interface_desc = 0x0,
82 .max_buf_write_size = 0x0,
84 .num_erase_regions = 1,
85 .erase_region_info = {
94 .interface_desc = 0x2,
95 .max_buf_write_size = 0x0,
97 .num_erase_regions = 1,
98 .erase_region_info = {
107 .interface_desc = 0x2,
108 .max_buf_write_size = 0x0,
110 .num_erase_regions = 4,
111 .erase_region_info = {
123 .interface_desc = 0x2,
124 .max_buf_write_size = 0x0,
126 .num_erase_regions = 4,
127 .erase_region_info = {
146 .interface_desc = 0x2,
147 .max_buf_write_size = 0x0,
149 .num_erase_regions = 1,
150 .erase_region_info = {
159 .interface_desc = 0x2,
160 .max_buf_write_size = 0x0,
162 .num_erase_regions = 1,
163 .erase_region_info = {
172 .interface_desc = 0x2,
173 .max_buf_write_size = 0x0,
175 .num_erase_regions = 1,
176 .erase_region_info = {
185 .interface_desc = 0x2,
186 .max_buf_write_size = 0x0,
188 .num_erase_regions = 1,
189 .erase_region_info = {
198 .interface_desc = 0x2,
199 .max_buf_write_size = 0x0,
201 .num_erase_regions = 1,
202 .erase_region_info = {
211 .interface_desc = 0x2,
212 .max_buf_write_size = 0x0,
214 .num_erase_regions = 1,
215 .erase_region_info = {
224 .interface_desc = 0x2,
225 .max_buf_write_size = 0x0,
227 .num_erase_regions = 1,
228 .erase_region_info = {
237 .interface_desc = 0x2,
238 .max_buf_write_size = 0x0,
240 .num_erase_regions = 1,
241 .erase_region_info = {
250 .interface_desc = 0x2,
251 .max_buf_write_size = 0x0,
253 .num_erase_regions = 4,
254 .erase_region_info = {
266 .interface_desc = 0x2,
267 .max_buf_write_size = 0x0,
269 .num_erase_regions = 4,
270 .erase_region_info = {
282 .interface_desc = 0x2,
283 .max_buf_write_size = 0x0,
285 .num_erase_regions = 4,
286 .erase_region_info = {
298 .interface_desc = 0x2,
299 .max_buf_write_size = 0x0,
301 .num_erase_regions = 4,
302 .erase_region_info = {
314 .interface_desc = 0x1,
315 .max_buf_write_size = 0x00,
317 .num_erase_regions = 4,
318 .erase_region_info = {
330 .interface_desc = 0x2,
331 .max_buf_write_size = 0x0,
333 .num_erase_regions = 4,
334 .erase_region_info = {
346 .interface_desc = 0x2,
347 .max_buf_write_size = 0x0,
349 .num_erase_regions = 4,
350 .erase_region_info = {
363 .interface_desc = 0x2,
364 .max_buf_write_size = 0x0,
366 .num_erase_regions = 4,
367 .erase_region_info = {
379 .interface_desc = 0x2,
380 .max_buf_write_size = 0x0,
382 .num_erase_regions = 4,
383 .erase_region_info = {
395 .interface_desc = 0x2,
396 .max_buf_write_size = 0x0,
398 .num_erase_regions = 4,
399 .erase_region_info = {
411 .interface_desc = 0x2,
412 .max_buf_write_size = 0x0,
414 .num_erase_regions = 3,
415 .erase_region_info = {
426 .interface_desc = 0x2,
427 .max_buf_write_size = 0x0,
429 .num_erase_regions = 3,
430 .erase_region_info = {
441 .interface_desc = 0x2,
442 .max_buf_write_size = 0x0,
444 .num_erase_regions = 4,
445 .erase_region_info = {
497 cfi_info->
qry[0] =
'Q';
498 cfi_info->
qry[1] =
'R';
499 cfi_info->
qry[2] =
'Y';
518 if (cfi_info->
pri_id == 0x2) {
521 pri_ext->
pri[0] =
'P';
522 pri_ext->
pri[1] =
'R';
523 pri_ext->
pri[2] =
'I';
545 }
else if ((cfi_info->
pri_id == 0x1) || (cfi_info->
pri_id == 0x3)) {
546 LOG_ERROR(
"BUG: non-CFI flashes using the Intel commandset are not yet supported");
#define CFI_STATUS_POLL_MASK_DQ6_DQ7
#define CFI_STATUS_POLL_MASK_DQ5_DQ6_DQ7
#define LOG_ERROR(expr ...)
#define ERASE_REGION(num, size)
void cfi_fixup_non_cfi(struct flash_bank *bank)
static const struct non_cfi non_cfi_flashes[]
uint8_t block_erase_timeout_typ
uint8_t num_erase_regions
uint8_t chip_erase_timeout_max
uint16_t max_buf_write_size
uint32_t * erase_region_info
uint8_t word_write_timeout_max
uint8_t word_write_timeout_typ
uint8_t buf_write_timeout_typ
uint8_t chip_erase_timeout_typ
uint8_t buf_write_timeout_max
uint8_t block_erase_timeout_max
uint8_t tmp_blk_unprotected
Provides details of a flash bank, available either on-chip or through a major interface.
uint8_t num_erase_regions
uint32_t erase_region_info[6]
uint16_t max_buf_write_size