Author: hailfinger Date: 2008-11-29 00:45:27 +0100 (Sat, 29 Nov 2008) New Revision: 3780
Modified: trunk/util/flashrom/flash.h trunk/util/flashrom/flashrom.c Log: If a chip has any TEST_BAD_* flag set, we don't even list the unsupported functions, giving the user the impression that the unsupported functions are tested.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net Acked-by: Peter Stuge peter@stuge.se
Modified: trunk/util/flashrom/flash.h =================================================================== --- trunk/util/flashrom/flash.h 2008-11-28 21:36:51 UTC (rev 3779) +++ trunk/util/flashrom/flash.h 2008-11-28 23:45:27 UTC (rev 3780) @@ -95,6 +95,7 @@ #define TEST_BAD_READ (1<<5) #define TEST_BAD_ERASE (1<<6) #define TEST_BAD_WRITE (1<<7) +#define TEST_BAD_PREW (TEST_BAD_PROBE|TEST_BAD_READ|TEST_BAD_ERASE|TEST_BAD_WRITE) #define TEST_BAD_MASK 0xf0
extern struct flashchip flashchips[]; @@ -106,7 +107,7 @@ * * All LPC/FWH parts (parallel flash) have 8-bit device IDs if there is no * continuation code. - * All SPI parts have 16-bit device IDs. + * SPI parts have 16-bit device IDs if they support RDID. */
#define GENERIC_DEVICE_ID 0xffff /* Only match the vendor ID */
Modified: trunk/util/flashrom/flashrom.c =================================================================== --- trunk/util/flashrom/flashrom.c 2008-11-28 21:36:51 UTC (rev 3779) +++ trunk/util/flashrom/flashrom.c 2008-11-28 23:45:27 UTC (rev 3780) @@ -499,15 +499,19 @@ if (flash->tested & TEST_BAD_WRITE) printf(" WRITE"); printf("\n"); - } else { + } + if ((!(flash->tested & TEST_BAD_PROBE) && !(flash->tested & TEST_OK_PROBE)) || + (!(flash->tested & TEST_BAD_READ) && !(flash->tested & TEST_OK_READ)) || + (!(flash->tested & TEST_BAD_ERASE) && !(flash->tested & TEST_OK_ERASE)) || + (!(flash->tested & TEST_BAD_WRITE) && !(flash->tested & TEST_OK_WRITE))) { printf("This flash part has status UNTESTED for operations:"); - if (!(flash->tested & TEST_OK_PROBE)) + if (!(flash->tested & TEST_BAD_PROBE) && !(flash->tested & TEST_OK_PROBE)) printf(" PROBE"); - if (!(flash->tested & TEST_OK_READ)) + if (!(flash->tested & TEST_BAD_READ) && !(flash->tested & TEST_OK_READ)) printf(" READ"); - if (!(flash->tested & TEST_OK_ERASE)) + if (!(flash->tested & TEST_BAD_ERASE) && !(flash->tested & TEST_OK_ERASE)) printf(" ERASE"); - if (!(flash->tested & TEST_OK_WRITE)) + if (!(flash->tested & TEST_BAD_WRITE) && !(flash->tested & TEST_OK_WRITE)) printf(" WRITE"); printf("\n"); }