Author: stefanct
Date: Wed Dec 26 20:51:23 2012
New Revision: 1630
URL: http://flashrom.org/trac/flashrom/changeset/1630

Log:
Add general programmer sanity checks.

And remove the completely unused vendor field.

Signed-off-by: Stefan Tauner <[email protected]>
Acked-by: Carl-Daniel Hailfinger <[email protected]>

Modified:
   trunk/flashrom.c
   trunk/programmer.h

Modified: trunk/flashrom.c
==============================================================================
--- trunk/flashrom.c    Wed Dec 26 08:55:00 2012        (r1629)
+++ trunk/flashrom.c    Wed Dec 26 20:51:23 2012        (r1630)
@@ -1557,8 +1557,9 @@
 
 int selfcheck(void)
 {
-       int ret = 0;
        const struct flashchip *chip;
+       int i;
+       int ret = 0;
 
        /* Safety check. Instead of aborting after the first error, check
         * if more errors exist.
@@ -1567,6 +1568,32 @@
                msg_gerr("Programmer table miscompilation!\n");
                ret = 1;
        }
+       for (i = 0; i < PROGRAMMER_INVALID; i++) {
+               const struct programmer_entry p = programmer_table[i];
+               if (p.name == NULL) {
+                       msg_gerr("All programmers need a valid name, but the 
one with index %d does not!\n", i);
+                       ret = 1;
+                       /* This might hide other problems with this programmer, 
but allows for better error
+                        * messages below without jumping through hoops. */
+                       continue;
+               }
+               if (p.init == NULL) {
+                       msg_gerr("Programmer %s does not have a valid init 
function!\n", p.name);
+                       ret = 1;
+               }
+               if (p.delay == NULL) {
+                       msg_gerr("Programmer %s does not have a valid delay 
function!\n", p.name);
+                       ret = 1;
+               }
+               if (p.map_flash_region == NULL) {
+                       msg_gerr("Programmer %s does not have a valid 
map_flash_region function!\n", p.name);
+                       ret = 1;
+               }
+               if (p.unmap_flash_region == NULL) {
+                       msg_gerr("Programmer %s does not have a valid 
unmap_flash_region function!\n", p.name);
+                       ret = 1;
+               }
+       }
        /* It would be favorable if we could also check for correct termination
         * of the following arrays, but we don't know their sizes in here...
         * For 'flashchips' we check the first element to be non-null. In the

Modified: trunk/programmer.h
==============================================================================
--- trunk/programmer.h  Wed Dec 26 08:55:00 2012        (r1629)
+++ trunk/programmer.h  Wed Dec 26 20:51:23 2012        (r1630)
@@ -91,13 +91,11 @@
 };
 
 struct programmer_entry {
-       const char *vendor;
        const char *name;
 
        int (*init) (void);
 
-       void *(*map_flash_region) (const char *descr, unsigned long phys_addr,
-                                  size_t len);
+       void *(*map_flash_region) (const char *descr, unsigned long phys_addr, 
size_t len);
        void (*unmap_flash_region) (void *virt_addr, size_t len);
 
        void (*delay) (int usecs);

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

Reply via email to