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 };