FreeCalypso > hg > freecalypso-tools
comparison loadtools/flashops.c @ 711:44cdfc4fed4c
fc-loadtool: flash prot-reg command implemented
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 05 Jun 2020 06:46:21 +0000 |
parents | 77a0001d8849 |
children |
comparison
equal
deleted
inserted
replaced
710:c1f72d807250 | 711:44cdfc4fed4c |
---|---|
88 .reset_cmd = amd_reset_cmd, | 88 .reset_cmd = amd_reset_cmd, |
89 .status_cmd = amd_invalid, | 89 .status_cmd = amd_invalid, |
90 .unlock_sector = amd_invalid, | 90 .unlock_sector = amd_invalid, |
91 .erase_sector = amd_sector_erase, | 91 .erase_sector = amd_sector_erase, |
92 .prep_for_program = noop, | 92 .prep_for_program = noop, |
93 .read_prot_reg = amd_invalid, | |
93 .loadagent_setbase_cmd = "AMFB", | 94 .loadagent_setbase_cmd = "AMFB", |
94 .loadagent_program_cmd = "AMFW", | 95 .loadagent_program_cmd = "AMFW", |
95 .loadagent_binmode_cmd = "AMFWB", | 96 .loadagent_binmode_cmd = "AMFWB", |
96 .needs_unlock = 0, | 97 .needs_unlock = 0, |
97 }; | 98 }; |
260 } | 261 } |
261 } | 262 } |
262 return(0); | 263 return(0); |
263 } | 264 } |
264 | 265 |
266 intel_read_prot_reg(bi, data) | |
267 struct flash_bank_info *bi; | |
268 uint16_t *data; | |
269 { | |
270 int stat, i; | |
271 | |
272 if (do_w16(bi->base_addr, 0x90)) { | |
273 fprintf(stderr, | |
274 "unexpected response to w16 for Read ID command\n"); | |
275 return(-1); | |
276 } | |
277 for (i = 0; i < 9; i++) { | |
278 stat = do_r16(bi->base_addr + 0x100 + i * 2, data + i); | |
279 if (stat) | |
280 return(stat); /* error msg already printed */ | |
281 } | |
282 return(0); | |
283 } | |
284 | |
265 struct flash_cmdset flash_cmdset_intel = { | 285 struct flash_cmdset flash_cmdset_intel = { |
266 .cmdset_name = "Intel", | 286 .cmdset_name = "Intel", |
267 .reset_cmd = intel_reset_cmd, | 287 .reset_cmd = intel_reset_cmd, |
268 .status_cmd = intel_status_cmd, | 288 .status_cmd = intel_status_cmd, |
269 .unlock_sector = intel_sector_unlock, | 289 .unlock_sector = intel_sector_unlock, |
270 .erase_sector = intel_sector_erase, | 290 .erase_sector = intel_sector_erase, |
271 .prep_for_program = intel_clear_sr, | 291 .prep_for_program = intel_clear_sr, |
292 .read_prot_reg = intel_read_prot_reg, | |
272 .loadagent_setbase_cmd = "INFB", | 293 .loadagent_setbase_cmd = "INFB", |
273 .loadagent_program_cmd = "INFW", | 294 .loadagent_program_cmd = "INFW", |
274 .loadagent_binmode_cmd = "INFWB", | 295 .loadagent_binmode_cmd = "INFWB", |
275 .needs_unlock = 1, | 296 .needs_unlock = 1, |
276 }; | 297 }; |
280 .reset_cmd = intel_w30_reset_cmd, | 301 .reset_cmd = intel_w30_reset_cmd, |
281 .status_cmd = intel_w30_status_cmd, | 302 .status_cmd = intel_w30_status_cmd, |
282 .unlock_sector = intel_sector_unlock, | 303 .unlock_sector = intel_sector_unlock, |
283 .erase_sector = intel_sector_erase, | 304 .erase_sector = intel_sector_erase, |
284 .prep_for_program = intel_w30_clear_sr, | 305 .prep_for_program = intel_w30_clear_sr, |
306 .read_prot_reg = intel_read_prot_reg, | |
285 .loadagent_setbase_cmd = "INFB", | 307 .loadagent_setbase_cmd = "INFB", |
286 .loadagent_program_cmd = "INFW", | 308 .loadagent_program_cmd = "INFW", |
287 .loadagent_binmode_cmd = "INFWB", | 309 .loadagent_binmode_cmd = "INFWB", |
288 .needs_unlock = 1, | 310 .needs_unlock = 1, |
289 }; | 311 }; |