1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-04-27 23:22:37 +02:00

97 Commits

Author SHA1 Message Date
Carl-Daniel Hailfinger
a06287c9a0 Switch SST49LF004A/B to block erase, remove the hack which simulated (unsupported) chip erase
Annotate SST49LF004B quirks for TBL#.

Add TEST_OK_PRW which is useful when a PREW chip gets a new erase
routine.

Change a few erase function prototypes to use unsigned int instead of
int.

Corresponding to flashrom svn r731.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Luc Verhaegen <libv@skynet.be>
2009-09-23 22:01:33 +00:00
Uwe Hermann
04aa59a864 Standardize on using __func__ instead of __FUNCTION__
The __func__ variant is standardized in C99 and recommended to be
used instead of __FUNCTION__ in the gcc info page.

Only _very_ old versions of gcc did not know about __func__, but we've
been using both __func__ and __FUNCTION__ for a long while now, and
nobody complained about this, so all our users seem to use recent
enough compilers.

Corresponding to flashrom svn r711.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
2009-09-02 22:09:00 +00:00
Carl-Daniel Hailfinger
414bd320ac Verbose probe output is split across multiple lines for some probe functions
This makes visual inspection and grepping a lot harder than necessary.
Remove line breaks where appropriate. Some error messages should end up
on stderr instead of just being displayed in verbose mode.

Thanks to Maciej Pijanka for testing.

Corresponding to flashrom svn r660.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
2009-07-23 01:33:43 +00:00
Urja Rannikko
0c854c0509 Change chip_readb in loop to use verify_range in write_page_write_jedec (jedec.c)
Tested by Urja Rannikko with external flasher.
Tested by Uwe Hermann with onboard flash.

Corresponding to flashrom svn r632.

Signed-off-by: Urja Rannikko <urjaman@gmail.com>
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Urja Rannikko <urjaman@gmail.com>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
2009-06-25 13:57:31 +00:00
Carl-Daniel Hailfinger
30f7cb2f3c Flashrom only checks for very few chips if the erase worked
And even when it checks if the erase worked, the result of that check is
often ignored.

Convert all erase functions and actually check return codes
almost everywhere.
Check inside all erase_* routines if erase worked, not outside.
erase_sector_jedec and erase_block_jedec have changed prototypes to
enable erase checking.

Uwe successfully tested LPC on an CK804 box and SPI on some SB600 box.

Corresponding to flashrom svn r595.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Signed-off-by: Urja Rannikko <urjaman@gmail.com>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
2009-06-15 17:23:36 +00:00
Carl-Daniel Hailfinger
ca8bfc6c22 Add programmer-specific delay functions
Add external programmer delay functions so external programmers can
handle the delay on their own if needed.

Corresponding to flashrom svn r578.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Urja Rannikko <urjaman@gmail.com>
2009-06-05 17:48:08 +00:00
Maciej Pijanka
c6e1111bed Add probe_timing information (int uS value)
This eliminates the conflicting delay requirements for old and new chips
with the same probing sequence.

Corresponding to flashrom svn r569.

Signed-off-by: Maciej Pijanka <maciej.pijanka@gmail.com>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
2009-06-03 14:46:22 +00:00
Uwe Hermann
2cac6860c3 Drop unused/duplicated #includes and some dead code
Build-tested on 32bit x86.

Corresponding to flashrom svn r521.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
2009-05-16 22:05:42 +00:00
Carl-Daniel Hailfinger
5820f42ef2 Introduce a type "chipaddr" to abstract the offsets within flash regions
Use chipaddr instead of volatile uint8_t * because when we access chips
in external flashers, they are not accessed via pointers at all.

Benefits: This allows us to differentiate between volatile machine
memory accesses and flash chip accesses. It also enforces usage
of chip_{read,write}[bwl] to access flash chips, so nobody will
unintentionally use pointers to access chips anymore. Some unneeded
casts are removed as well. Grepping for chip operations and machine
memory operations doesn't yield any false positives anymore.

Compile tested on 32 bit and 64 bit Linux.

Corresponding to flashrom svn r519.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
2009-05-16 21:22:56 +00:00
Carl-Daniel Hailfinger
01624f40ee Use helper functions chip_{read,write}[bwl] to access flash chips
The semantic patch I used in r418 to make the original conversion to
accessor functions was missing one isomorphism:
a[b] <=> *(a+b)

