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

Reply via email to