also make serprog_map report if mapping doesnt fit
in the 24-bit address space of serprog.

Signed-off-by: Urja Rannikko <[email protected]>
---
The previous version didnt compile on 64-bit 
because size_t and -Werror ... thus v2.

---
 flashrom.c   |  2 +-
 programmer.h |  1 +
 serprog.c    | 12 ++++++++++++
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/flashrom.c b/flashrom.c
index a389cb2..d51a44c 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -212,7 +212,7 @@ const struct programmer_entry programmer_table[] = {
 					/* FIXME */
 		.devs.note		= "All programmer devices speaking the serprog protocol\n",
 		.init			= serprog_init,
-		.map_flash_region	= fallback_map,
+		.map_flash_region	= serprog_map,
 		.unmap_flash_region	= fallback_unmap,
 		.delay			= serprog_delay,
 	},
diff --git a/programmer.h b/programmer.h
index 913522b..3bf292d 100644
--- a/programmer.h
+++ b/programmer.h
@@ -706,6 +706,7 @@ int register_master(const struct registered_master *mst);
 #if CONFIG_SERPROG == 1
 int serprog_init(void);
 void serprog_delay(unsigned int usecs);
+void *serprog_map(const char *descr, uintptr_t phys_addr, size_t len);
 #endif
 
 /* serial.c */
diff --git a/serprog.c b/serprog.c
index 3de0182..8e4286a 100644
--- a/serprog.c
+++ b/serprog.c
@@ -943,3 +943,15 @@ static int serprog_spi_read(struct flashctx *flash, uint8_t *buf,
 	}
 	return 0;
 }
+
+void *serprog_map(const char *descr, uintptr_t phys_addr, size_t len)
+{
+	if ((phys_addr & 0xFF000000) == 0xFF000000) {
+		/* This is normal, no need to report anything. */
+		return (void*)phys_addr;
+	} else {
+		msg_pwarn(MSGHEADER "incompatible mapping %s, 0x%zx bytes at 0x%0*" PRIxPTR ", returning NULL\n",
+			descr, len, PRIxPTR_WIDTH, phys_addr);
+		return NULL;
+	}
+}
-- 
2.3.1


_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to