From 5a7676de443e64e997abb8038bdd5dacb8ade4de Mon Sep 17 00:00:00 2001 From: hailfinger Date: Sat, 9 Jan 2010 03:15:50 +0000 Subject: Use address mask in probe_jedec. This allows us to have one common probe_jedec function instead of half a dozen wrappers. The trick here is to have FEATURE_ADDR_FULL==0 and thus default to unmasked addresses. That way, we only have to annotate chips which need small address masks. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Sean Nelson git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@840 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- jedec.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'jedec.c') diff --git a/jedec.c b/jedec.c index 3a21539..055fbc3 100644 --- a/jedec.c +++ b/jedec.c @@ -373,6 +373,19 @@ retry: return failed; } +int getaddrmask(struct flashchip *flash) +{ + switch (flash->feature_bits & FEATURE_ADDR_MASK) { + case FEATURE_ADDR_FULL: + return MASK_FULL; + break; + default: + fprintf(stderr, "%s called with unknown mask\n", __func__); + return 0; + break; + } +} + int write_jedec(struct flashchip *flash, uint8_t *buf) { int i, failed = 0; @@ -438,7 +451,10 @@ int erase_chip_block_jedec(struct flashchip *flash, unsigned int addr, int probe_jedec(struct flashchip *flash) { - return probe_jedec_common(flash, MASK_FULL, 1); + int mask; + + mask = getaddrmask(flash); + return probe_jedec_common(flash, mask, 1); } int erase_sector_jedec(struct flashchip *flash, unsigned int page, unsigned int size) -- cgit v1.2.1