On Mon, Jun 15, 2009 at 12:26:46PM +0200, Carl-Daniel Hailfinger wrote:
> I wasn't really awake while changing that code. Sorry. Same for the
> other bugs you found.
> 
> Compared to your version, I changed the following:
> - Check inside all erase_*_jedec routines if erase worked, not outside.
> - Rename rv to ret. Most functions in flashrom call the return variable ret.
> - erase_sector_jedec and erase_block_jedec have changed prototypes to
> enable erase checking.
> - verify_range uses goto out_free to make sure we don't forget to free().
> - Convert all remaining erase functions and actually check return codes
> almost everywhere.
> 
> Urja, would you remind reviewing the whole patch again? At 1087 lines of
> manual conversions, it is too big for me to be 100% confident that I got
> everything right.
> 
> Signed-off-by: Carl-Daniel Hailfinger <[email protected]>

With the two bugfixes discussed on IRC this is:

Acked-by: Uwe Hermann <[email protected]>

I successfully tested LPC on an CK804 box and SPI on some sb600 box.

 
> +/* start is an offset to the base address of the flash chip */

Please start sentences with capital letter and end them with full stop
for consistency.


> +/* start is an offset to the base address of the flash chip */

Ditto.


> @@ -146,26 +156,41 @@
>       printf("total_size/page_size = %d\n", total_size / page_size);
>       for (i = 0; i < (total_size / page_size) - 1; i++) {
>               printf("%04d at address: 0x%08x\n", i, i * page_size);
> -             block_erase_m29f400bt(bios, bios + i * page_size);
> +             if (block_erase_m29f400bt(flash, i * page_size, page_size)) {
> +                     fprintf(stderr, "ERASE FAILED!\n");
> +                     return -1;
> +             }
>               write_page_m29f400bt(bios, buf + i * page_size,
>                                    bios + i * page_size, page_size);
>               
> printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
>       }
>  
>       printf("%04d at address: 0x%08x\n", 7, 0x70000);
> -     block_erase_m29f400bt(bios, bios + 0x70000);
> +     if (block_erase_m29f400bt(flash, 0x70000, 32 * 1024)) {
> +             fprintf(stderr, "ERASE FAILED!\n");
> +             return -1;
> +     }
>       write_page_m29f400bt(bios, buf + 0x70000, bios + 0x70000, 32 * 1024);
>  
>       printf("%04d at address: 0x%08x\n", 8, 0x78000);
> -     block_erase_m29f400bt(bios, bios + 0x78000);
> +     if (block_erase_m29f400bt(flash, 0x78000, 8 * 1024)) {
> +             fprintf(stderr, "ERASE FAILED!\n");
> +             return -1;
> +     }
>       write_page_m29f400bt(bios, buf + 0x78000, bios + 0x78000, 8 * 1024);
>  
>       printf("%04d at address: 0x%08x\n", 9, 0x7a000);
> -     block_erase_m29f400bt(bios, bios + 0x7a000);
> +     if (block_erase_m29f400bt(flash, 0x7a000, 8 * 1024)) {
> +             fprintf(stderr, "ERASE FAILED!\n");
> +             return -1;
> +     }
>       write_page_m29f400bt(bios, buf + 0x7a000, bios + 0x7a000, 8 * 1024);
>  
>       printf("%04d at address: 0x%08x\n", 10, 0x7c000);
> -     block_erase_m29f400bt(bios, bios + 0x7c000);
> +     if (block_erase_m29f400bt(flash, 0x7c000, 16 * 1024)) {
> +             fprintf(stderr, "ERASE FAILED!\n");
> +             return -1;
> +     }

This code need some refactoring IMHO, we can easily make an array
of block sizes and loop over that (that's for another patch though).


Uwe.
-- 
http://www.hermann-uwe.de  | http://www.holsham-traders.de
http://www.crazy-hacks.org | http://www.unmaintained-free-software.org

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to