The semantic patcher Coccinelle was used to create this patch. Semantic
patch follows:
@@
typedef uint8_t;
expression a;
volatile uint8_t *b;
@@
- b[a]
+ *(b + a)
@@
expression a;
volatile uint8_t *b;
@@
- *(b) = (a);
+ chip_writeb(a, b);
@@
volatile uint8_t *b;
@@
- *(b)
+ chip_readb(b)
@@
type T;
T b;
@@
(
 chip_readb
|
 chip_writeb
)
 (...,
- (T)
- (b)
+ b
 )

Corresponding to flashrom svn r498.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
2009-05-12 15:38:55 +00:00
Carl-Daniel Hailfinger
8130f2d3ec Check probing results for flash contents
When flashrom JEDEC code sends the ID command to the chip, it expects to
see IDs in the default flash location.

However, sometimes the chip does not react to the ID command, either
because it doesn't understand the command or because the command never
reached it. One way to detect this is to compare ID output with flash
chip contents for the same location. If they are identical, there is a
high chance you're not actually seeing ID output. Warn the user in that
case.

This patch helps a lot when a chip is not recognized and we want to
check if the probe responses are real IDs or just random flash chip
contents.

This should probably be added to all probe functions, but probe_jedec
is called for all sizes and thus flashrom will check this condition at
least once per size, making sure we can cross-match the warning.

Corresponding to flashrom svn r494.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: FENG Yu Ning <fengyuning1984@gmail.com>
2009-05-11 14:40:31 +00:00
Carl-Daniel Hailfinger
0472f3d826 FreeBSD definitions of (read|write)[bwl] collide with our own
Before we attempt trickery, we can simply rename the accessor functions.

Patch created with the help of Coccinelle.

Corresponding to flashrom svn r420 and coreboot v2 svn r3984.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Idwer Vollering <idwer_v@hotmail.com>
Acked-by: Patrick Georgi <patrick@georgi-clan.de>
2009-03-06 22:26:00 +00:00
Carl-Daniel Hailfinger
61a8bd27fb Use helper functions to access flash chips
Right now we perform direct pointer manipulation without any abstraction
to read from and write to memory mapped flash chips. That makes it
impossible to drive any flasher which does not mmap the whole chip.

Using helper functions readb() and writeb() allows a driver for external
flash programmers like Paraflasher to replace readb and writeb with
calls to its own chip access routines.

This patch has the additional advantage of removing lots of unnecessary
casts to volatile uint8_t * and now-superfluous parentheses which caused
poor readability.

I used the semantic patcher Coccinelle to create this patch. The
semantic patch follows:
@@
expression a;
typedef uint8_t;
volatile uint8_t *b;
@@
- *(b) = (a);
+ writeb(a, b);
@@
volatile uint8_t *b;
@@
- *(b)
+ readb(b)
@@
type T;
T b;
@@
(
 readb
|
 writeb
)
 (...,
- (T)
- (b)
+ b
 )

In contrast to a sed script, the semantic patch performs type checking
before converting anything.

Tested-by: Joe Julian

Corresponding to flashrom svn r418 and coreboot v2 svn r3971.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: FENG Yu Ning <fengyuning1984@gmail.com>
2009-03-05 19:24:22 +00:00
Peter Stuge
5cafc33831 Beautify flash chip ID verbose printout a little, always use %02x
Corresponding to flashrom svn r390 and coreboot v2 svn r3895.

Signed-off-by: Peter Stuge <peter@stuge.se>
Acked-by: Peter Stuge <peter@stuge.se>
2009-01-25 23:52:45 +00:00
Peter Stuge
8653b00461 Increase delay in probe_jedec() after Product ID Entry to 10ms
We should follow data sheet timing, even if chips have been tested to answer
faster in the field.

Corresponding to flashrom svn r273 and coreboot v2 svn r3387.

Signed-off-by: Peter Stuge <peter@stuge.se>
Acked-by: Peter Stuge <peter@stuge.se>
2008-06-24 02:09:09 +00:00
Peter Stuge
bc0d857228 Update comment to match delay change in probe_jedec() r3373
Corresponding to flashrom svn r264 and coreboot v2 svn r3375.

Signed-off-by: Peter Stuge <peter@stuge.se>
Acked-by: Peter Stuge <peter@stuge.se>
2008-06-21 01:02:20 +00:00
Peter Stuge
6a9fd1dc8c Increase delay in probe_jedec() to 2ms to reliably detect AT29C020
Run time is increased a few 100ms but this is needed for reliability.
I consider this trivial.

