summaryrefslogtreecommitdiffstats
path: root/jedec.c
Commit message (Collapse)AuthorAgeFilesLines
* Change chip_readb in loop to use verify_range in write_page_write_jedec ↵Urja Rannikko2009-06-251-14/+8
| | | | | | | | | | | | | | (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>
* Flashrom only checks for very few chips if the erase workedCarl-Daniel Hailfinger2009-06-151-10/+23
| | | | | | | | | | | | | | | | | | | 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>
* Add programmer-specific delay functionsCarl-Daniel Hailfinger2009-06-051-26/+26
| | | | | | | | | | | 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>
* Add probe_timing information (int uS value)Maciej Pijanka2009-06-031-2/+18
| | | | | | | | | | 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>
* Drop unused/duplicated #includes and some dead codeUwe Hermann2009-05-161-2/+0
| | | | | | | | | 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>
* Introduce a type "chipaddr" to abstract the offsets within flash regionsCarl-Daniel Hailfinger2009-05-161-19/+19
| | | | | | | | | | | | | | | | | | | 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>
* Use helper functions chip_{read,write}[bwl] to access flash chipsCarl-Daniel Hailfinger2009-05-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Check probing results for flash contentsCarl-Daniel Hailfinger2009-05-111-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | 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>
* FreeBSD definitions of (read|write)[bwl] collide with our ownCarl-Daniel Hailfinger2009-03-061-50/+50
| | | | | | | | | | | | 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>
* Use helper functions to access flash chipsCarl-Daniel Hailfinger2009-03-051-50/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Beautify flash chip ID verbose printout a little, always use %02xPeter Stuge2009-01-251-1/+1
| | | | | | | 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>
* Increase delay in probe_jedec() after Product ID Entry to 10msPeter Stuge2008-06-241-3/+2
| | | | | | | | | | 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>
* Update comment to match delay change in probe_jedec() r3373Peter Stuge2008-06-211-1/+1
| | | | | | | 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>
* Increase delay in probe_jedec() to 2ms to reliably detect AT29C020Peter Stuge2008-06-211-1/+1
| | | | | | | | | | 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>
* Check the JEDEC vendor ID for correct parityCarl-Daniel Hailfinger2008-05-141-1/+12
| | | | | | | | | | | | 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>
* Add continuation ID support to jedec.cCarl-Daniel Hailfinger2007-12-311-2/+18
| | | | | | | | | | | | | | | | | | | | | | | 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>
* Fix ATMEL 29C020 detection with flashromCarl-Daniel Hailfinger2007-11-131-2/+6
| | | | | | | | | | | | 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>
* Some cosmetic cleanups in the flashrom code and outputUwe Hermann2007-10-171-2/+2
| | | | | | | 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>
* Changes to support the K8N-NEO3, first tested at Google on GSOC day :-)Ronald G. Minnich2007-10-121-1/+1
| | | | | | | | | | 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>
* Add '(C)' where it's missing (for consistency reasons)Uwe Hermann2007-09-091-3/+3
| | | | | | | 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>
* Change all flashrom license headers to use our standard formatUwe Hermann2007-08-291-17/+12
| | | | | | | | | 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>
* Cosmetic fixesUwe Hermann2007-08-231-7/+7
| | | | | | | 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>
* Drop a bunch of useless header files, merge them into flash.hUwe Hermann2007-08-231-2/+0
| | | | | | | 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>
* Move code into *.c files, there's no reason to have it in header filesUwe Hermann2007-08-231-0/+52
| | | | | | | 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>
* Big cosmetic offensive on flashromStefan Reinauer2007-05-231-3/+3
| | | | | | | | | | | | * 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>
* Fix coding style of flashrom by running indent on all filesUwe Hermann2007-05-091-49/+49
| | | | | | | | | | | | 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>
* Fix write_page_write_jedec() in jedec.cGiampiero Giancipoli2006-11-221-14/+49
| | | | | | | | | | | | | | | | | | | 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>
* Removing $Id$ tags as they have no meaning in SVNStefan Reinauer2006-08-231-1/+0
| | | | Corresponding to flashrom svn r60 and coreboot v2 svn r2386.
* Flashrom update from Stefan, resolve issue 21Ollie Lho2005-11-261-47/+49
| | | | Corresponding to flashrom svn r34 and coreboot v2 svn r2111.
* Add -E option for chip erase, remove duplicated codeOllie Lho2004-12-081-41/+21
| | | | Corresponding to flashrom svn r30 and coreboot v2 svn r1815.
* Add retry to write_byte_program_jedec(), 99% success rateOllie Lho2004-12-081-1/+7
| | | | Corresponding to flashrom svn r29 and coreboot v2 svn r1814.
* SST49LF00[2,3,4] should use the same driver as 49LF008Ollie Lho2004-12-071-17/+20
| | | | Corresponding to flashrom svn r27 and coreboot v2 svn r1812.
* Support for sst firmware hubRonald G. Minnich2004-09-301-0/+29
| | | | Corresponding to flashrom svn r25 and coreboot v2 svn r1651.
* Data type consistenceOllie Lho2004-03-271-7/+5
| | | | Corresponding to flashrom svn r20 and coreboot v2 svn r1487.
* Remove false alarm of erase/write, use verify '-v' if you are not sure about ↵Ollie Lho2004-03-271-14/+7
| | | | | | the integrity Corresponding to flashrom svn r19 and coreboot v2 svn r1486.
* More jedec standard consolidationOllie Lho2004-03-221-31/+37
| | | | Corresponding to flashrom svn r18 and coreboot v2 svn r1464.
* Remove unused #define and function declarationOllie Lho2004-03-201-3/+4
| | | | Corresponding to flashrom svn r17 and coreboot v2 svn r1459.
* Consolidate more jedec standard codeOllie Lho2004-03-201-70/+130
| | | | Corresponding to flashrom svn r15 and coreboot v2 svn r1457.
* Remove duplicated codeOllie Lho2004-03-191-26/+71
| | | | Corresponding to flashrom svn r14 and coreboot v2 svn r1456.
* Changes from NIKIRonald G. Minnich2003-09-121-1/+6
| | | | Corresponding to coreboot v1 svn r873.
* Made the ids always print in hex less verbose verify stepRonald G. Minnich2003-02-281-1/+1
| | | | Corresponding to coreboot v1 svn r752.
* Can now burn 82802abRonald G. Minnich2002-09-061-1/+5
| | | | Corresponding to coreboot v1 svn r633.
* FixesRonald G. Minnich2002-01-291-20/+21
| | | | | | | - switch to volatile everywhere - use myusec_delay instead of usleep Corresponding to coreboot v1 svn r492.
* Trying to make this general purpose user-land flash burnerRonald G. Minnich2002-01-291-0/+88
Corresponding to coreboot v1 svn r489.
OpenPOWER on IntegriCloud