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",