Corresponding to flashrom svn r262 and coreboot v2 svn r3373.

Signed-off-by: Peter Stuge <peter@stuge.se>
Acked-by: Peter Stuge <peter@stuge.se>
2008-06-21 00:19:52 +00:00
Carl-Daniel Hailfinger
a758f5100d Check the JEDEC vendor ID for correct parity
Flash chips which can be detected by JEDEC probe routines all have
vendor IDs with correct parity. Use a parity check as additional hint
whether a vendor ID makes sense. Note: Device IDs have no parity
requirements whatsoever.

Corresponding to flashrom svn r231 and coreboot v2 svn r3308.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Peter Stuge <peter@stuge.se>
2008-05-14 12:03:06 +00:00
Carl-Daniel Hailfinger
ae8afa9ddb Add continuation ID support to jedec.c
The continuation ID code does not go further than checking for IDs of
the type 0x7fXX, but does this for vendor and product ID. The current
published JEDEC spec has a list where the largest vendor ID is 7 bytes
long, but all leading bytes are 0x7f. The list will grow in the future,
and using a 64bit variable will not be enough anymore.
Besides that, it seems that the location of the ID byte after the first
continuation ID byte is very vendor specific, so we may have to revisit
that code some time in the future.

(Suggestion for a new encoding:
Use a two-byte data type for the ID, the lower byte contains the only
non-0x7f byte, the upper byte contains the number of 0x7f bytes used as
prefix, which is the bank number minus 1 the vendor ID appears in.)

Add support for EON EN29F002AT.

Corresponding to flashrom svn r171 and coreboot v2 svn r3030.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Corey Osgood <corey.osgood@gmail.com>
2007-12-31 01:49:00 +00:00
Carl-Daniel Hailfinger
03d2826d21 Fix ATMEL 29C020 detection with flashrom
The JEDEC probe routine had a delay of 10 us after entering ID mode
and this was insufficient for the 29C020. The data sheet claims we
have to wait 10 ms, but tests have shown that 20 us suffice. Allow for
variations in chip delays with a factor of 2 safety margin.

Corresponding to flashrom svn r159 and coreboot v2 svn r2962.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Peter Stuge <peter@stuge.se>
2007-11-13 14:56:54 +00:00
Uwe Hermann
a502dcea3d Some cosmetic cleanups in the flashrom code and output
Corresponding to flashrom svn r151 and coreboot v2 svn r2873.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
2007-10-17 23:55:15 +00:00
Ronald G. Minnich
fa49692869 Changes to support the K8N-NEO3, first tested at Google on GSOC day :-)
Also minor changes to remove tab-space combinations where possible. 

Corresponding to flashrom svn r144 and coreboot v2 svn r2850.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
Signed-off-by: David Hendricks <david.hendricks@gmail.com>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
2007-10-12 21:22:40 +00:00
Uwe Hermann
d22a1d4e53 Add '(C)' where it's missing (for consistency reasons)
Corresponding to flashrom svn r136 and coreboot v2 svn r2768.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
2007-09-09 20:21:05 +00:00
Uwe Hermann
d110764ccd Change all flashrom license headers to use our standard format
No changes in content of the files.

Corresponding to flashrom svn r131 and coreboot v2 svn r2751.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
2007-08-29 17:52:32 +00:00
Uwe Hermann
ffec5f3ab7 Cosmetic fixes
Corresponding to flashrom svn r130 and coreboot v2 svn r2748.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
2007-08-23 16:08:21 +00:00
Uwe Hermann
0846f89b0a Drop a bunch of useless header files, merge them into flash.h
Corresponding to flashrom svn r128 and coreboot v2 svn r2746.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
2007-08-23 13:34:59 +00:00
Uwe Hermann
51582f282b Move code into *.c files, there's no reason to have it in header files
Corresponding to flashrom svn r127 and coreboot v2 svn r2745.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
2007-08-23 10:20:40 +00:00
Stefan Reinauer
ce532975cb Big cosmetic offensive on flashrom
* Give decent names to virt_addr and virt_addr_2
* add some comments
* move virtual addresses to the end of the struct,
  so they dont mess up the initializer.

