diff options
author | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2010-01-09 02:24:17 +0000 |
---|---|---|
committer | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2010-01-09 02:24:17 +0000 |
commit | e9404668a19701ace750148624378461bc9fece5 (patch) | |
tree | 522479a7a1cd5669f763de7e6b86aa7a93c60986 | |
parent | 3646c8f31fbb4f52cac04129b8d6898fb00e1eab (diff) | |
download | flashrom-e9404668a19701ace750148624378461bc9fece5.tar.gz flashrom-e9404668a19701ace750148624378461bc9fece5.tar.bz2 flashrom-e9404668a19701ace750148624378461bc9fece5.zip |
Use the register mapping feature bit
All functions which just call probe_jedec and then map flash registers
are replaced by probe_jedec. All functions which call probe_jedec, map
flash registers and do something else can at least eliminate mapping
flash registers.
Fix logic inversion in probe_jedec to map flash registers on success
instead of on failure.
Change a few TIMING_IGNORED to TIMING_FIXME where probe_jedec is used.
Total savings: One probe function simplified, three probe functions
eliminated.
Corresponding to flashrom svn r839.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Michael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>
Acked-by: Sean Nelson <audiohacked@gmail.com>
-rw-r--r-- | flashchips.c | 38 | ||||
-rw-r--r-- | jedec.c | 6 | ||||
-rw-r--r-- | pm49fl00x.c | 10 | ||||
-rw-r--r-- | sst_fwhub.c | 2 | ||||
-rw-r--r-- | stm50flw0x0x.c | 12 | ||||
-rw-r--r-- | w39v080fa.c | 12 |
6 files changed, 29 insertions, 51 deletions
diff --git a/flashchips.c b/flashchips.c index e6c4b867..913e0305 100644 --- a/flashchips.c +++ b/flashchips.c @@ -827,7 +827,7 @@ struct flashchip flashchips[] = { .total_size = 64, .page_size = 128, .tested = TEST_OK_PRW, - .probe = probe_jedec, + .probe = probe_jedec, .probe_timing = 10000, /* 10mS, Enter=Exec */ .erase = NULL, .block_erasers = @@ -1252,8 +1252,9 @@ struct flashchip flashchips[] = { .model_id = AMIC_A49LF040A, .total_size = 512, .page_size = 64 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PREW, - .probe = probe_49fl00x, + .probe = probe_jedec, .probe_timing = TIMING_ZERO, /* routine is wrapper to probe_jedec (pm49fl00x.c) */ .erase = erase_49fl00x, .write = write_49fl00x, @@ -2473,8 +2474,9 @@ struct flashchip flashchips[] = { .model_id = PMC_49FL002, .total_size = 256, .page_size = 16 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PREW, - .probe = probe_49fl00x, + .probe = probe_jedec, .probe_timing = TIMING_ZERO, /* routine is wrapper to probe_jedec (pm49fl00x.c) */ .erase = erase_49fl00x, .write = write_49fl00x, @@ -2489,8 +2491,9 @@ struct flashchip flashchips[] = { .model_id = PMC_49FL004, .total_size = 512, .page_size = 64 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PREW, - .probe = probe_49fl00x, + .probe = probe_jedec, .probe_timing = TIMING_ZERO, /* routine is wrapper to probe_jedec (pm49fl00x.c) */ .erase = erase_49fl00x, .write = write_49fl00x, @@ -2980,6 +2983,7 @@ struct flashchip flashchips[] = { .model_id = SST_49LF002A, .total_size = 256, .page_size = 16 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PREW, .probe = probe_sst_fwhub, .probe_timing = 1, /* 150 ns | routine is wrapper to probe_jedec (sst_fwhub.c) */ @@ -2996,6 +3000,7 @@ struct flashchip flashchips[] = { .model_id = SST_49LF003A, .total_size = 384, .page_size = 64 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PR, .probe = probe_sst_fwhub, .probe_timing = 1, /* 150 ns | routine is wrapper to probe_jedec (sst_fwhub.c) */ @@ -3015,6 +3020,7 @@ struct flashchip flashchips[] = { .model_id = SST_49LF004A, .total_size = 512, .page_size = 64 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PREW, .probe = probe_sst_fwhub, .probe_timing = 1, /* 150 ns | routine is wrapper to probe_jedec (sst_fwhub.c) */ @@ -3060,6 +3066,7 @@ struct flashchip flashchips[] = { .model_id = SST_49LF008A, .total_size = 1024, .page_size = 64 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PREW, .probe = probe_sst_fwhub, .probe_timing = 1, /* 150 ns | routine is wrapper to probe_jedec (sst_fwhub.c) */ @@ -3156,6 +3163,7 @@ struct flashchip flashchips[] = { .model_id = SST_49LF040B, .total_size = 512, .page_size = 64 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PREW, .probe = probe_sst_fwhub, .probe_timing = 1, /* 150ns | routine is wrapper to probe_jedec (sst_fwhub.c) */ @@ -3498,8 +3506,9 @@ struct flashchip flashchips[] = { .model_id = ST_M50FLW040A, .total_size = 512, .page_size = 64 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_stm50flw0x0x, + .probe = probe_jedec, .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */ .erase = erase_stm50flw0x0x, .write = write_stm50flw0x0x, @@ -3514,8 +3523,9 @@ struct flashchip flashchips[] = { .model_id = ST_M50FLW040B, .total_size = 512, .page_size = 64 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_stm50flw0x0x, + .probe = probe_jedec, .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */ .erase = erase_stm50flw0x0x, .write = write_stm50flw0x0x, @@ -3530,8 +3540,9 @@ struct flashchip flashchips[] = { .model_id = ST_M50FLW080A, .total_size = 1024, .page_size = 64 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PREW, - .probe = probe_stm50flw0x0x, + .probe = probe_jedec, .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */ .erase = erase_stm50flw0x0x, .write = write_stm50flw0x0x, @@ -3546,8 +3557,9 @@ struct flashchip flashchips[] = { .model_id = ST_M50FLW080B, .total_size = 1024, .page_size = 64 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_stm50flw0x0x, + .probe = probe_jedec, .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */ .erase = erase_stm50flw0x0x, .write = write_stm50flw0x0x, @@ -4042,9 +4054,10 @@ struct flashchip flashchips[] = { .model_id = W_39V080FA, .total_size = 1024, .page_size = 64 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PREW, - .probe = probe_winbond_fwhub, - .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */ + .probe = probe_jedec, + .probe_timing = TIMING_FIXME, .erase = erase_winbond_fwhub, .write = write_winbond_fwhub, .read = read_memmapped, @@ -4058,9 +4071,10 @@ struct flashchip flashchips[] = { .model_id = W_39V080FA_DM, .total_size = 512, .page_size = 64 * 1024, + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_winbond_fwhub, - .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */ + .probe = probe_jedec, + .probe_timing = TIMING_FIXME, .erase = erase_winbond_fwhub, .write = write_winbond_fwhub, .read = read_memmapped, @@ -189,13 +189,13 @@ int probe_jedec_common(struct flashchip *flash, printf_debug(", id2 is normal flash content"); printf_debug("\n"); - if (largeid1 == flash->manufacture_id && largeid2 == flash->model_id) - return 1; + if (largeid1 != flash->manufacture_id || largeid2 != flash->model_id) + return 0; if (flash->feature_bits & FEATURE_REGISTERMAP) map_flash_registers(flash); - return 0; + return 1; } int erase_sector_jedec_common(struct flashchip *flash, unsigned int page, diff --git a/pm49fl00x.c b/pm49fl00x.c index 424b0ed4..9d104e27 100644 --- a/pm49fl00x.c +++ b/pm49fl00x.c @@ -36,16 +36,6 @@ void write_lockbits_49fl00x(chipaddr bios, int size, } } -int probe_49fl00x(struct flashchip *flash) -{ - int ret = probe_jedec(flash); - - if (ret == 1) - map_flash_registers(flash); - - return ret; -} - int erase_49fl00x(struct flashchip *flash) { int i; diff --git a/sst_fwhub.c b/sst_fwhub.c index 4a976e63..b29722f2 100644 --- a/sst_fwhub.c +++ b/sst_fwhub.c @@ -89,8 +89,6 @@ int probe_sst_fwhub(struct flashchip *flash) if (probe_jedec(flash) == 0) return 0; - map_flash_registers(flash); - for (i = 0; i < flash->total_size * 1024; i += flash->page_size) check_sst_fwhub_block_lock(flash, i); diff --git a/stm50flw0x0x.c b/stm50flw0x0x.c index 0ae6eb81..e90bbd2a 100644 --- a/stm50flw0x0x.c +++ b/stm50flw0x0x.c @@ -31,18 +31,6 @@ #include "flash.h" #include "flashchips.h" -int probe_stm50flw0x0x(struct flashchip *flash) -{ - int result = probe_jedec(flash); - - if (!result) - return result; - - map_flash_registers(flash); - - return 1; -} - static void wait_stm50flw0x0x(chipaddr bios) { chip_writeb(0x70, bios); diff --git a/w39v080fa.c b/w39v080fa.c index 311e55bf..8e846dc3 100644 --- a/w39v080fa.c +++ b/w39v080fa.c @@ -20,18 +20,6 @@ #include "flash.h" -int probe_winbond_fwhub(struct flashchip *flash) -{ - int result = probe_jedec(flash); - - if (!result) - return result; - - map_flash_registers(flash); - - return 1; -} - static int unlock_block_winbond_fwhub(struct flashchip *flash, int offset) { chipaddr wrprotect = flash->virtual_registers + offset + 2; |