FreeCalypso > hg > freecalypso-tools
diff 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 |
line wrap: on
line diff
--- a/loadtools/flashops.c Sat May 23 03:39:48 2020 +0000 +++ b/loadtools/flashops.c Fri Jun 05 06:46:21 2020 +0000 @@ -90,6 +90,7 @@ .unlock_sector = amd_invalid, .erase_sector = amd_sector_erase, .prep_for_program = noop, + .read_prot_reg = amd_invalid, .loadagent_setbase_cmd = "AMFB", .loadagent_program_cmd = "AMFW", .loadagent_binmode_cmd = "AMFWB", @@ -262,6 +263,25 @@ return(0); } +intel_read_prot_reg(bi, data) + struct flash_bank_info *bi; + uint16_t *data; +{ + int stat, i; + + if (do_w16(bi->base_addr, 0x90)) { + fprintf(stderr, + "unexpected response to w16 for Read ID command\n"); + return(-1); + } + for (i = 0; i < 9; i++) { + stat = do_r16(bi->base_addr + 0x100 + i * 2, data + i); + if (stat) + return(stat); /* error msg already printed */ + } + return(0); +} + struct flash_cmdset flash_cmdset_intel = { .cmdset_name = "Intel", .reset_cmd = intel_reset_cmd, @@ -269,6 +289,7 @@ .unlock_sector = intel_sector_unlock, .erase_sector = intel_sector_erase, .prep_for_program = intel_clear_sr, + .read_prot_reg = intel_read_prot_reg, .loadagent_setbase_cmd = "INFB", .loadagent_program_cmd = "INFW", .loadagent_binmode_cmd = "INFWB", @@ -282,6 +303,7 @@ .unlock_sector = intel_sector_unlock, .erase_sector = intel_sector_erase, .prep_for_program = intel_w30_clear_sr, + .read_prot_reg = intel_read_prot_reg, .loadagent_setbase_cmd = "INFB", .loadagent_program_cmd = "INFW", .loadagent_binmode_cmd = "INFWB",