Corresponding to flashrom svn r111 and coreboot v2 svn r2689.

Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
2007-05-23 17:20:56 +00:00
Uwe Hermann
a7e0548cea Fix coding style of flashrom by running indent on all files
indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs *.[ch]

Some minor fixups were required, and maybe a few more cosmetic
changes are needed.

Corresponding to flashrom svn r108 and coreboot v2 svn r2643.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
2007-05-09 10:17:44 +00:00
Giampiero Giancipoli
8c5299f83c Fix write_page_write_jedec() in jedec.c
Added a check-reprogram loop in the same function, to come around the
high page write failure rate on some boards.

This patch includes the changes suggested by Ron to simplify the control
flow.

It also includes trivial changes by me to make flashrom build on newer
systems (libpci needs libz now). I also made a small type case compile
fix and proper return code handling in one or two places.

Corresponding to flashrom svn r78 and coreboot v2 svn r2505.

Signed-off-by: Giampiero Giancipoli <gianci@email.it>
Signed-off-by: Ronald G Minnich <rminnich@gmail.com>
Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
2006-11-22 00:29:51 +00:00
Stefan Reinauer
028f46fd2e Removing $Id$ tags as they have no meaning in SVN
Corresponding to flashrom svn r60 and coreboot v2 svn r2386.
2006-08-23 14:33:54 +00:00
Ollie Lho
184a404033 Flashrom update from Stefan, resolve issue 21
Corresponding to flashrom svn r34 and coreboot v2 svn r2111.
2005-11-26 21:55:36 +00:00
Ollie Lho
efa28589b1 Add -E option for chip erase, remove duplicated code
Corresponding to flashrom svn r30 and coreboot v2 svn r1815.
2004-12-08 20:10:01 +00:00
Ollie Lho
1b8b66000f Add retry to write_byte_program_jedec(), 99% success rate
Corresponding to flashrom svn r29 and coreboot v2 svn r1814.
2004-12-08 02:10:33 +00:00
Ollie Lho
98bea8aba5 SST49LF00[2,3,4] should use the same driver as 49LF008
Corresponding to flashrom svn r27 and coreboot v2 svn r1812.
2004-12-07 03:15:51 +00:00
Ronald G. Minnich
1f4d653d8c Support for sst firmware hub
Corresponding to flashrom svn r25 and coreboot v2 svn r1651.
2004-09-30 16:37:01 +00:00
Ollie Lho
afdfce8cbc Data type consistence
Corresponding to flashrom svn r20 and coreboot v2 svn r1487.
2004-03-27 00:31:03 +00:00
Ollie Lho
8b8897a5fd Remove false alarm of erase/write, use verify '-v' if you are not sure about the integrity
Corresponding to flashrom svn r19 and coreboot v2 svn r1486.
2004-03-27 00:18:15 +00:00
Ollie Lho
070647d114 More jedec standard consolidation
Corresponding to flashrom svn r18 and coreboot v2 svn r1464.
2004-03-22 22:19:17 +00:00
Ollie Lho
3a3dea7260 Remove unused #define and function declaration
Corresponding to flashrom svn r17 and coreboot v2 svn r1459.
2004-03-20 17:39:43 +00:00
Ollie Lho
761bf1bdb7 Consolidate more jedec standard code
Corresponding to flashrom svn r15 and coreboot v2 svn r1457.
2004-03-20 16:46:10 +00:00
Ollie Lho
73eca80d9b Remove duplicated code
Corresponding to flashrom svn r14 and coreboot v2 svn r1456.
2004-03-19 22:10:07 +00:00
Ronald G. Minnich
eaab50bb32 Changes from NIKI
Corresponding to coreboot v1 svn r873.
2003-09-12 22:41:53 +00:00
Ronald G. Minnich
d4228fdc47 Made the ids always print in hex less verbose verify step
Corresponding to coreboot v1 svn r752.
2003-02-28 17:21:38 +00:00
Ronald G. Minnich
5643942750 Can now burn 82802ab
Corresponding to coreboot v1 svn r633.
2002-09-06 16:58:14 +00:00
Ronald G. Minnich
ef5779d1dd Fixes
- switch to volatile everywhere
 - use myusec_delay instead of usleep

Corresponding to coreboot v1 svn r492.
2002-01-29 20:18:02 +00:00
Ronald G. Minnich
5e5f75e559 Trying to make this general purpose user-land flash burner
Corresponding to coreboot v1 svn r489.
2002-01-29 18:21:41 +00:00