summaryrefslogtreecommitdiff
path: root/jedec.c
diff options
context:
space:
mode:
authorhailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2010-01-09 03:15:50 +0000
committerhailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2010-01-09 03:15:50 +0000
commit5a7676de443e64e997abb8038bdd5dacb8ade4de (patch)
treeb1fd1a430202e2818df3bd4ff6168ded03d625c5 /jedec.c
parentb0c292c8c92529d7865ceddb0431c5902981c8a5 (diff)
downloadflashrom-5a7676de443e64e997abb8038bdd5dacb8ade4de.tar.gz
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 <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Sean Nelson <audiohacked@gmail.com> git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@840 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'jedec.c')
-rw-r--r--jedec.c18
1 files changed, 17 insertions, 1 deletions
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)