Author: hailfinger Date: 2010-01-09 04:15:50 +0100 (Sat, 09 Jan 2010) New Revision: 840
Modified: trunk/flash.h trunk/jedec.c Log: 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 <[email protected]> Acked-by: Sean Nelson <[email protected]> Modified: trunk/flash.h =================================================================== --- trunk/flash.h 2010-01-09 02:24:17 UTC (rev 839) +++ trunk/flash.h 2010-01-09 03:15:50 UTC (rev 840) @@ -149,8 +149,10 @@ */ #define NUM_ERASEFUNCTIONS 5 -#define FEATURE_REGISTERMAP (1 << 0) -#define FEATURE_BYTEWRITES (1 << 1) +#define FEATURE_REGISTERMAP (1 << 0) +#define FEATURE_BYTEWRITES (1 << 1) +#define FEATURE_ADDR_FULL (0 << 2) +#define FEATURE_ADDR_MASK (3 << 2) struct flashchip { const char *vendor; Modified: trunk/jedec.c =================================================================== --- trunk/jedec.c 2010-01-09 02:24:17 UTC (rev 839) +++ trunk/jedec.c 2010-01-09 03:15:50 UTC (rev 840) @@ -373,6 +373,19 @@ 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 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) _______________________________________________ flashrom mailing list [email protected] http://www.flashrom.org/mailman/listinfo/flashrom
