From stefan.tauner at student.tuwien.ac.at Thu Mar 1 01:09:14 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Thu, 1 Mar 2012 01:09:14 +0100 Subject: [flashrom] Support for ASRock 890GX Extreme3 mainboard In-Reply-To: References: Message-ID: <201203010009.q2109Eae014679@mail2.student.tuwien.ac.at> On Wed, 29 Feb 2012 11:53:40 -0800 Svetoslav Trochev wrote: > Hi Everybody, > > I am new here, so my apology if I am doing something wrong. > I have ASRock 890GX Extreme3 mainboard. This board has ability to be > flashed using standard BIOS, but never the less I decided to test > Flashrom. > I read the "Board Testing HOWTO" [1]. First signs are that this board > will work out of the box with "flashrom v0.9.4-r1394 on Linux > 3.0.4-pmagic (i686), built with libpci 3.1.7, GCC 4.6.1, little > endian" > What I have done so far: > 1. Ran 'flashrom' command and it detected the chip: Winbond W25Q80. > 2. Ran 'flashrom -R xxxx.rom' and it completed with no errors. I > examine the file and it looks like normal ROM file. > 3. Ran 'flashrom -V' I am attaching the output. > 4. I try comparing the backup copy of the EEPROM with the original > file provided by ASRock. It is different. They have exact same header, > but quite different. > 5. Because I am not 100% sure that I have good backup I decided to > order spare chip and continue with the test later. ( I have external > EEPROM programmer ) I will continue this weekend. > > Thank you and any comments are welcome and highly appreciated, > Svetoslav Trochev > > [1] http://www.flashrom.org/Board_Testing_HOWTO the board works in general (not 100% sure about 0.9.4, but pretty confident it will do): http://flashrom.org/Supported_hardware#Supported_mainboards the differences in the files could come from runtime data that the bios stores in the flash (e.g. logging) or some board-specific settings (like mac addresses) which are not part of the vendor image. partly correct reads are possible but quite uncommon. if you really wanna be prepared to use the external programmer, make sure that it supports SPI chips. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Thu Mar 1 01:42:27 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 01 Mar 2012 01:42:27 +0100 Subject: [flashrom] [PATCH] Fix parallel-style programmer access from SPI Message-ID: <4F4EC5F3.6010005@gmx.net> Joey: This patch applies to current svn HEAD. Patch is untested, but it should work and not spit out any new error messages. RFC: Are those checks with abort a good idea or do they break stuff? exit(1) is not a nice thing for libflashrom, but then again, it's probably better than exploding. I'm also unsure about the parameter order of mmio_readn. The IT87 SPI driver has one quirk to speed up reading and writing: If a flash chip is 512 kByte or less, the flash chip can be completely mapped in memory and both read and write accesses are faster that way. The current IT87 SPI code did use the parallel programmer interface for memory mapped reads and writes, but that's the wrong abstraction. It has been fixed to use mmio_read*/mmio_write* for that purpose. Introduce sanity checks for all SPI/Parallel-style accesses before a possibly undefined union member is dereferenced. Signed-off-by: Carl-Daniel Hailfinger Index: flashrom-fix_par_programmer_access_from_spi/hwaccess.c =================================================================== --- flashrom-fix_par_programmer_access_from_spi/hwaccess.c (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/hwaccess.c (Arbeitskopie) @@ -169,6 +169,12 @@ return *(volatile uint32_t *) addr; } +void mmio_readn(void *addr, uint8_t *buf, size_t len) +{ + memcpy(buf, addr, len); + return; +} + void mmio_le_writeb(uint8_t val, void *addr) { mmio_writeb(cpu_to_le8(val), addr); Index: flashrom-fix_par_programmer_access_from_spi/flash.h =================================================================== --- flashrom-fix_par_programmer_access_from_spi/flash.h (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/flash.h (Arbeitskopie) @@ -247,6 +247,7 @@ void print_banner(void); void list_programmers_linebreak(int startcol, int cols, int paren); int selfcheck(void); +void shutdown_and_exit(int exitcode); int doit(struct flashctx *flash, int force, const char *filename, int read_it, int write_it, int erase_it, int verify_it); int read_buf_from_file(unsigned char *buf, unsigned long size, const char *filename); int write_buf_to_file(unsigned char *buf, unsigned long size, const char *filename); Index: flashrom-fix_par_programmer_access_from_spi/it87spi.c =================================================================== --- flashrom-fix_par_programmer_access_from_spi/it87spi.c (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/it87spi.c (Arbeitskopie) @@ -330,7 +330,7 @@ OUTB(0x06, it8716f_flashport + 1); OUTB(((2 + (fast_spi ? 1 : 0)) << 4), it8716f_flashport); for (i = 0; i < flash->page_size; i++) - chip_writeb(flash, buf[i], bios + start + i); + mmio_writeb(buf[i], (void *)(bios + start + i)); OUTB(0, it8716f_flashport); /* Wait until the Write-In-Progress bit is cleared. * This usually takes 1-10 ms, so wait in 1 ms steps. @@ -356,7 +356,7 @@ if ((flash->total_size * 1024 > 512 * 1024)) { spi_read_chunked(flash, buf, start, len, 3); } else { - read_memmapped(flash, buf, start, len); + mmio_readn((void *)(flash->virtual_memory + start), buf, len); } return 0; Index: flashrom-fix_par_programmer_access_from_spi/internal.c =================================================================== --- flashrom-fix_par_programmer_access_from_spi/internal.c (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/internal.c (Arbeitskopie) @@ -387,6 +387,6 @@ static void internal_chip_readn(const struct flashctx *flash, uint8_t *buf, const chipaddr addr, size_t len) { - memcpy(buf, (void *)addr, len); + mmio_readn((void *)addr, buf, len); return; } Index: flashrom-fix_par_programmer_access_from_spi/spi.c =================================================================== --- flashrom-fix_par_programmer_access_from_spi/spi.c (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/spi.c (Arbeitskopie) @@ -34,12 +34,22 @@ unsigned int readcnt, const unsigned char *writearr, unsigned char *readarr) { + if (!(flash->pgm->buses_supported & BUS_SPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } return flash->pgm->spi.command(flash, writecnt, readcnt, writearr, readarr); } int spi_send_multicommand(struct flashctx *flash, struct spi_command *cmds) { + if (!(flash->pgm->buses_supported & BUS_SPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } return flash->pgm->spi.multicommand(flash, cmds); } @@ -78,7 +88,13 @@ int default_spi_read(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len) { - unsigned int max_data = flash->pgm->spi.max_data_read; + unsigned int max_data; + if (!(flash->pgm->buses_supported & BUS_SPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } + max_data = flash->pgm->spi.max_data_read; if (max_data == MAX_DATA_UNSPECIFIED) { msg_perr("%s called, but SPI read chunk size not defined " "on this hardware. Please report a bug at " @@ -91,7 +107,13 @@ int default_spi_write_256(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len) { - unsigned int max_data = flash->pgm->spi.max_data_write; + unsigned int max_data; + if (!(flash->pgm->buses_supported & BUS_SPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } + max_data = flash->pgm->spi.max_data_write; if (max_data == MAX_DATA_UNSPECIFIED) { msg_perr("%s called, but SPI write chunk size not defined " "on this hardware. Please report a bug at " @@ -106,6 +128,11 @@ { unsigned int addrbase = 0; + if (!(flash->pgm->buses_supported & BUS_SPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } /* Check if the chip fits between lowest valid and highest possible * address. Highest possible address with the current SPI implementation * means 0xffffff, the highest unsigned 24bit number. @@ -138,6 +165,11 @@ int spi_chip_write_256(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len) { + if (!(flash->pgm->buses_supported & BUS_SPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } return flash->pgm->spi.write_256(flash, buf, start, len); } @@ -148,6 +180,11 @@ */ uint32_t spi_get_valid_read_addr(struct flashctx *flash) { + if (!(flash->pgm->buses_supported & BUS_SPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } switch (flash->pgm->spi.type) { #if CONFIG_INTERNAL == 1 #if defined(__i386__) || defined(__x86_64__) Index: flashrom-fix_par_programmer_access_from_spi/flashrom.c =================================================================== --- flashrom-fix_par_programmer_access_from_spi/flashrom.c (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/flashrom.c (Arbeitskopie) @@ -357,43 +357,83 @@ void chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr) { + if (!(flash->pgm->buses_supported & BUS_NONSPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } flash->pgm->par.chip_writeb(flash, val, addr); } void chip_writew(const struct flashctx *flash, uint16_t val, chipaddr addr) { + if (!(flash->pgm->buses_supported & BUS_NONSPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } flash->pgm->par.chip_writew(flash, val, addr); } void chip_writel(const struct flashctx *flash, uint32_t val, chipaddr addr) { + if (!(flash->pgm->buses_supported & BUS_NONSPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } flash->pgm->par.chip_writel(flash, val, addr); } void chip_writen(const struct flashctx *flash, uint8_t *buf, chipaddr addr, size_t len) { + if (!(flash->pgm->buses_supported & BUS_NONSPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } flash->pgm->par.chip_writen(flash, buf, addr, len); } uint8_t chip_readb(const struct flashctx *flash, const chipaddr addr) { + if (!(flash->pgm->buses_supported & BUS_NONSPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } return flash->pgm->par.chip_readb(flash, addr); } uint16_t chip_readw(const struct flashctx *flash, const chipaddr addr) { + if (!(flash->pgm->buses_supported & BUS_NONSPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } return flash->pgm->par.chip_readw(flash, addr); } uint32_t chip_readl(const struct flashctx *flash, const chipaddr addr) { + if (!(flash->pgm->buses_supported & BUS_NONSPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } return flash->pgm->par.chip_readl(flash, addr); } void chip_readn(const struct flashctx *flash, uint8_t *buf, chipaddr addr, size_t len) { + if (!(flash->pgm->buses_supported & BUS_NONSPI)) { + msg_perr("%s called for wrong programmer type! Please report " + "a bug at flashrom at flashrom.org.\n", __func__); + shutdown_and_exit(1); + } flash->pgm->par.chip_readn(flash, buf, addr, len); } @@ -1700,6 +1740,15 @@ return 0; } +/* FIXME: Totally unacceptable for libflashrom, but it's better than a simple + * exit(1) for most places which just exit(1) for now. + */ +void shutdown_and_exit(int exitcode) +{ + programmer_shutdown(); + exit(exitcode); +} + /* This function signature is horrible. We need to design a better interface, * but right now it allows us to split off the CLI code. * Besides that, the function itself is a textbook example of abysmal code flow. Index: flashrom-fix_par_programmer_access_from_spi/programmer.h =================================================================== --- flashrom-fix_par_programmer_access_from_spi/programmer.h (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/programmer.h (Arbeitskopie) @@ -312,6 +312,7 @@ uint8_t mmio_readb(void *addr); uint16_t mmio_readw(void *addr); uint32_t mmio_readl(void *addr); +void mmio_readn(void *addr, uint8_t *buf, size_t len); void mmio_le_writeb(uint8_t val, void *addr); void mmio_le_writew(uint16_t val, void *addr); void mmio_le_writel(uint32_t val, void *addr); -- http://www.hailfinger.org/ From stefan.tauner at student.tuwien.ac.at Thu Mar 1 01:51:46 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Thu, 1 Mar 2012 01:51:46 +0100 Subject: [flashrom] [PATCH] Fix parallel-style programmer access from SPI In-Reply-To: <4F4EC5F3.6010005@gmx.net> References: <4F4EC5F3.6010005@gmx.net> Message-ID: <201203010051.q210pkSk032688@mail2.student.tuwien.ac.at> On Thu, 01 Mar 2012 01:42:27 +0100 Carl-Daniel Hailfinger wrote: > RFC: Are those checks with abort a good idea or do they break stuff? > exit(1) is not a nice thing for libflashrom, but then again, it's > probably better than exploding. at least the spi functions are able to return an error, why exit instead?! -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Thu Mar 1 01:56:00 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 01 Mar 2012 01:56:00 +0100 Subject: [flashrom] [PATCH] Fix parallel-style programmer access from SPI In-Reply-To: <201203010051.q210pkSk032688@mail2.student.tuwien.ac.at> References: <4F4EC5F3.6010005@gmx.net> <201203010051.q210pkSk032688@mail2.student.tuwien.ac.at> Message-ID: <4F4EC920.2080909@gmx.net> Am 01.03.2012 01:51 schrieb Stefan Tauner: > On Thu, 01 Mar 2012 01:42:27 +0100 > Carl-Daniel Hailfinger wrote: > >> RFC: Are those checks with abort a good idea or do they break stuff? >> exit(1) is not a nice thing for libflashrom, but then again, it's >> probably better than exploding. > at least the spi functions are able to return an error, why exit > instead?! Not all the way down the calling graph. spi_read_status_register() returns the status register itself (or garbage in case there was an error). Regards, Carl-Daniel -- http://www.hailfinger.org/ From c-d.hailfinger.devel.2006 at gmx.net Thu Mar 1 09:09:40 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 01 Mar 2012 09:09:40 +0100 Subject: [flashrom] [PATCH] Fix parallel-style programmer access from SPI In-Reply-To: <4F4EC5F3.6010005@gmx.net> References: <4F4EC5F3.6010005@gmx.net> Message-ID: <4F4F2EC4.4070609@gmx.net> Hi Johan, thanks for testing! Am 01.03.2012 08:21 schrieb Johan Svensson: > Hello Carl-Daniel, > > It works perfectly well with this patch. No segfault, no new error message > and the output file is populated with data. > > Thank you very much for awesome support! > > Johan This would qualify the patch as tested, but is the style in which it solves the problem (indirection via mmio_readn) the right way to do this? Comments from a reviewer perspective appreciated. Regards, Carl-Daniel -- http://www.hailfinger.org/ From flashrom at mkarcher.dialup.fu-berlin.de Thu Mar 1 20:15:01 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Thu, 01 Mar 2012 20:15:01 +0100 Subject: [flashrom] [PATCH] Fix parallel-style programmer access from SPI In-Reply-To: <4F4EC5F3.6010005@gmx.net> References: <4F4EC5F3.6010005@gmx.net> Message-ID: <1330629301.27277.80.camel@localhost> Am Donnerstag, den 01.03.2012, 01:42 +0100 schrieb Carl-Daniel Hailfinger: > RFC: Are those checks with abort a good idea or do they break stuff? > exit(1) is not a nice thing for libflashrom, but then again, it's > probably better than exploding. I don't really feel like checking that at runtime is a good idea, but until someone proposes a not too hacky plan how to check that at compile time, this definitely has some merits, so it won't be a reason to not ack for me. > I'm also unsure about the parameter order of mmio_readn. Yeah, that one is tricky, as it does not match memcpy, which might be surprising. OTOH, the "read" in the function name implies that the order might be different, as you really "read" what is pointed to by the first argument. So this one is OK in some sense. Something up to discussion is the length parameter. Traditionally in C, the length is passed immediately after the pointer it applies to. Now that still does not help us, as the source and the target buffer have the same size for obvious reason, so attaching the size to either buffer is OK ("read a block of $len bytes at physical address $addr and store it in $buf" vs. "read data from physical address $addr and fill the buffer $buf of size $len with it). Finally, the length can also be seen as detached from either buffer: "Copy $len bytes, with the source being at physical address $addr and the destination being at $buf", which would also suggest putting size last to me. So for me read(src, size, dest) read(src, dest, size) both make sense in that regard. The variant you use now (the second) has some extra bonus in being semantically equivalent to the read system call. This semantic equivalence is not a silver bullet, though, as our write functions don't model the "file handle first" order of the system calls (with the physical address corresponding to the physical address. So while I can't really push you into either direction, maybe you prefer one of the ways to decide on a order that much that you can decide yourself. > The current IT87 SPI code did use the parallel programmer interface for > memory mapped reads and writes, but that's the wrong abstraction. It has > been fixed to use mmio_read*/mmio_write* for that purpose. I like that. > Introduce sanity checks for all SPI/Parallel-style accesses before a > possibly undefined union member is dereferenced. See above. > Signed-off-by: Carl-Daniel Hailfinger Acked-by: Michael Karcher Regards, Michael Karcher From juergen.trapp at alice.de Thu Mar 1 21:03:20 2012 From: juergen.trapp at alice.de (=?iso-8859-1?Q?J=FCrgen_Trapp?=) Date: Thu, 1 Mar 2012 21:03:20 +0100 Subject: [flashrom] flashrom with HP XW9300 References: <5B9632B43753F047BE43BF138DCF777401F3B075@HSNMST02V05.hsn.alice-dsl.net><4F4AB980.3080509@gmx.net><5B9632B43753F047BE43BF138DCF777401F3B077@HSNMST02V05.hsn.alice-dsl.net> <201202282302.q1SN2dgA025912@mail2.student.tuwien.ac.at> Message-ID: <5B9632B43753F047BE43BF138DCF777401F3B078@HSNMST02V05.hsn.alice-dsl.net> Hello, no, only a jumper for bootblock write protected, i need a patch like xw9400. cheers -----Urspr?ngliche Nachricht----- Von: Stefan Tauner [mailto:stefan.tauner at student.tuwien.ac.at] Gesendet: Mi 29.02.2012 00:02 An: J?rgen Trapp Cc: flashrom at flashrom.org; Carl-Daniel Hailfinger Betreff: Re: [flashrom] flashrom with HP XW9300 On Mon, 27 Feb 2012 07:55:04 +0100 J?rgen Trapp wrote: > lspci -nnvvxxx > [.] Hello J?rgen! The last thing we heard from you was that you are trying to find and play with a write protection jumper. Did you succeed? -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner -------------- next part -------------- A non-text attachment was scrubbed... Name: winmail.dat Type: application/ms-tnef Size: 3147 bytes Desc: not available URL: From c-d.hailfinger.devel.2006 at gmx.net Thu Mar 1 22:26:03 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 01 Mar 2012 22:26:03 +0100 Subject: [flashrom] [PATCH] Fix parallel-style programmer access from SPI In-Reply-To: <1330629301.27277.80.camel@localhost> References: <4F4EC5F3.6010005@gmx.net> <1330629301.27277.80.camel@localhost> Message-ID: <4F4FE96B.4090008@gmx.net> Hi, this is the same patch, but without the runtime sanity checks. Am 01.03.2012 20:15 schrieb Michael Karcher: > Am Donnerstag, den 01.03.2012, 01:42 +0100 schrieb Carl-Daniel > Hailfinger: >> RFC: Are those checks with abort a good idea or do they break stuff? >> exit(1) is not a nice thing for libflashrom, but then again, it's >> probably better than exploding. > I don't really feel like checking that at runtime is a good idea, but > until someone proposes a not too hacky plan how to check that at compile > time, this definitely has some merits, so it won't be a reason to not > ack for me. > >> I'm also unsure about the parameter order of mmio_readn. > Yeah, that one is tricky, as it does not match memcpy, which might be > surprising. OTOH, the "read" in the function name implies that the order > might be different, as you really "read" what is pointed to by the first > argument. So this one is OK in some sense. > Something up to discussion is the length parameter. Traditionally in C, > the length is passed immediately after the pointer it applies to. Now > that still does not help us, as the source and the target buffer have > the same size for obvious reason, so attaching the size to either buffer > is OK ("read a block of $len bytes at physical address $addr and store > it in $buf" vs. "read data from physical address $addr and fill the > buffer $buf of size $len with it). Finally, the length can also be seen > as detached from either buffer: "Copy $len bytes, with the source being > at physical address $addr and the destination being at $buf", which > would also suggest putting size last to me. So for me > > read(src, size, dest) > read(src, dest, size) > > both make sense in that regard. The variant you use now (the second) has > some extra bonus in being semantically equivalent to the read system > call. This semantic equivalence is not a silver bullet, though, as our > write functions don't model the "file handle first" order of the system > calls (with the physical address corresponding to the physical address. > > So while I can't really push you into either direction, maybe you prefer > one of the ways to decide on a order that much that you can decide > yourself. OK then, it stays like it is in the first version of the patch. >> The current IT87 SPI code did use the parallel programmer interface for >> memory mapped reads and writes, but that's the wrong abstraction. It has >> been fixed to use mmio_read*/mmio_write* for that purpose. > I like that. > >> Introduce sanity checks for all SPI/Parallel-style accesses before a >> possibly undefined union member is dereferenced. > See above. > >> Signed-off-by: Carl-Daniel Hailfinger > Acked-by: Michael Karcher Thanks for the review! The IT87 SPI driver has one quirk to speed up reading and writing: If a flash chip is 512 kByte or less, the flash chip can be completely mapped in memory and both read and write accesses are faster that way. The current IT87 SPI code did use the parallel programmer interface for memory mapped reads and writes, but that's the wrong abstraction. It has been fixed to use mmio_read*/mmio_write* for that purpose. Switch internal_chip_readn to use mmio_readn as proper abstraction. Kudos to Michael Karcher for spotting the bug. Reported-by: Johan Svensson Tested-by: Johan Svensson Signed-off-by: Carl-Daniel Hailfinger Acked-by: Michael Karcher Index: flashrom-fix_par_programmer_access_from_spi/hwaccess.c =================================================================== --- flashrom-fix_par_programmer_access_from_spi/hwaccess.c (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/hwaccess.c (Arbeitskopie) @@ -169,6 +169,12 @@ return *(volatile uint32_t *) addr; } +void mmio_readn(void *addr, uint8_t *buf, size_t len) +{ + memcpy(buf, addr, len); + return; +} + void mmio_le_writeb(uint8_t val, void *addr) { mmio_writeb(cpu_to_le8(val), addr); Index: flashrom-fix_par_programmer_access_from_spi/it87spi.c =================================================================== --- flashrom-fix_par_programmer_access_from_spi/it87spi.c (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/it87spi.c (Arbeitskopie) @@ -330,7 +330,7 @@ OUTB(0x06, it8716f_flashport + 1); OUTB(((2 + (fast_spi ? 1 : 0)) << 4), it8716f_flashport); for (i = 0; i < flash->page_size; i++) - chip_writeb(flash, buf[i], bios + start + i); + mmio_writeb(buf[i], (void *)(bios + start + i)); OUTB(0, it8716f_flashport); /* Wait until the Write-In-Progress bit is cleared. * This usually takes 1-10 ms, so wait in 1 ms steps. @@ -356,7 +356,7 @@ if ((flash->total_size * 1024 > 512 * 1024)) { spi_read_chunked(flash, buf, start, len, 3); } else { - read_memmapped(flash, buf, start, len); + mmio_readn((void *)(flash->virtual_memory + start), buf, len); } return 0; Index: flashrom-fix_par_programmer_access_from_spi/internal.c =================================================================== --- flashrom-fix_par_programmer_access_from_spi/internal.c (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/internal.c (Arbeitskopie) @@ -387,6 +387,6 @@ static void internal_chip_readn(const struct flashctx *flash, uint8_t *buf, const chipaddr addr, size_t len) { - memcpy(buf, (void *)addr, len); + mmio_readn((void *)addr, buf, len); return; } Index: flashrom-fix_par_programmer_access_from_spi/programmer.h =================================================================== --- flashrom-fix_par_programmer_access_from_spi/programmer.h (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/programmer.h (Arbeitskopie) @@ -312,6 +312,7 @@ uint8_t mmio_readb(void *addr); uint16_t mmio_readw(void *addr); uint32_t mmio_readl(void *addr); +void mmio_readn(void *addr, uint8_t *buf, size_t len); void mmio_le_writeb(uint8_t val, void *addr); void mmio_le_writew(uint16_t val, void *addr); void mmio_le_writel(uint32_t val, void *addr); -- http://www.hailfinger.org/ From c-d.hailfinger.devel.2006 at gmx.net Thu Mar 1 23:15:34 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 01 Mar 2012 23:15:34 +0100 Subject: [flashrom] [PATCH] Fix parallel-style programmer access from SPI In-Reply-To: <4F4FE96B.4090008@gmx.net> References: <4F4EC5F3.6010005@gmx.net> <1330629301.27277.80.camel@localhost> <4F4FE96B.4090008@gmx.net> Message-ID: <4F4FF506.4000305@gmx.net> Third time's a charm. Michael Karcher pointed out that I had inexplicably overlooked wbsio. Fix parallel-style programmer access from ITE IT87/Winbond W83627 SPI The ITE IT87 SPI driver uses a trick to speed up reading and writing: If a flash chip is 512 kByte or less, the flash chip can be completely mapped in memory and both read and write accesses are faster that way. The current IT87 SPI code did use the parallel programmer interface for memory mapped reads and writes, but that's the wrong abstraction. It has been fixed to use mmio_read*/mmio_write* for that purpose. The Winbond W83627 SPI driver uses the same trick in its read path for all supported chip sizes. Fix it the same way. Switch internal_chip_readn to use mmio_readn as proper abstraction. Kudos to Michael Karcher for spotting the bugs. Reported-by: Johan Svensson Signed-off-by: Carl-Daniel Hailfinger Acked-by: Michael Karcher Tested-by: Johan Svensson Index: flashrom-fix_par_programmer_access_from_spi/hwaccess.c =================================================================== --- flashrom-fix_par_programmer_access_from_spi/hwaccess.c (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/hwaccess.c (Arbeitskopie) @@ -169,6 +169,12 @@ return *(volatile uint32_t *) addr; } +void mmio_readn(void *addr, uint8_t *buf, size_t len) +{ + memcpy(buf, addr, len); + return; +} + void mmio_le_writeb(uint8_t val, void *addr) { mmio_writeb(cpu_to_le8(val), addr); Index: flashrom-fix_par_programmer_access_from_spi/it87spi.c =================================================================== --- flashrom-fix_par_programmer_access_from_spi/it87spi.c (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/it87spi.c (Arbeitskopie) @@ -330,7 +330,7 @@ OUTB(0x06, it8716f_flashport + 1); OUTB(((2 + (fast_spi ? 1 : 0)) << 4), it8716f_flashport); for (i = 0; i < flash->page_size; i++) - chip_writeb(flash, buf[i], bios + start + i); + mmio_writeb(buf[i], (void *)(bios + start + i)); OUTB(0, it8716f_flashport); /* Wait until the Write-In-Progress bit is cleared. * This usually takes 1-10 ms, so wait in 1 ms steps. @@ -356,7 +356,7 @@ if ((flash->total_size * 1024 > 512 * 1024)) { spi_read_chunked(flash, buf, start, len, 3); } else { - read_memmapped(flash, buf, start, len); + mmio_readn((void *)(flash->virtual_memory + start), buf, len); } return 0; Index: flashrom-fix_par_programmer_access_from_spi/internal.c =================================================================== --- flashrom-fix_par_programmer_access_from_spi/internal.c (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/internal.c (Arbeitskopie) @@ -387,6 +387,6 @@ static void internal_chip_readn(const struct flashctx *flash, uint8_t *buf, const chipaddr addr, size_t len) { - memcpy(buf, (void *)addr, len); + mmio_readn((void *)addr, buf, len); return; } Index: flashrom-fix_par_programmer_access_from_spi/wbsio_spi.c =================================================================== --- flashrom-fix_par_programmer_access_from_spi/wbsio_spi.c (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/wbsio_spi.c (Arbeitskopie) @@ -202,7 +202,8 @@ static int wbsio_spi_read(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len) { - return read_memmapped(flash, buf, start, len); + mmio_readn((void *)(flash->virtual_memory + start), buf, len); + return 0; } #endif Index: flashrom-fix_par_programmer_access_from_spi/programmer.h =================================================================== --- flashrom-fix_par_programmer_access_from_spi/programmer.h (Revision 1510) +++ flashrom-fix_par_programmer_access_from_spi/programmer.h (Arbeitskopie) @@ -312,6 +312,7 @@ uint8_t mmio_readb(void *addr); uint16_t mmio_readw(void *addr); uint32_t mmio_readl(void *addr); +void mmio_readn(void *addr, uint8_t *buf, size_t len); void mmio_le_writeb(uint8_t val, void *addr); void mmio_le_writew(uint16_t val, void *addr); void mmio_le_writel(uint32_t val, void *addr); -- http://www.hailfinger.org/ From svn at flashrom.org Thu Mar 1 23:38:28 2012 From: svn at flashrom.org (repository service) Date: Thu, 01 Mar 2012 23:38:28 +0100 Subject: [flashrom] [commit] r1511 - trunk Message-ID: Author: hailfinger Date: Thu Mar 1 23:38:27 2012 New Revision: 1511 URL: http://flashrom.org/trac/flashrom/changeset/1511 Log: Fix parallel-style programmer access from ITE IT87/Winbond W83627 SPI The ITE IT87 SPI driver uses a trick to speed up reading and writing: If a flash chip is 512 kByte or less, the flash chip can be completely mapped in memory and both read and write accesses are faster that way. The current IT87 SPI code did use the parallel programmer interface for memory mapped reads and writes, but that's the wrong abstraction. It has been fixed to use mmio_read*/mmio_write* for that purpose. The Winbond W83627 SPI driver uses the same trick in its read path for all supported chip sizes. Fix it the same way. Switch internal_chip_readn to use mmio_readn as proper abstraction. Kudos to Michael Karcher for spotting the bugs. Reported-by: Johan Svensson Signed-off-by: Carl-Daniel Hailfinger Acked-by: Michael Karcher Tested-by: Johan Svensson Modified: trunk/hwaccess.c trunk/internal.c trunk/it87spi.c trunk/programmer.h trunk/wbsio_spi.c Modified: trunk/hwaccess.c ============================================================================== --- trunk/hwaccess.c Mon Feb 27 20:44:16 2012 (r1510) +++ trunk/hwaccess.c Thu Mar 1 23:38:27 2012 (r1511) @@ -169,6 +169,12 @@ return *(volatile uint32_t *) addr; } +void mmio_readn(void *addr, uint8_t *buf, size_t len) +{ + memcpy(buf, addr, len); + return; +} + void mmio_le_writeb(uint8_t val, void *addr) { mmio_writeb(cpu_to_le8(val), addr); Modified: trunk/internal.c ============================================================================== --- trunk/internal.c Mon Feb 27 20:44:16 2012 (r1510) +++ trunk/internal.c Thu Mar 1 23:38:27 2012 (r1511) @@ -387,6 +387,6 @@ static void internal_chip_readn(const struct flashctx *flash, uint8_t *buf, const chipaddr addr, size_t len) { - memcpy(buf, (void *)addr, len); + mmio_readn((void *)addr, buf, len); return; } Modified: trunk/it87spi.c ============================================================================== --- trunk/it87spi.c Mon Feb 27 20:44:16 2012 (r1510) +++ trunk/it87spi.c Thu Mar 1 23:38:27 2012 (r1511) @@ -330,7 +330,7 @@ OUTB(0x06, it8716f_flashport + 1); OUTB(((2 + (fast_spi ? 1 : 0)) << 4), it8716f_flashport); for (i = 0; i < flash->page_size; i++) - chip_writeb(flash, buf[i], bios + start + i); + mmio_writeb(buf[i], (void *)(bios + start + i)); OUTB(0, it8716f_flashport); /* Wait until the Write-In-Progress bit is cleared. * This usually takes 1-10 ms, so wait in 1 ms steps. @@ -356,7 +356,7 @@ if ((flash->total_size * 1024 > 512 * 1024)) { spi_read_chunked(flash, buf, start, len, 3); } else { - read_memmapped(flash, buf, start, len); + mmio_readn((void *)(flash->virtual_memory + start), buf, len); } return 0; Modified: trunk/programmer.h ============================================================================== --- trunk/programmer.h Mon Feb 27 20:44:16 2012 (r1510) +++ trunk/programmer.h Thu Mar 1 23:38:27 2012 (r1511) @@ -312,6 +312,7 @@ uint8_t mmio_readb(void *addr); uint16_t mmio_readw(void *addr); uint32_t mmio_readl(void *addr); +void mmio_readn(void *addr, uint8_t *buf, size_t len); void mmio_le_writeb(uint8_t val, void *addr); void mmio_le_writew(uint16_t val, void *addr); void mmio_le_writel(uint32_t val, void *addr); Modified: trunk/wbsio_spi.c ============================================================================== --- trunk/wbsio_spi.c Mon Feb 27 20:44:16 2012 (r1510) +++ trunk/wbsio_spi.c Thu Mar 1 23:38:27 2012 (r1511) @@ -202,7 +202,8 @@ static int wbsio_spi_read(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len) { - return read_memmapped(flash, buf, start, len); + mmio_readn((void *)(flash->virtual_memory + start), buf, len); + return 0; } #endif From c-d.hailfinger.devel.2006 at gmx.net Thu Mar 1 23:41:46 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 01 Mar 2012 23:41:46 +0100 Subject: [flashrom] [PATCH] Fix parallel-style programmer access from SPI In-Reply-To: <4F4FF506.4000305@gmx.net> References: <4F4EC5F3.6010005@gmx.net> <1330629301.27277.80.camel@localhost> <4F4FE96B.4090008@gmx.net> <4F4FF506.4000305@gmx.net> Message-ID: <4F4FFB2A.5040708@gmx.net> Am 01.03.2012 23:15 schrieb Carl-Daniel Hailfinger: > Fix parallel-style programmer access from ITE IT87/Winbond W83627 SPI > > The ITE IT87 SPI driver uses a trick to speed up reading and writing: > If a flash chip is 512 kByte or less, the flash chip can be completely > mapped in memory and both read and write accesses are faster that way. > The current IT87 SPI code did use the parallel programmer interface for > memory mapped reads and writes, but that's the wrong abstraction. It has > been fixed to use mmio_read*/mmio_write* for that purpose. > > The Winbond W83627 SPI driver uses the same trick in its read path for > all supported chip sizes. Fix it the same way. > > Switch internal_chip_readn to use mmio_readn as proper abstraction. > > Kudos to Michael Karcher for spotting the bugs. > > Reported-by: Johan Svensson > Signed-off-by: Carl-Daniel Hailfinger > Acked-by: Michael Karcher > Tested-by: Johan Svensson And committed in r1511. Regards, Carl-Daniel -- http://www.hailfinger.org/ From stefan.tauner at student.tuwien.ac.at Fri Mar 2 00:43:34 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Fri, 2 Mar 2012 00:43:34 +0100 Subject: [flashrom] [PATCH] linux_spi.c: set SPI mode, word justification and bits per word on init. Message-ID: <1330645414-5444-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Previously we relied on a correctly set up state. --- untested. Signed-off-by: Stefan Tauner --- linux_spi.c | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) diff --git a/linux_spi.c b/linux_spi.c index d994389..d29c59a 100644 --- a/linux_spi.c +++ b/linux_spi.c @@ -57,6 +57,8 @@ int linux_spi_init(void) { char *p, *endp, *dev; uint32_t speed = 0; + /* FIXME: make the following configurable by CLI options. */ + uint8_t mode = SPI_MODE_0, lsb = 0, bits = 0; /* mode 0, msb first, 8 bits */ dev = extract_programmer_param("dev"); if (!dev || !strlen(dev)) { @@ -92,6 +94,27 @@ int linux_spi_init(void) msg_pdbg("Using %d kHz clock\n", speed); } + if (ioctl(fd, SPI_IOC_WR_MODE, &mode) == -1) { + msg_perr("%s: failed to set SPI mode to %u: %s\n", + __func__, mode, strerror(errno)); + close(fd); + return 1; + } + + if (ioctl(fd, SPI_IOC_WR_LSB_FIRST, &lsb) == -1) { + msg_perr("%s: failed to set SPI justification to %u: %s\n", + __func__, lsb, strerror(errno)); + close(fd); + return 1; + } + + if (ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits) == -1) { + msg_perr("%s: failed to set the number of bits in an SPI word to %u: %s\n", + __func__, bits, strerror(errno)); + close(fd); + return 1; + } + if (register_shutdown(linux_spi_shutdown, NULL)) return 1; -- 1.7.1 From cavit.vural at adak.com.tr Thu Mar 1 11:18:51 2012 From: cavit.vural at adak.com.tr (Cavit VURAL) Date: Thu, 01 Mar 2012 12:18:51 +0200 Subject: [flashrom] flashrom output Message-ID: <4F4F4D0B.1030606@adak.com.tr> root at cvural64:/home/cvural/flashrom-0.9.5.1# ./flashrom -V flashrom v0.9.5.1-r1509 on Linux 3.2.0-1-amd64 (x86_64), built with libpci 3.1.8, GCC 4.6.2, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 1316M loops per second, 10 myus = 10 us, 100 myus = 99 us, 1000 myus = 993 us, 10000 myus = 10037 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Dell Inc." DMI string system-product-name: "Inspiron 580 " DMI string system-version: "Not Specified" DMI string baseboard-manufacturer: "Dell Inc." DMI string baseboard-product-name: "033FF6" DMI string baseboard-version: "A00" DMI string chassis-type: "Desktop" Found ITE Super I/O, ID 0x8721 on port 0x2e Found chipset "Intel H57" with PCI ID 8086:3b08. This chipset is marked as untested. If you are using an up-to-date version of flashrom please email a report to flashrom at flashrom.org including a verbose (-V) log. Thank you! Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x1 0xffe00000/0xffa00000 FWH IDSEL: 0x1 0xffd80000/0xff980000 FWH IDSEL: 0x2 0xffd00000/0xff900000 FWH IDSEL: 0x2 0xffc80000/0xff880000 FWH IDSEL: 0x3 0xffc00000/0xff800000 FWH IDSEL: 0x3 0xff700000/0xff300000 FWH IDSEL: 0x4 0xff600000/0xff200000 FWH IDSEL: 0x5 0xff500000/0xff100000 FWH IDSEL: 0x6 0xff400000/0xff000000 FWH IDSEL: 0x7 0xfff80000/0xffb80000 FWH decode enabled 0xfff00000/0xffb00000 FWH decode enabled 0xffe80000/0xffa80000 FWH decode disabled 0xffe00000/0xffa00000 FWH decode disabled 0xffd80000/0xff980000 FWH decode disabled 0xffd00000/0xff900000 FWH decode disabled 0xffc80000/0xff880000 FWH decode disabled 0xffc00000/0xff800000 FWH decode disabled 0xff700000/0xff300000 FWH decode disabled 0xff600000/0xff200000 FWH decode disabled 0xff500000/0xff100000 FWH decode disabled 0xff400000/0xff000000 FWH decode disabled Maximum FWH chip size: 0x100000 bytes BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x8 Root Complex Register Block address = 0xfed1c000 GCS = 0xc64: BIOS Interface Lock-Down: disabled, Boot BIOS Straps: 0x3 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3800 0x04: 0x6008 (HSFS) HSFS: FDONE=0, FCERR=0, AEL=0, BERASE=1, SCIP=0, FDOPSS=1, FDV=1, FLOCKDN=0 Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done 0x06: 0x0000 (HSFC) HSFC: FGO=0, FCYCLE=0, FDBC=0, SME=0 0x08: 0x00000000 (FADDR) 0x50: 0x00000a0b (FRAP) BMWAG 0x00, BMRAG 0x00, BRWA 0x0a, BRRA 0x0b 0x54: 0x00000000 FREG0: WARNING: Flash Descriptor region (0x00000000-0x00000fff) is read-only. 0x58: 0x07ff0700 FREG1: BIOS region (0x00700000-0x007fffff) is read-write. 0x5C: 0x06ff0001 FREG2: WARNING: Management Engine region (0x00001000-0x006fffff) is locked. Please send a verbose log to flashrom at flashrom.org if this board is not listed on http://flashrom.org/Supported_hardware#Supported_mainboards yet. Writes have been disabled. You can enforce write support with the ich_spi_force programmer option, but it will most likely harm your hardware! If you force flashrom you will get no support if something breaks. 0x90: 0x04 (SSFS) SSFS: SCIP=0, FDONE=1, FCERR=0, AEL=0 0x91: 0xf84140 (SSFC) SSFC: SCGO=0, ACS=0, SPOP=0, COP=4, DBC=1, SME=0, SCF=0 0x94: 0x5006 (PREOP) 0x96: 0x463b (OPTYPE) 0x98: 0x05d80302 (OPMENU) 0x9C: 0xc79f0190 (OPMENU+4) 0xA0: 0x00000000 (BBAR) 0xC4: 0x00000000 (LVSCC) LVSCC: BES=0x0, WG=0, WSR=0, WEWS=0, EO=0x0, VCL=0 0xC8: 0x00002001 (UVSCC) UVSCC: BES=0x1, WG=0, WSR=0, WEWS=0, EO=0x20, VCL=0 0xD0: 0x00000000 (FPB) SPI Read Configuration: prefetching enabled, caching enabled, OK. Super I/O ID 0x8721 is not on the list of flash capable controllers. The following protocols are supported: FWH, SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Chip status register is 00 Chip status register: Status Register Write Disable (SRWD) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is not set Chip status register: Bit 3 / Block Protect 1 (BP1) is not set Chip status register: Bit 2 / Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found Macronix flash chip "MX25L6405" (8192 kB, SPI) at physical address 0xff800000. Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for SST SST25LF040A, 512 kB: program_opcodes: preop=5006 optype=462b opmenu=05ab0302c79f0190 on-the-fly OPCODE (0xAB) re-programmed, op-pos=2 probe_spi_res2: id1 0x16, id2 0x16 Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0x16, id2 0x16 Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xc2, id2 0x16 Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xc2, id2 0x16 Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xc2, id2 0x16 Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Unknown SFDP-capable chip, 0 kB: program_opcodes: preop=5006 optype=462b opmenu=055a0302c79f0190 on-the-fly OPCODE (0x5A) re-programmed, op-pos=2 No SFDP signature found. Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xc2, id2 0x16 Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0x4e, id2 0x56, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0x4e, id2 0x56, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0x6b, id2 0xb7, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0x4e, id2 0x56, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0x4e, id2 0x56, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0x4e, id2 0x56, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0x4e, id2 0x56, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0x4e, id2 0x56, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0x4e, id2 0x56, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0x41, id2 0x4d, id1 parity violation, id1 is normal flash content, id2 is normal flash content Found Macronix flash chip "MX25L6405" (8192 kB, SPI). No operations were specified. Restoring MMIO space at 0x7f8cda8698a0 Restoring MMIO space at 0x7f8cda86989c Restoring MMIO space at 0x7f8cda869898 Restoring MMIO space at 0x7f8cda869896 Restoring MMIO space at 0x7f8cda869894 Restoring PCI config space for 00:1f:0 reg 0xdc From flashrom at mkarcher.dialup.fu-berlin.de Fri Mar 2 20:16:04 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Fri, 02 Mar 2012 20:16:04 +0100 Subject: [flashrom] [PATCH] linux_spi.c: set SPI mode, word justification and bits per word on init. In-Reply-To: <1330645414-5444-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <1330645414-5444-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <1330715764.27277.123.camel@localhost> Am Freitag, den 02.03.2012, 00:43 +0100 schrieb Stefan Tauner: > Previously we relied on a correctly set up state. Looks good. Still untested, though. > Signed-off-by: Stefan Tauner Acked-by: Michael Karcher A test would be nice, though, but I'm afraid we can't find a tester quickly. Regards, Michael Karcher From rmh at debian.org Fri Mar 2 21:44:03 2012 From: rmh at debian.org (Robert Millan) Date: Fri, 2 Mar 2012 21:44:03 +0100 Subject: [flashrom] compiling flashrom for Debian/kFreeBSD In-Reply-To: <4F496643.3060008@gmx.net> References: <4F46DFFC.3090104@gmx.net> <4F483028.5030406@gmx.net> <4F49064E.9070704@gmx.net> <4F496643.3060008@gmx.net> Message-ID: El 25 de febrer de 2012 23:52, Carl-Daniel Hailfinger > Thanks for your tests. The patch has been committed in r1507 to flashrom > svn. You're welcome. -- Robert Millan From c-d.hailfinger.devel.2006 at gmx.net Fri Mar 2 22:43:44 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Fri, 02 Mar 2012 22:43:44 +0100 Subject: [flashrom] [PATCH] linux_spi.c: set SPI mode, word justification and bits per word on init. In-Reply-To: <1330645414-5444-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <1330645414-5444-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <4F513F10.20600@gmx.net> Am 02.03.2012 00:43 schrieb Stefan Tauner: > Previously we relied on a correctly set up state. > > --- > untested. > > Signed-off-by: Stefan Tauner > --- > linux_spi.c | 23 +++++++++++++++++++++++ > 1 files changed, 23 insertions(+), 0 deletions(-) > > diff --git a/linux_spi.c b/linux_spi.c > index d994389..d29c59a 100644 > --- a/linux_spi.c > +++ b/linux_spi.c > @@ -57,6 +57,8 @@ int linux_spi_init(void) > { > char *p, *endp, *dev; > uint32_t speed = 0; > + /* FIXME: make the following configurable by CLI options. */ > + uint8_t mode = SPI_MODE_0, lsb = 0, bits = 0; /* mode 0, msb first, 8 bits */ Can you move that comment above the variable definitions? Where should we note that SPI_MODE_0 also implies CS# active low? > > dev = extract_programmer_param("dev"); > if (!dev || !strlen(dev)) { > @@ -92,6 +94,27 @@ int linux_spi_init(void) > msg_pdbg("Using %d kHz clock\n", speed); > } > > + if (ioctl(fd, SPI_IOC_WR_MODE, &mode) == -1) { > + msg_perr("%s: failed to set SPI mode to %u: %s\n", > + __func__, mode, strerror(errno)); > + close(fd); > + return 1; > + } > + > + if (ioctl(fd, SPI_IOC_WR_LSB_FIRST, &lsb) == -1) { > + msg_perr("%s: failed to set SPI justification to %u: %s\n", > + __func__, lsb, strerror(errno)); This message would benefit from an explanation what SPI justification is. Suggestion: msg_perr("%s: failed to set SPI bit order to %s first: %s\n", __func_, lsb ? "LSB" : "MSB", strerror(errno)); > + close(fd); > + return 1; > + } > + > + if (ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits) == -1) { > + msg_perr("%s: failed to set the number of bits in an SPI word to %u: %s\n", > + __func__, bits, strerror(errno)); bits is 0. The error message would suggest that we tried to set the number of bits to 0. Does 0 also mean 8 bits, or would we have to set 8 bits with bits=8? > + close(fd); > + return 1; > + } > + > if (register_shutdown(linux_spi_shutdown, NULL)) > return 1; > As an alternative, we could avoid the whole close(fd) dance by calling register_shutdown() first, and then letting it do the work for us automatically after we return 1. Regards, Carl-Daniel -- http://www.hailfinger.org/ From stefan.tauner at student.tuwien.ac.at Fri Mar 2 23:51:34 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Fri, 2 Mar 2012 23:51:34 +0100 Subject: [flashrom] [PATCH] linux_spi.c: set SPI mode, word justification and bits per word on init. In-Reply-To: <4F513F10.20600@gmx.net> References: <1330645414-5444-1-git-send-email-stefan.tauner@student.tuwien.ac.at> <4F513F10.20600@gmx.net> Message-ID: <201203022251.q22MpZG7005596@mail2.student.tuwien.ac.at> On Fri, 02 Mar 2012 22:43:44 +0100 Carl-Daniel Hailfinger wrote: > Am 02.03.2012 00:43 schrieb Stefan Tauner: > > Previously we relied on a correctly set up state. > > > > --- > > untested. > > > > Signed-off-by: Stefan Tauner > > --- > > linux_spi.c | 23 +++++++++++++++++++++++ > > 1 files changed, 23 insertions(+), 0 deletions(-) > > > > diff --git a/linux_spi.c b/linux_spi.c > > index d994389..d29c59a 100644 > > --- a/linux_spi.c > > +++ b/linux_spi.c > > @@ -57,6 +57,8 @@ int linux_spi_init(void) > > { > > char *p, *endp, *dev; > > uint32_t speed = 0; > > + /* FIXME: make the following configurable by CLI options. */ > > + uint8_t mode = SPI_MODE_0, lsb = 0, bits = 0; /* mode 0, msb first, 8 bits */ > > Can you move that comment above the variable definitions? done, reads now: /* SPI mode 0, msb first, 8 bits (i.e. value=0) */ > Where should we note that SPI_MODE_0 also implies CS# active low? it does not. the test program seems to be outdated, the actual code masks the CPOL/CPHA bits. > > > > dev = extract_programmer_param("dev"); > > if (!dev || !strlen(dev)) { > > @@ -92,6 +94,27 @@ int linux_spi_init(void) > > msg_pdbg("Using %d kHz clock\n", speed); > > } > > > > + if (ioctl(fd, SPI_IOC_WR_MODE, &mode) == -1) { > > + msg_perr("%s: failed to set SPI mode to %u: %s\n", > > + __func__, mode, strerror(errno)); > > + close(fd); > > + return 1; > > + } > > + > > + if (ioctl(fd, SPI_IOC_WR_LSB_FIRST, &lsb) == -1) { > > + msg_perr("%s: failed to set SPI justification to %u: %s\n", > > + __func__, lsb, strerror(errno)); > > This message would benefit from an explanation what SPI justification > is. Suggestion: > msg_perr("%s: failed to set SPI bit order to %s first: %s\n", __func_, > lsb ? "LSB" : "MSB", strerror(errno)); right, was too lazy to think about a better term/solution at the time; fixed. > > + close(fd); > > + return 1; > > + } > > + > > + if (ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits) == -1) { > > + msg_perr("%s: failed to set the number of bits in an SPI word to %u: %s\n", > > + __func__, bits, strerror(errno)); > > bits is 0. The error message would suggest that we tried to set the > number of bits to 0. Does 0 also mean 8 bits, or would we have to set 8 > bits with bits=8? bits = 0 is the only defined value in the documentation and is actually the only one implemented in the code and means 8 bits per word. i have changed the message to this: msg_perr("%s: failed to set the number of bits per SPI word to %s: %s\n", __func__, bits == 0 ? "8" : "", strerror(errno)); > > + close(fd); > > + return 1; > > + } > > + > > if (register_shutdown(linux_spi_shutdown, NULL)) > > return 1; > > > > As an alternative, we could avoid the whole close(fd) dance by calling > register_shutdown() first, and then letting it do the work for us > automatically after we return 1. how do we do it in other programmers? we should probably define and document a single suggested way so that we dont have to discuss this every time. :) in this particular case i think it makes sense. in general relying on the shutdown function only may be a bit hard to grasp/implement for complicated init functions that allocate/manipulate lots of stuff (e.g. serprog). -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Sat Mar 3 13:18:45 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sat, 03 Mar 2012 13:18:45 +0100 Subject: [flashrom] [PATCH] linux_spi.c: set SPI mode, word justification and bits per word on init. In-Reply-To: <201203022251.q22MpZG7005596@mail2.student.tuwien.ac.at> References: <1330645414-5444-1-git-send-email-stefan.tauner@student.tuwien.ac.at> <4F513F10.20600@gmx.net> <201203022251.q22MpZG7005596@mail2.student.tuwien.ac.at> Message-ID: <4F520C25.2070306@gmx.net> Am 02.03.2012 23:51 schrieb Stefan Tauner: > On Fri, 02 Mar 2012 22:43:44 +0100 > Carl-Daniel Hailfinger wrote: > >> Am 02.03.2012 00:43 schrieb Stefan Tauner: >>> Previously we relied on a correctly set up state. >>> >>> --- >>> untested. >>> >>> Signed-off-by: Stefan Tauner >>> --- >>> linux_spi.c | 23 +++++++++++++++++++++++ >>> 1 files changed, 23 insertions(+), 0 deletions(-) >>> >>> diff --git a/linux_spi.c b/linux_spi.c >>> index d994389..d29c59a 100644 >>> --- a/linux_spi.c >>> +++ b/linux_spi.c >>> @@ -57,6 +57,8 @@ int linux_spi_init(void) >>> { >>> char *p, *endp, *dev; >>> uint32_t speed = 0; >>> + /* FIXME: make the following configurable by CLI options. */ >>> + uint8_t mode = SPI_MODE_0, lsb = 0, bits = 0; /* mode 0, msb first, 8 bits */ >> Can you move that comment above the variable definitions? > done, reads now: > /* SPI mode 0, msb first, 8 bits (i.e. value=0) */ > >> Where should we note that SPI_MODE_0 also implies CS# active low? > it does not. the test program seems to be outdated, the actual code > masks the CPOL/CPHA bits. Let me rephrase that: Setting the SPI mode handles CPOL/CPHA/CS/LSB/... all in one. The bits which are not set have their default value (0). http://tomoyo.sourceforge.jp/cgi-bin/lxr/source/drivers/spi/spidev.c#L72 #define SPI_MODE_MASK (SPI_CPHA | SPI_CPOL | SPI_CS_HIGH | SPI_LSB_FIRST | SPI_3WIRE | SPI_LOOP | SPI_NO_CS | SPI_READY) >>> >>> dev = extract_programmer_param("dev"); >>> if (!dev || !strlen(dev)) { >>> @@ -92,6 +94,27 @@ int linux_spi_init(void) >>> msg_pdbg("Using %d kHz clock\n", speed); >>> } >>> >>> + if (ioctl(fd, SPI_IOC_WR_MODE, &mode) == -1) { >>> + msg_perr("%s: failed to set SPI mode to %u: %s\n", >>> + __func__, mode, strerror(errno)); >>> + close(fd); >>> + return 1; >>> + } >>> + >>> + if (ioctl(fd, SPI_IOC_WR_LSB_FIRST, &lsb) == -1) { >>> + msg_perr("%s: failed to set SPI justification to %u: %s\n", >>> + __func__, lsb, strerror(errno)); >> This message would benefit from an explanation what SPI justification >> is. Suggestion: >> msg_perr("%s: failed to set SPI bit order to %s first: %s\n", __func_, >> lsb ? "LSB" : "MSB", strerror(errno)); > right, was too lazy to think about a better term/solution at the > time; fixed. > >>> + close(fd); >>> + return 1; >>> + } >>> + >>> + if (ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits) == -1) { >>> + msg_perr("%s: failed to set the number of bits in an SPI word to %u: %s\n", >>> + __func__, bits, strerror(errno)); >> bits is 0. The error message would suggest that we tried to set the >> number of bits to 0. Does 0 also mean 8 bits, or would we have to set 8 >> bits with bits=8? > bits = 0 is the only defined value in the documentation and is actually > the only one implemented in the code and means 8 bits per word. The documentation is explicit that bits is the number of bits, unless bits=0, in which case it is treated as 8 bits. I also have checked the code in the Linux kernel and it agrees with me. Note that retval in ioctl handling is _not_ the value entered by the user, but an error/success code for accessing user data. http://tomoyo.sourceforge.jp/cgi-bin/lxr/source/drivers/spi/spidev.c#L408 http://tomoyo.sourceforge.jp/cgi-bin/lxr/source/drivers/spi/spi.c#L727 > i have changed the message to this: > msg_perr("%s: failed to set the number of bits per SPI word to %s: %s\n", > __func__, bits == 0 ? "8" : "", strerror(errno)); > >>> + close(fd); >>> + return 1; >>> + } >>> + >>> if (register_shutdown(linux_spi_shutdown, NULL)) >>> return 1; >>> >> As an alternative, we could avoid the whole close(fd) dance by calling >> register_shutdown() first, and then letting it do the work for us >> automatically after we return 1. > how do we do it in other programmers? we should probably define and > document a single suggested way so that we dont have to discuss this > every time. :) A single suggested way (or maybe two ways, depending on the hardware interface design we're using) is a good idea as long as it's not a hard unbreakable rule afterwards. The following two ways seem to make sense for linux_spi IMHO: ret = 1; goto out_shutdown; or setting everything after register_shutdown. If we want to restore old settings on shutdown, it gets a bit hackier. One possible way would be: int restore_settings; init (){ open fd else return 1; restore_settings=0; register_shutdown() else return 1; get all settings and store them in file-level variables or a file-level struct else return 1; restore_settings=1; set all settings else return 1; return 0; } shutdown() { if (restore_settings){ restore settings; } close(fd); } > in this particular case i think it makes sense. in general relying on > the shutdown function only may be a bit hard to grasp/implement for > complicated init functions that allocate/manipulate lots of stuff (e.g. > serprog). Agreed. Side note: How should we handle a failed register_shutdown()? Call the shutdown function manually and return 1? Or is there any other good way to clean up? Regards, Carl-Daniel -- http://www.hailfinger.org/ From arnaud at debeauvais.org Sat Mar 3 07:36:15 2012 From: arnaud at debeauvais.org (Arnaud DEBEAUVAIS) Date: Sat, 03 Mar 2012 07:36:15 +0100 Subject: [flashrom] ASUSTeK M2N-MX SE / chipset NVIDIA MCP61 Message-ID: <4F51BBDF.80200@debeauvais.org> Hi, I guess the later versions might already support this shipset, as I am on Debian Squeeze (Stable), but just in case it can help you : flashrom v0.9.2-r1141 on Linux 2.6.32-5-amd64 (x86_64), built with libpci 3.1.7, GCC 4.4.5 20100728 (prerelease), little endian DMI string baseboard-manufacturer: "ASUSTeK Computer INC." DMI string baseboard-product-name: "M2N-MX SE" Found ITE Super I/O, id 8712 Found chipset "NVIDIA MCP61", enabling flash write... chipset PCI ID is 10de:03e0, This chipset is not really supported yet. Guesswork... ISA/LPC bridge reg 0x8a contents: 0x00, bit 6 is 0, bit 5 is 0 Flash bus type is LPC Found SMBus device 10de:03eb at 00:01:1 MCP SPI BAR is at 0x00000000 MCP SPI is not used. Have a great weekend. Openly yours, -- Arnaud DEBEAUVAIS arnaud at debeauvais.org Tux 100 10& 10 100 Tux :wq -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: NVIDIA_MCP61.txt URL: From stefan.tauner at student.tuwien.ac.at Sat Mar 3 14:48:34 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 3 Mar 2012 14:48:34 +0100 Subject: [flashrom] [PATCH] linux_spi.c: set SPI mode, bit order and bits per word on init. In-Reply-To: <4F520C25.2070306@gmx.net> References: <4F520C25.2070306@gmx.net> Message-ID: <1330782514-5679-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Previously we relied on a correctly set up state. Also, we start to rely on the shutdown function for cleanup after registering it, i.e. we no longer explicitly call close(fd) after register_shutdown(). Signed-off-by: Stefan Tauner --- linux_spi.c | 22 +++++++++++++++++++--- 1 files changed, 19 insertions(+), 3 deletions(-) diff --git a/linux_spi.c b/linux_spi.c index d994389..2ae681f 100644 --- a/linux_spi.c +++ b/linux_spi.c @@ -57,6 +57,10 @@ int linux_spi_init(void) { char *p, *endp, *dev; uint32_t speed = 0; + /* FIXME: make the following configurable by CLI options. */ + /* SPI mode 0 (beware this also includes: MSB first, CS active low and others */ + const uint8_t mode = SPI_MODE_0; + const uint8_t bits = 8; dev = extract_programmer_param("dev"); if (!dev || !strlen(dev)) { @@ -81,19 +85,31 @@ int linux_spi_init(void) return 1; } + if (register_shutdown(linux_spi_shutdown, NULL)) + return 1; + /* We rely on the shutdown function for cleanup from here on. */ + if (speed > 0) { if (ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed) == -1) { - msg_perr("%s: failed to set speed %dHz: %s\n", + msg_perr("%s: failed to set speed to %d Hz: %s\n", __func__, speed, strerror(errno)); - close(fd); return 1; } msg_pdbg("Using %d kHz clock\n", speed); } - if (register_shutdown(linux_spi_shutdown, NULL)) + if (ioctl(fd, SPI_IOC_WR_MODE, &mode) == -1) { + msg_perr("%s: failed to set SPI mode to 0x%02x: %s\n", + __func__, mode, strerror(errno)); return 1; + } + + if (ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits) == -1) { + msg_perr("%s: failed to set the number of bits per SPI word to %u: %s\n", + __func__, bits == 0 ? 8 : bits, strerror(errno)); + return 1; + } register_spi_programmer(&spi_programmer_linux); -- 1.7.1 From flashrom at mkarcher.dialup.fu-berlin.de Sat Mar 3 16:28:47 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Sat, 3 Mar 2012 16:28:47 +0100 Subject: [flashrom] [PATCH] Prevent submission of empty read requests in linux_spi Message-ID: <1330788527-2114-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> The submission of zero-sized read requests in a write-only transaction fails at least for omap2_mcspi drivers and is pointless in general. Even with this patch, zero-sized write requests might be submitted for read-only transactions, but for most SPI chips, there always is a command transferred (written) before reading data, so there is no such thing as a pure-read transaction. Signed-off-by: Michael Karcher --- linux_spi.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/linux_spi.c b/linux_spi.c index d994389..3d1ca3e 100644 --- a/linux_spi.c +++ b/linux_spi.c @@ -114,6 +114,7 @@ static int linux_spi_send_command(struct flashctx *flash, unsigned int writecnt, const unsigned char *txbuf, unsigned char *rxbuf) { + unsigned iocontrol_code; struct spi_ioc_transfer msg[2] = { { .tx_buf = (uint64_t)(ptrdiff_t)txbuf, @@ -128,7 +129,14 @@ static int linux_spi_send_command(struct flashctx *flash, unsigned int writecnt, if (fd == -1) return -1; - if (ioctl(fd, SPI_IOC_MESSAGE(2), msg) == -1) { + /* Just submit the first (write) request in case there is nothing + to read. Otherwise submit both requests */ + if (readcnt == 0) + iocontrol_code = SPI_IOC_MESSAGE(1); + else + iocontrol_code = SPI_IOC_MESSAGE(2); + + if (ioctl(fd, iocontrol_code, msg) == -1) { msg_cerr("%s: ioctl: %s\n", __func__, strerror(errno)); return -1; } -- 1.7.9 From svn at flashrom.org Sat Mar 3 19:09:34 2012 From: svn at flashrom.org (repository service) Date: Sat, 03 Mar 2012 19:09:34 +0100 Subject: [flashrom] [commit] r1512 - trunk Message-ID: Author: stefanct Date: Sat Mar 3 19:09:33 2012 New Revision: 1512 URL: http://flashrom.org/trac/flashrom/changeset/1512 Log: linux_spi.c: set SPI mode, bit order and bits per word on init. Previously we relied on a correctly set up state. Also, we start to rely on the shutdown function for cleanup after registering it, i.e. we no longer explicitly call close(fd) after register_shutdown(). Signed-off-by: Stefan Tauner Tested-by: Denis 'GNUtoo' Carikli Acked-by: Carl-Daniel Hailfinger Modified: trunk/linux_spi.c Modified: trunk/linux_spi.c ============================================================================== --- trunk/linux_spi.c Thu Mar 1 23:38:27 2012 (r1511) +++ trunk/linux_spi.c Sat Mar 3 19:09:33 2012 (r1512) @@ -57,6 +57,10 @@ { char *p, *endp, *dev; uint32_t speed = 0; + /* FIXME: make the following configurable by CLI options. */ + /* SPI mode 0 (beware this also includes: MSB first, CS active low and others */ + const uint8_t mode = SPI_MODE_0; + const uint8_t bits = 8; dev = extract_programmer_param("dev"); if (!dev || !strlen(dev)) { @@ -81,19 +85,31 @@ return 1; } + if (register_shutdown(linux_spi_shutdown, NULL)) + return 1; + /* We rely on the shutdown function for cleanup from here on. */ + if (speed > 0) { if (ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed) == -1) { - msg_perr("%s: failed to set speed %dHz: %s\n", + msg_perr("%s: failed to set speed to %d Hz: %s\n", __func__, speed, strerror(errno)); - close(fd); return 1; } msg_pdbg("Using %d kHz clock\n", speed); } - if (register_shutdown(linux_spi_shutdown, NULL)) + if (ioctl(fd, SPI_IOC_WR_MODE, &mode) == -1) { + msg_perr("%s: failed to set SPI mode to 0x%02x: %s\n", + __func__, mode, strerror(errno)); return 1; + } + + if (ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits) == -1) { + msg_perr("%s: failed to set the number of bits per SPI word to %u: %s\n", + __func__, bits == 0 ? 8 : bits, strerror(errno)); + return 1; + } register_spi_programmer(&spi_programmer_linux); From stefan.tauner at student.tuwien.ac.at Sat Mar 3 19:14:46 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 3 Mar 2012 19:14:46 +0100 Subject: [flashrom] [PATCH] linux_spi.c: set SPI mode, bit order and bits per word on init. In-Reply-To: <1330782514-5679-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <4F520C25.2070306@gmx.net> <1330782514-5679-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <201203031814.q23IEkbP008563@mail2.student.tuwien.ac.at> On Sat, 3 Mar 2012 14:48:34 +0100 Stefan Tauner wrote: > Previously we relied on a correctly set up state. > > Also, we start to rely on the shutdown function for cleanup after > registering it, i.e. we no longer explicitly call close(fd) after > register_shutdown(). > > Signed-off-by: Stefan Tauner > --- > linux_spi.c | 22 +++++++++++++++++++--- > 1 files changed, 19 insertions(+), 3 deletions(-) > > [?] tested by GNUtoo, acked by carldani on IRC and committed in r1512. thanks everyone involved! -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sat Mar 3 21:11:08 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 3 Mar 2012 21:11:08 +0100 Subject: [flashrom] [PATCH 0/7] wiki patches 3.0 In-Reply-To: <1330201420-7588-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <1330201420-7588-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> 6/7 and 7/7 are new, the rest is unchanged(?) but rebased to current HEAD. 7/7 should be discussed before reviewing 2/7 in detail because id merge them if 7/7's concept is accepted in general. Stefan Tauner (7): Introduce and use enum test_state Refactor PCI and USB device status printing print_wiki.c fix columns calculations squash! print_wiki.c fix columns calculations squash! print_wiki.c fix columns calculations print_wiki.c: add a programmer column to the PCI and USB devices lists [RFC] Unify usbdev_status and pcidev_status into dev_status. drkaiser.c | 2 +- flash.h | 7 +- flashrom.c | 43 +++ ft2232_spi.c | 15 +- gfxnvidia.c | 2 +- nic3com.c | 2 +- nicintel.c | 2 +- nicintel_spi.c | 2 +- nicrealtek.c | 2 +- ogp_spi.c | 2 +- pcidev.c | 7 +- print.c | 989 ++++++++++++++++++++++++++------------------------------ print_wiki.c | 216 ++++++++----- programmer.h | 66 ++-- satamv.c | 2 +- satasii.c | 2 +- 16 files changed, 686 insertions(+), 675 deletions(-) dont fear the difflog... it's not that bad actually :) From stefan.tauner at student.tuwien.ac.at Sat Mar 3 21:11:14 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 3 Mar 2012 21:11:14 +0100 Subject: [flashrom] [PATCH 6/7] print_wiki.c: add a programmer column to the PCI and USB devices lists In-Reply-To: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <1330805475-19732-7-git-send-email-stefan.tauner@student.tuwien.ac.at> Signed-off-by: Stefan Tauner --- print_wiki.c | 28 ++++++++++++++++++---------- 1 files changed, 18 insertions(+), 10 deletions(-) diff --git a/print_wiki.c b/print_wiki.c index 43fab47..c25ec28 100644 --- a/print_wiki.c +++ b/print_wiki.c @@ -73,8 +73,8 @@ static const char chip_th[] = "{\ | align=\"center\" | Min \n| align=\"center\" | Max\n\n"; static const char programmer_th[] = "{| border=\"0\" style=\"font-size: \ -smaller\" valign=\"top\"\n|- bgcolor=\"#6699dd\"\n! align=\"left\" | Vendor\n\ -! align=\"left\" | Device\n! align=\"center\" | IDs\n\ +smaller\" valign=\"top\"\n|- bgcolor=\"#6699dd\"\n! align=\"left\" | Programmer\n\ +! align=\"left\" | Vendor\n ! align=\"left\" | Device\n! align=\"center\" | IDs\n\ ! align=\"center\" | Status\n\n"; #if CONFIG_INTERNAL == 1 @@ -305,17 +305,21 @@ static int count_supported_pcidevs_wiki(const struct pcidev_status *devs) return count; } -static void print_supported_pcidevs_wiki_helper(const struct pcidev_status *devs) +static void print_supported_pcidevs_wiki_helper(const struct programmer_entry prog) { int i = 0; static int c = 0; + const struct pcidev_status *devs = prog.devices.pci; + const unsigned int count = count_supported_pcidevs_wiki(devs); /* Alternate colors if the vendor changes. */ c = !c; for (i = 0; devs[i].vendor_name != NULL; i++) { - printf("|- bgcolor=\"#%s\"\n| %s || %s || " - "%04x:%04x || {{%s}}\n", (c) ? "eeeeee" : "dddddd", + printf("|- bgcolor=\"#%s\"\n", (c) ? "eeeeee" : "dddddd"); + if (i == 0) + printf("| rowspan=\"%u\" | %s |", count, prog.name); + printf("| %s || %s || %04x:%04x || {{%s}}\n", devs[i].vendor_name, devs[i].device_name, devs[i].vendor_id, devs[i].device_id, (devs[i].status == NT) ? "?3" : "OK"); @@ -332,17 +336,21 @@ static int count_supported_usbdevs_wiki(const struct usbdev_status *devs) return count; } -static void print_supported_usbdevs_wiki_helper(const struct usbdev_status *devs) +static void print_supported_usbdevs_wiki_helper(const struct programmer_entry prog) { int i = 0; static int c = 0; + const struct usbdev_status *devs = prog.devices.usb; + const unsigned int count = count_supported_usbdevs_wiki(devs); /* Alternate colors if the vendor changes. */ c = !c; for (i = 0; devs[i].vendor_name != NULL; i++) { - printf("|- bgcolor=\"#%s\"\n| %s || %s || " - "%04x:%04x || {{%s}}\n", (c) ? "eeeeee" : "dddddd", + printf("|- bgcolor=\"#%s\"\n", (c) ? "eeeeee" : "dddddd"); + if (i == 0) + printf("| rowspan=\"%u\" | %s |", count, prog.name); + printf("| %s || %s || %04x:%04x || {{%s}}\n", devs[i].vendor_name, devs[i].device_name, devs[i].vendor_id, devs[i].device_id, (devs[i].status == NT) ? "?3" : "OK"); @@ -379,7 +387,7 @@ static void print_supported_devs_wiki() for (i = 0; i < PROGRAMMER_INVALID; i++) { const struct programmer_entry prog = programmer_table[i]; if (prog.type == PCI) { - print_supported_pcidevs_wiki_helper(prog.devices.pci); + print_supported_pcidevs_wiki_helper(prog); } } printf("\n|}\n"); @@ -393,7 +401,7 @@ static void print_supported_devs_wiki() for (i = 0; i < PROGRAMMER_INVALID; i++) { const struct programmer_entry prog = programmer_table[i]; if (prog.type == USB) { - print_supported_usbdevs_wiki_helper(prog.devices.usb); + print_supported_usbdevs_wiki_helper(prog); } } printf("\n|}\n"); -- 1.7.1 From stefan.tauner at student.tuwien.ac.at Sat Mar 3 21:11:12 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 3 Mar 2012 21:11:12 +0100 Subject: [flashrom] [PATCH 4/7] squash! print_wiki.c fix columns calculations In-Reply-To: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <1330805475-19732-5-git-send-email-stefan.tauner@student.tuwien.ac.at> - boards Signed-off-by: Stefan Tauner --- print_wiki.c | 26 ++++++++++++++++---------- 1 files changed, 16 insertions(+), 10 deletions(-) diff --git a/print_wiki.c b/print_wiki.c index e0b5ff3..d55563c 100644 --- a/print_wiki.c +++ b/print_wiki.c @@ -134,11 +134,12 @@ static void print_supported_chipsets_wiki(int cols) static void print_supported_boards_wiki_helper(const char *devicetype, int cols, const struct board_info boards[]) { - int i, j, k = 0, color = 1; + int i, k = 0, color = 1; int num_notes = 0; char *notes = calloc(1, 1); const struct board_match *b = board_matches; unsigned int boardcount = 0, boardcount_good = 0, boardcount_bad = 0; + unsigned int lines_per_col; char tmp[900 + 1]; for (i = 0; boards[i].vendor != NULL; i++) { @@ -149,12 +150,17 @@ static void print_supported_boards_wiki_helper(const char *devicetype, int cols, boardcount++; } + /* +1 to force the resulting number of columns to be < cols */ + lines_per_col = boardcount / cols + ((boardcount%cols) > 0 ? 1 : 0); + printf("\n\nTotal amount of supported %s: '''%d'''. " "Not yet supported (i.e., known-bad): '''%d'''.\n\n" - "{| border=\"0\" valign=\"top\"\n| valign=\"top\"|\n\n%s", - devicetype, boardcount_good, boardcount_bad, board_th); + "{| border=\"0\" valign=\"top\"\n", + devicetype, boardcount_good, boardcount_bad); - for (i = 0, j = 0; boards[i].vendor != NULL; i++, j++) { + for (i = 0; boards[i].vendor != NULL; i++) { + if ((i % lines_per_col) == 0) + printf("| valign=\"top\"|\n\n%s", board_th); /* Alternate colors if the vendor changes. */ if (i > 0 && strcmp(boards[i].vendor, boards[i - 1].vendor)) @@ -190,14 +196,14 @@ static void print_supported_boards_wiki_helper(const char *devicetype, int cols, printf("\n"); } - /* Split table in 'cols' columns. */ - if (j >= (boardcount / cols + 1)) { - printf("\n|}\n\n| valign=\"top\"|\n\n%s", board_th); - j = 0; - } + if (((i % lines_per_col) + 1) == lines_per_col) + printf("\n|}\n\n"); } - printf("\n|}\n\n|}\n"); + /* end inner table if it did not fill the last column fully */ + if (((i % lines_per_col)) > 0) + printf("\n|}\n\n"); + printf("\n\n|}\n"); if (num_notes > 0) printf("\n\n%s\n", notes); -- 1.7.1 From stefan.tauner at student.tuwien.ac.at Sat Mar 3 21:11:13 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 3 Mar 2012 21:11:13 +0100 Subject: [flashrom] [PATCH 5/7] squash! print_wiki.c fix columns calculations In-Reply-To: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <1330805475-19732-6-git-send-email-stefan.tauner@student.tuwien.ac.at> - chips Signed-off-by: Stefan Tauner --- print_wiki.c | 30 ++++++++++++++++++------------ 1 files changed, 18 insertions(+), 12 deletions(-) diff --git a/print_wiki.c b/print_wiki.c index d55563c..43fab47 100644 --- a/print_wiki.c +++ b/print_wiki.c @@ -224,6 +224,7 @@ static void print_supported_chips_wiki(int cols) { int i = 0, c = 1, chipcount = 0; const struct flashchip *f, *old = NULL; + unsigned int lines_per_col; uint32_t t; char *s; char vmax[6]; @@ -238,21 +239,28 @@ static void print_supported_chips_wiki(int cols) chipcount++; } + /* +1 to force the resulting number of columns to be < cols */ + lines_per_col = chipcount / cols + ((chipcount%cols) > 0 ? 1 : 0); + printf("\n== Supported chips ==\n\nTotal amount of supported " - "chips: '''%d'''\n\n{| border=\"0\" valign=\"top\"\n" - "| valign=\"top\"|\n\n%s", chipcount, chip_th); + "chips: '''%d'''\n\n{| border=\"0\" valign=\"top\"\n", + chipcount); - for (f = flashchips; f->name != NULL; f++, i++) { + for (f = flashchips; f->name != NULL; f++) { /* Don't print generic entries. */ if (!strncmp(f->vendor, "Unknown", 7) || !strncmp(f->vendor, "Programmer", 10) || !strncmp(f->name, "unknown", 7)) continue; + if ((i % lines_per_col) == 0) + printf("| valign=\"top\"|\n\n%s", chip_th); + /* Alternate colors if the vendor changes. */ if (old != NULL && strcmp(old->vendor, f->vendor)) c = !c; + old = f; t = f->tested; s = flashbuses_to_text(f->bustype); sprintf(vmin, "%0.03f", f->voltage.min / (double)1000); @@ -276,16 +284,14 @@ static void print_supported_chips_wiki(int cols) f->voltage.min ? vmax : "N/A"); free(s); - /* Split table into 'cols' columns. */ - if (i >= (chipcount / cols + 1)) { - printf("\n|}\n\n| valign=\"top\"|\n\n%s", chip_th); - i = 0; - } - - old = f; + if (((i % lines_per_col) + 1) == lines_per_col) + printf("\n|}\n\n"); + i++; } - - printf("\n|}\n\n|}\n"); + /* end inner table if it did not fill the last column fully */ + if (((i % lines_per_col)) > 0) + printf("\n|}\n\n"); + printf("|}\n\n"); } /* Not needed for CONFIG_INTERNAL, but for all other PCI-based programmers. */ -- 1.7.1 From stefan.tauner at student.tuwien.ac.at Sat Mar 3 21:11:11 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 3 Mar 2012 21:11:11 +0100 Subject: [flashrom] [PATCH 3/7] print_wiki.c fix columns calculations In-Reply-To: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <1330805475-19732-4-git-send-email-stefan.tauner@student.tuwien.ac.at> for - chipsets --- i noticed that the chipset columns were not uniformly divided at all and looked at the code in more detail... out came this series of patches that changes all three major sections of the wiki page similarly (hopefully to the better) and it split respectively for easier reviewing. getting this right is not trivial due to the possible corner cases... and it makes one cry when aware of real programming languages ;) Signed-off-by: Stefan Tauner --- print_wiki.c | 36 +++++++++++++++++++++++------------- 1 files changed, 23 insertions(+), 13 deletions(-) diff --git a/print_wiki.c b/print_wiki.c index 756f8d4..e0b5ff3 100644 --- a/print_wiki.c +++ b/print_wiki.c @@ -91,18 +91,26 @@ wrong (a working backup flash chip and/or good soldering skills).\n\n"; static void print_supported_chipsets_wiki(int cols) { - int i, j, enablescount = 0, color = 1; + int enablescount = 0, color = 1; + int i; + unsigned int lines_per_col; const struct penable *e; for (e = chipset_enables; e->vendor_name != NULL; e++) enablescount++; + /* +1 to force the resulting number of columns to be < cols */ + lines_per_col = enablescount / cols + ((enablescount%cols) > 0 ? 1 : 0); + printf("\n== Supported chipsets ==\n\nTotal amount of supported " - "chipsets: '''%d'''\n\n{| border=\"0\" valign=\"top\"\n| " - "valign=\"top\"|\n\n%s", enablescount, chipset_th); + "chipsets: '''%d'''\n\n{| border=\"0\" valign=\"top\"\n", + enablescount); e = chipset_enables; - for (i = 0, j = 0; e[i].vendor_name != NULL; i++, j++) { + for (i = 0; e[i].vendor_name != NULL; i++) { + if ((i % lines_per_col) == 0) + printf("| valign=\"top\"|\n\n%s", chipset_th); + /* Alternate colors if the vendor changes. */ if (i > 0 && strcmp(e[i].vendor_name, e[i - 1].vendor_name)) color = !color; @@ -113,30 +121,32 @@ static void print_supported_chipsets_wiki(int cols) e[i].vendor_id, e[i].device_id, (e[i].status == OK) ? "{{OK}}" : "{{?3}}"); - /* Split table in 'cols' columns. */ - if (j >= (enablescount / cols + 1)) { - printf("\n|}\n\n| valign=\"top\"|\n\n%s", chipset_th); - j = 0; - } + if (((i % lines_per_col) + 1) == lines_per_col) + printf("\n|}\n\n"); } - printf("\n|}\n\n|}\n"); + /* end inner table if it did not fill the last column fully */ + if (((i % lines_per_col)) > 0) + printf("\n|}\n\n"); + printf("\n\n|}\n"); } static void print_supported_boards_wiki_helper(const char *devicetype, int cols, const struct board_info boards[]) { - int i, j, k = 0, boardcount_good = 0, boardcount_bad = 0, color = 1; + int i, j, k = 0, color = 1; int num_notes = 0; char *notes = calloc(1, 1); - char tmp[900 + 1]; const struct board_match *b = board_matches; + unsigned int boardcount = 0, boardcount_good = 0, boardcount_bad = 0; + char tmp[900 + 1]; for (i = 0; boards[i].vendor != NULL; i++) { if (boards[i].working == OK) boardcount_good++; if (boards[i].working == BAD) boardcount_bad++; + boardcount++; } printf("\n\nTotal amount of supported %s: '''%d'''. " @@ -181,7 +191,7 @@ static void print_supported_boards_wiki_helper(const char *devicetype, int cols, } /* Split table in 'cols' columns. */ - if (j >= ((boardcount_good + boardcount_bad) / cols + 1)) { + if (j >= (boardcount / cols + 1)) { printf("\n|}\n\n| valign=\"top\"|\n\n%s", board_th); j = 0; } -- 1.7.1 From stefan.tauner at student.tuwien.ac.at Sat Mar 3 21:11:15 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 3 Mar 2012 21:11:15 +0100 Subject: [flashrom] [PATCH 7/7] [RFC] Unify usbdev_status and pcidev_status into dev_status. In-Reply-To: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <1330805475-19732-8-git-send-email-stefan.tauner@student.tuwien.ac.at> usbdev_status was created for the ft2232 programmer. Its IDs are semantically different because they indicate USB instead of PCI IDs, but apart from that both data structures are equal. This change makes life easier for everything involved in handling and printing the status of devices that is noted in that structure. --- It is still possible to distinguish between PCI and USB devices by using the struct programmer's type field. It still seems a bit hacky, but i think we are better off with it anyway. If we really would want to distinguish between the different types of IDs i'd rater make the IDs a union of different ID types inside struct dev_status. Signed-off-by: Stefan Tauner --- drkaiser.c | 2 +- flashrom.c | 38 ++++++++++++++++++------------------ ft2232_spi.c | 2 +- gfxnvidia.c | 2 +- nic3com.c | 2 +- nicintel.c | 2 +- nicintel_spi.c | 2 +- nicrealtek.c | 2 +- ogp_spi.c | 2 +- pcidev.c | 6 ++-- print.c | 23 +++------------------ print_wiki.c | 51 ++++++++---------------------------------------- programmer.h | 58 ++++++++++++++++++++++++------------------------------- satamv.c | 2 +- satasii.c | 2 +- 15 files changed, 70 insertions(+), 126 deletions(-) diff --git a/drkaiser.c b/drkaiser.c index 362db57..faa7035 100644 --- a/drkaiser.c +++ b/drkaiser.c @@ -32,7 +32,7 @@ /* Mask to restrict flash accesses to the 128kB memory window. */ #define DRKAISER_MEMMAP_MASK ((1 << 17) - 1) -const struct pcidev_status drkaiser_pcidev[] = { +const struct dev_status drkaiser_pcidev[] = { {0x1803, 0x5057, OK, "Dr. Kaiser", "PC-Waechter (Actel FPGA)"}, {}, }; diff --git a/flashrom.c b/flashrom.c index bf1e157..20a41f2 100644 --- a/flashrom.c +++ b/flashrom.c @@ -63,7 +63,7 @@ const struct programmer_entry programmer_table[] = { { .name = "internal", .type = OTHER, - .devices.note = NULL, + .devs.note = NULL, .init = internal_init, .map_flash_region = physmap, .unmap_flash_region = physunmap, @@ -76,7 +76,7 @@ const struct programmer_entry programmer_table[] = { .name = "dummy", .type = OTHER, /* FIXME */ - .devices.note = "Dummy device, does nothing and logs all accesses\n", + .devs.note = "Dummy device, does nothing and logs all accesses\n", .init = dummy_init, .map_flash_region = dummy_map, .unmap_flash_region = dummy_unmap, @@ -88,7 +88,7 @@ const struct programmer_entry programmer_table[] = { { .name = "nic3com", .type = PCI, - .devices.pci = nics_3com, + .devs.status = nics_3com, .init = nic3com_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -101,7 +101,7 @@ const struct programmer_entry programmer_table[] = { /* This programmer works for Realtek RTL8139 and SMC 1211. */ .name = "nicrealtek", .type = PCI, - .devices.pci = nics_realtek, + .devs.status = nics_realtek, //.name = "nicsmc1211", .init = nicrealtek_init, .map_flash_region = fallback_map, @@ -114,7 +114,7 @@ const struct programmer_entry programmer_table[] = { { .name = "nicnatsemi", .type = PCI, - .devices.pci = nics_natsemi, + .devs.status = nics_natsemi, .init = nicnatsemi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -126,7 +126,7 @@ const struct programmer_entry programmer_table[] = { { .name = "gfxnvidia", .type = PCI, - .devices.pci = gfx_nvidia, + .devs.status = gfx_nvidia, .init = gfxnvidia_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -138,7 +138,7 @@ const struct programmer_entry programmer_table[] = { { .name = "drkaiser", .type = PCI, - .devices.pci = drkaiser_pcidev, + .devs.status = drkaiser_pcidev, .init = drkaiser_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -150,7 +150,7 @@ const struct programmer_entry programmer_table[] = { { .name = "satasii", .type = PCI, - .devices.pci = satas_sii, + .devs.status = satas_sii, .init = satasii_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -162,7 +162,7 @@ const struct programmer_entry programmer_table[] = { { .name = "atahpt", .type = PCI, - .devices.pci = ata_hpt, + .devs.status = ata_hpt, .init = atahpt_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -174,7 +174,7 @@ const struct programmer_entry programmer_table[] = { { .name = "ft2232_spi", .type = USB, - .devices.usb = devs_ft2232spi, + .devs.status = devs_ft2232spi, .init = ft2232_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -187,7 +187,7 @@ const struct programmer_entry programmer_table[] = { .name = "serprog", .type = OTHER, /* FIXME */ - .devices.note = "All programmer devices speaking the serprog protocol\n", + .devs.note = "All programmer devices speaking the serprog protocol\n", .init = serprog_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -200,7 +200,7 @@ const struct programmer_entry programmer_table[] = { .name = "buspirate_spi", .type = OTHER, /* FIXME */ - .devices.note = "Dangerous Prototypes Bus Pirate\n", + .devs.note = "Dangerous Prototypes Bus Pirate\n", .init = buspirate_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -213,7 +213,7 @@ const struct programmer_entry programmer_table[] = { .name = "dediprog", .type = OTHER, /* FIXME */ - .devices.note = "Dediprog SF100\n", + .devs.note = "Dediprog SF100\n", .init = dediprog_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -226,7 +226,7 @@ const struct programmer_entry programmer_table[] = { .name = "rayer_spi", .type = OTHER, /* FIXME */ - .devices.note = "RayeR parallel port programmer\n", + .devs.note = "RayeR parallel port programmer\n", .init = rayer_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -238,7 +238,7 @@ const struct programmer_entry programmer_table[] = { { .name = "nicintel", .type = PCI, - .devices.pci = nics_intel, + .devs.status = nics_intel, .init = nicintel_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -250,7 +250,7 @@ const struct programmer_entry programmer_table[] = { { .name = "nicintel_spi", .type = PCI, - .devices.pci = nics_intel_spi, + .devs.status = nics_intel_spi, .init = nicintel_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -262,7 +262,7 @@ const struct programmer_entry programmer_table[] = { { .name = "ogp_spi", .type = PCI, - .devices.pci = ogp_spi, + .devs.status = ogp_spi, .init = ogp_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -274,7 +274,7 @@ const struct programmer_entry programmer_table[] = { { .name = "satamv", .type = PCI, - .devices.pci = satas_mv, + .devs.status = satas_mv, .init = satamv_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -286,7 +286,7 @@ const struct programmer_entry programmer_table[] = { { .name = "linux_spi", .type = OTHER, - .devices.note = "Device files /dev/spidev*.*\n", + .devs.note = "Device files /dev/spidev*.*\n", .init = linux_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, diff --git a/ft2232_spi.c b/ft2232_spi.c index ec4934e..069421c 100644 --- a/ft2232_spi.c +++ b/ft2232_spi.c @@ -49,7 +49,7 @@ #define OLIMEX_ARM_OCD_H_PID 0x002B #define OLIMEX_ARM_TINY_H_PID 0x002A -const struct usbdev_status devs_ft2232spi[] = { +const struct dev_status devs_ft2232spi[] = { {FTDI_VID, FTDI_FT2232H_PID, OK, "FTDI", "FT2232H"}, {FTDI_VID, FTDI_FT4232H_PID, OK, "FTDI", "FT4232H"}, {FTDI_VID, TIAO_TUMPA_PID, OK, "TIAO", "USB Multi-Protocol Adapter"}, diff --git a/gfxnvidia.c b/gfxnvidia.c index b8750b3..bcd53a7 100644 --- a/gfxnvidia.c +++ b/gfxnvidia.c @@ -33,7 +33,7 @@ uint8_t *nvidia_bar; -const struct pcidev_status gfx_nvidia[] = { +const struct dev_status gfx_nvidia[] = { {0x10de, 0x0010, NT, "NVIDIA", "Mutara V08 [NV2]" }, {0x10de, 0x0018, NT, "NVIDIA", "RIVA 128" }, {0x10de, 0x0020, NT, "NVIDIA", "RIVA TNT" }, diff --git a/nic3com.c b/nic3com.c index 473c7b1..2fff346 100644 --- a/nic3com.c +++ b/nic3com.c @@ -35,7 +35,7 @@ static uint32_t internal_conf; static uint16_t id; -const struct pcidev_status nics_3com[] = { +const struct dev_status nics_3com[] = { /* 3C90xB */ {0x10b7, 0x9055, OK, "3COM", "3C90xB: PCI 10/100 Mbps; shared 10BASE-T/100BASE-TX"}, {0x10b7, 0x9001, NT, "3COM", "3C90xB: PCI 10/100 Mbps; shared 10BASE-T/100BASE-T4" }, diff --git a/nicintel.c b/nicintel.c index 0415f46..5261263 100644 --- a/nicintel.c +++ b/nicintel.c @@ -26,7 +26,7 @@ uint8_t *nicintel_bar; uint8_t *nicintel_control_bar; -const struct pcidev_status nics_intel[] = { +const struct dev_status nics_intel[] = { {PCI_VENDOR_ID_INTEL, 0x1209, NT, "Intel", "8255xER/82551IT Fast Ethernet Controller"}, {PCI_VENDOR_ID_INTEL, 0x1229, OK, "Intel", "82557/8/9/0/1 Ethernet Pro 100"}, diff --git a/nicintel_spi.c b/nicintel_spi.c index 4ff8554..132673a 100644 --- a/nicintel_spi.c +++ b/nicintel_spi.c @@ -64,7 +64,7 @@ uint8_t *nicintel_spibar; -const struct pcidev_status nics_intel_spi[] = { +const struct dev_status nics_intel_spi[] = { {PCI_VENDOR_ID_INTEL, 0x105e, OK, "Intel", "82571EB Gigabit Ethernet Controller"}, {PCI_VENDOR_ID_INTEL, 0x1076, OK, "Intel", "82541GI Gigabit Ethernet Controller"}, {PCI_VENDOR_ID_INTEL, 0x107c, OK, "Intel", "82541PI Gigabit Ethernet Controller"}, diff --git a/nicrealtek.c b/nicrealtek.c index 32aa434..66f5eda 100644 --- a/nicrealtek.c +++ b/nicrealtek.c @@ -30,7 +30,7 @@ #define BIOS_ROM_ADDR 0xD4 #define BIOS_ROM_DATA 0xD7 -const struct pcidev_status nics_realtek[] = { +const struct dev_status nics_realtek[] = { {0x10ec, 0x8139, OK, "Realtek", "RTL8139/8139C/8139C+"}, {0x1113, 0x1211, OK, "SMC2", "1211TX"}, /* RTL8139 clone */ {}, diff --git a/ogp_spi.c b/ogp_spi.c index 812420c..231c110 100644 --- a/ogp_spi.c +++ b/ogp_spi.c @@ -45,7 +45,7 @@ static uint32_t ogp_reg_siso; static uint32_t ogp_reg__ce; static uint32_t ogp_reg_sck; -const struct pcidev_status ogp_spi[] = { +const struct dev_status ogp_spi[] = { {PCI_VENDOR_ID_OGP, 0x0000, OK, "Open Graphics Project", "Development Board OGD1"}, {}, }; diff --git a/pcidev.c b/pcidev.c index 6e5d0f1..13031d5 100644 --- a/pcidev.c +++ b/pcidev.c @@ -36,7 +36,7 @@ enum pci_bartype { }; uintptr_t pcidev_validate(struct pci_dev *dev, int bar, - const struct pcidev_status *devs) + const struct dev_status *devs) { int i; uint64_t addr; @@ -188,7 +188,7 @@ uintptr_t pcidev_validate(struct pci_dev *dev, int bar, return 0; } -uintptr_t pcidev_init(int bar, const struct pcidev_status *devs) +uintptr_t pcidev_init(int bar, const struct dev_status *devs) { struct pci_dev *dev; struct pci_filter filter; @@ -240,7 +240,7 @@ uintptr_t pcidev_init(int bar, const struct pcidev_status *devs) return curaddr; } -void print_supported_pcidevs(const struct pcidev_status *devs) +void print_supported_devs(const struct dev_status *devs) { int i; diff --git a/print.c b/print.c index 8bab8e3..4e5e086 100644 --- a/print.c +++ b/print.c @@ -422,21 +422,6 @@ static void print_supported_boards_helper(const struct board_info *boards, } #endif -#if CONFIG_FT2232_SPI == 1 -void print_supported_usbdevs(const struct usbdev_status *devs) -{ - int i; - - msg_pinfo("USB devices:\n"); - for (i = 0; devs[i].vendor_name != NULL; i++) { - msg_pinfo("%s %s [%04x:%04x]%s\n", devs[i].vendor_name, - devs[i].device_name, devs[i].vendor_id, - devs[i].device_id, - (devs[i].status == NT) ? " (untested)" : ""); - } -} -#endif - void print_supported(void) { unsigned int i; @@ -459,19 +444,19 @@ void print_supported(void) case USB: msg_ginfo("\nSupported USB devices for the %s programmer:\n", prog.name); - print_supported_usbdevs(prog.devices.usb); + print_supported_devs(prog.devs.status); break; case PCI: msg_ginfo("\nSupported PCI devices for the %s programmer:\n", prog.name); - print_supported_pcidevs(prog.devices.pci); + print_supported_devs(prog.devs.status); break; case OTHER: - if (prog.devices.note == NULL) + if (prog.devs.note == NULL) break; msg_ginfo("\nSupported devices for the %s programmer:\n", prog.name); - msg_ginfo("%s", prog.devices.note); + msg_ginfo("%s", prog.devs.note); break; default: break; diff --git a/print_wiki.c b/print_wiki.c index c25ec28..479f426 100644 --- a/print_wiki.c +++ b/print_wiki.c @@ -294,54 +294,21 @@ static void print_supported_chips_wiki(int cols) printf("|}\n\n"); } -/* Not needed for CONFIG_INTERNAL, but for all other PCI-based programmers. */ -#if CONFIG_NIC3COM+CONFIG_NICREALTEK+CONFIG_NICNATSEMI+CONFIG_GFXNVIDIA+CONFIG_DRKAISER+CONFIG_SATASII+CONFIG_ATAHPT+CONFIG_NICINTEL+CONFIG_NICINTEL_SPI+CONFIG_OGP_SPI+CONFIG_SATAMV >= 1 -static int count_supported_pcidevs_wiki(const struct pcidev_status *devs) +static int count_supported_devs_wiki(const struct dev_status *devs) { unsigned int count = 0; unsigned int i = 0; for (i = 0; devs[i].vendor_name != NULL; i++) - count++; + count++; return count; } -static void print_supported_pcidevs_wiki_helper(const struct programmer_entry prog) +static void print_supported_devs_wiki_helper(const struct programmer_entry prog) { int i = 0; static int c = 0; - const struct pcidev_status *devs = prog.devices.pci; - const unsigned int count = count_supported_pcidevs_wiki(devs); - - /* Alternate colors if the vendor changes. */ - c = !c; - - for (i = 0; devs[i].vendor_name != NULL; i++) { - printf("|- bgcolor=\"#%s\"\n", (c) ? "eeeeee" : "dddddd"); - if (i == 0) - printf("| rowspan=\"%u\" | %s |", count, prog.name); - printf("| %s || %s || %04x:%04x || {{%s}}\n", - devs[i].vendor_name, devs[i].device_name, - devs[i].vendor_id, devs[i].device_id, - (devs[i].status == NT) ? "?3" : "OK"); - } -} -#endif - -static int count_supported_usbdevs_wiki(const struct usbdev_status *devs) -{ - unsigned int count = 0; - unsigned int i = 0; - for (i = 0; devs[i].vendor_name != NULL; i++) - count++; - return count; -} - -static void print_supported_usbdevs_wiki_helper(const struct programmer_entry prog) -{ - int i = 0; - static int c = 0; - const struct usbdev_status *devs = prog.devices.usb; - const unsigned int count = count_supported_usbdevs_wiki(devs); + const struct dev_status *devs = prog.devs.status; + const unsigned int count = count_supported_devs_wiki(devs); /* Alternate colors if the vendor changes. */ c = !c; @@ -367,10 +334,10 @@ static void print_supported_devs_wiki() const struct programmer_entry prog = programmer_table[i]; switch (prog.type) { case USB: - usb_count += count_supported_usbdevs_wiki(prog.devices.usb); + usb_count += count_supported_devs_wiki(prog.devs.status); break; case PCI: - pci_count += count_supported_pcidevs_wiki(prog.devices.pci); + pci_count += count_supported_devs_wiki(prog.devs.status); break; case OTHER: default: @@ -387,7 +354,7 @@ static void print_supported_devs_wiki() for (i = 0; i < PROGRAMMER_INVALID; i++) { const struct programmer_entry prog = programmer_table[i]; if (prog.type == PCI) { - print_supported_pcidevs_wiki_helper(prog); + print_supported_devs_wiki_helper(prog); } } printf("\n|}\n"); @@ -401,7 +368,7 @@ static void print_supported_devs_wiki() for (i = 0; i < PROGRAMMER_INVALID; i++) { const struct programmer_entry prog = programmer_table[i]; if (prog.type == USB) { - print_supported_usbdevs_wiki_helper(prog); + print_supported_devs_wiki_helper(prog); } } printf("\n|}\n"); diff --git a/programmer.h b/programmer.h index 9f90fe5..b52727e 100644 --- a/programmer.h +++ b/programmer.h @@ -93,15 +93,22 @@ enum programmer_type { OTHER, }; +struct dev_status { + uint16_t vendor_id; + uint16_t device_id; + const enum test_state status; + const char *vendor_name; + const char *device_name; +}; + struct programmer_entry { const char *vendor; const char *name; enum programmer_type type; union { - const struct pcidev_status *const pci; - const struct usbdev_status *const usb; + const struct dev_status *const status; const char * const note; - } devices; + } devs; int (*init) (void); @@ -226,15 +233,8 @@ void internal_delay(int usecs); extern uint32_t io_base_addr; extern struct pci_access *pacc; extern struct pci_dev *pcidev_dev; -struct pcidev_status { - uint16_t vendor_id; - uint16_t device_id; - const enum test_state status; - const char *vendor_name; - const char *device_name; -}; -uintptr_t pcidev_validate(struct pci_dev *dev, int bar, const struct pcidev_status *devs); -uintptr_t pcidev_init(int bar, const struct pcidev_status *devs); +uintptr_t pcidev_validate(struct pci_dev *dev, int bar, const struct dev_status *devs); +uintptr_t pcidev_init(int bar, const struct dev_status *devs); /* rpci_write_* are reversible writes. The original PCI config space register * contents will be restored on shutdown. */ @@ -245,7 +245,7 @@ int rpci_write_long(struct pci_dev *dev, int reg, uint32_t data); /* print.c */ #if CONFIG_NIC3COM+CONFIG_NICREALTEK+CONFIG_NICNATSEMI+CONFIG_GFXNVIDIA+CONFIG_DRKAISER+CONFIG_SATASII+CONFIG_ATAHPT+CONFIG_NICINTEL+CONFIG_NICINTEL_SPI+CONFIG_OGP_SPI+CONFIG_SATAMV >= 1 -void print_supported_pcidevs(const struct pcidev_status *devs); +void print_supported_devs(const struct dev_status *devs); #endif #if CONFIG_INTERNAL == 1 @@ -360,81 +360,73 @@ void dummy_unmap(void *virt_addr, size_t len); /* nic3com.c */ #if CONFIG_NIC3COM == 1 int nic3com_init(void); -extern const struct pcidev_status nics_3com[]; +extern const struct dev_status nics_3com[]; #endif /* gfxnvidia.c */ #if CONFIG_GFXNVIDIA == 1 int gfxnvidia_init(void); -extern const struct pcidev_status gfx_nvidia[]; +extern const struct dev_status gfx_nvidia[]; #endif /* drkaiser.c */ #if CONFIG_DRKAISER == 1 int drkaiser_init(void); -extern const struct pcidev_status drkaiser_pcidev[]; +extern const struct dev_status drkaiser_pcidev[]; #endif /* nicrealtek.c */ #if CONFIG_NICREALTEK == 1 int nicrealtek_init(void); -extern const struct pcidev_status nics_realtek[]; +extern const struct dev_status nics_realtek[]; #endif /* nicnatsemi.c */ #if CONFIG_NICNATSEMI == 1 int nicnatsemi_init(void); -extern const struct pcidev_status nics_natsemi[]; +extern const struct dev_status nics_natsemi[]; #endif /* nicintel.c */ #if CONFIG_NICINTEL == 1 int nicintel_init(void); -extern const struct pcidev_status nics_intel[]; +extern const struct dev_status nics_intel[]; #endif /* nicintel_spi.c */ #if CONFIG_NICINTEL_SPI == 1 int nicintel_spi_init(void); -extern const struct pcidev_status nics_intel_spi[]; +extern const struct dev_status nics_intel_spi[]; #endif /* ogp_spi.c */ #if CONFIG_OGP_SPI == 1 int ogp_spi_init(void); -extern const struct pcidev_status ogp_spi[]; +extern const struct dev_status ogp_spi[]; #endif /* satamv.c */ #if CONFIG_SATAMV == 1 int satamv_init(void); -extern const struct pcidev_status satas_mv[]; +extern const struct dev_status satas_mv[]; #endif /* satasii.c */ #if CONFIG_SATASII == 1 int satasii_init(void); -extern const struct pcidev_status satas_sii[]; +extern const struct dev_status satas_sii[]; #endif /* atahpt.c */ #if CONFIG_ATAHPT == 1 int atahpt_init(void); -extern const struct pcidev_status ata_hpt[]; +extern const struct dev_status ata_hpt[]; #endif /* ft2232_spi.c */ #if CONFIG_FT2232_SPI == 1 -struct usbdev_status { - uint16_t vendor_id; - uint16_t device_id; - const enum test_state status; - const char *vendor_name; - const char *device_name; -}; int ft2232_spi_init(void); -extern const struct usbdev_status devs_ft2232spi[]; -void print_supported_usbdevs(const struct usbdev_status *devs); +extern const struct dev_status devs_ft2232spi[]; #endif /* rayer_spi.c */ diff --git a/satamv.c b/satamv.c index e39385b..689855f 100644 --- a/satamv.c +++ b/satamv.c @@ -28,7 +28,7 @@ uint8_t *mv_bar; uint16_t mv_iobar; -const struct pcidev_status satas_mv[] = { +const struct dev_status satas_mv[] = { /* 88SX6041 and 88SX6042 are the same according to the datasheet. */ {0x11ab, 0x7042, OK, "Marvell", "88SX7042 PCI-e 4-port SATA-II"}, diff --git a/satasii.c b/satasii.c index 387c605..eac1f37 100644 --- a/satasii.c +++ b/satasii.c @@ -31,7 +31,7 @@ uint8_t *sii_bar; static uint16_t id; -const struct pcidev_status satas_sii[] = { +const struct dev_status satas_sii[] = { {0x1095, 0x0680, OK, "Silicon Image", "PCI0680 Ultra ATA-133 Host Ctrl"}, {0x1095, 0x3112, OK, "Silicon Image", "SiI 3112 [SATALink/SATARaid] SATA Ctrl"}, {0x1095, 0x3114, OK, "Silicon Image", "SiI 3114 [SATALink/SATARaid] SATA Ctrl"}, -- 1.7.1 From stefan.tauner at student.tuwien.ac.at Sat Mar 3 21:11:10 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 3 Mar 2012 21:11:10 +0100 Subject: [flashrom] [PATCH 2/7] Refactor PCI and USB device status printing In-Reply-To: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <1330805475-19732-3-git-send-email-stefan.tauner@student.tuwien.ac.at> To be able to get rid of lots of #ifdefs and centralize programmer-specific data more... - introduce two new fields to struct programmer_entry, namely enum type (OTHER, USB, PCI) and union devices (pcidev_status, usbdev_status or char *note). - use those fields to generate device listings in print.c and print_wiki.c. Bonus: add printing of USB devices to print_wiki.c and count supported PCI and USB devices Signed-off-by: Stefan Tauner --- flashrom.c | 43 ++++++++++++++++++ ft2232_spi.c | 13 ------ pcidev.c | 1 - print.c | 135 +++++++++++++++++---------------------------------------- print_wiki.c | 136 +++++++++++++++++++++++++++++++++++++++------------------- programmer.h | 12 +++++ 6 files changed, 187 insertions(+), 153 deletions(-) diff --git a/flashrom.c b/flashrom.c index cad043b..bf1e157 100644 --- a/flashrom.c +++ b/flashrom.c @@ -62,6 +62,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_INTERNAL == 1 { .name = "internal", + .type = OTHER, + .devices.note = NULL, .init = internal_init, .map_flash_region = physmap, .unmap_flash_region = physunmap, @@ -72,6 +74,9 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_DUMMY == 1 { .name = "dummy", + .type = OTHER, + /* FIXME */ + .devices.note = "Dummy device, does nothing and logs all accesses\n", .init = dummy_init, .map_flash_region = dummy_map, .unmap_flash_region = dummy_unmap, @@ -82,6 +87,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_NIC3COM == 1 { .name = "nic3com", + .type = PCI, + .devices.pci = nics_3com, .init = nic3com_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -93,6 +100,8 @@ const struct programmer_entry programmer_table[] = { { /* This programmer works for Realtek RTL8139 and SMC 1211. */ .name = "nicrealtek", + .type = PCI, + .devices.pci = nics_realtek, //.name = "nicsmc1211", .init = nicrealtek_init, .map_flash_region = fallback_map, @@ -104,6 +113,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_NICNATSEMI == 1 { .name = "nicnatsemi", + .type = PCI, + .devices.pci = nics_natsemi, .init = nicnatsemi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -114,6 +125,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_GFXNVIDIA == 1 { .name = "gfxnvidia", + .type = PCI, + .devices.pci = gfx_nvidia, .init = gfxnvidia_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -124,6 +137,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_DRKAISER == 1 { .name = "drkaiser", + .type = PCI, + .devices.pci = drkaiser_pcidev, .init = drkaiser_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -134,6 +149,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_SATASII == 1 { .name = "satasii", + .type = PCI, + .devices.pci = satas_sii, .init = satasii_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -144,6 +161,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_ATAHPT == 1 { .name = "atahpt", + .type = PCI, + .devices.pci = ata_hpt, .init = atahpt_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -154,6 +173,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_FT2232_SPI == 1 { .name = "ft2232_spi", + .type = USB, + .devices.usb = devs_ft2232spi, .init = ft2232_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -164,6 +185,9 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_SERPROG == 1 { .name = "serprog", + .type = OTHER, + /* FIXME */ + .devices.note = "All programmer devices speaking the serprog protocol\n", .init = serprog_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -174,6 +198,9 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_BUSPIRATE_SPI == 1 { .name = "buspirate_spi", + .type = OTHER, + /* FIXME */ + .devices.note = "Dangerous Prototypes Bus Pirate\n", .init = buspirate_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -184,6 +211,9 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_DEDIPROG == 1 { .name = "dediprog", + .type = OTHER, + /* FIXME */ + .devices.note = "Dediprog SF100\n", .init = dediprog_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -194,6 +224,9 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_RAYER_SPI == 1 { .name = "rayer_spi", + .type = OTHER, + /* FIXME */ + .devices.note = "RayeR parallel port programmer\n", .init = rayer_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -204,6 +237,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_NICINTEL == 1 { .name = "nicintel", + .type = PCI, + .devices.pci = nics_intel, .init = nicintel_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -214,6 +249,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_NICINTEL_SPI == 1 { .name = "nicintel_spi", + .type = PCI, + .devices.pci = nics_intel_spi, .init = nicintel_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -224,6 +261,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_OGP_SPI == 1 { .name = "ogp_spi", + .type = PCI, + .devices.pci = ogp_spi, .init = ogp_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -234,6 +273,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_SATAMV == 1 { .name = "satamv", + .type = PCI, + .devices.pci = satas_mv, .init = satamv_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -244,6 +285,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_LINUX_SPI == 1 { .name = "linux_spi", + .type = OTHER, + .devices.note = "Device files /dev/spidev*.*\n", .init = linux_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, diff --git a/ft2232_spi.c b/ft2232_spi.c index 122866f..ec4934e 100644 --- a/ft2232_spi.c +++ b/ft2232_spi.c @@ -435,17 +435,4 @@ static int ft2232_spi_send_command(struct flashctx *flash, return failed ? -1 : 0; } -void print_supported_usbdevs(const struct usbdev_status *devs) -{ - int i; - - msg_pinfo("USB devices:\n"); - for (i = 0; devs[i].vendor_name != NULL; i++) { - msg_pinfo("%s %s [%04x:%04x]%s\n", devs[i].vendor_name, - devs[i].device_name, devs[i].vendor_id, - devs[i].device_id, - (devs[i].status == NT) ? " (untested)" : ""); - } -} - #endif diff --git a/pcidev.c b/pcidev.c index e8b4dc1..6e5d0f1 100644 --- a/pcidev.c +++ b/pcidev.c @@ -244,7 +244,6 @@ void print_supported_pcidevs(const struct pcidev_status *devs) { int i; - msg_pinfo("PCI devices:\n"); for (i = 0; devs[i].vendor_name != NULL; i++) { msg_pinfo("%s %s [%04x:%04x]%s\n", devs[i].vendor_name, devs[i].device_name, devs[i].vendor_id, diff --git a/print.c b/print.c index 544a846..8bab8e3 100644 --- a/print.c +++ b/print.c @@ -422,8 +422,24 @@ static void print_supported_boards_helper(const struct board_info *boards, } #endif +#if CONFIG_FT2232_SPI == 1 +void print_supported_usbdevs(const struct usbdev_status *devs) +{ + int i; + + msg_pinfo("USB devices:\n"); + for (i = 0; devs[i].vendor_name != NULL; i++) { + msg_pinfo("%s %s [%04x:%04x]%s\n", devs[i].vendor_name, + devs[i].device_name, devs[i].vendor_id, + devs[i].device_id, + (devs[i].status == NT) ? " (untested)" : ""); + } +} +#endif + void print_supported(void) { + unsigned int i; print_supported_chips(); msg_ginfo("\nSupported programmers:\n"); @@ -437,101 +453,30 @@ void print_supported(void) msg_ginfo("\n"); print_supported_boards_helper(laptops_known, "laptops"); #endif -#if CONFIG_DUMMY == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_DUMMY].name); - /* FIXME */ - msg_ginfo("Dummy device, does nothing and logs all accesses\n"); -#endif -#if CONFIG_NIC3COM == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_NIC3COM].name); - print_supported_pcidevs(nics_3com); -#endif -#if CONFIG_NICREALTEK == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_NICREALTEK].name); - print_supported_pcidevs(nics_realtek); -#endif -#if CONFIG_NICNATSEMI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_NICNATSEMI].name); - print_supported_pcidevs(nics_natsemi); -#endif -#if CONFIG_GFXNVIDIA == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_GFXNVIDIA].name); - print_supported_pcidevs(gfx_nvidia); -#endif -#if CONFIG_DRKAISER == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_DRKAISER].name); - print_supported_pcidevs(drkaiser_pcidev); -#endif -#if CONFIG_SATASII == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_SATASII].name); - print_supported_pcidevs(satas_sii); -#endif -#if CONFIG_ATAHPT == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_ATAHPT].name); - print_supported_pcidevs(ata_hpt); -#endif -#if CONFIG_FT2232_SPI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_FT2232_SPI].name); - print_supported_usbdevs(devs_ft2232spi); -#endif -#if CONFIG_SERPROG == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_SERPROG].name); - /* FIXME */ - msg_ginfo("All programmer devices speaking the serprog protocol\n"); -#endif -#if CONFIG_BUSPIRATE_SPI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_BUSPIRATE_SPI].name); - /* FIXME */ - msg_ginfo("Dangerous Prototypes Bus Pirate\n"); -#endif -#if CONFIG_DEDIPROG == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_DEDIPROG].name); - /* FIXME */ - msg_ginfo("Dediprog SF100\n"); -#endif -#if CONFIG_RAYER_SPI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_RAYER_SPI].name); - /* FIXME */ - msg_ginfo("RayeR parallel port programmer\n"); -#endif -#if CONFIG_NICINTEL == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_NICINTEL].name); - print_supported_pcidevs(nics_intel); -#endif -#if CONFIG_NICINTEL_SPI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_NICINTEL_SPI].name); - print_supported_pcidevs(nics_intel_spi); -#endif -#if CONFIG_OGP_SPI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_OGP_SPI].name); - print_supported_pcidevs(ogp_spi); -#endif -#if CONFIG_SATAMV == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_SATAMV].name); - print_supported_pcidevs(satas_mv); -#endif -#if CONFIG_LINUX_SPI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_LINUX_SPI].name); - msg_ginfo("Device files /dev/spidev*.*\n"); -#endif + for (i = 0; i < PROGRAMMER_INVALID; i++) { + const struct programmer_entry prog = programmer_table[i]; + switch (prog.type) { + case USB: + msg_ginfo("\nSupported USB devices for the %s programmer:\n", + prog.name); + print_supported_usbdevs(prog.devices.usb); + break; + case PCI: + msg_ginfo("\nSupported PCI devices for the %s programmer:\n", + prog.name); + print_supported_pcidevs(prog.devices.pci); + break; + case OTHER: + if (prog.devices.note == NULL) + break; + msg_ginfo("\nSupported devices for the %s programmer:\n", + prog.name); + msg_ginfo("%s", prog.devices.note); + break; + default: + break; + } + } } #if CONFIG_INTERNAL == 1 diff --git a/print_wiki.c b/print_wiki.c index 9a9cd83..756f8d4 100644 --- a/print_wiki.c +++ b/print_wiki.c @@ -72,12 +72,9 @@ static const char chip_th[] = "{\ | Probe\n| Read\n| Erase\n| Write\n\ | align=\"center\" | Min \n| align=\"center\" | Max\n\n"; -static const char programmer_section[] = "\ -\n== Supported programmers ==\n\nThis is a list \ -of supported PCI devices flashrom can use as programmer:\n\n{| border=\"0\" \ -valign=\"top\"\n| valign=\"top\"|\n\n{| border=\"0\" style=\"font-size: \ +static const char programmer_th[] = "{| border=\"0\" style=\"font-size: \ smaller\" valign=\"top\"\n|- bgcolor=\"#6699dd\"\n! align=\"left\" | Vendor\n\ -! align=\"left\" | Device\n! align=\"center\" | PCI IDs\n\ +! align=\"left\" | Device\n! align=\"center\" | IDs\n\ ! align=\"center\" | Status\n\n"; #if CONFIG_INTERNAL == 1 @@ -126,7 +123,7 @@ static void print_supported_chipsets_wiki(int cols) printf("\n|}\n\n|}\n"); } -static void wiki_helper(const char *devicetype, int cols, +static void print_supported_boards_wiki_helper(const char *devicetype, int cols, const struct board_info boards[]) { int i, j, k = 0, boardcount_good = 0, boardcount_bad = 0, color = 1; @@ -200,10 +197,10 @@ static void wiki_helper(const char *devicetype, int cols, static void print_supported_boards_wiki(void) { printf("%s", board_intro); - wiki_helper("boards", 2, boards_known); + print_supported_boards_wiki_helper("boards", 2, boards_known); printf("%s", laptop_intro); - wiki_helper("laptops", 1, laptops_known); + print_supported_boards_wiki_helper("laptops", 1, laptops_known); } #endif @@ -277,7 +274,16 @@ static void print_supported_chips_wiki(int cols) /* Not needed for CONFIG_INTERNAL, but for all other PCI-based programmers. */ #if CONFIG_NIC3COM+CONFIG_NICREALTEK+CONFIG_NICNATSEMI+CONFIG_GFXNVIDIA+CONFIG_DRKAISER+CONFIG_SATASII+CONFIG_ATAHPT+CONFIG_NICINTEL+CONFIG_NICINTEL_SPI+CONFIG_OGP_SPI+CONFIG_SATAMV >= 1 -static void print_supported_pcidevs_wiki(const struct pcidev_status *devs) +static int count_supported_pcidevs_wiki(const struct pcidev_status *devs) +{ + unsigned int count = 0; + unsigned int i = 0; + for (i = 0; devs[i].vendor_name != NULL; i++) + count++; + return count; +} + +static void print_supported_pcidevs_wiki_helper(const struct pcidev_status *devs) { int i = 0; static int c = 0; @@ -295,6 +301,82 @@ static void print_supported_pcidevs_wiki(const struct pcidev_status *devs) } #endif +static int count_supported_usbdevs_wiki(const struct usbdev_status *devs) +{ + unsigned int count = 0; + unsigned int i = 0; + for (i = 0; devs[i].vendor_name != NULL; i++) + count++; + return count; +} + +static void print_supported_usbdevs_wiki_helper(const struct usbdev_status *devs) +{ + int i = 0; + static int c = 0; + + /* Alternate colors if the vendor changes. */ + c = !c; + + for (i = 0; devs[i].vendor_name != NULL; i++) { + printf("|- bgcolor=\"#%s\"\n| %s || %s || " + "%04x:%04x || {{%s}}\n", (c) ? "eeeeee" : "dddddd", + devs[i].vendor_name, devs[i].device_name, + devs[i].vendor_id, devs[i].device_id, + (devs[i].status == NT) ? "?3" : "OK"); + } +} + +static void print_supported_devs_wiki() +{ + unsigned int pci_count = 0; + unsigned int usb_count = 0; + unsigned int i; + + for (i = 0; i < PROGRAMMER_INVALID; i++) { + const struct programmer_entry prog = programmer_table[i]; + switch (prog.type) { + case USB: + usb_count += count_supported_usbdevs_wiki(prog.devices.usb); + break; + case PCI: + pci_count += count_supported_pcidevs_wiki(prog.devices.pci); + break; + case OTHER: + default: + break; + } + } + + printf("\n== PCI Devices ==\n\n" + "Total amount of supported PCI devices flashrom can use as a programmer: '''%d'''\n\n" + "{| border=\"0\" valign=\"top\"\n| valign=\"top\"|\n\n", + pci_count); + printf("%s", programmer_th); + + for (i = 0; i < PROGRAMMER_INVALID; i++) { + const struct programmer_entry prog = programmer_table[i]; + if (prog.type == PCI) { + print_supported_pcidevs_wiki_helper(prog.devices.pci); + } + } + printf("\n|}\n"); + + printf("\n== USB Devices ==\n\n" + "Total amount of supported USB devices flashrom can use as a programmer: '''%d'''\n\n" + "{| border=\"0\" valign=\"top\"\n| valign=\"top\"|\n\n", + usb_count); + printf("%s", programmer_th); + + for (i = 0; i < PROGRAMMER_INVALID; i++) { + const struct programmer_entry prog = programmer_table[i]; + if (prog.type == USB) { + print_supported_usbdevs_wiki_helper(prog.devices.usb); + } + } + printf("\n|}\n"); +} + void print_supported_wiki(void) { time_t t = time(NULL); @@ -305,40 +387,6 @@ void print_supported_wiki(void) print_supported_chipsets_wiki(3); print_supported_boards_wiki(); #endif - printf("%s", programmer_section); -#if CONFIG_NIC3COM == 1 - print_supported_pcidevs_wiki(nics_3com); -#endif -#if CONFIG_NICREALTEK == 1 - print_supported_pcidevs_wiki(nics_realtek); -#endif -#if CONFIG_NICNATSEMI == 1 - print_supported_pcidevs_wiki(nics_natsemi); -#endif -#if CONFIG_GFXNVIDIA == 1 - print_supported_pcidevs_wiki(gfx_nvidia); -#endif -#if CONFIG_DRKAISER == 1 - print_supported_pcidevs_wiki(drkaiser_pcidev); -#endif -#if CONFIG_SATASII == 1 - print_supported_pcidevs_wiki(satas_sii); -#endif -#if CONFIG_ATAHPT == 1 - print_supported_pcidevs_wiki(ata_hpt); -#endif -#if CONFIG_NICINTEL == 1 - print_supported_pcidevs_wiki(nics_intel); -#endif -#if CONFIG_NICINTEL_SPI == 1 - print_supported_pcidevs_wiki(nics_intel_spi); -#endif -#if CONFIG_OGP_SPI == 1 - print_supported_pcidevs_wiki(ogp_spi); -#endif -#if CONFIG_SATAMV == 1 - print_supported_pcidevs_wiki(satas_mv); -#endif - printf("\n|}\n"); + print_supported_devs_wiki(); } diff --git a/programmer.h b/programmer.h index 479d963..9f90fe5 100644 --- a/programmer.h +++ b/programmer.h @@ -87,9 +87,21 @@ enum programmer { PROGRAMMER_INVALID /* This must always be the last entry. */ }; +enum programmer_type { + PCI, + USB, + OTHER, +}; + struct programmer_entry { const char *vendor; const char *name; + enum programmer_type type; + union { + const struct pcidev_status *const pci; + const struct usbdev_status *const usb; + const char * const note; + } devices; int (*init) (void); -- 1.7.1 From stefan.tauner at student.tuwien.ac.at Sat Mar 3 21:11:09 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 3 Mar 2012 21:11:09 +0100 Subject: [flashrom] [PATCH 1/7] Introduce and use enum test_state In-Reply-To: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <1330805475-19732-2-git-send-email-stefan.tauner@student.tuwien.ac.at> Previously boards in the wiki were tagged either as working or as known bad. But we added support to various boards via board enables that were then never tested because the owners have not reported back. This can now be tagged with NT and is shown appropriately. Also, the underlying data structure indicating state was converted from macros to an enum while preserving original integer values. Because all lines specifying supported boards and laptops were touched anyway, this patch also re-indents them. --- TODO: change other occurrences to use it. wanted to get feedack first. Signed-off-by: Stefan Tauner --- flash.h | 7 +- print.c | 869 +++++++++++++++++++++++++++++----------------------------- print_wiki.c | 7 +- programmer.h | 6 +- 4 files changed, 446 insertions(+), 443 deletions(-) diff --git a/flash.h b/flash.h index 0dac13d..4d0d79b 100644 --- a/flash.h +++ b/flash.h @@ -251,8 +251,11 @@ int doit(struct flashctx *flash, int force, const char *filename, int read_it, i int read_buf_from_file(unsigned char *buf, unsigned long size, const char *filename); int write_buf_to_file(unsigned char *buf, unsigned long size, const char *filename); -#define OK 0 -#define NT 1 /* Not tested */ +enum test_state { + OK = 0, + NT = 1, /* Not tested */ + BAD +}; /* Something happened that shouldn't happen, but we can go on. */ #define ERROR_NONFATAL 0x100 diff --git a/print.c b/print.c index 1fdeac7..544a846 100644 --- a/print.c +++ b/print.c @@ -545,428 +545,427 @@ void print_supported(void) /* Please keep this list alphabetically ordered by vendor/board. */ const struct board_info boards_known[] = { #if defined(__i386__) || defined(__x86_64__) - B("A-Trend", "ATC-6220", 1, "http://www.motherboard.cz/mb/atrend/atc6220.htm", NULL), - B("abit", "A-S78H", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=A-S78H&fMTYPE=Socket+AM2", NULL), - B("abit", "AN-M2", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20AM2&pMODEL_NAME=AN-M2", NULL), - B("abit", "AV8", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20939&pMODEL_NAME=AV8", NULL), - B("abit", "AX8", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20939&pMODEL_NAME=AX8", NULL), - B("abit", "BM6", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=BM6&fMTYPE=Socket%20370", NULL), - B("abit", "Fatal1ty F-I90HD", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=Fatal1ty+F-I90HD&fMTYPE=LGA775", NULL), - B("abit", "IC7", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=IC7&fMTYPE=Socket%20478", NULL), - B("abit", "IP35", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=LGA775&pMODEL_NAME=IP35", NULL), - B("abit", "IP35 Pro", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=LGA775&pMODEL_NAME=IP35%20Pro", NULL), - B("abit", "IS-10", 0, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=IS-10&fMTYPE=Socket+478", "Reported by deejkuba at aol.com to flashrom at coreboot.org, no public archive. Missing board enable and/or M50FW040 unlocking. May work now."), - B("abit", "KN8 Ultra", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20939&pMODEL_NAME=KN8%20Ultra", NULL), - B("abit", "NF-M2 nView", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=Socket%20AM2&pMODEL_NAME=NF-M2%20nView", NULL), - B("abit", "NF-M2S", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=NF-M2S&fMTYPE=Socket%20AM2", NULL), - B("abit", "NF7-S", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=Socket%20A&pMODEL_NAME=NF7-S", NULL), - B("abit", "VA6", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=Slot%201&pMODEL_NAME=VA6", NULL), - B("abit", "VT6X4", 1, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=Slot%201&pMODEL_NAME=VT6X4", NULL), - B("Acorp", "6A815EPD", 1, "http://web.archive.org/web/20021206163652/www.acorp.com.tw/English/default.asp", NULL), - B("Advantech", "PCM-5820", 1, "http://www.emacinc.com/sbc_pc_compatible/pcm_5820.htm", NULL), - B("agami", "Aruma", 1, "http://web.archive.org/web/20080212111524/http://www.agami.com/site/ais-6000-series", NULL), - B("Albatron", "PM266A Pro", 1, "http://www.albatron.com.tw/English/Product/MB/pro_detail.asp?rlink=Overview&no=56", NULL), /* FIXME */ - B("AOpen", "i945GMx-VFX", 1, NULL, "This is (also?) an OEM board from FSC (used in e.g. ESPRIMO Q5010 with designation D2544-B1)."), - B("AOpen", "vKM400Am-S", 1, "http://usa.aopen.com/products_detail.aspx?Auno=824", NULL), - B("Artec Group","DBE61", 1, "http://wiki.thincan.org/DBE61", NULL), - B("Artec Group","DBE62", 1, "http://wiki.thincan.org/DBE62", NULL), - B("ASI", "MB-5BLMP", 1, "http://www.hojerteknik.com/winnet.htm", "Used in the IGEL WinNET III thin client."), - B("ASRock", "775i65G", 1, "http://www.asrock.com/mb/overview.asp?Model=775i65G", NULL), - B("ASRock", "890GX Extreme3", 1, "http://www.asrock.com/mb/overview.asp?Model=890GX%20Extreme3", NULL), - B("ASRock", "939A785GMH/128M", 1, "http://www.asrock.com/mb/overview.asp?Model=939A785GMH/128M", NULL), - B("ASRock", "A330GC", 1, "http://www.asrock.com/mb/overview.asp?Model=A330GC", NULL), - B("ASRock", "A770CrossFire", 1, "http://www.asrock.com/mb/overview.asp?Model=A770CrossFire", NULL), - B("ASRock", "ALiveNF6G-DVI", 1, "http://www.asrock.com/mb/overview.asp?Model=ALiveNF6G-DVI", NULL), - B("ASRock", "AM2NF6G-VSTA", 1, "http://www.asrock.com/mb/overview.asp?Model=AM2NF6G-VSTA", NULL), - B("ASRock", "ConRoeXFire-eSATA2", 1, "http://www.asrock.com/mb/overview.asp?model=conroexfire-esata2", NULL), - B("ASRock", "K7S41", 1, "http://www.asrock.com/mb/overview.asp?Model=K7S41", NULL), - B("ASRock", "K7S41GX", 1, "http://www.asrock.com/mb/overview.asp?Model=K7S41GX", NULL), - B("ASRock", "K7VT4A+", 0, "http://www.asrock.com/mb/overview.asp?Model=K7VT4A%2b", "No chip found, probably due to flash translation. http://www.flashrom.org/pipermail/flashrom/2009-August/000393.html"), - B("ASRock", "K8S8X", 1, "http://www.asrock.com/mb/overview.asp?Model=K8S8X", NULL), - B("ASRock", "M3A790GXH/128M", 1, "http://www.asrock.com/mb/overview.asp?Model=M3A790GXH/128M", NULL), - B("ASRock", "P4i65GV", 1, "http://www.asrock.com/mb/overview.asp?Model=P4i65GV", NULL), - B("ASUS", "A7N8X Deluxe", 1, "http://www.asus.com/Motherboards/AMD_Socket_A/A7N8X_Deluxe/", NULL), - B("ASUS", "A7N8X-E Deluxe", 1, "http://www.asus.com/Motherboards/AMD_Socket_A/A7N8XE_Deluxe/", NULL), - B("ASUS", "A7N8X-VM/400", 1, "http://www.asus.com/Motherboards/AMD_Socket_A/A7N8XVM400/", NULL), - B("ASUS", "A7V133", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/socka/kt133a/a7v133/", NULL), - B("ASUS", "A7V333", 1, "ftp://ftp.asus.com.tw/pub/asus/mb/socka/kt333/a7v333/", NULL), - B("ASUS", "A7V400-MX", 1, "http://www.asus.com/Motherboards/AMD_Socket_A/A7V400MX/", NULL), - B("ASUS", "A7V600-X", 1, "http://www.asus.com/Motherboards/AMD_Socket_A/A7V600X/", NULL), - B("ASUS", "A7V8X", 1, "http://www.asus.com/Motherboards/AMD_Socket_A/A7V8X/", NULL), - B("ASUS", "A7V8X-MX", 1, "http://www.asus.com/Motherboards/AMD_Socket_A/A7V8XMX/", NULL), - B("ASUS", "A7V8X-MX SE", 1, "http://www.asus.com/Motherboards/AMD_Socket_A/A7V8XMX_SE/", NULL), - B("ASUS", "A7V8X-X", 1, "http://www.asus.com/Motherboards/AMD_Socket_A/A7V8XX/", NULL), - B("ASUS", "A8M2N-LA (NodusM3-GL8E)", 1, "http://h10010.www1.hp.com/ewfrf/wc/document?docname=c00757531&cc=us&dlc=en&lc=en", "This is an OEM board from HP, the HP name is NodusM3-GL8E."), - B("ASUS", "A8N-E", 1, "http://www.asus.com/Motherboards/AMD_Socket_939/A8NE/", NULL), - B("ASUS", "A8N-LA (Nagami-GL8E)", 1, "http://h10025.www1.hp.com/ewfrf/wc/document?lc=en&cc=us&docname=c00647121&dlc=en", "This is an OEM board from HP, the HP name is Nagami-GL8E."), - B("ASUS", "A8N-SLI", 1, "http://www.asus.com/Motherboards/AMD_Socket_939/A8NSLI/", NULL), - B("ASUS", "A8N-SLI Deluxe", 0, NULL, "Untested board enable."), - B("ASUS", "A8N-SLI Premium", 1, "http://www.asus.com/Motherboards/AMD_Socket_939/A8NSLI_Premium/", NULL), - B("ASUS", "A8N-VM", 1, "http://www.asus.com/Motherboards/AMD_Socket_939/A8NVM/", NULL), - B("ASUS", "A8N-VM CSM", 1, "http://www.asus.com/Motherboards/AMD_Socket_939/A8NVM_CSM/", NULL), - B("ASUS", "A8NE-FM/S", 1, "http://www.hardwareschotte.de/hardware/preise/proid_1266090/preis_ASUS+A8NE-FM", NULL), - B("ASUS", "A8V Deluxe", 1, "http://www.asus.com/Motherboards/AMD_Socket_939/A8V_Deluxe/", NULL), - B("ASUS", "A8V-E Deluxe", 1, "http://www.asus.com/Motherboards/AMD_Socket_939/A8VE_Deluxe/", NULL), - B("ASUS", "A8V-E SE", 1, "http://www.asus.com/Motherboards/AMD_Socket_939/A8VE_SE/", "See http://www.coreboot.org/pipermail/coreboot/2007-October/026496.html"), - B("ASUS", "Crosshair II Formula", 1, "http://www.asus.com/Motherboards/AMD_AM2Plus/Crosshair_II_Formula/", NULL), - B("ASUS", "Crosshair IV Extreme", 1, "http://www.asus.com/Motherboards/AMD_AM3/Crosshair_IV_Extreme/", NULL), - B("ASUS", "E35M1-I DELUXE", 1, "http://www.asus.com/Motherboards/AMD_CPU_on_Board/E35M1I_DELUXE/", NULL), - B("ASUS", "K8N", 1, "http://www.asus.com/Motherboards/AMD_Socket_754/K8N/", NULL), - B("ASUS", "K8V", 1, "http://www.asus.com/Motherboards/AMD_Socket_754/K8V/", NULL), - B("ASUS", "K8V SE Deluxe", 1, "http://www.asus.com/Motherboards/AMD_Socket_754/K8V_SE_Deluxe/", NULL), - B("ASUS", "K8V-X", 1, "http://www.asus.com/Motherboards/AMD_Socket_754/K8VX/", NULL), - B("ASUS", "K8V-X SE", 1, "http://www.asus.com/Motherboards/AMD_Socket_754/K8VX_SE/", NULL), - B("ASUS", "KFSN4-DRE/SAS", 1, "http://www.asus.com/Server_Workstation/Server_Motherboards/KFSN4DRESAS/", NULL), - B("ASUS", "M2A-MX", 1, "http://www.asus.com/Motherboards/AMD_AM2/M2AMX/", NULL), - B("ASUS", "M2A-VM (HDMI)", 1, "http://www.asus.com/Motherboards/AMD_AM2/M2AVM/", NULL), - B("ASUS", "M2N32-SLI Deluxe", 1, "http://www.asus.com/Motherboards/AMD_AM2/M2N32SLI_DeluxeWireless_Edition/", NULL), - B("ASUS", "M2N-E", 1, "http://www.asus.com/Motherboards/AMD_AM2/M2NE/", "If the machine doesn't come up again after flashing, try resetting the NVRAM(CMOS). The MAC address of the onboard network card will change to the value stored in the new image, so backup the old address first. See http://www.flashrom.org/pipermail/flashrom/2009-November/000879.html"), - B("ASUS", "M2N-E SLI", 1, "http://www.asus.com/Motherboards/AMD_AM2/M2NE_SLI/", NULL), - B("ASUS", "M2N-SLI Deluxe", 1, "http://www.asus.com/Motherboards/AMD_AM2/M2NSLI_Deluxe/", NULL), - B("ASUS", "M2NBP-VM CSM", 1, "http://www.asus.com/Motherboards/AMD_AM2/M2NBPVM_CSM/", NULL), - B("ASUS", "M2NPV-VM", 1, "http://www.asus.com/Motherboards/AMD_AM2/M2NPVVM/", NULL), - B("ASUS", "M2V", 1, "http://www.asus.com/Motherboards/AMD_AM2/M2V/", NULL), - B("ASUS", "M2V-MX", 1, "http://www.asus.com/Motherboards/AMD_AM2/M2VMX/", NULL), - B("ASUS", "M3A", 1, "http://www.asus.com/Motherboards/AMD_AM2Plus/M3A/", NULL), - B("ASUS", "M3A76-CM", 1, "http://www.asus.com/Motherboards/AMD_AM2Plus/M3A76CM/", NULL), - B("ASUS", "M3A78-EM", 1, "http://www.asus.com/Motherboards/AMD_AM2Plus/M3A78EM/", NULL), - B("ASUS", "M3N78-VM", 1, "http://www.asus.com/Motherboards/AMD_AM2Plus/M3N78VM/", NULL), - B("ASUS", "M4A78-EM", 1, "http://www.asus.com/Motherboards/AMD_AM2Plus/M4A78EM/", NULL), - B("ASUS", "M4A785TD-M EVO", 1, "http://www.asus.com/Motherboards/AMD_AM3/M4A785TDM_EVO/", NULL), - B("ASUS", "M4A785TD-V EVO", 1, "http://www.asus.com/Motherboards/AMD_AM3/M4A785TDV_EVO/", NULL), - B("ASUS", "M4A78LT-M LE", 1, "http://www.asus.com/Motherboards/AMD_AM3/M4A78LTM_LE/", NULL), - B("ASUS", "M4A79T Deluxe", 1, "http://www.asus.com/Motherboards/AMD_AM3/M4A79T_Deluxe/", NULL), - B("ASUS", "M4A87TD/USB3", 1, "http://www.asus.com/Motherboards/AMD_AM3/M4A87TDUSB3/", NULL), - B("ASUS", "M4A89GTD PRO", 1, "http://www.asus.com/Motherboards/AMD_AM3/M4A89GTD_PRO/", NULL), - B("ASUS", "M4N78 PRO", 1, "http://www.asus.com/Motherboards/AMD_AM2Plus/M4N78_PRO/", NULL), - B("ASUS", "M5A99X EVO", 1, "http://www.asus.com/Motherboards/AMD_AM3Plus/M5A99X_EVO/", NULL), - B("ASUS", "MEW-AM", 0, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock370/810/mew-am/", "No public report found. Owned by Uwe Hermann . May work now."), - B("ASUS", "MEW-VM", 0, "http://www.elhvb.com/mboards/OEM/HP/manual/ASUS%20MEW-VM.htm", "No public report found. Owned by Uwe Hermann . May work now."), - B("ASUS", "OPLX-M", 0, NULL, "Untested board enable."), - B("ASUS", "P2B", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b/", NULL), - B("ASUS", "P2B-D", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-d/", NULL), - B("ASUS", "P2B-DS", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-ds/", NULL), - B("ASUS", "P2B-F", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-d/", NULL), - B("ASUS", "P2B-N", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-n/", NULL), - B("ASUS", "P2E-M", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440ex/p2e-m/", NULL), - B("ASUS", "P2L97-S", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440lx/p2l97-s/", NULL), - B("ASUS", "P3B-F", 0, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p3b-f/", "No public report found. Owned by Uwe Hermann . May work now."), - B("ASUS", "P4B266", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock478/p4b266/", NULL), - B("ASUS", "P4B266-LM", 1, "http://esupport.sony.com/US/perl/swu-list.pl?mdl=PCVRX650", NULL), - B("ASUS", "P4B533-E", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock478/p4b533-e/", NULL), - B("ASUS", "P4C800-E Deluxe", 1, "http://www.asus.com/Motherboards/Intel_Socket_478/P4C800E_Deluxe/", NULL), - B("ASUS", "P4GV-LA (Guppy)", 1, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c00363478", NULL), - B("ASUS", "P4P800", 1, "http://www.asus.com/Motherboards/Intel_Socket_478/P4P800/", NULL), - B("ASUS", "P4P800-E Deluxe", 1, "http://www.asus.com/Motherboards/Intel_Socket_478/P4P800E_Deluxe/", NULL), - B("ASUS", "P4P800-VM", 1, "http://www.asus.com/Motherboards/Intel_Socket_478/P4P800VM/", NULL), - B("ASUS", "P4SC-E", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock478/p4sc-e/", "Part of ASUS Terminator P4 533 barebone system"), - B("ASUS", "P4SD-LA", 1, "http://h10025.www1.hp.com/ewfrf/wc/document?docname=c00022505", NULL), - B("ASUS", "P4S533-X", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock478/p4s533-x/", NULL), - B("ASUS", "P4S800-MX", 1, "http://www.asus.com/Motherboards/Intel_Socket_478/P4S800MX/", NULL), - B("ASUS", "P5A", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock7/ali/p5a/", NULL), - B("ASUS", "P5B", 1, "ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B/", NULL), - B("ASUS", "P5B-Deluxe", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5B_Deluxe/", NULL), - B("ASUS", "P5BV-M", 0, "ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B-VM/", "Reported by Bernhard M. Wiedemann to flashrom at coreboot.org, no public archive. Missing board enable and/or SST49LF008A unlocking. May work now."), - B("ASUS", "P5GC-MX/1333", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5GCMX1333/", NULL), - B("ASUS", "P5GD1 Pro", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5GD1_PRO/", NULL), - B("ASUS", "P5GD1-VM/S", 1, NULL, "This is an OEM board from FSC. Although flashrom supports it and can probably not distinguish it from the P5GD1-VM, please note that the P5GD1-VM BIOS does not support the FSC variants completely."), - B("ASUS", "P5GD1(-VM)", 0, NULL, "Untested board enable."), - B("ASUS", "P5GD2 Premium", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5GD2_Premium/", NULL), - B("ASUS", "P5GDC Deluxe", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5GDC_Deluxe/", NULL), - B("ASUS", "P5GDC-V Deluxe", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5GDCV_Deluxe/", NULL), - B("ASUS", "P5GD2/C variants", 0, NULL, "Untested board enable."), - B("ASUS", "P5K-V", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5KV/", NULL), - B("ASUS", "P5K-VM", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5KVM/", NULL), - B("ASUS", "P5KC", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5KC/", NULL), - B("ASUS", "P5KPL-CM", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5KPLCM/", NULL), - B("ASUS", "P5L-MX", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5LMX/", NULL), - B("ASUS", "P5L-VM 1394", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5LVM_1394/", NULL), - B("ASUS", "P5LD2", 0, NULL, "Untested board enable."), - B("ASUS", "P5LP-LE (Lithium-UL8E)", 1, "http://h10025.www1.hp.com/ewfrf/wc/document?docname=c00379616&tmp_task=prodinfoCategory&cc=us&dlc=en&lc=en&product=1159887", "This is an OEM board from HP."), - B("ASUS", "P5LP-LE (Epson OEM)", 1, NULL, "This is an OEM board from Epson (e.g. Endeavor MT7700)."), - B("ASUS", "P5LP-LE", 0, NULL, "This designation is used for OEM boards from HP, Epson and maybe others. The HP names vary and not all of them have been tested yet. Please report any success or failure, thanks."), - B("ASUS", "P5N-E SLI", 0, "http://www.asus.com/Motherboards/Intel_Socket_775/P5NE_SLI/", "Needs a board enable (http://patchwork.coreboot.org/patch/3298/)."), - B("ASUS", "P5N-D", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5ND/", NULL), - B("ASUS", "P5N-E SLI", 0, "http://www.asus.com/Motherboards/Intel_Socket_775/P5NE_SLI/", "Untested board enable."), - B("ASUS", "P5N32-E SLI", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5N32E_SLI/", NULL), - B("ASUS", "P5N7A-VM", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5N7AVM/", NULL), - B("ASUS", "P5ND2-SLI Deluxe", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5ND2SLI_Deluxe/", NULL), - B("ASUS", "P5PE-VM", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5PEVM/", NULL), - B("ASUS", "P5QPL-AM", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5QPLAM/", NULL), - B("ASUS", "P5VD1-X", 1, "http://www.asus.com/Motherboards/Intel_Socket_775/P5VD1X/", NULL), - B("ASUS", "P6T SE", 1, "http://www.asus.com/Motherboards/Intel_Socket_1366/P6T_SE/", NULL), - B("ASUS", "P6T Deluxe", 1, "http://www.asus.com/Motherboards/Intel_Socket_1366/P6T_Deluxe/", NULL), - B("ASUS", "P6T Deluxe V2", 1, "http://www.asus.com/Motherboards/Intel_Socket_1366/P6T_Deluxe_V2/", NULL), - B("ASUS", "P7H57D-V EVO", 1, "http://www.asus.com/Motherboards/Intel_Socket_1156/P7H57DV_EVO/", NULL), - B("ASUS", "P7H55-M LX", 0, NULL, "flashrom works correctly, but GbE LAN is nonworking (probably due to a missing/bogus MAC address; see http://www.flashrom.org/pipermail/flashrom/2011-July/007432.html and http://ubuntuforums.org/showthread.php?t=1534389 for a possible workaround)"), - B("ASUS", "P8B-E/4L", 0, NULL, "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("ASUS", "P8B WS", 0, NULL, "Probing works (Winbond W25Q32, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("ASUS", "P8H61 PRO", 0, NULL, "Probing works (Winbond W25Q32, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("ASUS", "P8H61-M LE/USB3", 0, NULL, "Probing works (Winbond W25Q32, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("ASUS", "P8H67-M PRO", 0, NULL, "Probing works (Macronix MX25L3205, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("ASUS", "P8P67 (rev. 3.1)", 0, NULL, "Probing works (Macronix MX25L3205, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("ASUS", "P8Z68-V PRO", 0, NULL, "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("ASUS", "Z8NA-D6C", 1, "http://www.asus.com/Server_Workstation/Server_Motherboards/Z8NAD6C/", NULL), - B("ASUS", "Z8PE-D12", 1, "http://www.asus.com/Server_Workstation/Server_Motherboards/Z8PED12/", NULL), - B("BCOM", "WinNET100", 1, "http://www.coreboot.org/BCOM_WINNET100", "Used in the IGEL-316 thin client."), - B("Bifferos", "Bifferboard", 1, "http://bifferos.co.uk/", NULL), - B("Biostar", "N68S3+", 1, NULL, NULL), - B("Biostar", "M6TBA", 0, "ftp://ftp.biostar-usa.com/manuals/M6TBA/", "No public report found. Owned by Uwe Hermann . May work now."), - B("Biostar", "M7NCD Pro", 1, "http://www.biostar.com.tw/app/en/mb/content.php?S_ID=260", NULL), - B("Biostar", "P4M80-M4", 1, "http://www.biostar-usa.com/mbdetails.asp?model=p4m80-m4", NULL), - B("Biostar", "TA780G M2+", 1, "http://www.biostar.com.tw/app/en/t-series/content.php?S_ID=344", NULL), - B("Boser", "HS-6637", 0, "http://www.boser.com.tw/manual/HS-62376637v3.4.pdf", "Reported by Mark Robinson to flashrom at coreboot.org, no public archive. Missing board enable and/or F29C51002T unlocking. May work now."), - B("Congatec", "conga-X852", 1, "http://www.congatec.com/single_news+M57715f6263d.html?&L=1", NULL), - B("Dell", "OptiPlex GX1", 1, "http://support.dell.com/support/edocs/systems/ban_gx1/en/index.htm", NULL), - B("Dell", "PowerEdge 1850", 1, "http://support.dell.com/support/edocs/systems/pe1850/en/index.htm", NULL), - B("DFI", "855GME-MGF", 0, "http://www.dfi.com.tw/portal/CM/cmproduct/XX_cmproddetail/XX_WbProdsWindow?action=e&downloadType=&windowstate=normal&mode=view&downloadFlag=false&itemId=433", "Probably needs a board enable. http://www.coreboot.org/pipermail/coreboot/2009-May/048549.html"), - B("DFI", "Blood-Iron P35 T2RL", 1, "http://lp.lanparty.com.tw/portal/CM/cmproduct/XX_cmproddetail/XX_WbProdsWindow?itemId=516&downloadFlag=false&action=1", NULL), - B("Elitegroup", "GeForce6100SM-M ", 1, "http://www.ecs.com.tw/ECSWebSite/Product/Product_Detail.aspx?DetailID=685&MenuID=24", NULL), - B("Elitegroup", "GF7100PVT-M3 (V1.0)", 1, "http://www.ecs.com.tw/ECSWebSite/Product/Product_Detail.aspx?DetailID=853&CategoryID=1&DetailName=Specification&MenuID=24&LanID=0", NULL), - B("Elitegroup", "K7S5A", 1, "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=279&CategoryID=1&DetailName=Specification&MenuID=1&LanID=0", NULL), - B("Elitegroup", "K7S6A", 1, "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=77&CategoryID=1&DetailName=Specification&MenuID=52&LanID=0", NULL), - B("Elitegroup", "K7SEM (V1.0A)", 1, "http://www.ecs.com.tw/ECSWebSite/Product/Product_Detail.aspx?DetailID=229&CategoryID=1&DetailName=Specification&MenuID=24&LanID=0", NULL), - B("Elitegroup", "K7VTA3", 1, "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=264&CategoryID=1&DetailName=Specification&MenuID=52&LanID=0", NULL), - B("Elitegroup", "P4M800PRO-M (V1.0A, V2.0)", 1, "http://www.ecs.com.tw/ECSWebSite_2007/Products/ProductsDetail.aspx?CategoryID=1&DetailID=574&DetailName=Feature&MenuID=52&LanID=0", NULL), - B("Elitegroup", "P4VXMS (V1.0A)", 1, NULL, NULL), - B("Elitegroup", "P6IWP-Fe", 1, "http://www.ecs.com.tw/ECSWebSite_2007/Products/ProductsDetail.aspx?CategoryID=1&TypeID=3&DetailID=95&DetailName=Feature&MenuID=1&LanID=0", NULL), - B("Elitegroup", "P6VAP-A+", 1, "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=117&CategoryID=1&DetailName=Specification&MenuID=1&LanID=0", NULL), - B("Elitegroup", "RS485M-M", 1, "http://www.ecs.com.tw/ECSWebSite_2007/Products/ProductsDetail.aspx?CategoryID=1&DetailID=654&DetailName=Feature&MenuID=1&LanID=0", NULL), - B("Emerson", "ATCA-7360", 1, "http://www.emerson.com/sites/Network_Power/en-US/Products/Product_Detail/Product1/Pages/EmbCompATCA-7360.aspx", NULL), - B("EPoX", "EP-8K5A2", 1, "http://www.epox.com/product.asp?ID=EP-8K5A2", NULL), - B("EPoX", "EP-8NPA7I", 1, "http://www.epox.com/product.asp?ID=EP-8NPA7I", NULL), - B("EPoX", "EP-9NPA7I", 1, "http://www.epox.com/product.asp?ID=EP-9NPA7I", NULL), - B("EPoX", "EP-8RDA3+", 1, "http://www.epox.com/product.asp?ID=EP-8RDA3plus", NULL), - B("EPoX", "EP-BX3", 1, "http://www.epox.com/product.asp?ID=EP-BX3", NULL), - B("EVGA", "132-CK-NF78", 1, "http://www.evga.com/articles/385.asp", NULL), - B("EVGA", "270-WS-W555-A2 (Classified SR-2)", 1, "http://www.evga.com/products/moreInfo.asp?pn=270-WS-W555-A2", NULL), - B("FIC", "VA-502", 0, "ftp://ftp.fic.com.tw/motherboard/manual/socket7/va-502/", "No public report found. Owned by Uwe Hermann . Seems the PCI subsystem IDs are identical with the Tekram P6Pro-A5. May work now."), - B("Foxconn", "6150K8MD-8EKRSH", 1, "http://www.foxconnchannel.com/product/motherboards/detail_overview.aspx?id=en-us0000157", NULL), - B("Foxconn", "A6VMX", 1, "http://www.foxconnchannel.com/product/motherboards/detail_overview.aspx?id=en-us0000346", NULL), - B("Foxconn", "P4M800P7MA-RS2", 1, "http://www.foxconnchannel.com/Product/Motherboards/detail_overview.aspx?id=en-us0000138", NULL), - B("Freetech", "P6F91i", 1, "http://web.archive.org/web/20010417035034/http://www.freetech.com/prod/P6F91i.html", NULL), - B("Fujitsu-Siemens", "ESPRIMO P5915", 1, "http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/professionalpc/ESPRIMO/P/EsprimoP5915-6.htm", "Mainboard model is D2312-A2."), - B("GIGABYTE", "GA-2761GXDK", 1, "http://www.computerbase.de/news/hardware/mainboards/amd-systeme/2007/mai/gigabyte_dtx-mainboard/", NULL), - B("GIGABYTE", "GA-6BXC", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1445", NULL), - B("GIGABYTE", "GA-6BXDU", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1429", NULL), - B("GIGABYTE", "GA-6IEM", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1379", NULL), - B("GIGABYTE", "GA-6VXE7+", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2410", NULL), - B("GIGABYTE", "GA-6ZMA", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1541", NULL), - B("GIGABYTE", "GA-MA785GMT-UD2H (rev. 1.0)", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=3156", NULL), - B("GIGABYTE", "GA-770TA-UD3", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=3272", NULL), - B("GIGABYTE", "GA-7DXR", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1302", NULL), - B("GIGABYTE", "GA-7VT600", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1666", NULL), - B("GIGABYTE", "GA-7ZM", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1366", "Works fine if you remove jumper JP9 on the board and disable the flash protection BIOS option."), - B("GIGABYTE", "GA-880GMA-USB3 (rev. 3.1)", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=3817", NULL), - B("GIGABYTE", "GA-8I945GZME-RH", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2304", NULL), - B("GIGABYTE", "GA-8IP775", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1830", NULL), - B("GIGABYTE", "GA-8IRML", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1343", NULL), - B("GIGABYTE", "GA-8PE667 Ultra 2", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1607", NULL), - B("GIGABYTE", "GA-8SIMLH", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1399", NULL), - B("GIGABYTE", "GA-945PL-S3P (rev. 6.6)", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2541", NULL), - B("GIGABYTE", "GA-965GM-S2 (rev. 2.0)", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2617", NULL), - B("GIGABYTE", "GA-965P-DS4", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2288", NULL), - B("GIGABYTE", "GA-EP31-DS3L (rev. 2.1)", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2964", NULL), - B("GIGABYTE", "GA-EP35-DS3L", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2778", NULL), - B("GIGABYTE", "GA-EX58-UD4P", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2986", NULL), - B("GIGABYTE", "GA-K8N-SLI", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1928", NULL), - B("GIGABYTE", "GA-K8N51GMF", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1950", NULL), - B("GIGABYTE", "GA-K8N51GMF-9", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=1939", NULL), - B("GIGABYTE", "GA-K8NS Pro-939", 0, "http://www.gigabyte.com/products/product-page.aspx?pid=1875", "Untested board enable."), - B("GIGABYTE", "GA-M57SLI-S4", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2287", NULL), - B("GIGABYTE", "GA-M61P-S3", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2434", NULL), - B("GIGABYTE", "GA-M720-US3", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=3006", NULL), - B("GIGABYTE", "GA-MA69VM-S2", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2500", NULL), - B("GIGABYTE", "GA-MA74GM-S2H (rev. 3.0)", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=3152", NULL), - B("GIGABYTE", "GA-MA770-UD3 (rev. 2.1)", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=3302", NULL), - B("GIGABYTE", "GA-MA770T-UD3P", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=3096", NULL), - B("GIGABYTE", "GA-MA780G-UD3H", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=3004", NULL), - B("GIGABYTE", "GA-MA78G-DS3H (rev. 1.0)", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2800", NULL), - B("GIGABYTE", "GA-MA78GM-S2H", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2758", NULL), /* TODO: Rev. 1.0, 1.1, or 2.x? */ - B("GIGABYTE", "GA-MA78GPM-DS2H", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2859", NULL), - B("GIGABYTE", "GA-MA790FX-DQ6", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2690", NULL), - B("GIGABYTE", "GA-MA790GP-DS4H", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=2887", NULL), - B("GIGABYTE", "GA-MA790XT-UD4P (rev. 1.0)", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=3010", NULL), - B("GIGABYTE", "GA-P55A-UD4 (rev. 1.0)", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=3436", NULL), - B("GIGABYTE", "GA-P67A-UD3P", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=3649", NULL), - B("GIGABYTE", "GA-X58A-UD7 (rev. 2.0)", 1, NULL, NULL), - B("GIGABYTE", "GA-X58A-UDR3 (rev. 2.0)", 1, NULL, NULL), - B("GIGABYTE", "GA-Z68MX-UD2H-B (rev. 1.3)", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=3854", NULL), - B("GIGABYTE", "GA-Z68XP-UD3 (rev. 1.0)", 1, "http://www.gigabyte.com/products/product-page.aspx?pid=3892", NULL), - B("HP", "e-Vectra P2706T", 1, "http://h20000.www2.hp.com/bizsupport/TechSupport/Home.jsp?lang=en&cc=us&prodSeriesId=77515&prodTypeId=12454", NULL), - B("HP", "ProLiant DL145 G3", 1, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c00816835&lang=en&cc=us&taskId=101&prodSeriesId=3219755&prodTypeId=15351", NULL), - B("HP", "ProLiant DL165 G6", 1, "http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/15351-15351-3328412-241644-3328421-3955644.html", NULL), - B("HP", "ProLiant N40L", 1, NULL, NULL), - B("HP", "Puffer2-UL8E", 1, "http://h10025.www1.hp.com/ewfrf/wc/document?docname=c00300023", NULL), - B("HP", "dc7800", 0, "http://h10010.www1.hp.com/wwpc/us/en/sm/WF06a/12454-12454-64287-321860-3328898-3459241.html?dnr=1", "ICH9DO with SPI lock down, BIOS lock, PR, read-only descriptor, locked ME region."), - B("HP", "Vectra VL400", 1, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c00060658&lang=en&cc=us", NULL), - B("HP", "Vectra VL420 SFF", 1, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c00060661&lang=en&cc=us", NULL), - B("HP", "xw4400 (0A68h)", 0, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c00775230", "ICH7 with SPI lock down, BIOS lock, flash block detection (SST25VF080B); see http://paste.flashrom.org/view.php?id=686"), - B("HP", "xw9400", 1, "http://h20000.www2.hp.com/bizsupport/TechSupport/Home.jsp?lang=en&cc=us&prodSeriesId=3211286&prodTypeId=12454", "Boot block is write protected unless the solder points next to F2 are shorted."), - B("IBASE", "MB899", 1, "http://www.ibase-i.com.tw/2009/mb899.html", NULL), - B("IBM", "x3455", 1, "http://www-03.ibm.com/systems/x/hardware/rack/x3455/index.html", NULL), - B("IEI", "PICOe-9452", 1, "http://www.ieiworld.com/product_groups/industrial/content.aspx?keyword=WSB&gid=00001000010000000001&cid=08125380291060861658&id=08142308605814597144", NULL), - B("Intel", "D201GLY", 1, "http://www.intel.com/support/motherboards/desktop/d201gly/index.htm", NULL), - B("Intel", "D425KT", 0, "http://www.intel.com/content/www/us/en/motherboards/desktop-motherboards/desktop-board-d425kt.html", "NM10 with SPI lock down, BIOS lock, see http://www.flashrom.org/pipermail/flashrom/2012-January/008600.html"), - B("Intel", "D865GLC", 0, NULL, "ICH5 with BIOS lock enable, see http://paste.flashrom.org/view.php?id=775"), - B("Intel", "DG45ID", 0, "http://www.intel.com/products/desktop/motherboards/dg45id/dg45id-overview.htm", "Probing works (Winbond W25x32, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME is locked."), - B("Intel", "DH67CF", 0, NULL, "H67 with BIOS lock enable and locked ME region, see http://www.flashrom.org/pipermail/flashrom/2011-September/007789.html"), - B("Intel", "EP80759", 1, NULL, NULL), - B("Intel", "Foxhollow", 1, NULL, "Intel reference board."), - B("Intel", "Greencity", 1, NULL, "Intel reference board."), - B("Intel", "SE440BX-2", 0, "http://downloadcenter.intel.com/SearchResult.aspx?lang=eng&ProductFamily=Desktop+Boards&ProductLine=Discontinued+Motherboards&ProductProduct=Intel%C2%AE+SE440BX-2+Motherboard", "Probably won't work, see http://www.coreboot.org/pipermail/flashrom/2010-July/003952.html"), - B("IWILL", "DK8-HTX", 1, "http://web.archive.org/web/20060507170150/http://www.iwill.net/product_2.asp?p_id=98", NULL), - B("Jetway", "J-7BXAN", 1, "http://www.jetway.com.tw/evisn/download/d7BXAS.htm", NULL), - B("Jetway", "J7F4K1G5D-PB", 1, "http://www.jetway.com.tw/jw/ipcboard_view.asp?productid=282&proname=J7F4K1G5D", NULL), - B("Kontron", "986LCD-M", 1, "http://de.kontron.com/products/boards+and+mezzanines/embedded+motherboards/miniitx+motherboards/986lcdmmitx.html", NULL), - B("Lanner", "EM-8510C", 1, NULL, NULL), - B("Lex", "CV700A", 1, "http://www.lex.com.tw/product/CV700A-spec.htm", NULL), - B("Mitac", "6513WU", 1, "http://web.archive.org/web/20050313054828/http://www.mitac.com/micweb/products/tyan/6513wu/6513wu.htm", NULL), - B("MSC", "Q7-TCTC", 1, "http://www.msc-ge.com/en/produkte/com/moduls/overview/5779-www.html", NULL), - B("MSI", "MS-6153", 1, "http://www.msi.com/product/mb/MS-6153.html", NULL), - B("MSI", "MS-6156", 1, "http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/boards/Motherboards/MicroStar/Ms6156/MS6156.htm", NULL), - B("MSI", "MS-6163 (MS-6163 Pro)",1, "http://www.msi.com/product/mb/MS-6163-Pro.html", NULL), - B("MSI", "MS-6178", 0, "http://www.msi.com/product/mb/MS-6178.html", "Immediately powers off if you try to hot-plug the chip. However, this does '''not''' happen if you use coreboot. Owned by Uwe Hermann ."), - B("MSI", "MS-6330 (K7T Turbo)", 1, "http://www.msi.com/product/mb/K7T-Turbo.html", NULL), - B("MSI", "MS-6391 (845 Pro4)", 1, "http://www.msi.com/product/mb/845-Pro4.html", NULL), - B("MSI", "MS-6561 (745 Ultra)", 1, "http://www.msi.com/product/mb/745-Ultra.html", NULL), - B("MSI", "MS-6566 (845 Ultra-C)",1, "http://www.msi.com/product/mb/845-Ultra-C.html", NULL), - B("MSI", "MS-6570 (K7N2)", 1, "http://www.msi.com/product/mb/K7N2.html", NULL), - B("MSI", "MS-6577 (Xenon)", 1, "http://h10025.www1.hp.com/ewfrf/wc/document?product=90390&lc=en&cc=us&dlc=en&docname=bph07843", "This is an OEM board from HP, the HP name is Xenon."), - B("MSI", "MS-6590 (KT4 Ultra)", 1, "http://www.msi.com/product/mb/KT4-Ultra.html", NULL), - B("MSI", "MS-6702E (K8T Neo2-F)",1, "http://www.msi.com/product/mb/K8T-Neo2-F--FIR.html", NULL), - B("MSI", "MS-6712 (KT4V)", 1, "http://www.msi.com/product/mb/KT4V---KT4V-L--v1-0-.html", NULL), - B("MSI", "MS-6787 (P4MAM-V/P4MAM-L)", 1, "http://www.msi.com/service/search/?kw=6787&type=product", NULL), - B("MSI", "MS-7005 (651M-L)", 1, "http://www.msi.com/product/mb/651M-L.html", NULL), - B("MSI", "MS-7025 (K8N Neo2 Platinum)", 1, "http://www.msi.com/product/mb/K8N-Neo2-Platinum.html", NULL), - B("MSI", "MS-7046", 1, "http://www.heimir.de/ms7046/", NULL), - B("MSI", "MS-7061 (KM4M-V/KM4AM-V)", 1, "http://www.msi.com/service/search/?kw=7061&type=product", NULL), - B("MSI", "MS-7065", 1, "http://browse.geekbench.ca/geekbench2/view/53114", NULL), - B("MSI", "MS-7135 (K8N Neo3)", 1, "http://www.msi.com/product/mb/K8N-Neo3.html", NULL), - B("MSI", "MS-7142 (K8MM-V)", 1, "http://www.msi.com/product/mb/K8MM-V.html", NULL), - B("MSI", "MS-7168 (Orion)", 1, "http://support.packardbell.co.uk/uk/item/index.php?i=spec_orion&pi=platform_honeymoon_istart", NULL), - B("MSI", "MS-7207 (K8NGM2-L)", 1, "http://www.msi.com/product/mb/K8NGM2-FID--IL--L.html", NULL), - B("MSI", "MS-7211 (PM8M3-V)", 1, "http://www.msi.com/product/mb/PM8M3-V.html", NULL), - B("MSI", "MS-7236 (945PL Neo3)", 1, "http://www.msi.com/product/mb/945PL-Neo3.html", NULL), - B("MSI", "MS-7253 (K9VGM-V)", 1, "http://www.msi.com/product/mb/K9VGM-V.html", NULL), - B("MSI", "MS-7255 (P4M890M)", 1, "http://www.msi.com/product/mb/P4M890M-L-IL.html", NULL), - B("MSI", "MS-7260 (K9N Neo PCB 1.0)", 0, "http://www.msi.com/product/mb/K9N-Neo--PCB-1-0-.html", "Interestingly flashrom does not work when the vendor BIOS is booted, but it ''does'' work flawlessly when the machine is booted with coreboot. Owned by Uwe Hermann ."), - B("MSI", "MS-7309 (K9N6PGM2-V2)", 1, "http://www.msi.com/product/mb/K9N6PGM2-V2.html", NULL), - B("MSI", "MS-7312 (K9MM-V)", 1, "http://www.msi.com/product/mb/K9MM-V.html", NULL), - B("MSI", "MS-7345 (P35 Neo2-FIR)", 1, "http://www.msi.com/product/mb/P35-Neo2-FR---FIR.html", NULL), - B("MSI", "MS-7368 (K9AG Neo2-Digital)", 1, "http://www.msi.com/product/mb/K9AG-Neo2-Digital.html", NULL), - B("MSI", "MS-7369 (K9N Neo V2)", 1, "http://www.msi.com/product/mb/K9N-Neo-V2.html", NULL), - B("MSI", "MS-7376 (K9A2 Platinum V1)", 1, "http://www.msi.com/product/mb/K9A2-Platinum.html", NULL), - B("MSI", "MS-7529 (G31M3-L(S) V2)", 1, "http://www.msi.com/product/mb/G31M3-L-V2---G31M3-LS-V2.html", NULL), - B("MSI", "MS-7529 (G31TM-P21)", 1, "http://www.msi.com/product/mb/G31TM-P21.html", NULL), - B("MSI", "MS-7548 (Aspen-GL8E)", 1, "http://h10025.www1.hp.com/ewfrf/wc/document?docname=c01635688&lc=en&cc=us&dlc=en", NULL), - B("MSI", "MS-7596 (785GM-E51)", 1, "http://www.msi.com/product/mb/785GM-E51.html", NULL), - B("MSI", "MS-7599 (870-C45)", 1, "http://www.msi.com/product/mb/870-C45.html", NULL), - B("MSI", "MS-7613 (Iona-GL8E)", 0, "http://h10025.www1.hp.com/ewfrf/wc/document?docname=c02014355&lc=en&cc=dk&dlc=en&product=4348478", "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("MSI", "MS-7635 (H55M-ED55)", 0, "http://www.msi.com/product/mb/H55M-ED55.html", "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("MSI", "MS-7640 (890FXA-GD70)",1, "http://www.msi.com/product/mb/890FXA-GD70.html", NULL), - B("MSI", "MS-7642 (890GXM-G65)", 1, "http://www.msi.com/product/mb/890GXM-G65.html", NULL), - B("MSI", "MS-7676 (H67MA-ED55(B3))", 1, "http://www.msi.com/product/mb/H67MA-ED55--B3-.html", "Seems to work fine basically, but user reported (hopefully unrelated) buggy behavior of the board after a firmware upgrade. See http://www.flashrom.org/pipermail/flashrom/2012-January/008547.html"), - B("MSI", "MS-7696 (A75MA-G55)", 1, "http://www.msi.com/product/mb/A75MA-G55.html", NULL), - B("MSI", "MS-7698 (E350IA-E45)", 1, "http://www.msi.com/product/mb/E350IA-E45.html", NULL), - B("NEC", "PowerMate 2000", 1, "http://support.necam.com/mobilesolutions/hardware/Desktops/pm2000/celeron/", NULL), - B("Nokia", "IP530", 1, NULL, NULL), - B("PCCHIPS ", "M598LMR (V9.0)", 1, NULL, NULL), - B("PCCHIPS ", "M863G (V5.1A)", 1, "http://www.pcchips.com.tw/PCCWebSite/Products/ProductsDetail.aspx?CategoryID=1&DetailID=343&DetailName=Feature&MenuID=1&LanID=0", NULL), - B("PC Engines", "Alix.1c", 1, "http://pcengines.ch/alix1c.htm", NULL), - B("PC Engines", "Alix.2c2", 1, "http://pcengines.ch/alix2c2.htm", NULL), - B("PC Engines", "Alix.2c3", 1, "http://pcengines.ch/alix2c3.htm", NULL), - B("PC Engines", "Alix.2d3", 1, "http://pcengines.ch/alix2d3.htm", NULL), - B("PC Engines", "Alix.3c3", 1, "http://pcengines.ch/alix3c3.htm", NULL), - B("PC Engines", "Alix.3d3", 1, "http://pcengines.ch/alix3d3.htm", NULL), - B("PC Engines", "Alix.6f2", 1, "http://pcengines.ch/alix6f2.htm", NULL), - B("PC Engines", "WRAP.2E", 1, "http://pcengines.ch/wrap2e1.htm", NULL), - B("Portwell", "PEB-4700VLA", 1, "http://www.portwell.com/products/detail.asp?CUSTCHAR1=PEB-4700VLA", NULL), - B("RCA", "RM4100", 1, "http://www.settoplinux.org/index.php?title=RCA_RM4100", NULL), - B("Samsung", "Polaris 32", 1, NULL, NULL), - B("Shuttle", "AK31", 1, "http://www.motherboard.cz/mb/shuttle/AK31.htm", NULL), - B("Shuttle", "AK38N", 1, "http://eu.shuttle.com/en/desktopdefault.aspx/tabid-36/558_read-9889/", NULL), - B("Shuttle", "AV11V30", 1, NULL, NULL), - B("Shuttle", "AV18E2", 1, "http://www.shuttle.eu/_archive/older/de/av18.htm", NULL), - B("Shuttle", "FD37", 1, "http://www.shuttle.eu/products/discontinued/barebones/sd37p2/", NULL), - B("Shuttle", "FH67", 1, "http://www.shuttle.eu/products/mini-pc/sh67h3/specification/", NULL), - B("Shuttle", "FN25", 1, "http://www.shuttle.eu/products/discontinued/barebones/sn25p/?0=", NULL), - B("Shuttle", "X50/X50(B)", 1, "http://au.shuttle.com/product_detail_spec.jsp?PI=1241", NULL), - B("Soyo", "SY-5VD", 0, "http://www.soyo.com/content/Downloads/163/&c=80&p=464&l=English", "No public report found. Owned by Uwe Hermann . May work now."), - B("Soyo", "SY-6BA+ III", 1, "http://www.motherboard.cz/mb/soyo/SY-6BA+III.htm", NULL), - B("Soyo", "SY-7VCA", 1, "http://www.tomshardware.com/reviews/12-socket-370-motherboards,196-15.html", NULL), - B("Sun", "Blade x6250", 1, "http://www.sun.com/servers/blades/x6250/", NULL), - B("Sun", "Fire x4150", 0, "http://www.sun.com/servers/x64/x4150/", "No public report found. May work now."), - B("Sun", "Fire x4200", 0, "http://www.sun.com/servers/entry/x4200/", "No public report found. May work now."), - B("Sun", "Fire x4540", 0, "http://www.sun.com/servers/x64/x4540/", "No public report found. May work now."), - B("Sun", "Fire x4600", 0, "http://www.sun.com/servers/x64/x4600/", "No public report found. May work now."), - B("Sun", "Ultra 40 M2", 1, "http://download.oracle.com/docs/cd/E19127-01/ultra40.ws/820-0123-13/intro.html", NULL), - B("Supermicro", "H8QC8", 1, "http://www.supermicro.com/Aplus/motherboard/Opteron/nforce/H8QC8.cfm", NULL), - B("Supermicro", "X5DP8-G2", 1, "http://www.supermicro.com/products/motherboard/Xeon/E7501/X5DP8-G2.cfm", NULL), - B("Supermicro", "X7DBT-INF", 1, "http://www.supermicro.com/products/motherboard/Xeon1333/5000P/X7DBT-INF.cfm", NULL), - B("Supermicro", "X7SPA-HF", 1, "http://www.supermicro.com/products/motherboard/ATOM/ICH9/X7SPA.cfm?typ=H&IPMI=Y", NULL), - B("Supermicro", "X8DT3", 1, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DT3.cfm", NULL), - B("Supermicro", "X8DTE-F", 1, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DT6-F.cfm?IPMI=Y&SAS=N", NULL), - B("Supermicro", "X8DTH-6F", 1, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DTH-6F.cfm", NULL), - B("Supermicro", "X8DTT-F", 1, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DTT-F.cfm", NULL), - B("Supermicro", "X8DTT-HIBQF", 1, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DTT-H.cfm", NULL), - B("Supermicro", "X8DTU-6TF+", 0, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DTU_.cfm?TYP=SAS&LAN=10", "Probing works (Atmel AT25DF321A, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("Supermicro", "X8DTU-F", 1, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DTU-F.cfm", NULL), - B("Supermicro", "X8SIE(-F)", 0, "http://www.supermicro.com/products/motherboard/Xeon3000/3400/X8SIE.cfm?IPMI=N&TYP=LN2", "Requires unlocking the ME although the registers are set up correctly by the descriptor/BIOS already (tested with swseq and hwseq)."), - B("Supermicro", "X8STi", 1, "http://www.supermicro.com/products/motherboard/Xeon3000/X58/X8STi.cfm", NULL), - B("Supermicro", "X9SCA-F", 0, "http://www.supermicro.com/products/motherboard/Xeon/C202_C204/X9SCA-F.cfm", "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("Supermicro", "X9SCL", 0, "http://www.supermicro.com/products/motherboard/Xeon/C202_C204/X9SCL.cfm", "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("T-Online", "S-100", 1, "http://wiki.freifunk-hannover.de/T-Online_S_100", NULL), - B("Tekram", "P6Pro-A5", 1, "http://www.motherboard.cz/mb/tekram/P6Pro-A5.htm", NULL), - B("Termtek", "TK-3370 (Rev:2.5B)", 1, NULL, NULL), - B("Thomson", "IP1000", 1, "http://www.settoplinux.org/index.php?title=Thomson_IP1000", NULL), - B("TriGem", "Anaheim-3", 1, "http://www.e4allupgraders.info/dir1/motherboards/socket370/anaheim3.shtml", NULL), - B("TriGem", "Lomita", 1, "http://www.e4allupgraders.info/dir1/motherboards/socket370/lomita.shtml", NULL), - B("Tyan", "S5375-1U (Tempest i5100X)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=610", NULL), - B("Tyan", "S1846 (Tsunami ATX)", 1, "http://www.tyan.com/archive/products/html/tsunamiatx.html", NULL), - B("Tyan", "S2466 (Tiger MPX)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=461", NULL), - B("Tyan", "S2498 (Tomcat K7M)", 1, "http://www.tyan.com/archive/products/html/tomcatk7m.html", NULL), - B("Tyan", "S2723 (Tiger i7501)", 1, "http://www.tyan.com/archive/products/html/tigeri7501.html", NULL), - B("Tyan", "S2881 (Thunder K8SR)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=115", NULL), - B("Tyan", "S2882 (Thunder K8S Pro)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=121", NULL), - B("Tyan", "S2882-D (Thunder K8SD Pro)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=127", NULL), - B("Tyan", "S2891 (Thunder K8SRE)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=144", NULL), - B("Tyan", "S2892 (Thunder K8SE)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=145", NULL), - B("Tyan", "S2895 (Thunder K8WE)", 1, "http://www.tyan.com/archive/products/html/thunderk8we.html", NULL), - B("Tyan", "S2912 (Thunder n3600R)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=157", NULL), - B("Tyan", "S2915 (Thunder n6650W)", 1, "http://tyan.com/product_board_detail.aspx?pid=163", NULL), - B("Tyan", "S2915-E (Thunder n6650W)", 1, "http://tyan.com/product_SKU_spec.aspx?ProductType=MB&pid=541&SKU=600000041", NULL), - B("Tyan", "S2933 (Thunder n3600S)", 1, "http://tyan.com/product_SKU_spec.aspx?ProductType=MB&pid=478&SKU=600000063", NULL), - B("Tyan", "S3095 (Tomcat i945GM)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=181", NULL), - B("Tyan", "S3992 (Thunder h2000M)", 1, "http://tyan.com/product_board_detail.aspx?pid=235", NULL), - B("Tyan", "S5180 (Toledo i965R)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=456", NULL), - B("Tyan", "S5191 (Toledo i3000R)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=343", NULL), - B("Tyan", "S5197 (Toledo i3010W)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=349", NULL), - B("Tyan", "S5211 (Toledo i3210W)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=591", NULL), - B("Tyan", "S5211-1U (Toledo i3200R)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=593", NULL), - B("Tyan", "S5220 (Toledo q35T)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=597", NULL), - B("Tyan", "S5375 (Tempest i5100X)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=566", NULL), - B("Tyan", "S5376 (Tempest i5100W)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=605", "Both S5376G2NR and S5376WAG2NR should work."), - B("Tyan", "S5377 (Tempest i5100T)", 1, "http://www.tyan.com/product_SKU_spec.aspx?ProductType=MB&pid=642&SKU=600000017", NULL), - B("Tyan", "S5382 (Tempest i5000PW)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=439", NULL), - B("Tyan", "S5397 (Tempest i5400PW)", 1, "http://www.tyan.com/product_board_detail.aspx?pid=560", NULL), - B("VIA", "EPIA M/MII/...", 1, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=202", NULL), /* EPIA-MII link for now */ - B("VIA", "EPIA SP", 1, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=261", NULL), - B("VIA", "EPIA-CN", 1, "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=400", NULL), - B("VIA", "EPIA EK", 1, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?motherboard_id=420", NULL), - B("VIA", "EPIA-EX15000G", 1, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=450", NULL), - B("VIA", "EPIA-LN", 1, "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=473", NULL), - B("VIA", "EPIA-M700", 1, "http://via.com.tw/servlet/downloadSvl?motherboard_id=670&download_file_id=3700", NULL), - B("VIA", "EPIA-N/NL", 1, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=221", NULL), /* EPIA-N link for now */ - B("VIA", "EPIA-NX15000G", 1, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=470", NULL), - B("VIA", "NAB74X0", 1, "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=590", NULL), - B("VIA", "pc2500e", 1, "http://www.via.com.tw/en/initiatives/empowered/pc2500_mainboard/index.jsp", NULL), - B("VIA", "PC3500G", 1, "http://www.via.com.tw/en/initiatives/empowered/pc3500_mainboard/index.jsp", NULL), - B("VIA", "VB700X", 1, "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=490", NULL), - B("ZOTAC", "Fusion-ITX WiFi (FUSION350-A-E)", 1, NULL, NULL), - B("ZOTAC", "GeForce 8200", 1, "http://pden.zotac.com/index.php?page=shop.product_details&product_id=129&category_id=92", NULL), - B("ZOTAC", "H67-ITX WiFi (H67ITX-C-E)", 0, NULL, "Probing works (Winbond W25Q32, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("ZOTAC", "ZBOX HD-ID11", 1, "http://pdde.zotac.com/index.php?page=shop.product_details&product_id=240&category_id=75", NULL), + B("A-Trend", "ATC-6220", OK, "http://www.motherboard.cz/mb/atrend/atc6220.htm", NULL), + B("abit", "A-S78H", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=A-S78H&fMTYPE=Socket+AM2", NULL), + B("abit", "AN-M2", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20AM2&pMODEL_NAME=AN-M2", NULL), + B("abit", "AV8", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20939&pMODEL_NAME=AV8", NULL), + B("abit", "AX8", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20939&pMODEL_NAME=AX8", NULL), + B("abit", "BM6", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=BM6&fMTYPE=Socket%20370", NULL), + B("abit", "Fatal1ty F-I90HD", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=Fatal1ty+F-I90HD&fMTYPE=LGA775", NULL), + B("abit", "IC7", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=IC7&fMTYPE=Socket%20478", NULL), + B("abit", "IP35", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=LGA775&pMODEL_NAME=IP35", NULL), + B("abit", "IP35 Pro", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=LGA775&pMODEL_NAME=IP35%20Pro", NULL), + B("abit", "IS-10", BAD, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=IS-10&fMTYPE=Socket+478", "Reported by deejkuba at aol.com to flashrom at coreboot.org, no public archive. Missing board enable and/or M50FW040 unlocking. May work now."), + B("abit", "KN8 Ultra", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20939&pMODEL_NAME=KN8%20Ultra", NULL), + B("abit", "NF-M2 nView", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=Socket%20AM2&pMODEL_NAME=NF-M2%20nView", NULL), + B("abit", "NF-M2S", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=NF-M2S&fMTYPE=Socket%20AM2", NULL), + B("abit", "NF7-S", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=Socket%20A&pMODEL_NAME=NF7-S", NULL), + B("abit", "VA6", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=Slot%201&pMODEL_NAME=VA6", NULL), + B("abit", "VT6X4", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=Slot%201&pMODEL_NAME=VT6X4", NULL), + B("Acorp", "6A815EPD", OK, "http://web.archive.org/web/20021206163652/www.acorp.com.tw/English/default.asp", NULL), + B("Advantech", "PCM-5820", OK, "http://www.emacinc.com/sbc_pc_compatible/pcm_5820.htm", NULL), + B("agami", "Aruma", OK, "http://web.archive.org/web/20080212111524/http://www.agami.com/site/ais-6000-series", NULL), + B("Albatron", "PM266A Pro", OK, "http://www.albatron.com.tw/English/Product/MB/pro_detail.asp?rlink=Overview&no=56", NULL), /* FIXME */ + B("AOpen", "i945GMx-VFX", OK, NULL, "This is (also?) an OEM board from FSC (used in e.g. ESPRIMO Q5010 with designation D2544-B1)."), + B("AOpen", "vKM400Am-S", OK, "http://usa.aopen.com/products_detail.aspx?Auno=824", NULL), + B("Artec Group","DBE61", OK, "http://wiki.thincan.org/DBE61", NULL), + B("Artec Group","DBE62", OK, "http://wiki.thincan.org/DBE62", NULL), + B("ASI", "MB-5BLMP", OK, "http://www.hojerteknik.com/winnet.htm", "Used in the IGEL WinNET III thin client."), + B("ASRock", "775i65G", OK, "http://www.asrock.com/mb/overview.asp?Model=775i65G", NULL), + B("ASRock", "890GX Extreme3", OK, "http://www.asrock.com/mb/overview.asp?Model=890GX%20Extreme3", NULL), + B("ASRock", "939A785GMH/128M", OK, "http://www.asrock.com/mb/overview.asp?Model=939A785GMH/128M", NULL), + B("ASRock", "A330GC", OK, "http://www.asrock.com/mb/overview.asp?Model=A330GC", NULL), + B("ASRock", "A770CrossFire", OK, "http://www.asrock.com/mb/overview.asp?Model=A770CrossFire", NULL), + B("ASRock", "ALiveNF6G-DVI", OK, "http://www.asrock.com/mb/overview.asp?Model=ALiveNF6G-DVI", NULL), + B("ASRock", "AM2NF6G-VSTA", OK, "http://www.asrock.com/mb/overview.asp?Model=AM2NF6G-VSTA", NULL), + B("ASRock", "ConRoeXFire-eSATA2", OK, "http://www.asrock.com/mb/overview.asp?model=conroexfire-esata2", NULL), + B("ASRock", "K7S41", OK, "http://www.asrock.com/mb/overview.asp?Model=K7S41", NULL), + B("ASRock", "K7S41GX", OK, "http://www.asrock.com/mb/overview.asp?Model=K7S41GX", NULL), + B("ASRock", "K7VT4A+", BAD, "http://www.asrock.com/mb/overview.asp?Model=K7VT4A%2b", "No chip found, probably due to flash translation. http://www.flashrom.org/pipermail/flashrom/2009-August/000393.html"), + B("ASRock", "K8S8X", OK, "http://www.asrock.com/mb/overview.asp?Model=K8S8X", NULL), + B("ASRock", "M3A790GXH/128M", OK, "http://www.asrock.com/mb/overview.asp?Model=M3A790GXH/128M", NULL), + B("ASRock", "P4i65GV", OK, "http://www.asrock.com/mb/overview.asp?Model=P4i65GV", NULL), + B("ASUS", "A7N8X Deluxe", OK, "http://www.asus.com/Motherboards/AMD_Socket_A/A7N8X_Deluxe/", NULL), + B("ASUS", "A7N8X-E Deluxe", OK, "http://www.asus.com/Motherboards/AMD_Socket_A/A7N8XE_Deluxe/", NULL), + B("ASUS", "A7N8X-VM/400", OK, "http://www.asus.com/Motherboards/AMD_Socket_A/A7N8XVM400/", NULL), + B("ASUS", "A7V133", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/socka/kt133a/a7v133/", NULL), + B("ASUS", "A7V333", OK, "ftp://ftp.asus.com.tw/pub/asus/mb/socka/kt333/a7v333/", NULL), + B("ASUS", "A7V400-MX", OK, "http://www.asus.com/Motherboards/AMD_Socket_A/A7V400MX/", NULL), + B("ASUS", "A7V600-X", OK, "http://www.asus.com/Motherboards/AMD_Socket_A/A7V600X/", NULL), + B("ASUS", "A7V8X", OK, "http://www.asus.com/Motherboards/AMD_Socket_A/A7V8X/", NULL), + B("ASUS", "A7V8X-MX", OK, "http://www.asus.com/Motherboards/AMD_Socket_A/A7V8XMX/", NULL), + B("ASUS", "A7V8X-MX SE", OK, "http://www.asus.com/Motherboards/AMD_Socket_A/A7V8XMX_SE/", NULL), + B("ASUS", "A7V8X-X", OK, "http://www.asus.com/Motherboards/AMD_Socket_A/A7V8XX/", NULL), + B("ASUS", "A8M2N-LA (NodusM3-GL8E)", OK, "http://h10010.www1.hp.com/ewfrf/wc/document?docname=c00757531&cc=us&dlc=en&lc=en", "This is an OEM board from HP, the HP name is NodusM3-GL8E."), + B("ASUS", "A8N-E", OK, "http://www.asus.com/Motherboards/AMD_Socket_939/A8NE/", NULL), + B("ASUS", "A8N-LA (Nagami-GL8E)", OK, "http://h10025.www1.hp.com/ewfrf/wc/document?lc=en&cc=us&docname=c00647121&dlc=en", "This is an OEM board from HP, the HP name is Nagami-GL8E."), + B("ASUS", "A8N-SLI", OK, "http://www.asus.com/Motherboards/AMD_Socket_939/A8NSLI/", NULL), + B("ASUS", "A8N-SLI Deluxe", NT, NULL, "Untested board enable."), + B("ASUS", "A8N-SLI Premium", OK, "http://www.asus.com/Motherboards/AMD_Socket_939/A8NSLI_Premium/", NULL), + B("ASUS", "A8N-VM", OK, "http://www.asus.com/Motherboards/AMD_Socket_939/A8NVM/", NULL), + B("ASUS", "A8N-VM CSM", OK, "http://www.asus.com/Motherboards/AMD_Socket_939/A8NVM_CSM/", NULL), + B("ASUS", "A8NE-FM/S", OK, "http://www.hardwareschotte.de/hardware/preise/proid_1266090/preis_ASUS+A8NE-FM", NULL), + B("ASUS", "A8V Deluxe", OK, "http://www.asus.com/Motherboards/AMD_Socket_939/A8V_Deluxe/", NULL), + B("ASUS", "A8V-E Deluxe", OK, "http://www.asus.com/Motherboards/AMD_Socket_939/A8VE_Deluxe/", NULL), + B("ASUS", "A8V-E SE", OK, "http://www.asus.com/Motherboards/AMD_Socket_939/A8VE_SE/", "See http://www.coreboot.org/pipermail/coreboot/2007-October/026496.html"), + B("ASUS", "Crosshair II Formula", OK, "http://www.asus.com/Motherboards/AMD_AM2Plus/Crosshair_II_Formula/", NULL), + B("ASUS", "Crosshair IV Extreme", OK, "http://www.asus.com/Motherboards/AMD_AM3/Crosshair_IV_Extreme/", NULL), + B("ASUS", "E35M1-I DELUXE", OK, "http://www.asus.com/Motherboards/AMD_CPU_on_Board/E35M1I_DELUXE/", NULL), + B("ASUS", "K8N", OK, "http://www.asus.com/Motherboards/AMD_Socket_754/K8N/", NULL), + B("ASUS", "K8V", OK, "http://www.asus.com/Motherboards/AMD_Socket_754/K8V/", NULL), + B("ASUS", "K8V SE Deluxe", OK, "http://www.asus.com/Motherboards/AMD_Socket_754/K8V_SE_Deluxe/", NULL), + B("ASUS", "K8V-X", OK, "http://www.asus.com/Motherboards/AMD_Socket_754/K8VX/", NULL), + B("ASUS", "K8V-X SE", OK, "http://www.asus.com/Motherboards/AMD_Socket_754/K8VX_SE/", NULL), + B("ASUS", "KFSN4-DRE/SAS", OK, "http://www.asus.com/Server_Workstation/Server_Motherboards/KFSN4DRESAS/", NULL), + B("ASUS", "M2A-MX", OK, "http://www.asus.com/Motherboards/AMD_AM2/M2AMX/", NULL), + B("ASUS", "M2A-VM (HDMI)", OK, "http://www.asus.com/Motherboards/AMD_AM2/M2AVM/", NULL), + B("ASUS", "M2N32-SLI Deluxe", OK, "http://www.asus.com/Motherboards/AMD_AM2/M2N32SLI_DeluxeWireless_Edition/", NULL), + B("ASUS", "M2N-E", OK, "http://www.asus.com/Motherboards/AMD_AM2/M2NE/", "If the machine doesn't come up again after flashing, try resetting the NVRAM(CMOS). The MAC address of the onboard network card will change to the value stored in the new image, so backup the old address first. See http://www.flashrom.org/pipermail/flashrom/2009-November/000879.html"), + B("ASUS", "M2N-E SLI", OK, "http://www.asus.com/Motherboards/AMD_AM2/M2NE_SLI/", NULL), + B("ASUS", "M2N-SLI Deluxe", OK, "http://www.asus.com/Motherboards/AMD_AM2/M2NSLI_Deluxe/", NULL), + B("ASUS", "M2NBP-VM CSM", OK, "http://www.asus.com/Motherboards/AMD_AM2/M2NBPVM_CSM/", NULL), + B("ASUS", "M2NPV-VM", OK, "http://www.asus.com/Motherboards/AMD_AM2/M2NPVVM/", NULL), + B("ASUS", "M2V", OK, "http://www.asus.com/Motherboards/AMD_AM2/M2V/", NULL), + B("ASUS", "M2V-MX", OK, "http://www.asus.com/Motherboards/AMD_AM2/M2VMX/", NULL), + B("ASUS", "M3A", OK, "http://www.asus.com/Motherboards/AMD_AM2Plus/M3A/", NULL), + B("ASUS", "M3A76-CM", OK, "http://www.asus.com/Motherboards/AMD_AM2Plus/M3A76CM/", NULL), + B("ASUS", "M3A78-EM", OK, "http://www.asus.com/Motherboards/AMD_AM2Plus/M3A78EM/", NULL), + B("ASUS", "M3N78-VM", OK, "http://www.asus.com/Motherboards/AMD_AM2Plus/M3N78VM/", NULL), + B("ASUS", "M4A78-EM", OK, "http://www.asus.com/Motherboards/AMD_AM2Plus/M4A78EM/", NULL), + B("ASUS", "M4A785TD-M EVO", OK, "http://www.asus.com/Motherboards/AMD_AM3/M4A785TDM_EVO/", NULL), + B("ASUS", "M4A785TD-V EVO", OK, "http://www.asus.com/Motherboards/AMD_AM3/M4A785TDV_EVO/", NULL), + B("ASUS", "M4A78LT-M LE", OK, "http://www.asus.com/Motherboards/AMD_AM3/M4A78LTM_LE/", NULL), + B("ASUS", "M4A79T Deluxe", OK, "http://www.asus.com/Motherboards/AMD_AM3/M4A79T_Deluxe/", NULL), + B("ASUS", "M4A87TD/USB3", OK, "http://www.asus.com/Motherboards/AMD_AM3/M4A87TDUSB3/", NULL), + B("ASUS", "M4A89GTD PRO", OK, "http://www.asus.com/Motherboards/AMD_AM3/M4A89GTD_PRO/", NULL), + B("ASUS", "M4N78 PRO", OK, "http://www.asus.com/Motherboards/AMD_AM2Plus/M4N78_PRO/", NULL), + B("ASUS", "M5A99X EVO", OK, "http://www.asus.com/Motherboards/AMD_AM3Plus/M5A99X_EVO/", NULL), + B("ASUS", "MEW-AM", BAD, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock370/810/mew-am/", "No public report found. Owned by Uwe Hermann . May work now."), + B("ASUS", "MEW-VM", BAD, "http://www.elhvb.com/mboards/OEM/HP/manual/ASUS%20MEW-VM.htm", "No public report found. Owned by Uwe Hermann . May work now."), + B("ASUS", "OPLX-M", NT, NULL, "Untested board enable."), + B("ASUS", "P2B", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b/", NULL), + B("ASUS", "P2B-D", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-d/", NULL), + B("ASUS", "P2B-DS", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-ds/", NULL), + B("ASUS", "P2B-F", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-d/", NULL), + B("ASUS", "P2B-N", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-n/", NULL), + B("ASUS", "P2E-M", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440ex/p2e-m/", NULL), + B("ASUS", "P2L97-S", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440lx/p2l97-s/", NULL), + B("ASUS", "P3B-F", BAD, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p3b-f/", "No public report found. Owned by Uwe Hermann . May work now."), + B("ASUS", "P4B266", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock478/p4b266/", NULL), + B("ASUS", "P4B266-LM", OK, "http://esupport.sony.com/US/perl/swu-list.pl?mdl=PCVRX650", NULL), + B("ASUS", "P4B533-E", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock478/p4b533-e/", NULL), + B("ASUS", "P4C800-E Deluxe", OK, "http://www.asus.com/Motherboards/Intel_Socket_478/P4C800E_Deluxe/", NULL), + B("ASUS", "P4GV-LA (Guppy)", OK, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c00363478", NULL), + B("ASUS", "P4P800", OK, "http://www.asus.com/Motherboards/Intel_Socket_478/P4P800/", NULL), + B("ASUS", "P4P800-E Deluxe", OK, "http://www.asus.com/Motherboards/Intel_Socket_478/P4P800E_Deluxe/", NULL), + B("ASUS", "P4P800-VM", OK, "http://www.asus.com/Motherboards/Intel_Socket_478/P4P800VM/", NULL), + B("ASUS", "P4SC-E", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock478/p4sc-e/", "Part of ASUS Terminator P4 533 barebone system"), + B("ASUS", "P4SD-LA", OK, "http://h10025.www1.hp.com/ewfrf/wc/document?docname=c00022505", NULL), + B("ASUS", "P4S533-X", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock478/p4s533-x/", NULL), + B("ASUS", "P4S800-MX", OK, "http://www.asus.com/Motherboards/Intel_Socket_478/P4S800MX/", NULL), + B("ASUS", "P5A", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock7/ali/p5a/", NULL), + B("ASUS", "P5B", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B/", NULL), + B("ASUS", "P5B-Deluxe", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5B_Deluxe/", NULL), + B("ASUS", "P5BV-M", BAD, "ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B-VM/", "Reported by Bernhard M. Wiedemann to flashrom at coreboot.org, no public archive. Missing board enable and/or SST49LF008A unlocking. May work now."), + B("ASUS", "P5GC-MX/1333", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5GCMX1333/", NULL), + B("ASUS", "P5GD1 Pro", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5GD1_PRO/", NULL), + B("ASUS", "P5GD1-VM/S", OK, NULL, "This is an OEM board from FSC. Although flashrom supports it and can probably not distinguish it from the P5GD1-VM, please note that the P5GD1-VM BIOS does not support the FSC variants completely."), + B("ASUS", "P5GD1(-VM)", NT, NULL, "Untested board enable."), + B("ASUS", "P5GD2 Premium", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5GD2_Premium/", NULL), + B("ASUS", "P5GDC Deluxe", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5GDC_Deluxe/", NULL), + B("ASUS", "P5GDC-V Deluxe", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5GDCV_Deluxe/", NULL), + B("ASUS", "P5GD2/C variants", NT, NULL, "Untested board enable."), + B("ASUS", "P5K-V", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5KV/", NULL), + B("ASUS", "P5K-VM", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5KVM/", NULL), + B("ASUS", "P5KC", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5KC/", NULL), + B("ASUS", "P5KPL-CM", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5KPLCM/", NULL), + B("ASUS", "P5L-MX", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5LMX/", NULL), + B("ASUS", "P5L-VM 1394", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5LVM_1394/", NULL), + B("ASUS", "P5LD2", NT, NULL, "Untested board enable."), + B("ASUS", "P5LP-LE (Lithium-UL8E)", OK, "http://h10025.www1.hp.com/ewfrf/wc/document?docname=c00379616&tmp_task=prodinfoCategory&cc=us&dlc=en&lc=en&product=1159887", "This is an OEM board from HP."), + B("ASUS", "P5LP-LE (Epson OEM)", OK, NULL, "This is an OEM board from Epson (e.g. Endeavor MT7700)."), + B("ASUS", "P5LP-LE", BAD, NULL, "This designation is used for OEM boards from HP, Epson and maybe others. The HP names vary and not all of them have been tested yet. Please report any success or failure, thanks."), + B("ASUS", "P5N-D", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5ND/", NULL), + B("ASUS", "P5N-E SLI", NT, "http://www.asus.com/Motherboards/Intel_Socket_775/P5NE_SLI/", "Untested board enable."), + B("ASUS", "P5N32-E SLI", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5N32E_SLI/", NULL), + B("ASUS", "P5N7A-VM", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5N7AVM/", NULL), + B("ASUS", "P5ND2-SLI Deluxe", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5ND2SLI_Deluxe/", NULL), + B("ASUS", "P5PE-VM", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5PEVM/", NULL), + B("ASUS", "P5QPL-AM", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5QPLAM/", NULL), + B("ASUS", "P5VD1-X", OK, "http://www.asus.com/Motherboards/Intel_Socket_775/P5VD1X/", NULL), + B("ASUS", "P6T SE", OK, "http://www.asus.com/Motherboards/Intel_Socket_1366/P6T_SE/", NULL), + B("ASUS", "P6T Deluxe", OK, "http://www.asus.com/Motherboards/Intel_Socket_1366/P6T_Deluxe/", NULL), + B("ASUS", "P6T Deluxe V2", OK, "http://www.asus.com/Motherboards/Intel_Socket_1366/P6T_Deluxe_V2/", NULL), + B("ASUS", "P7H57D-V EVO", OK, "http://www.asus.com/Motherboards/Intel_Socket_1156/P7H57DV_EVO/", NULL), + B("ASUS", "P7H55-M LX", BAD, NULL, "flashrom works correctly, but GbE LAN is nonworking (probably due to a missing/bogus MAC address; see http://www.flashrom.org/pipermail/flashrom/2011-July/007432.html and http://ubuntuforums.org/showthread.php?t=1534389 for a possible workaround)"), + B("ASUS", "P8B-E/4L", BAD, NULL, "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("ASUS", "P8B WS", BAD, NULL, "Probing works (Winbond W25Q32, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("ASUS", "P8H61 PRO", BAD, NULL, "Probing works (Winbond W25Q32, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("ASUS", "P8H61-M LE/USB3", BAD, NULL, "Probing works (Winbond W25Q32, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("ASUS", "P8H67-M PRO", BAD, NULL, "Probing works (Macronix MX25L3205, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("ASUS", "P8P67 (rev. 3.1)", BAD, NULL, "Probing works (Macronix MX25L3205, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("ASUS", "P8Z68-V PRO", BAD, NULL, "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("ASUS", "Z8NA-D6C", OK, "http://www.asus.com/Server_Workstation/Server_Motherboards/Z8NAD6C/", NULL), + B("ASUS", "Z8PE-D12", OK, "http://www.asus.com/Server_Workstation/Server_Motherboards/Z8PED12/", NULL), + B("BCOM", "WinNET100", OK, "http://www.coreboot.org/BCOM_WINNET100", "Used in the IGEL-316 thin client."), + B("Bifferos", "Bifferboard", OK, "http://bifferos.co.uk/", NULL), + B("Biostar", "N68S3+", OK, NULL, NULL), + B("Biostar", "M6TBA", BAD, "ftp://ftp.biostar-usa.com/manuals/M6TBA/", "No public report found. Owned by Uwe Hermann . May work now."), + B("Biostar", "M7NCD Pro", OK, "http://www.biostar.com.tw/app/en/mb/content.php?S_ID=260", NULL), + B("Biostar", "P4M80-M4", OK, "http://www.biostar-usa.com/mbdetails.asp?model=p4m80-m4", NULL), + B("Biostar", "TA780G M2+", OK, "http://www.biostar.com.tw/app/en/t-series/content.php?S_ID=344", NULL), + B("Boser", "HS-6637", BAD, "http://www.boser.com.tw/manual/HS-62376637v3.4.pdf", "Reported by Mark Robinson to flashrom at coreboot.org, no public archive. Missing board enable and/or F29C51002T unlocking. May work now."), + B("Congatec", "conga-X852", OK, "http://www.congatec.com/single_news+M57715f6263d.html?&L=1", NULL), + B("Dell", "OptiPlex GX1", OK, "http://support.dell.com/support/edocs/systems/ban_gx1/en/index.htm", NULL), + B("Dell", "PowerEdge 1850", OK, "http://support.dell.com/support/edocs/systems/pe1850/en/index.htm", NULL), + B("DFI", "855GME-MGF", BAD, "http://www.dfi.com.tw/portal/CM/cmproduct/XX_cmproddetail/XX_WbProdsWindow?action=e&downloadType=&windowstate=normal&mode=view&downloadFlag=false&itemId=433", "Probably needs a board enable. http://www.coreboot.org/pipermail/coreboot/2009-May/048549.html"), + B("DFI", "Blood-Iron P35 T2RL", OK, "http://lp.lanparty.com.tw/portal/CM/cmproduct/XX_cmproddetail/XX_WbProdsWindow?itemId=516&downloadFlag=false&action=1", NULL), + B("Elitegroup", "GeForce6100SM-M ", OK, "http://www.ecs.com.tw/ECSWebSite/Product/Product_Detail.aspx?DetailID=685&MenuID=24", NULL), + B("Elitegroup", "GF7100PVT-M3 (V1.0)", OK, "http://www.ecs.com.tw/ECSWebSite/Product/Product_Detail.aspx?DetailID=853&CategoryID=1&DetailName=Specification&MenuID=24&LanID=0", NULL), + B("Elitegroup", "K7S5A", OK, "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=279&CategoryID=1&DetailName=Specification&MenuID=1&LanID=0", NULL), + B("Elitegroup", "K7S6A", OK, "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=77&CategoryID=1&DetailName=Specification&MenuID=52&LanID=0", NULL), + B("Elitegroup", "K7SEM (V1.0A)", OK, "http://www.ecs.com.tw/ECSWebSite/Product/Product_Detail.aspx?DetailID=229&CategoryID=1&DetailName=Specification&MenuID=24&LanID=0", NULL), + B("Elitegroup", "K7VTA3", OK, "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=264&CategoryID=1&DetailName=Specification&MenuID=52&LanID=0", NULL), + B("Elitegroup", "P4M800PRO-M (V1.0A, V2.0)", OK, "http://www.ecs.com.tw/ECSWebSite_2007/Products/ProductsDetail.aspx?CategoryID=1&DetailID=574&DetailName=Feature&MenuID=52&LanID=0", NULL), + B("Elitegroup", "P4VXMS (V1.0A)", OK, NULL, NULL), + B("Elitegroup", "P6IWP-Fe", OK, "http://www.ecs.com.tw/ECSWebSite_2007/Products/ProductsDetail.aspx?CategoryID=1&TypeID=3&DetailID=95&DetailName=Feature&MenuID=1&LanID=0", NULL), + B("Elitegroup", "P6VAP-A+", OK, "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=117&CategoryID=1&DetailName=Specification&MenuID=1&LanID=0", NULL), + B("Elitegroup", "RS485M-M", OK, "http://www.ecs.com.tw/ECSWebSite_2007/Products/ProductsDetail.aspx?CategoryID=1&DetailID=654&DetailName=Feature&MenuID=1&LanID=0", NULL), + B("Emerson", "ATCA-7360", OK, "http://www.emerson.com/sites/Network_Power/en-US/Products/Product_Detail/Product1/Pages/EmbCompATCA-7360.aspx", NULL), + B("EPoX", "EP-8K5A2", OK, "http://www.epox.com/product.asp?ID=EP-8K5A2", NULL), + B("EPoX", "EP-8NPA7I", OK, "http://www.epox.com/product.asp?ID=EP-8NPA7I", NULL), + B("EPoX", "EP-9NPA7I", OK, "http://www.epox.com/product.asp?ID=EP-9NPA7I", NULL), + B("EPoX", "EP-8RDA3+", OK, "http://www.epox.com/product.asp?ID=EP-8RDA3plus", NULL), + B("EPoX", "EP-BX3", OK, "http://www.epox.com/product.asp?ID=EP-BX3", NULL), + B("EVGA", "132-CK-NF78", OK, "http://www.evga.com/articles/385.asp", NULL), + B("EVGA", "270-WS-W555-A2 (Classified SR-2)", OK, "http://www.evga.com/products/moreInfo.asp?pn=270-WS-W555-A2", NULL), + B("FIC", "VA-502", BAD, "ftp://ftp.fic.com.tw/motherboard/manual/socket7/va-502/", "No public report found. Owned by Uwe Hermann . Seems the PCI subsystem IDs are identical with the Tekram P6Pro-A5. May work now."), + B("Foxconn", "6150K8MD-8EKRSH", OK, "http://www.foxconnchannel.com/product/motherboards/detail_overview.aspx?id=en-us0000157", NULL), + B("Foxconn", "A6VMX", OK, "http://www.foxconnchannel.com/product/motherboards/detail_overview.aspx?id=en-us0000346", NULL), + B("Foxconn", "P4M800P7MA-RS2", OK, "http://www.foxconnchannel.com/Product/Motherboards/detail_overview.aspx?id=en-us0000138", NULL), + B("Freetech", "P6F91i", OK, "http://web.archive.org/web/20010417035034/http://www.freetech.com/prod/P6F91i.html", NULL), + B("Fujitsu-Siemens", "ESPRIMO P5915", OK, "http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/professionalpc/ESPRIMO/P/EsprimoP5915-6.htm", "Mainboard model is D2312-A2."), + B("GIGABYTE", "GA-2761GXDK", OK, "http://www.computerbase.de/news/hardware/mainboards/amd-systeme/2007/mai/gigabyte_dtx-mainboard/", NULL), + B("GIGABYTE", "GA-6BXC", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1445", NULL), + B("GIGABYTE", "GA-6BXDU", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1429", NULL), + B("GIGABYTE", "GA-6IEM", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1379", NULL), + B("GIGABYTE", "GA-6VXE7+", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2410", NULL), + B("GIGABYTE", "GA-6ZMA", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1541", NULL), + B("GIGABYTE", "GA-MA785GMT-UD2H (rev. 1.0)", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=3156", NULL), + B("GIGABYTE", "GA-770TA-UD3", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=3272", NULL), + B("GIGABYTE", "GA-7DXR", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1302", NULL), + B("GIGABYTE", "GA-7VT600", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1666", NULL), + B("GIGABYTE", "GA-7ZM", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1366", "Works fine if you remove jumper JP9 on the board and disable the flash protection BIOS option."), + B("GIGABYTE", "GA-880GMA-USB3 (rev. 3.1)", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=3817", NULL), + B("GIGABYTE", "GA-8I945GZME-RH", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2304", NULL), + B("GIGABYTE", "GA-8IP775", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1830", NULL), + B("GIGABYTE", "GA-8IRML", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1343", NULL), + B("GIGABYTE", "GA-8PE667 Ultra 2", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1607", NULL), + B("GIGABYTE", "GA-8SIMLH", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1399", NULL), + B("GIGABYTE", "GA-945PL-S3P (rev. 6.6)", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2541", NULL), + B("GIGABYTE", "GA-965GM-S2 (rev. 2.0)", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2617", NULL), + B("GIGABYTE", "GA-965P-DS4", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2288", NULL), + B("GIGABYTE", "GA-EP31-DS3L (rev. 2.1)", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2964", NULL), + B("GIGABYTE", "GA-EP35-DS3L", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2778", NULL), + B("GIGABYTE", "GA-EX58-UD4P", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2986", NULL), + B("GIGABYTE", "GA-K8N-SLI", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1928", NULL), + B("GIGABYTE", "GA-K8N51GMF", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1950", NULL), + B("GIGABYTE", "GA-K8N51GMF-9", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=1939", NULL), + B("GIGABYTE", "GA-K8NS Pro-939", NT, "http://www.gigabyte.com/products/product-page.aspx?pid=1875", "Untested board enable."), + B("GIGABYTE", "GA-M57SLI-S4", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2287", NULL), + B("GIGABYTE", "GA-M61P-S3", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2434", NULL), + B("GIGABYTE", "GA-M720-US3", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=3006", NULL), + B("GIGABYTE", "GA-MA69VM-S2", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2500", NULL), + B("GIGABYTE", "GA-MA74GM-S2H (rev. 3.0)", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=3152", NULL), + B("GIGABYTE", "GA-MA770-UD3 (rev. 2.1)", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=3302", NULL), + B("GIGABYTE", "GA-MA770T-UD3P", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=3096", NULL), + B("GIGABYTE", "GA-MA780G-UD3H", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=3004", NULL), + B("GIGABYTE", "GA-MA78G-DS3H (rev. 1.0)", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2800", NULL), + B("GIGABYTE", "GA-MA78GM-S2H", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2758", NULL), /* TODO: Rev. 1.0, 1.1, or 2.x? */ + B("GIGABYTE", "GA-MA78GPM-DS2H", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2859", NULL), + B("GIGABYTE", "GA-MA790FX-DQ6", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2690", NULL), + B("GIGABYTE", "GA-MA790GP-DS4H", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=2887", NULL), + B("GIGABYTE", "GA-MA790XT-UD4P (rev. 1.0)", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=3010", NULL), + B("GIGABYTE", "GA-P55A-UD4 (rev. 1.0)", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=3436", NULL), + B("GIGABYTE", "GA-P67A-UD3P", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=3649", NULL), + B("GIGABYTE", "GA-X58A-UD7 (rev. 2.0)", OK, NULL, NULL), + B("GIGABYTE", "GA-X58A-UDR3 (rev. 2.0)", OK, NULL, NULL), + B("GIGABYTE", "GA-Z68MX-UD2H-B (rev. 1.3)", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=3854", NULL), + B("GIGABYTE", "GA-Z68XP-UD3 (rev. 1.0)", OK, "http://www.gigabyte.com/products/product-page.aspx?pid=3892", NULL), + B("HP", "e-Vectra P2706T", OK, "http://h20000.www2.hp.com/bizsupport/TechSupport/Home.jsp?lang=en&cc=us&prodSeriesId=77515&prodTypeId=12454", NULL), + B("HP", "ProLiant DL145 G3", OK, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c00816835&lang=en&cc=us&taskId=101&prodSeriesId=3219755&prodTypeId=15351", NULL), + B("HP", "ProLiant DL165 G6", OK, "http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/15351-15351-3328412-241644-3328421-3955644.html", NULL), + B("HP", "ProLiant N40L", OK, NULL, NULL), + B("HP", "Puffer2-UL8E", OK, "http://h10025.www1.hp.com/ewfrf/wc/document?docname=c00300023", NULL), + B("HP", "dc7800", BAD, "http://h10010.www1.hp.com/wwpc/us/en/sm/WF06a/12454-12454-64287-321860-3328898-3459241.html?dnr=1", "ICH9DO with SPI lock down, BIOS lock, PR, read-only descriptor, locked ME region."), + B("HP", "Vectra VL400", OK, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c00060658&lang=en&cc=us", NULL), + B("HP", "Vectra VL420 SFF", OK, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c00060661&lang=en&cc=us", NULL), + B("HP", "xw4400 (0A68h)", BAD, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c00775230", "ICH7 with SPI lock down, BIOS lock, flash block detection (SST25VF080B); see http://paste.flashrom.org/view.php?id=686"), + B("HP", "xw9400", OK, "http://h20000.www2.hp.com/bizsupport/TechSupport/Home.jsp?lang=en&cc=us&prodSeriesId=3211286&prodTypeId=12454", "Boot block is write protected unless the solder points next to F2 are shorted."), + B("IBASE", "MB899", OK, "http://www.ibase-i.com.tw/2009/mb899.html", NULL), + B("IBM", "x3455", OK, "http://www-03.ibm.com/systems/x/hardware/rack/x3455/index.html", NULL), + B("IEI", "PICOe-9452", OK, "http://www.ieiworld.com/product_groups/industrial/content.aspx?keyword=WSB&gid=00001000010000000001&cid=08125380291060861658&id=08142308605814597144", NULL), + B("Intel", "D201GLY", OK, "http://www.intel.com/support/motherboards/desktop/d201gly/index.htm", NULL), + B("Intel", "D425KT", BAD, "http://www.intel.com/content/www/us/en/motherboards/desktop-motherboards/desktop-board-d425kt.html", "NM10 with SPI lock down, BIOS lock, see http://www.flashrom.org/pipermail/flashrom/2012-January/008600.html"), + B("Intel", "D865GLC", BAD, NULL, "ICH5 with BIOS lock enable, see http://paste.flashrom.org/view.php?id=775"), + B("Intel", "DG45ID", BAD, "http://www.intel.com/products/desktop/motherboards/dg45id/dg45id-overview.htm", "Probing works (Winbond W25x32, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME is locked."), + B("Intel", "DH67CF", BAD, NULL, "H67 with BIOS lock enable and locked ME region, see http://www.flashrom.org/pipermail/flashrom/2011-September/007789.html"), + B("Intel", "EP80759", OK, NULL, NULL), + B("Intel", "Foxhollow", OK, NULL, "Intel reference board."), + B("Intel", "Greencity", OK, NULL, "Intel reference board."), + B("Intel", "SE440BX-2", BAD, "http://downloadcenter.intel.com/SearchResult.aspx?lang=eng&ProductFamily=Desktop+Boards&ProductLine=Discontinued+Motherboards&ProductProduct=Intel%C2%AE+SE440BX-2+Motherboard", "Probably won't work, see http://www.coreboot.org/pipermail/flashrom/2010-July/003952.html"), + B("IWILL", "DK8-HTX", OK, "http://web.archive.org/web/20060507170150/http://www.iwill.net/product_2.asp?p_id=98", NULL), + B("Jetway", "J-7BXAN", OK, "http://www.jetway.com.tw/evisn/download/d7BXAS.htm", NULL), + B("Jetway", "J7F4K1G5D-PB", OK, "http://www.jetway.com.tw/jw/ipcboard_view.asp?productid=282&proname=J7F4K1G5D", NULL), + B("Kontron", "986LCD-M", OK, "http://de.kontron.com/products/boards+and+mezzanines/embedded+motherboards/miniitx+motherboards/986lcdmmitx.html", NULL), + B("Lanner", "EM-8510C", OK, NULL, NULL), + B("Lex", "CV700A", OK, "http://www.lex.com.tw/product/CV700A-spec.htm", NULL), + B("Mitac", "6513WU", OK, "http://web.archive.org/web/20050313054828/http://www.mitac.com/micweb/products/tyan/6513wu/6513wu.htm", NULL), + B("MSC", "Q7-TCTC", OK, "http://www.msc-ge.com/en/produkte/com/moduls/overview/5779-www.html", NULL), + B("MSI", "MS-6153", OK, "http://www.msi.com/product/mb/MS-6153.html", NULL), + B("MSI", "MS-6156", OK, "http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/boards/Motherboards/MicroStar/Ms6156/MS6156.htm", NULL), + B("MSI", "MS-6163 (MS-6163 Pro)", OK, "http://www.msi.com/product/mb/MS-6163-Pro.html", NULL), + B("MSI", "MS-6178", BAD, "http://www.msi.com/product/mb/MS-6178.html", "Immediately powers off if you try to hot-plug the chip. However, this does '''not''' happen if you use coreboot. Owned by Uwe Hermann ."), + B("MSI", "MS-6330 (K7T Turbo)", OK, "http://www.msi.com/product/mb/K7T-Turbo.html", NULL), + B("MSI", "MS-6391 (845 Pro4)", OK, "http://www.msi.com/product/mb/845-Pro4.html", NULL), + B("MSI", "MS-6561 (745 Ultra)", OK, "http://www.msi.com/product/mb/745-Ultra.html", NULL), + B("MSI", "MS-6566 (845 Ultra-C)", OK, "http://www.msi.com/product/mb/845-Ultra-C.html", NULL), + B("MSI", "MS-6570 (K7N2)", OK, "http://www.msi.com/product/mb/K7N2.html", NULL), + B("MSI", "MS-6577 (Xenon)", OK, "http://h10025.www1.hp.com/ewfrf/wc/document?product=90390&lc=en&cc=us&dlc=en&docname=bph07843", "This is an OEM board from HP, the HP name is Xenon."), + B("MSI", "MS-6590 (KT4 Ultra)", OK, "http://www.msi.com/product/mb/KT4-Ultra.html", NULL), + B("MSI", "MS-6702E (K8T Neo2-F)", OK, "http://www.msi.com/product/mb/K8T-Neo2-F--FIR.html", NULL), + B("MSI", "MS-6712 (KT4V)", OK, "http://www.msi.com/product/mb/KT4V---KT4V-L--v1-0-.html", NULL), + B("MSI", "MS-6787 (P4MAM-V/P4MAM-L)", OK, "http://www.msi.com/service/search/?kw=6787&type=product", NULL), + B("MSI", "MS-7005 (651M-L)", OK, "http://www.msi.com/product/mb/651M-L.html", NULL), + B("MSI", "MS-7025 (K8N Neo2 Platinum)", OK, "http://www.msi.com/product/mb/K8N-Neo2-Platinum.html", NULL), + B("MSI", "MS-7046", OK, "http://www.heimir.de/ms7046/", NULL), + B("MSI", "MS-7061 (KM4M-V/KM4AM-V)", OK, "http://www.msi.com/service/search/?kw=7061&type=product", NULL), + B("MSI", "MS-7065", OK, "http://browse.geekbench.ca/geekbench2/view/53114", NULL), + B("MSI", "MS-7135 (K8N Neo3)", OK, "http://www.msi.com/product/mb/K8N-Neo3.html", NULL), + B("MSI", "MS-7142 (K8MM-V)", OK, "http://www.msi.com/product/mb/K8MM-V.html", NULL), + B("MSI", "MS-7168 (Orion)", OK, "http://support.packardbell.co.uk/uk/item/index.php?i=spec_orion&pi=platform_honeymoon_istart", NULL), + B("MSI", "MS-7207 (K8NGM2-L)", OK, "http://www.msi.com/product/mb/K8NGM2-FID--IL--L.html", NULL), + B("MSI", "MS-7211 (PM8M3-V)", OK, "http://www.msi.com/product/mb/PM8M3-V.html", NULL), + B("MSI", "MS-7236 (945PL Neo3)", OK, "http://www.msi.com/product/mb/945PL-Neo3.html", NULL), + B("MSI", "MS-7253 (K9VGM-V)", OK, "http://www.msi.com/product/mb/K9VGM-V.html", NULL), + B("MSI", "MS-7255 (P4M890M)", OK, "http://www.msi.com/product/mb/P4M890M-L-IL.html", NULL), + B("MSI", "MS-7260 (K9N Neo PCB 1.0)", BAD, "http://www.msi.com/product/mb/K9N-Neo--PCB-1-0-.html", "Interestingly flashrom does not work when the vendor BIOS is booted, but it ''does'' work flawlessly when the machine is booted with coreboot. Owned by Uwe Hermann ."), + B("MSI", "MS-7309 (K9N6PGM2-V2)", OK, "http://www.msi.com/product/mb/K9N6PGM2-V2.html", NULL), + B("MSI", "MS-7312 (K9MM-V)", OK, "http://www.msi.com/product/mb/K9MM-V.html", NULL), + B("MSI", "MS-7345 (P35 Neo2-FIR)", OK, "http://www.msi.com/product/mb/P35-Neo2-FR---FIR.html", NULL), + B("MSI", "MS-7368 (K9AG Neo2-Digital)", OK, "http://www.msi.com/product/mb/K9AG-Neo2-Digital.html", NULL), + B("MSI", "MS-7369 (K9N Neo V2)", OK, "http://www.msi.com/product/mb/K9N-Neo-V2.html", NULL), + B("MSI", "MS-7376 (K9A2 Platinum V1)", OK, "http://www.msi.com/product/mb/K9A2-Platinum.html", NULL), + B("MSI", "MS-7529 (G31M3-L(S) V2)", OK, "http://www.msi.com/product/mb/G31M3-L-V2---G31M3-LS-V2.html", NULL), + B("MSI", "MS-7529 (G31TM-P21)", OK, "http://www.msi.com/product/mb/G31TM-P21.html", NULL), + B("MSI", "MS-7548 (Aspen-GL8E)", OK, "http://h10025.www1.hp.com/ewfrf/wc/document?docname=c01635688&lc=en&cc=us&dlc=en", NULL), + B("MSI", "MS-7596 (785GM-E51)", OK, "http://www.msi.com/product/mb/785GM-E51.html", NULL), + B("MSI", "MS-7599 (870-C45)", OK, "http://www.msi.com/product/mb/870-C45.html", NULL), + B("MSI", "MS-7613 (Iona-GL8E)", BAD, "http://h10025.www1.hp.com/ewfrf/wc/document?docname=c02014355&lc=en&cc=dk&dlc=en&product=4348478", "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("MSI", "MS-7635 (H55M-ED55)", BAD, "http://www.msi.com/product/mb/H55M-ED55.html", "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("MSI", "MS-7640 (890FXA-GD70)", OK, "http://www.msi.com/product/mb/890FXA-GD70.html", NULL), + B("MSI", "MS-7642 (890GXM-G65)", OK, "http://www.msi.com/product/mb/890GXM-G65.html", NULL), + B("MSI", "MS-7676 (H67MA-ED55(B3))", OK, "http://www.msi.com/product/mb/H67MA-ED55--B3-.html", "Seems to work fine basically, but user reported (hopefully unrelated) buggy behavior of the board after a firmware upgrade. See http://www.flashrom.org/pipermail/flashrom/2012-January/008547.html"), + B("MSI", "MS-7696 (A75MA-G55)", OK, "http://www.msi.com/product/mb/A75MA-G55.html", NULL), + B("MSI", "MS-7698 (E350IA-E45)", OK, "http://www.msi.com/product/mb/E350IA-E45.html", NULL), + B("NEC", "PowerMate 2000", OK, "http://support.necam.com/mobilesolutions/hardware/Desktops/pm2000/celeron/", NULL), + B("Nokia", "IP530", OK, NULL, NULL), + B("PCCHIPS ", "M598LMR (V9.0)", OK, NULL, NULL), + B("PCCHIPS ", "M863G (V5.1A)", OK, "http://www.pcchips.com.tw/PCCWebSite/Products/ProductsDetail.aspx?CategoryID=1&DetailID=343&DetailName=Feature&MenuID=1&LanID=0", NULL), + B("PC Engines", "Alix.1c", OK, "http://pcengines.ch/alix1c.htm", NULL), + B("PC Engines", "Alix.2c2", OK, "http://pcengines.ch/alix2c2.htm", NULL), + B("PC Engines", "Alix.2c3", OK, "http://pcengines.ch/alix2c3.htm", NULL), + B("PC Engines", "Alix.2d3", OK, "http://pcengines.ch/alix2d3.htm", NULL), + B("PC Engines", "Alix.3c3", OK, "http://pcengines.ch/alix3c3.htm", NULL), + B("PC Engines", "Alix.3d3", OK, "http://pcengines.ch/alix3d3.htm", NULL), + B("PC Engines", "Alix.6f2", OK, "http://pcengines.ch/alix6f2.htm", NULL), + B("PC Engines", "WRAP.2E", OK, "http://pcengines.ch/wrap2e1.htm", NULL), + B("Portwell", "PEB-4700VLA", OK, "http://www.portwell.com/products/detail.asp?CUSTCHAR1=PEB-4700VLA", NULL), + B("RCA", "RM4100", OK, "http://www.settoplinux.org/index.php?title=RCA_RM4100", NULL), + B("Samsung", "Polaris 32", OK, NULL, NULL), + B("Shuttle", "AK31", OK, "http://www.motherboard.cz/mb/shuttle/AK31.htm", NULL), + B("Shuttle", "AK38N", OK, "http://eu.shuttle.com/en/desktopdefault.aspx/tabid-36/558_read-9889/", NULL), + B("Shuttle", "AV11V30", OK, NULL, NULL), + B("Shuttle", "AV18E2", OK, "http://www.shuttle.eu/_archive/older/de/av18.htm", NULL), + B("Shuttle", "FD37", OK, "http://www.shuttle.eu/products/discontinued/barebones/sd37p2/", NULL), + B("Shuttle", "FH67", OK, "http://www.shuttle.eu/products/mini-pc/sh67h3/specification/", NULL), + B("Shuttle", "FN25", OK, "http://www.shuttle.eu/products/discontinued/barebones/sn25p/?0=", NULL), + B("Shuttle", "X50/X50(B)", OK, "http://au.shuttle.com/product_detail_spec.jsp?PI=1241", NULL), + B("Soyo", "SY-5VD", BAD, "http://www.soyo.com/content/Downloads/163/&c=80&p=464&l=English", "No public report found. Owned by Uwe Hermann . May work now."), + B("Soyo", "SY-6BA+ III", OK, "http://www.motherboard.cz/mb/soyo/SY-6BA+III.htm", NULL), + B("Soyo", "SY-7VCA", OK, "http://www.tomshardware.com/reviews/12-socket-370-motherboards,196-15.html", NULL), + B("Sun", "Blade x6250", OK, "http://www.sun.com/servers/blades/x6250/", NULL), + B("Sun", "Fire x4150", BAD, "http://www.sun.com/servers/x64/x4150/", "No public report found. May work now."), + B("Sun", "Fire x4200", BAD, "http://www.sun.com/servers/entry/x4200/", "No public report found. May work now."), + B("Sun", "Fire x4540", BAD, "http://www.sun.com/servers/x64/x4540/", "No public report found. May work now."), + B("Sun", "Fire x4600", BAD, "http://www.sun.com/servers/x64/x4600/", "No public report found. May work now."), + B("Sun", "Ultra 40 M2", OK, "http://download.oracle.com/docs/cd/E19127-01/ultra40.ws/820-0123-13/intro.html", NULL), + B("Supermicro", "H8QC8", OK, "http://www.supermicro.com/Aplus/motherboard/Opteron/nforce/H8QC8.cfm", NULL), + B("Supermicro", "X5DP8-G2", OK, "http://www.supermicro.com/products/motherboard/Xeon/E7501/X5DP8-G2.cfm", NULL), + B("Supermicro", "X7DBT-INF", OK, "http://www.supermicro.com/products/motherboard/Xeon1333/5000P/X7DBT-INF.cfm", NULL), + B("Supermicro", "X7SPA-HF", OK, "http://www.supermicro.com/products/motherboard/ATOM/ICH9/X7SPA.cfm?typ=H&IPMI=Y", NULL), + B("Supermicro", "X8DT3", OK, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DT3.cfm", NULL), + B("Supermicro", "X8DTE-F", OK, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DT6-F.cfm?IPMI=Y&SAS=N", NULL), + B("Supermicro", "X8DTH-6F", OK, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DTH-6F.cfm", NULL), + B("Supermicro", "X8DTT-F", OK, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DTT-F.cfm", NULL), + B("Supermicro", "X8DTT-HIBQF", OK, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DTT-H.cfm", NULL), + B("Supermicro", "X8DTU-6TF+", BAD, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DTU_.cfm?TYP=SAS&LAN=10", "Probing works (Atmel AT25DF321A, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("Supermicro", "X8DTU-F", OK, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DTU-F.cfm", NULL), + B("Supermicro", "X8SIE(-F)", BAD, "http://www.supermicro.com/products/motherboard/Xeon3000/3400/X8SIE.cfm?IPMI=N&TYP=LN2", "Requires unlocking the ME although the registers are set up correctly by the descriptor/BIOS already (tested with swseq and hwseq)."), + B("Supermicro", "X8STi", OK, "http://www.supermicro.com/products/motherboard/Xeon3000/X58/X8STi.cfm", NULL), + B("Supermicro", "X9SCA-F", BAD, "http://www.supermicro.com/products/motherboard/Xeon/C202_C204/X9SCA-F.cfm", "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("Supermicro", "X9SCL", BAD, "http://www.supermicro.com/products/motherboard/Xeon/C202_C204/X9SCL.cfm", "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("T-Online", "S-100", OK, "http://wiki.freifunk-hannover.de/T-Online_S_100", NULL), + B("Tekram", "P6Pro-A5", OK, "http://www.motherboard.cz/mb/tekram/P6Pro-A5.htm", NULL), + B("Termtek", "TK-3370 (Rev:2.5B)", OK, NULL, NULL), + B("Thomson", "IP1000", OK, "http://www.settoplinux.org/index.php?title=Thomson_IP1000", NULL), + B("TriGem", "Anaheim-3", OK, "http://www.e4allupgraders.info/dir1/motherboards/socket370/anaheim3.shtml", NULL), + B("TriGem", "Lomita", OK, "http://www.e4allupgraders.info/dir1/motherboards/socket370/lomita.shtml", NULL), + B("Tyan", "S5375-1U (Tempest i5100X)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=610", NULL), + B("Tyan", "S1846 (Tsunami ATX)", OK, "http://www.tyan.com/archive/products/html/tsunamiatx.html", NULL), + B("Tyan", "S2466 (Tiger MPX)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=461", NULL), + B("Tyan", "S2498 (Tomcat K7M)", OK, "http://www.tyan.com/archive/products/html/tomcatk7m.html", NULL), + B("Tyan", "S2723 (Tiger i7501)", OK, "http://www.tyan.com/archive/products/html/tigeri7501.html", NULL), + B("Tyan", "S2881 (Thunder K8SR)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=115", NULL), + B("Tyan", "S2882 (Thunder K8S Pro)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=121", NULL), + B("Tyan", "S2882-D (Thunder K8SD Pro)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=127", NULL), + B("Tyan", "S2891 (Thunder K8SRE)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=144", NULL), + B("Tyan", "S2892 (Thunder K8SE)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=145", NULL), + B("Tyan", "S2895 (Thunder K8WE)", OK, "http://www.tyan.com/archive/products/html/thunderk8we.html", NULL), + B("Tyan", "S2912 (Thunder n3600R)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=157", NULL), + B("Tyan", "S2915 (Thunder n6650W)", OK, "http://tyan.com/product_board_detail.aspx?pid=163", NULL), + B("Tyan", "S2915-E (Thunder n6650W)", OK, "http://tyan.com/product_SKU_spec.aspx?ProductType=MB&pid=541&SKU=600000041", NULL), + B("Tyan", "S2933 (Thunder n3600S)", OK, "http://tyan.com/product_SKU_spec.aspx?ProductType=MB&pid=478&SKU=600000063", NULL), + B("Tyan", "S3095 (Tomcat i945GM)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=181", NULL), + B("Tyan", "S3992 (Thunder h2000M)", OK, "http://tyan.com/product_board_detail.aspx?pid=235", NULL), + B("Tyan", "S5180 (Toledo i965R)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=456", NULL), + B("Tyan", "S5191 (Toledo i3000R)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=343", NULL), + B("Tyan", "S5197 (Toledo i3010W)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=349", NULL), + B("Tyan", "S5211 (Toledo i3210W)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=591", NULL), + B("Tyan", "S5211-1U (Toledo i3200R)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=593", NULL), + B("Tyan", "S5220 (Toledo q35T)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=597", NULL), + B("Tyan", "S5375 (Tempest i5100X)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=566", NULL), + B("Tyan", "S5376 (Tempest i5100W)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=605", "Both S5376G2NR and S5376WAG2NR should work."), + B("Tyan", "S5377 (Tempest i5100T)", OK, "http://www.tyan.com/product_SKU_spec.aspx?ProductType=MB&pid=642&SKU=600000017", NULL), + B("Tyan", "S5382 (Tempest i5000PW)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=439", NULL), + B("Tyan", "S5397 (Tempest i5400PW)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=560", NULL), + B("VIA", "EPIA M/MII/...", OK, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=202", NULL), /* EPIA-MII link for now */ + B("VIA", "EPIA SP", OK, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=261", NULL), + B("VIA", "EPIA-CN", OK, "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=400", NULL), + B("VIA", "EPIA EK", OK, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?motherboard_id=420", NULL), + B("VIA", "EPIA-EX15000G", OK, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=450", NULL), + B("VIA", "EPIA-LN", OK, "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=473", NULL), + B("VIA", "EPIA-M700", OK, "http://via.com.tw/servlet/downloadSvl?motherboard_id=670&download_file_id=3700", NULL), + B("VIA", "EPIA-N/NL", OK, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=221", NULL), /* EPIA-N link for now */ + B("VIA", "EPIA-NX15000G", OK, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=470", NULL), + B("VIA", "NAB74X0", OK, "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=590", NULL), + B("VIA", "pc2500e", OK, "http://www.via.com.tw/en/initiatives/empowered/pc2500_mainboard/index.jsp", NULL), + B("VIA", "PC3500G", OK, "http://www.via.com.tw/en/initiatives/empowered/pc3500_mainboard/index.jsp", NULL), + B("VIA", "VB700X", OK, "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=490", NULL), + B("ZOTAC", "Fusion-ITX WiFi (FUSION350-A-E)", OK, NULL, NULL), + B("ZOTAC", "GeForce 8200", OK, "http://pden.zotac.com/index.php?page=shop.product_details&product_id=129&category_id=92", NULL), + B("ZOTAC", "H67-ITX WiFi (H67ITX-C-E)", BAD, NULL, "Probing works (Winbond W25Q32, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("ZOTAC", "ZBOX HD-ID11", OK, "http://pdde.zotac.com/index.php?page=shop.product_details&product_id=240&category_id=75", NULL), #endif {}, @@ -975,19 +974,19 @@ const struct board_info boards_known[] = { /* Please keep this list alphabetically ordered by vendor/board. */ const struct board_info laptops_known[] = { #if defined(__i386__) || defined(__x86_64__) - B("Acer", "Aspire 1520", 1, "http://support.acer.com/us/en/acerpanam/notebook/0000/Acer/Aspire1520/Aspire1520nv.shtml", NULL), - B("Acer", "Aspire One", 0, NULL, "http://www.coreboot.org/pipermail/coreboot/2009-May/048041.html"), - B("ASUS", "A8Jm", 1, NULL, NULL), - B("ASUS", "Eee PC 701 4G", 0, "http://www.asus.com/Eee/Eee_PC/Eee_PC_4G/", "It seems the chip (25X40VSIG) is behind some SPI flash translation layer (likely in the EC, the ENE KB3310)."), - B("ASUS", "M6Ne", 0, "http://www.asus.com/Notebooks/Versatile_Performance/M6NNe/", "Untested board enable."), - B("Clevo", "P150HM", 0, "http://www.clevo.com.tw/en/products/prodinfo_2.asp?productid=307", "Probing works (Macronix MX25L3205, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), - B("Dell", "Latitude CPi A366XT", 0, "http://www.coreboot.org/Dell_Latitude_CPi_A366XT", "The laptop immediately powers off if you try to hot-swap the chip. It's not yet tested if write/erase would work on this laptop."), - B("HP/Compaq", "nx9005", 0, "http://h18000.www1.hp.com/products/quickspecs/11602_na/11602_na.HTML", "Shuts down when probing for a chip. http://www.flashrom.org/pipermail/flashrom/2010-May/003321.html"), - B("HP/Compaq", "nx9010", 0, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?lang=en&cc=us&objectID=c00348514", "Hangs upon '''flashrom -V''' (needs hard power-cycle then)."), - B("IBM/Lenovo", "Thinkpad T40p", 0, "http://www.thinkwiki.org/wiki/Category:T40p", NULL), - B("IBM/Lenovo", "Thinkpad T410s", 0, "http://www.thinkwiki.org/wiki/Category:T410s", "Probing works (Winbond W25X64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME and platform are locked."), - B("IBM/Lenovo", "240", 0, "http://www.stanford.edu/~bresnan//tp240.html", "Seems to (partially) work at first, but one block/sector cannot be written which then leaves you with a bricked laptop. Maybe this can be investigated and fixed in software later."), - B("Lenovo", "3000 V100 TF05Cxx", 1, "http://www5.pc.ibm.com/europe/products.nsf/products?openagent&brand=Lenovo3000Notebook&series=Lenovo+3000+V+Series#viewallmodelstop", NULL), + B("Acer", "Aspire 1520", OK, "http://support.acer.com/us/en/acerpanam/notebook/0000/Acer/Aspire1520/Aspire1520nv.shtml", NULL), + B("Acer", "Aspire One", BAD, NULL, "http://www.coreboot.org/pipermail/coreboot/2009-May/048041.html"), + B("ASUS", "A8Jm", OK, NULL, NULL), + B("ASUS", "Eee PC 701 4G", BAD, "http://www.asus.com/Eee/Eee_PC/Eee_PC_4G/", "It seems the chip (25X40VSIG) is behind some SPI flash translation layer (likely in the EC, the ENE KB3310)."), + B("ASUS", "M6Ne", NT, "http://www.asus.com/Notebooks/Versatile_Performance/M6NNe/", "Untested board enable."), + B("Clevo", "P150HM", BAD, "http://www.clevo.com.tw/en/products/prodinfo_2.asp?productid=307", "Probing works (Macronix MX25L3205, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("Dell", "Latitude CPi A366XT", BAD, "http://www.coreboot.org/Dell_Latitude_CPi_A366XT", "The laptop immediately powers off if you try to hot-swap the chip. It's not yet tested if write/erase would work on this laptop."), + B("HP/Compaq", "nx9005", BAD, "http://h18000.www1.hp.com/products/quickspecs/11602_na/11602_na.HTML", "Shuts down when probing for a chip. http://www.flashrom.org/pipermail/flashrom/2010-May/003321.html"), + B("HP/Compaq", "nx9010", BAD, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?lang=en&cc=us&objectID=c00348514", "Hangs upon '''flashrom -V''' (needs hard power-cycle then)."), + B("IBM/Lenovo", "Thinkpad T40p", BAD, "http://www.thinkwiki.org/wiki/Category:T40p", NULL), + B("IBM/Lenovo", "Thinkpad T410s", BAD, "http://www.thinkwiki.org/wiki/Category:T410s", "Probing works (Winbond W25X64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME and platform are locked."), + B("IBM/Lenovo", "240", BAD, "http://www.stanford.edu/~bresnan//tp240.html", "Seems to (partially) work at first, but one block/sector cannot be written which then leaves you with a bricked laptop. Maybe this can be investigated and fixed in software later."), + B("Lenovo", "3000 V100 TF05Cxx", OK, "http://www5.pc.ibm.com/europe/products.nsf/products?openagent&brand=Lenovo3000Notebook&series=Lenovo+3000+V+Series#viewallmodelstop", NULL), #endif {}, diff --git a/print_wiki.c b/print_wiki.c index 377154d..9a9cd83 100644 --- a/print_wiki.c +++ b/print_wiki.c @@ -136,9 +136,9 @@ static void wiki_helper(const char *devicetype, int cols, const struct board_match *b = board_matches; for (i = 0; boards[i].vendor != NULL; i++) { - if (boards[i].working) + if (boards[i].working == OK) boardcount_good++; - else + if (boards[i].working == BAD) boardcount_bad++; } @@ -171,7 +171,8 @@ static void wiki_helper(const char *devicetype, int cols, b[k].lb_vendor ? b[k].lb_vendor : "", b[k].lb_vendor ? ":" : "", b[k].lb_vendor ? b[k].lb_part : "", - (boards[i].working) ? "OK" : "No"); + (boards[i].working == OK) ? "OK" : + (boards[i].working == NT) ? "?3" : "No"); if (boards[i].note) { printf("%d\n", num_notes + 1); diff --git a/programmer.h b/programmer.h index c99e37f..479d963 100644 --- a/programmer.h +++ b/programmer.h @@ -192,7 +192,7 @@ extern const struct board_match board_matches[]; struct board_info { const char *vendor; const char *name; - const int working; + const enum test_state working; #ifdef CONFIG_PRINT_WIKI const char *url; const char *note; @@ -217,7 +217,7 @@ extern struct pci_dev *pcidev_dev; struct pcidev_status { uint16_t vendor_id; uint16_t device_id; - int status; + const enum test_state status; const char *vendor_name; const char *device_name; }; @@ -416,7 +416,7 @@ extern const struct pcidev_status ata_hpt[]; struct usbdev_status { uint16_t vendor_id; uint16_t device_id; - int status; + const enum test_state status; const char *vendor_name; const char *device_name; }; -- 1.7.1 From c-d.hailfinger.devel.2006 at gmx.net Sat Mar 3 21:35:24 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sat, 03 Mar 2012 21:35:24 +0100 Subject: [flashrom] [PATCH] linux_spi.c: set SPI mode, bit order and bits per word on init. In-Reply-To: <1330782514-5679-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <4F520C25.2070306@gmx.net> <1330782514-5679-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <4F52808C.4020308@gmx.net> Am 03.03.2012 14:48 schrieb Stefan Tauner: > Previously we relied on a correctly set up state. > > Also, we start to rely on the shutdown function for cleanup after > registering it, i.e. we no longer explicitly call close(fd) after > register_shutdown(). > > Signed-off-by: Stefan Tauner Thanks for reworking this patch! Acked-by: Carl-Daniel Hailfinger Regards, Carl-Daniel -- http://www.hailfinger.org/ From stefan.tauner at student.tuwien.ac.at Sat Mar 3 22:20:50 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 3 Mar 2012 22:20:50 +0100 Subject: [flashrom] flashrom output In-Reply-To: <4F4F4D0B.1030606@adak.com.tr> References: <4F4F4D0B.1030606@adak.com.tr> Message-ID: <201203032120.q23LKokQ004563@mail2.student.tuwien.ac.at> On Thu, 01 Mar 2012 12:18:51 +0200 Cavit VURAL wrote: > root at cvural64:/home/cvural/flashrom-0.9.5.1# ./flashrom -V > > flashrom v0.9.5.1-r1509 on Linux 3.2.0-1-amd64 (x86_64), built with > libpci 3.1.8, GCC 4.6.2, little endian > flashrom is free software, get the source code at http://www.flashrom.org > > [?] > 0x50: 0x00000a0b (FRAP) > BMWAG 0x00, BMRAG 0x00, BRWA 0x0a, BRRA 0x0b > 0x54: 0x00000000 FREG0: WARNING: Flash Descriptor region > (0x00000000-0x00000fff) is read-only. > 0x58: 0x07ff0700 FREG1: BIOS region (0x00700000-0x007fffff) is read-write. > 0x5C: 0x06ff0001 FREG2: WARNING: Management Engine region > (0x00001000-0x006fffff) is locked. > Please send a verbose log to flashrom at flashrom.org if this board is not > listed on > http://flashrom.org/Supported_hardware#Supported_mainboards yet. > Writes have been disabled. You can enforce write support with the > ich_spi_force programmer option, but it will most likely harm your hardware! > If you force flashrom you will get no support if something breaks. Thanks, i have added the board to our list of unsupported boards and will commit that later together with other small changes. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From svetoslav.trochev at gmail.com Sat Mar 3 23:14:22 2012 From: svetoslav.trochev at gmail.com (Svetoslav Trochev) Date: Sat, 3 Mar 2012 14:14:22 -0800 Subject: [flashrom] ASRock H67M: Board Testing Message-ID: Hi Everyone, I just run test on ASRock H67M mainboard. I am attaching the output files from "flashrom -V" and "lspci -nnvvxxx". After a quick search I could not find how to run "superiotool -deV" on Ubuntu, but once I figure it out I will attach the output as well. I hope the current info is useful for now. Thanks, Svetoslav Trochev -------------- next part -------------- flashrom v0.9.5.1-runknown on Linux 3.0.0-12-generic (x86_64), built with libpci 3.1.7, GCC 4.6.1, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 2452M loops per second, 10 myus = 10 us, 100 myus = 98 us, 1000 myus = 983 us, 10000 myus = 9850 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "To Be Filled By O.E.M." DMI string system-product-name: "To Be Filled By O.E.M." DMI string system-version: "To Be Filled By O.E.M." DMI string baseboard-manufacturer: "ASRock" DMI string baseboard-product-name: "H67M" DMI string baseboard-version: " " DMI string chassis-type: "Desktop" Found chipset "Intel H67" with PCI ID 8086:1c4a. Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x1 0xffe00000/0xffa00000 FWH IDSEL: 0x1 0xffd80000/0xff980000 FWH IDSEL: 0x2 0xffd00000/0xff900000 FWH IDSEL: 0x2 0xffc80000/0xff880000 FWH IDSEL: 0x3 0xffc00000/0xff800000 FWH IDSEL: 0x3 0xff700000/0xff300000 FWH IDSEL: 0x4 0xff600000/0xff200000 FWH IDSEL: 0x5 0xff500000/0xff100000 FWH IDSEL: 0x6 0xff400000/0xff000000 FWH IDSEL: 0x7 0xfff80000/0xffb80000 FWH decode enabled 0xfff00000/0xffb00000 FWH decode enabled 0xffe80000/0xffa80000 FWH decode enabled 0xffe00000/0xffa00000 FWH decode enabled 0xffd80000/0xff980000 FWH decode enabled 0xffd00000/0xff900000 FWH decode enabled 0xffc80000/0xff880000 FWH decode enabled 0xffc00000/0xff800000 FWH decode enabled 0xff700000/0xff300000 FWH decode disabled 0xff600000/0xff200000 FWH decode disabled 0xff500000/0xff100000 FWH decode disabled 0xff400000/0xff000000 FWH decode disabled Maximum FWH chip size: 0x100000 bytes BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0 Root Complex Register Block address = 0xfed1c000 GCS = 0xc04: BIOS Interface Lock-Down: disabled, Boot BIOS Straps: 0x3 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3800 0x04: 0x6008 (HSFS) HSFS: FDONE=0, FCERR=0, AEL=0, BERASE=1, SCIP=0, FDOPSS=1, FDV=1, FLOCKDN=0 Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done 0x06: 0x0000 (HSFC) HSFC: FGO=0, FCYCLE=0, FDBC=0, SME=0 0x08: 0x00000000 (FADDR) 0x50: 0x00000a0b (FRAP) BMWAG 0x00, BMRAG 0x00, BRWA 0x0a, BRRA 0x0b 0x54: 0x000f0000 FREG0: WARNING: Flash Descriptor region (0x00000000-0x0000ffff) is read-only. 0x58: 0x07ff0400 FREG1: BIOS region (0x00400000-0x007fffff) is read-write. 0x5C: 0x03ff0010 FREG2: WARNING: Management Engine region (0x00010000-0x003fffff) is locked. Please send a verbose log to flashrom at flashrom.org if this board is not listed on http://flashrom.org/Supported_hardware#Supported_mainboards yet. Writes have been disabled. You can enforce write support with the ich_spi_force programmer option, but it will most likely harm your hardware! If you force flashrom you will get no support if something breaks. 0x90: 0xc4 (SSFS) SSFS: SCIP=0, FDONE=1, FCERR=0, AEL=0 0x91: 0xf84140 (SSFC) SSFC: SCGO=0, ACS=0, SPOP=0, COP=4, DBC=1, SME=0, SCF=0 0x94: 0x5006 (PREOP) 0x96: 0x463b (OPTYPE) 0x98: 0x05d80302 (OPMENU) 0x9C: 0xc79f0190 (OPMENU+4) 0xA0: 0x00000000 (BBAR) 0xC4: 0x00002005 (LVSCC) LVSCC: BES=0x1, WG=1, WSR=0, WEWS=0, EO=0x20, VCL=0 0xC8: 0x00002005 (UVSCC) UVSCC: BES=0x1, WG=1, WSR=0, WEWS=0, EO=0x20, VCL=0 0xD0: 0x00000000 (FPB) SPI Read Configuration: prefetching disabled, caching enabled, OK. The following protocols are supported: FWH, SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for SST SST25LF040A, 512 kB: program_opcodes: preop=5006 optype=462b opmenu=05ab0302c79f0190 on-the-fly OPCODE (0xAB) re-programmed, op-pos=2 probe_spi_res2: id1 0x16, id2 0x16 Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0x16, id2 0x16 Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xef, id2 0x16 Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xef, id2 0x16 Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xef, id2 0x16 Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Chip status register is 00 Found Winbond flash chip "W25Q64" (8192 kB, SPI) at physical address 0xff800000. Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Unknown SFDP-capable chip, 0 kB: program_opcodes: preop=5006 optype=462b opmenu=055a0302c79f0190 on-the-fly OPCODE (0x5A) re-programmed, op-pos=2 No SFDP signature found. Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xef, id2 0x16 Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x08, id2 0xe8, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0x08, id2 0xe8, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0x08, id2 0xe8, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0x90, id2 0xd7, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x08, id2 0xe8, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0x90, id2 0xd7, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x08, id2 0xe8, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Found Winbond flash chip "W25Q64" (8192 kB, SPI). This chip may contain one-time programmable memory. flashrom cannot read and may never be able to write it, hence it may not be able to completely clone the contents of this chip (see man page for details). No operations were specified. Restoring MMIO space at 0x7f0b449e78a0 Restoring MMIO space at 0x7f0b449e789c Restoring MMIO space at 0x7f0b449e7898 Restoring MMIO space at 0x7f0b449e7896 Restoring MMIO space at 0x7f0b449e7894 Restoring PCI config space for 00:1f:0 reg 0xdc -------------- next part -------------- 00:00.0 Host bridge [0600]: Intel Corporation 2nd Generation Core Processor Family DRAM Controller [8086:0100] (rev 09) Subsystem: ASRock Incorporation Device [1849:0100] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- SERR- Kernel driver in use: agpgart-intel 00: 86 80 00 01 06 00 90 20 09 00 00 06 00 00 00 00 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 49 18 00 01 30: 00 00 00 00 e0 00 00 00 00 00 00 00 00 00 00 00 40: 01 90 d1 fe 00 00 00 00 01 00 d1 fe 00 00 00 00 50: 41 02 00 00 11 00 00 00 00 00 00 00 01 00 00 af 60: 01 00 00 e0 00 00 00 00 01 80 d1 fe 00 00 00 00 70: 00 00 80 ff 00 00 00 00 00 0c 80 ff 7f 00 00 00 80: 10 11 11 00 00 00 11 00 1a 00 00 00 00 00 00 00 90: 01 00 00 00 01 00 00 00 01 00 d0 3f 01 00 00 00 a0: 01 00 00 00 01 00 00 00 01 00 e0 3f 01 00 00 00 b0: 01 00 a0 af 01 00 80 af 01 00 00 af 01 00 a0 bf c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 09 00 0c 01 96 80 80 e2 90 00 00 14 00 00 00 00 f0: 00 00 00 00 00 00 00 00 b8 0f 06 00 00 00 00 00 00:02.0 VGA compatible controller [0300]: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0102] (rev 09) (prog-if 00 [VGA controller]) Subsystem: ASRock Incorporation Device [1849:0102] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- SERR- [disabled] Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit- Address: fee0500c Data: 4189 Capabilities: [d0] Power Management version 2 Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [a4] PCI Advanced Features AFCap: TP+ FLR+ AFCtrl: FLR- AFStatus: TP- Kernel driver in use: i915 Kernel modules: i915 00: 86 80 02 01 07 04 90 00 09 00 00 03 00 00 00 00 10: 04 00 00 fe 00 00 00 00 0c 00 00 c0 00 00 00 00 20: 01 f0 00 00 00 00 00 00 00 00 00 00 49 18 02 01 30: 00 00 00 00 90 00 00 00 00 00 00 00 0b 01 00 00 40: 09 00 0c 01 96 80 80 e2 90 00 00 14 00 00 00 00 50: 41 02 00 00 11 00 00 00 00 00 00 00 01 00 a0 af 60: 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 05 d0 01 00 0c 50 e0 fe 89 41 00 00 00 00 00 00 a0: 00 00 00 00 13 00 06 03 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 01 a4 22 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 06 00 18 a0 e0 ae 00:16.0 Communication controller [0780]: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 [8086:1c3a] (rev 04) Subsystem: ASRock Incorporation Device [1849:1c3a] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- RBE+ FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 128 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend- LnkCap: Port #1, Speed 5GT/s, Width x1, ASPM L0s L1, Latency L0 <1us, L1 <4us ClockPM- Surprise- LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise- Slot #0, PowerLimit 10.000W; Interlock- NoCompl+ SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock- Changed: MRL- PresDet- LinkState- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- DevCap2: Completion Timeout: Range BC, TimeoutDis+ ARIFwd- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- ARIFwd- LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -3.5dB Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit- Address: fee0f00c Data: 4151 Capabilities: [90] Subsystem: ASRock Incorporation Device [1849:1c10] Capabilities: [a0] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Kernel driver in use: pcieport Kernel modules: shpchp 00: 86 80 10 1c 07 04 10 00 b5 00 04 06 10 00 81 00 10: 00 00 00 00 00 00 00 00 00 01 01 00 f0 00 00 20 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 40 00 00 00 00 00 00 00 03 01 10 00 40: 10 80 42 01 00 80 00 00 00 00 10 00 12 4c 11 01 50: 00 00 01 10 00 b2 04 00 00 00 00 00 08 00 00 00 60: 00 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00 70: 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 05 90 01 00 0c f0 e0 fe 51 41 00 00 00 00 00 00 90: 0d a0 00 00 49 18 10 1c 00 00 00 00 00 00 00 00 a0: 01 00 02 c8 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 01 00 0b 00 00 00 80 11 01 00 00 00 00 e0: 00 03 00 00 00 00 00 00 03 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 87 0f 05 08 00 00 00 00 00:1c.2 PCI bridge [0604]: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 3 [8086:1c14] (rev b5) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- RBE+ FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 128 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend- LnkCap: Port #3, Speed 5GT/s, Width x1, ASPM L0s L1, Latency L0 <512ns, L1 <4us ClockPM- Surprise- LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise- Slot #2, PowerLimit 10.000W; Interlock- NoCompl+ SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock- Changed: MRL- PresDet- LinkState+ RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- DevCap2: Completion Timeout: Range BC, TimeoutDis+ ARIFwd- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- ARIFwd- LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -6dB Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit- Address: fee0f00c Data: 4159 Capabilities: [90] Subsystem: ASRock Incorporation Device [1849:1c14] Capabilities: [a0] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Kernel driver in use: pcieport Kernel modules: shpchp 00: 86 80 14 1c 07 04 10 00 b5 00 04 06 10 00 81 00 10: 00 00 00 00 00 00 00 00 00 02 02 00 f0 00 00 20 20: 40 fe 40 fe f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 40 00 00 00 00 00 00 00 03 03 10 00 40: 10 80 42 01 00 80 00 00 00 00 10 00 12 3c 11 03 50: 40 00 12 70 00 b2 14 00 00 00 40 01 08 00 00 00 60: 00 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00 70: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 05 90 01 00 0c f0 e0 fe 59 41 00 00 00 00 00 00 90: 0d a0 00 00 49 18 14 1c 00 00 00 00 00 00 00 00 a0: 01 00 02 c8 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 01 00 0b 00 00 00 80 11 01 00 00 00 00 e0: 00 03 00 00 00 00 00 00 03 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 87 0f 05 08 00 00 00 00 00:1c.3 PCI bridge [0604]: Intel Corporation 82801 PCI Bridge [8086:244e] (rev b5) (prog-if 01 [Subtractive decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- RBE+ FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 128 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend- LnkCap: Port #4, Speed 5GT/s, Width x1, ASPM L0s L1, Latency L0 <1us, L1 <4us ClockPM- Surprise- LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise- Slot #3, PowerLimit 10.000W; Interlock- NoCompl+ SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock- Changed: MRL- PresDet- LinkState+ RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- DevCap2: Completion Timeout: Range BC, TimeoutDis+ ARIFwd- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- ARIFwd- LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -3.5dB Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit- Address: 00000000 Data: 0000 Capabilities: [90] Subsystem: ASRock Incorporation Device [1849:244e] Capabilities: [a0] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- 00: 86 80 4e 24 07 00 10 00 b5 01 04 06 10 00 81 00 10: 00 00 00 00 00 00 00 00 00 03 04 00 f0 00 00 20 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 40 00 00 00 00 00 00 00 03 04 10 00 40: 10 80 42 01 00 80 00 00 00 00 10 00 12 4c 11 04 50: 00 00 11 30 00 b2 1c 00 00 00 40 01 00 00 00 00 60: 00 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00 70: 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 05 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 0d a0 00 00 49 18 4e 24 00 00 00 00 00 00 00 00 a0: 01 00 02 c8 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 01 00 0b 00 00 00 80 11 01 00 00 00 00 e0: 00 03 00 00 00 00 00 00 03 00 00 00 03 00 00 00 f0: 00 00 00 00 00 00 00 00 87 0f 05 08 00 00 00 00 00:1c.4 PCI bridge [0604]: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 5 [8086:1c18] (rev b5) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- RBE+ FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 128 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend- LnkCap: Port #5, Speed 5GT/s, Width x1, ASPM L0s L1, Latency L0 <512ns, L1 <4us ClockPM- Surprise- LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise- Slot #4, PowerLimit 10.000W; Interlock- NoCompl+ SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock- Changed: MRL- PresDet- LinkState+ RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- DevCap2: Completion Timeout: Range BC, TimeoutDis+ ARIFwd- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- ARIFwd- LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -3.5dB Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit- Address: fee0f00c Data: 4161 Capabilities: [90] Subsystem: ASRock Incorporation Device [1849:1c18] Capabilities: [a0] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Kernel driver in use: pcieport Kernel modules: shpchp 00: 86 80 18 1c 07 04 10 00 b5 00 04 06 10 00 81 00 10: 00 00 00 00 00 00 00 00 00 05 05 00 e0 e0 00 00 20: f0 ff 00 00 01 d0 01 d0 00 00 00 00 00 00 00 00 30: 00 00 00 00 40 00 00 00 00 00 00 00 03 01 10 00 40: 10 80 42 01 00 80 00 00 00 00 10 00 12 3c 11 05 50: 40 00 11 70 00 b2 24 00 00 00 40 01 08 00 00 00 60: 00 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00 70: 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 05 90 01 00 0c f0 e0 fe 61 41 00 00 00 00 00 00 90: 0d a0 00 00 49 18 18 1c 00 00 00 00 00 00 00 00 a0: 01 00 02 c8 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 01 00 0b 00 00 00 80 11 01 00 00 00 00 e0: 00 03 00 00 00 00 00 00 03 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 87 0f 05 08 00 00 00 00 00:1d.0 USB Controller [0c03]: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 [8086:1c26] (rev 05) (prog-if 20 [EHCI]) Subsystem: ASRock Incorporation Device [1849:1c26] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- TAbort- SERR- Kernel modules: iTCO_wdt 00: 86 80 4a 1c 07 00 10 02 05 00 01 06 00 00 80 00 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 49 18 4a 1c 30: 00 00 00 00 e0 00 00 00 00 00 00 00 00 00 00 00 40: 01 04 00 00 80 00 00 00 01 05 00 00 10 00 00 00 50: f8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 8b 83 83 83 d0 00 00 00 80 80 8a 83 f8 f0 00 00 70: 78 f0 79 f0 7a f0 7b f0 7c f0 7d f0 7e f0 7f f0 80: 10 00 0d 3f 91 02 0c 00 41 02 0c 00 51 02 0c 00 90: 00 00 00 00 00 0f 00 00 00 00 00 00 00 00 00 00 a0: 08 0a a0 00 49 18 06 00 00 47 00 00 00 03 00 80 b0: 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 33 22 11 00 67 45 00 00 c0 ff 00 00 00 00 00 00 e0: 09 00 0c 10 00 00 00 00 93 02 64 0c 00 00 00 00 f0: 01 c0 d1 fe 00 00 00 00 87 0f 05 08 00 00 00 00 00:1f.2 IDE interface [0101]: Intel Corporation 6 Series/C200 Series Chipset Family 4 port SATA IDE Controller [8086:1c00] (rev 05) (prog-if 8a [Master SecP PriP]) Subsystem: ASRock Incorporation Device [1849:1c00] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [c0] Subsystem: ASRock Incorporation Device [1849:1080] 00: 21 1b 80 10 07 00 10 00 01 01 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 03 04 04 20 f1 01 20 20 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 c0 00 00 00 00 00 00 00 03 01 10 00 40: 60 70 00 00 00 07 00 00 00 00 00 00 a7 27 00 00 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 0d 00 00 00 49 18 80 10 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06) Subsystem: ASRock Incorporation Motherboard (one of many) [1849:8168] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- References: <1330805475-19732-1-git-send-email-stefan.tauner@student.tuwien.ac.at> <1330805475-19732-2-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <4F529BF7.3000604@gmx.net> Am 03.03.2012 21:11 schrieb Stefan Tauner: > Previously boards in the wiki were tagged either as working or as known > bad. But we added support to various boards via board enables that were > then never tested because the owners have not reported back. This can > now be tagged with NT and is shown appropriately. > > Also, the underlying data structure indicating state was converted from > macros to an enum while preserving original integer values. > > Because all lines specifying supported boards and laptops were touched > anyway, this patch also re-indents them. > > --- > TODO: change other occurrences to use it. wanted to get feedack first. > > Signed-off-by: Stefan Tauner > > diff --git a/print_wiki.c b/print_wiki.c > index 377154d..9a9cd83 100644 > --- a/print_wiki.c > +++ b/print_wiki.c > @@ -136,9 +136,9 @@ static void wiki_helper(const char *devicetype, int cols, > const struct board_match *b = board_matches; > > for (i = 0; boards[i].vendor != NULL; i++) { > - if (boards[i].working) > + if (boards[i].working == OK) > boardcount_good++; > - else > + if (boards[i].working == BAD) > boardcount_bad++; You could replace that construct with a switch(), and it might make sense to count untested boards as well. > } > > @@ -171,7 +171,8 @@ static void wiki_helper(const char *devicetype, int cols, > b[k].lb_vendor ? b[k].lb_vendor : "", > b[k].lb_vendor ? ":" : "", > b[k].lb_vendor ? b[k].lb_part : "", > - (boards[i].working) ? "OK" : "No"); > + (boards[i].working == OK) ? "OK" : > + (boards[i].working == NT) ? "?3" : "No"); The ?3 looks odd, but I assume you tested it. > > if (boards[i].note) { > printf("%d\n", num_notes + 1); > diff --git a/print.c b/print.c > index 1fdeac7..544a846 100644 > --- a/print.c > +++ b/print.c > @@ -545,428 +545,427 @@ void print_supported(void) > [...] > - B("ZOTAC", "Fusion-ITX WiFi (FUSION350-A-E)", 1, NULL, NULL), > - B("ZOTAC", "GeForce 8200", 1, "http://pden.zotac.com/index.php?page=shop.product_details&product_id=129&category_id=92", NULL), > - B("ZOTAC", "H67-ITX WiFi (H67ITX-C-E)", 0, NULL, "Probing works (Winbond W25Q32, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), > - B("ZOTAC", "ZBOX HD-ID11", 1, "http://pdde.zotac.com/index.php?page=shop.product_details&product_id=240&category_id=75", NULL), > + B("A-Trend", "ATC-6220", OK, "http://www.motherboard.cz/mb/atrend/atc6220.htm", NULL), > + B("abit", "A-S78H", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=A-S78H&fMTYPE=Socket+AM2", NULL), > + B("abit", "AN-M2", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20AM2&pMODEL_NAME=AN-M2", NULL), > + B("abit", "AV8", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20939&pMODEL_NAME=AV8", NULL), Is it possible that this patch made the board table one or two tabs wider? The patch looks like that, and while I agree that some files/sections should not have line length limits, adding another 16 columns of whitespace is something I'd like to avoid. print_wiki related code is something I rarely touch (except for programmer additions), so please don't expect in-depth reviews from me. A cursory review suggests that the patch at least doesn't make the code worse and I don't have any strong feelings about this code. If you feel this patch is beneficial, I can send a weak Acked-by, more like Meh-by. Regards, Carl-Daniel -- http://www.hailfinger.org/ From svetoslav.trochev at gmail.com Sun Mar 4 01:05:11 2012 From: svetoslav.trochev at gmail.com (Svetoslav Trochev) Date: Sat, 3 Mar 2012 16:05:11 -0800 Subject: [flashrom] Zotac ZBOX-AD02-PLUS-U: System Testing Message-ID: Hi Everyone, I just tested (read-only) one more system: Zotac ZBOX-AD02-PLUS-U. I am attaching the output files. I have question. Should I be concern very much about "This chip may contain one-time programmable memory. flashrom cannot read and may never be able to write it, hence it may not be able to completely clone the contents of this chip (see man page for details)."? I suspect this is about the UEFI secure boot option where the keys are( or would) be stored. Is this correct? Thank you, Svetoslav Trochev -------------- next part -------------- flashrom v0.9.5.1-runknown on Linux 3.2.0-17-generic (x86_64), built with libpci 3.1.8, GCC 4.6.3, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 532M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 998 us, 10000 myus = 10029 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: " " DMI string system-product-name: " " DMI string system-version: " " DMI string baseboard-manufacturer: "ZOTAC" DMI string baseboard-product-name: "AMD HUDSON-M1" DMI string baseboard-version: " " DMI string chassis-type: "Desktop" Found ITE Super I/O, ID 0x8721 on port 0x2e Found chipset "AMD SB7x0/SB8x0/SB9x0" with PCI ID 1002:439d. Enabling flash write... SPI base address is at 0xfec10000 AltSpiCSEnable=0, SpiRomEnable=1, AbortEnable=0 PrefetchEnSPIFromIMC=0, PrefetchEnSPIFromHost=1, SpiOpEnInLpcMode=1 SpiArbEnable=0, SpiAccessMacRomEn=1, SpiHostAccessRomEn=1, ArbWaitCount=4, SpiBridgeDisable=1, DropOneClkOnRd=0 NormSpeed is 16.5 MHz GPIO11 used for SPI_DO GPIO12 used for SPI_DI GPIO31 used for SPI_HOLD GPIO32 used for SPI_CS GPIO47 used for SPI_CLK SB700 IMC is not active. ROM strap override is not active OK. Super I/O ID 0x8721 is not on the list of flash capable controllers. The following protocols are supported: LPC, FWH, SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for SST SST25LF040A, 512 kB: probe_spi_res2: id1 0x15, id2 0x15 Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0x15, id2 0x15 Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xef, id2 0x15 Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xef, id2 0x15 Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xef, id2 0x15 Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Chip status register is 00 Found Winbond flash chip "W25Q32" (4096 kB, SPI) at physical address 0xffc00000. Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Unknown SFDP-capable chip, 0 kB: No SFDP signature found. Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016 Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xef, id2 0x15 Probing for AMIC A49LF040A, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0xe8, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0xe8, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0xe8, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF020, 256 kB: probe_jedec_common: id1 0xe8, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF020A, 256 kB: probe_jedec_common: id1 0xe8, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF040, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF040B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF080A, 1024 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF160C, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0xe8, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50LPW116, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040A, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040C, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080A, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002A, 256 kB: probe_jedec_common: id1 0xe8, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0xe8, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Found Winbond flash chip "W25Q32" (4096 kB, SPI). This chip may contain one-time programmable memory. flashrom cannot read and may never be able to write it, hence it may not be able to completely clone the contents of this chip (see man page for details). No operations were specified. -------------- next part -------------- 00:00.0 Host bridge [0600]: Advanced Micro Devices [AMD] Family 14h Processor Root Complex [1022:1510] Subsystem: Advanced Micro Devices [AMD] Family 14h Processor Root Complex [1022:1510] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- SERR- TAbort- SERR- [disabled] Capabilities: [50] Power Management version 3 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] Express (v2) Root Complex Integrated Endpoint, MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited ExtTag+ RBE+ FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 128 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed unknown, Width x0, ASPM unknown, Latency L0 <64ns, L1 <1us ClockPM- Surprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed unknown, Width x0, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Not Supported, TimeoutDis- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -6dB Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+ Address: 00000000fee0100c Data: 4179 Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 Kernel driver in use: radeon Kernel modules: radeon 00: 02 10 02 98 07 04 10 00 00 00 00 03 10 00 80 00 10: 08 00 00 b0 01 f0 00 00 00 00 b0 fe 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 da 19 83 a1 30: 00 00 00 00 50 00 00 00 00 00 00 00 0b 01 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 da 19 83 a1 50: 01 58 03 06 00 00 00 00 10 a0 92 00 a0 8f 00 00 60: 10 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 05 00 81 00 0c 10 e0 fe 00 00 00 00 79 41 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:01.1 Audio device [0403]: Advanced Micro Devices [AMD] nee ATI Wrestler HDMI Audio [Radeon HD 6250/6310] [1002:1314] Subsystem: ZOTAC International (MCO) Ltd. Device [19da:a183] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- Kernel driver in use: snd_hda_intel Kernel modules: snd-hda-intel 00: 02 10 14 13 07 04 10 00 00 00 03 04 10 00 80 00 10: 00 40 b4 fe 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 da 19 83 a1 30: 00 00 00 00 50 00 00 00 00 00 00 00 0a 02 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 da 19 83 a1 50: 01 58 03 06 00 00 00 00 10 a0 92 00 a0 8f 00 00 60: 10 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 05 00 81 00 0c 20 e0 fe 00 00 00 00 81 41 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:04.0 PCI bridge [0604]: Advanced Micro Devices [AMD] Family 14h Processor Root Port [1022:1512] (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [50] Power Management version 3 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] Express (v2) Root Port (Slot+), MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag+ RBE+ FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 128 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #1, Speed 2.5GT/s, Width x4, ASPM L0s L1, Latency L0 <64ns, L1 <1us ClockPM- Surprise- LLActRep+ BwNot+ LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise- Slot #4, PowerLimit 75.000W; Interlock- NoCompl+ SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock- Changed: MRL- PresDet+ LinkState+ RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ ARIFwd- DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis- ARIFwd- LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis+, Selectable De-emphasis: -6dB Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -6dB Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [b0] Subsystem: Advanced Micro Devices [AMD] Device [1022:1234] Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+ Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 Kernel driver in use: pcieport Kernel modules: shpchp 00: 22 10 12 15 07 00 10 00 00 00 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 00 01 01 00 11 11 00 00 20: a0 fe a0 fe 01 7f 11 7f 00 00 00 00 00 00 00 00 30: 00 00 00 00 50 00 00 00 00 00 00 00 07 01 10 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 01 58 03 c8 00 00 00 00 10 a0 42 01 20 80 00 00 60: 00 08 00 00 41 0c 30 01 40 00 11 70 c0 25 24 00 70: 00 00 48 01 00 00 01 00 00 00 00 00 1f 00 00 00 80: 06 00 00 00 00 00 00 00 21 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 05 b0 80 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 0d b8 00 00 22 10 34 12 08 00 03 a8 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: b2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:11.0 SATA controller [0106]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] [1002:4390] (rev 40) (prog-if 01 [AHCI 1.0]) Subsystem: ZOTAC International (MCO) Ltd. Device [19da:a183] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- 00: 02 10 84 43 27 00 a0 02 40 01 04 06 00 40 81 00 10: 00 00 00 00 00 00 00 00 00 02 02 40 f0 00 80 22 20: f0 ff 00 00 f0 ff 00 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 40: 26 00 3c ff 00 00 00 00 0c 0f 3d d1 00 01 00 00 50: 01 00 00 00 08 00 03 a8 00 00 00 00 85 00 ff ff 60: ca 0e 17 00 ba 98 10 02 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 06 e0: 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:14.5 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI2 Controller [1002:4399] (prog-if 10 [OHCI]) Subsystem: ZOTAC International (MCO) Ltd. Device [19da:a183] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [50] Power Management version 3 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] Express (v2) Root Port (Slot+), MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag+ RBE+ FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 128 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Latency L0 <64ns, L1 <1us ClockPM- Surprise- LLActRep+ BwNot+ LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise- Slot #0, PowerLimit 0.000W; Interlock- NoCompl+ SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock- Changed: MRL- PresDet+ LinkState+ RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ ARIFwd- DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis- ARIFwd- LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -3.5dB Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [b0] Subsystem: Advanced Micro Devices [AMD] nee ATI Device [1002:0000] Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+ Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 Kernel driver in use: pcieport Kernel modules: shpchp 00: 02 10 a0 43 07 00 10 00 00 00 04 06 10 00 81 00 10: 00 00 00 00 00 00 00 00 00 03 05 00 e1 e1 00 00 20: 00 fe 90 fe 01 c0 f1 cf 00 00 00 00 00 00 00 00 30: 00 00 00 00 50 00 00 00 00 00 00 00 ff 01 10 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 01 58 03 06 00 00 00 00 10 a0 42 01 20 80 00 00 60: 00 08 00 00 12 0c 30 00 40 00 11 70 40 00 04 00 70: 00 00 48 01 00 00 01 00 00 00 00 00 1f 00 00 00 80: 06 00 00 00 00 00 00 00 02 00 01 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 05 b0 80 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 0d b8 00 00 02 10 00 00 08 00 03 a8 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:15.3 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI SB900 PCI to PCI bridge (PCIE port 3) [1002:43a3] (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [50] Power Management version 3 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] Express (v2) Root Port (Slot-), MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag+ RBE+ FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 128 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #3, Speed 5GT/s, Width x1, ASPM L0s L1, Latency L0 <64ns, L1 <1us ClockPM- Surprise- LLActRep+ BwNot+ LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ ARIFwd- DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis- ARIFwd- LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -3.5dB Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -3.5dB Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [b0] Subsystem: Advanced Micro Devices [AMD] nee ATI Device [1002:0000] Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+ Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 Kernel driver in use: pcieport Kernel modules: shpchp 00: 02 10 a3 43 07 00 10 00 00 00 04 06 10 00 81 00 10: 00 00 00 00 00 00 00 00 00 06 06 00 d1 d1 00 00 20: f0 ff 00 00 01 d0 01 d0 00 00 00 00 00 00 00 00 30: 00 00 00 00 50 00 00 00 00 00 00 00 ff 01 10 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 01 58 03 06 00 00 00 00 10 a0 42 00 20 80 00 00 60: 00 08 00 00 12 0c 30 03 40 00 11 70 00 00 04 00 70: 00 00 40 01 00 00 01 00 00 00 00 00 1f 00 00 00 80: 06 00 00 00 00 00 00 00 42 00 01 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 05 b0 80 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 0d b8 00 00 02 10 00 00 08 00 03 a8 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:16.0 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller [1002:4397] (prog-if 10 [OHCI]) Subsystem: ZOTAC International (MCO) Ltd. Device [19da:a183] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- Kernel driver in use: k10temp Kernel modules: k10temp 00: 22 10 03 17 00 00 10 00 00 00 00 06 00 00 80 00 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 f0 00 00 00 00 00 00 00 00 00 00 00 40: 20 3b 03 02 40 00 30 0a 00 00 00 00 00 00 00 00 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 00 00 00 00 01 00 60 26 00 00 00 20 1e 01 00 00 70: 00 00 00 00 97 08 00 00 00 00 00 00 01 01 01 19 80: 00 00 00 00 06 00 06 00 00 02 00 00 00 40 00 04 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 94 02 0a 80 ef 0f 60 3e 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 50 4f 02 00 c0 07 00 00 2a f2 8a 99 e0: 00 00 00 00 20 00 00 00 61 17 00 10 00 00 00 00 f0: 0f 00 10 00 00 00 00 00 00 00 00 00 10 0f 50 00 00:18.4 Host bridge [0600]: Advanced Micro Devices [AMD] Family 12h/14h Processor Function 4 [1022:1704] Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- Hi guys, has past a lot of time since my last inquiry! Recently has appeared a ultra-cheap board named Raspberry Pi (perhaps you know http://www.raspberrypi.org/ ). This board has a powerful broadcom SoC that comes with USB, UART, I2C, SPI, GPIO ports... all for 25/35$, awsome. It could be a really versatile and powerful external/independent programmer for flashrom! Just take a look here: http://elinux.org/RPi_Low-level_peripherals The SPI bus could be used to program SPI flash chips (obviously) and GPIO for the other types. I propose two ideas, first one, support the board by flashrom software, second one, develop a daughter-board for the Raspberry-Pi to make a easy use of all (with sockets to program IC's or some buffers if necessary for other ones). That's all, greetings! -------------- next part -------------- An HTML attachment was scrubbed... URL: From cemede at gmail.com Sun Mar 4 14:28:34 2012 From: cemede at gmail.com (cmd_) Date: Sun, 4 Mar 2012 14:28:34 +0100 Subject: [flashrom] Raspberry Pi support as a programmer In-Reply-To: References: Message-ID: Just I missed some links in my mast mail with great info: http://elinux.org/Rpi_Datasheet_751_GPIO_Registers http://elinux.org/Rpi_Hardware http://dmkenr5gtnd8f.cloudfront.net/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf http://elinux.org/BCM2835_datasheet_errata 2012/3/4 cmd_ > Hi guys, has past a lot of time since my last inquiry! > > Recently has appeared a ultra-cheap board named Raspberry Pi (perhaps you > know http://www.raspberrypi.org/ ). This board has a powerful broadcom > SoC that comes with USB, UART, I2C, SPI, GPIO ports... all for 25/35$, > awsome. It could be a really versatile and powerful external/independent > programmer for flashrom! > > Just take a look here: http://elinux.org/RPi_Low-level_peripherals > > The SPI bus could be used to program SPI flash chips (obviously) and GPIO > for the other types. > I propose two ideas, first one, support the board by flashrom software, > second one, develop a daughter-board for the Raspberry-Pi to make a easy > use of all (with sockets to program IC's or some buffers if necessary for > other ones). > > That's all, greetings! > -------------- next part -------------- An HTML attachment was scrubbed... URL: From c-d.hailfinger.devel.2006 at gmx.net Sun Mar 4 15:01:19 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sun, 04 Mar 2012 15:01:19 +0100 Subject: [flashrom] Raspberry Pi support as a programmer In-Reply-To: References: Message-ID: <4F5375AF.80504@gmx.net> Hi cemede, Am 04.03.2012 14:20 schrieb cmd_: > Recently has appeared a ultra-cheap board named Raspberry Pi (perhaps you > know http://www.raspberrypi.org/ ). This board has a powerful broadcom SoC > that comes with USB, UART, I2C, SPI, GPIO ports... all for 25/35$, awsome. > It could be a really versatile and powerful external/independent programmer > for flashrom! > > Just take a look here: http://elinux.org/RPi_Low-level_peripherals > > The SPI bus could be used to program SPI flash chips (obviously) and GPIO > for the other types. > I propose two ideas, first one, support the board by flashrom software, I already wrote a flashrom driver for the Raspberry Pi, I only need someone with hardware to test it. > second one, develop a daughter-board for the Raspberry-Pi to make a easy > use of all (with sockets to program IC's or some buffers if necessary for > other ones). I hope the Gertboard will accomplish some of that functionality. Designing our own PCB would be possible, sure, but my first focus is on getting the driver tested. Regards, Carl-Daniel -- http://www.hailfinger.org/ From stefan.tauner at student.tuwien.ac.at Sun Mar 4 20:59:15 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 4 Mar 2012 20:59:15 +0100 Subject: [flashrom] Ubuntu daily builds PPA Message-ID: <201203041959.q24JxFwO022706@mail2.student.tuwien.ac.at> Hi, i have setup a flashrom poject at http://launchpad.net/flashrom which auto-imports the svn every 6 hours and a package archive at http://launchpad.net/~flashrom-developers/+archive/flashrom-daily where new binaries are generated once a day whenever the svn has changed. currently there is a bug in launchpad itself that makes it impossible to use version 0.4 recipes (recipes are used to configure the autobuilders). this is the reason the package names are a bit awkward (e.g. 0.9.5.1+r1508-1-20120303 for svn r1512). it is basically named by {debversion}-{date}. it is the best i could come up with, that indicates the included source in at least some way (date), will upgrade to newer ubuntu versions when they become available and actually build in current launchpad. another problem is that the autobuilt binaries will output this: flashrom v0.9.5.1-runknown on Linux 2.6.35-32-generic (x86_64), built with libpci 3.1.7, GCC 4.4.5, little endian i.e. no svn revision. the only way to work around this would be a second svn tree with an already (auto-)exported version of flashrom... if we could manage to set that up, we could probably build our own package too without launchpad :) maybe it is useful anyway for someone... -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Sun Mar 4 22:41:17 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sun, 04 Mar 2012 22:41:17 +0100 Subject: [flashrom] Ubuntu daily builds PPA In-Reply-To: <201203041959.q24JxFwO022706@mail2.student.tuwien.ac.at> References: <201203041959.q24JxFwO022706@mail2.student.tuwien.ac.at> Message-ID: <4F53E17D.3000405@gmx.net> Hi Stefan, Am 04.03.2012 20:59 schrieb Stefan Tauner: > i have setup a flashrom poject at http://launchpad.net/flashrom which > auto-imports the svn every 6 hours and a package archive at > http://launchpad.net/~flashrom-developers/+archive/flashrom-daily > where new binaries are generated once a day whenever the svn has > changed. Thanks, that's very useful. > currently there is a bug in launchpad itself that makes it impossible > to use version 0.4 recipes (recipes are used to configure the > autobuilders). this is the reason the package names are a bit awkward > (e.g. 0.9.5.1+r1508-1-20120303 for svn r1512). it is basically named by > {debversion}-{date}. it is the best i could come up with, that indicates > the included source in at least some way (date), will upgrade to newer > ubuntu versions when they become available and actually build in > current launchpad. > > another problem is that the autobuilt binaries will output this: > flashrom v0.9.5.1-runknown on Linux 2.6.35-32-generic (x86_64), built > with libpci 3.1.7, GCC 4.4.5, little endian > i.e. no svn revision. the only way to work around this would be a > second svn tree with an already (auto-)exported version of flashrom... > if we could manage to set that up, we could probably build our own > package too without launchpad :) The chromium branch of flashrom has a script which can extract the svn version from git, in case that would help here. I think David even submitted it. Regards, Carl-Daniel -- http://www.hailfinger.org/ From svetoslav.trochev at gmail.com Sun Mar 4 23:05:20 2012 From: svetoslav.trochev at gmail.com (Svetoslav Trochev) Date: Sun, 4 Mar 2012 14:05:20 -0800 Subject: [flashrom] Ubuntu daily builds PPA In-Reply-To: <201203041959.q24JxFwO022706@mail2.student.tuwien.ac.at> References: <201203041959.q24JxFwO022706@mail2.student.tuwien.ac.at> Message-ID: Hi, Thank you Stefan. On Sun, Mar 4, 2012 at 11:59 AM, Stefan Tauner wrote: > Hi, > > i have setup a flashrom poject at http://launchpad.net/flashrom which > auto-imports the svn every 6 hours and a package archive at > http://launchpad.net/~flashrom-developers/+archive/flashrom-daily > where new binaries are generated once a day whenever the svn has > changed. I found about daily PPA about couple days ago here: http://flashrom.org/Downloads. And used it to collect data from several boards. Is there plan to update the wiki page with info about the new PPA? > > currently there is a bug in launchpad itself that makes it impossible > to use version 0.4 recipes (recipes are used to configure the > autobuilders). this is the reason the package names are a bit awkward > (e.g. 0.9.5.1+r1508-1-20120303 for svn r1512). it is basically named by > {debversion}-{date}. it is the best i could come up with, that indicates > the included source in at least some way (date), will upgrade to newer > ubuntu versions when they become available and actually build in > current launchpad. > > another problem is that the autobuilt binaries will output this: > flashrom v0.9.5.1-runknown on Linux 2.6.35-32-generic (x86_64), built > with libpci 3.1.7, GCC 4.4.5, little endian > i.e. no svn revision. the only way to work around this would be a > second svn tree with an already (auto-)exported version of flashrom... > if we could manage to set that up, we could probably build our own > package too without launchpad :) > > maybe it is useful anyway for someone... > > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner > > _______________________________________________ > flashrom mailing list > flashrom at flashrom.org > http://www.flashrom.org/mailman/listinfo/flashrom From stefan.tauner at student.tuwien.ac.at Sun Mar 4 23:21:25 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 4 Mar 2012 23:21:25 +0100 Subject: [flashrom] Ubuntu daily builds PPA In-Reply-To: <4F53E17D.3000405@gmx.net> References: <201203041959.q24JxFwO022706@mail2.student.tuwien.ac.at> <4F53E17D.3000405@gmx.net> Message-ID: <201203042221.q24MLPRx012064@mail2.student.tuwien.ac.at> On Sun, 04 Mar 2012 22:41:17 +0100 Carl-Daniel Hailfinger wrote: > Am 04.03.2012 20:59 schrieb Stefan Tauner: > > another problem is that the autobuilt binaries will output this: > > flashrom v0.9.5.1-runknown on Linux 2.6.35-32-generic (x86_64), built > > with libpci 3.1.7, GCC 4.4.5, little endian > > i.e. no svn revision. the only way to work around this would be a > > second svn tree with an already (auto-)exported version of flashrom... > > if we could manage to set that up, we could probably build our own > > package too without launchpad :) > > The chromium branch of flashrom has a script which can extract the svn > version from git, in case that would help here. I think David even > submitted it. well the problem is not git-related (although similar to that, because the repo launchpad syncs our svn into is not svn (but bazaar)). i can not run arbitrary commands in the recipes (possible in general, but not on launchpad due to security concerns afaik). currently i am extracting the debian directory from the ubuntu package to create the debian directory in the autobuilt ubuntu packages... maybe one could hack something into a custom made debian directory.. a quilt patch or so that extracts the svn revision. i know that the svn revision is not completely lost in bazaar because 0.4 recipes can use them for package names... OTOH i think it is good enough for now as it is. if someone wants to play around with launchpad just apply for a "flashrom-developers" membership... -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sun Mar 4 23:23:28 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 4 Mar 2012 23:23:28 +0100 Subject: [flashrom] Ubuntu daily builds PPA In-Reply-To: References: <201203041959.q24JxFwO022706@mail2.student.tuwien.ac.at> Message-ID: <201203042223.q24MNSKj014271@mail2.student.tuwien.ac.at> On Sun, 4 Mar 2012 14:05:20 -0800 Svetoslav Trochev wrote: > > i have setup a flashrom poject at http://launchpad.net/flashrom which > > auto-imports the svn every 6 hours and a package archive at > > http://launchpad.net/~flashrom-developers/+archive/flashrom-daily > > where new binaries are generated once a day whenever the svn has > > changed. > I found about daily PPA about couple days ago here: > http://flashrom.org/Downloads. And used it to collect data from > several boards. Is there plan to update the wiki page with info about > the new PPA? jup, i have updated the wiki page before sending the "announce" mail. what information do you think is missing/should be added? -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sun Mar 4 23:35:47 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 4 Mar 2012 23:35:47 +0100 Subject: [flashrom] ASRock H67M: Board Testing In-Reply-To: References: Message-ID: <201203042235.q24MZlmR024774@mail2.student.tuwien.ac.at> On Sat, 3 Mar 2012 14:14:22 -0800 Svetoslav Trochev wrote: > Hi Everyone, > > I just run test on ASRock H67M mainboard. I am attaching the output > files from "flashrom -V" and "lspci -nnvvxxx". After a quick search I > could not find how to run "superiotool -deV" on Ubuntu, but once I > figure it out I will attach the output as well. I hope the current > info is useful for now. > the flashrom -V output alone was enough in this case already, thanks. i have added the board to our list and will commit that later. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sun Mar 4 23:49:00 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 4 Mar 2012 23:49:00 +0100 Subject: [flashrom] Zotac ZBOX-AD02-PLUS-U: System Testing In-Reply-To: References: Message-ID: <201203042249.q24Mn0wZ000491@mail2.student.tuwien.ac.at> On Sat, 3 Mar 2012 16:05:11 -0800 Svetoslav Trochev wrote: > Hi Everyone, > > I just tested (read-only) one more system: Zotac ZBOX-AD02-PLUS-U. I > am attaching the output files. Hello, and thanks for your mail. read tests are only useful in some cases (e.g. untested chips), for testing full board support we need a erase/write cycle. that does not mean that you should now erase your chip immediately, but the log as such does not help. if you ever try to update the firmware on that board on the other hand please send us a note. > I have question. Should I be concern very much about "This chip may > contain one-time programmable memory. flashrom cannot read and may > never be able to write it, hence it may not be able to completely > clone the contents of this chip (see man page for details)."? > > I suspect this is about the UEFI secure boot option where the keys > are( or would) be stored. Is this correct? we can neither confirm nor deny this presumption. seriously... no that has nothing to do with secure boot afaik. these chips are used in many other devices not just PCs. the OTP area is usually just a few dozen bytes large, which might be enough for a few key hashes or so, but i doubt anyone would use them for this. it is just a feature to store a few bytes forever* and is probably only used in a few embedded devices. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From svetoslav.trochev at gmail.com Mon Mar 5 00:00:08 2012 From: svetoslav.trochev at gmail.com (Svetoslav Trochev) Date: Sun, 4 Mar 2012 15:00:08 -0800 Subject: [flashrom] Ubuntu daily builds PPA In-Reply-To: <201203042223.q24MNSKj014271@mail2.student.tuwien.ac.at> References: <201203041959.q24JxFwO022706@mail2.student.tuwien.ac.at> <201203042223.q24MNSKj014271@mail2.student.tuwien.ac.at> Message-ID: On Sun, Mar 4, 2012 at 2:23 PM, Stefan Tauner wrote: > On Sun, 4 Mar 2012 14:05:20 -0800 > Svetoslav Trochev wrote: > >> > i have setup a flashrom poject at http://launchpad.net/flashrom which >> > auto-imports the svn every 6 hours and a package archive at >> > http://launchpad.net/~flashrom-developers/+archive/flashrom-daily >> > where new binaries are generated once a day whenever the svn has >> > changed. >> I found about daily PPA about couple days ago here: >> http://flashrom.org/Downloads. And used it to collect data from >> several boards. Is there plan to update the wiki page with info about >> the new PPA? > > jup, i have updated the wiki page before sending the "announce" mail. > what information do you think is missing/should be added? > > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner Ok. I was a bit confused as new person to the project. There are 4 links: (package overview) [1], (questions) [2], (bugreports) [3] Let say, I am using Ubuntu 10.04LTS and I want to download and install latest well tested (stable) version of flashrom. I tried the first link and there only can see version: 0.9.1+r946-1ubuntu1. Next two links didn't help at all. Finally I found the 0.9.5.1+r1508-1-20120303~lucid1 version in daily build PPA [4]. I don't know how the releases are handled, but my experience is that most of the daily PPAs brake without any notice. This made me quite uncomfortable to flash M/B using daily build version. I am sure that I sound quite stupid right now, but I hope that we can provide a bit more clear picture how the binaries for Ubuntu are maintained and what version should be used. I hope that this small improvement will lower the barrier for entrance of new people and help flashrom project as whole. [1] http://launchpad.net/ubuntu/+source/flashrom [2] http://answers.launchpad.net/ubuntu/+source/flashrom/+questions?field.status=OPEN [3] http://bugs.launchpad.net/ubuntu/+source/flashrom/+bugs?field.status:list=NEW [4] http://code.launchpad.net/~flashrom-developers/+archive/flashrom-daily From svetoslav.trochev at gmail.com Mon Mar 5 00:09:00 2012 From: svetoslav.trochev at gmail.com (Svetoslav Trochev) Date: Sun, 4 Mar 2012 15:09:00 -0800 Subject: [flashrom] Zotac ZBOX-AD02-PLUS-U: System Testing In-Reply-To: <201203042249.q24Mn0wZ000491@mail2.student.tuwien.ac.at> References: <201203042249.q24Mn0wZ000491@mail2.student.tuwien.ac.at> Message-ID: [cut] > and thanks for your mail. read tests are only useful in some cases (e.g. > untested chips), for testing full board support we need a erase/write > cycle. that does not mean that you should now erase your chip > immediately, but the log as such does not help. if you ever try to > update the firmware on that board on the other hand please send us a > note. > Yes, I know. The reason I run -V to collect data and to order EEPROM chips for testing. As soon I get the chips, I will test all modes and report back. I just wanted to notify everyone that work on this devices started. [cut] >> I suspect this is about the UEFI secure boot option where the keys >> are( or would) be stored. Is this correct? > > we can neither confirm nor deny this presumption. seriously... no that > has nothing to do with secure boot afaik. these chips are used in many > other devices not just PCs. the OTP area is usually just a few dozen > bytes large, which might be enough for a few key hashes or so, but i > doubt anyone would use them for this. it is just a feature to store a > few bytes forever* and is probably only used in a few embedded devices. I see, thank you for the explanation. > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Mon Mar 5 00:52:33 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 5 Mar 2012 00:52:33 +0100 Subject: [flashrom] Ubuntu daily builds PPA In-Reply-To: References: <201203041959.q24JxFwO022706@mail2.student.tuwien.ac.at> <201203042223.q24MNSKj014271@mail2.student.tuwien.ac.at> Message-ID: <201203042352.q24NqY1m012548@mail2.student.tuwien.ac.at> On Sun, 4 Mar 2012 15:00:08 -0800 Svetoslav Trochev wrote: > On Sun, Mar 4, 2012 at 2:23 PM, Stefan Tauner > wrote: > > On Sun, 4 Mar 2012 14:05:20 -0800 > > Svetoslav Trochev wrote: > > > >> > i have setup a flashrom poject at http://launchpad.net/flashrom which > >> > auto-imports the svn every 6 hours and a package archive at > >> > http://launchpad.net/~flashrom-developers/+archive/flashrom-daily > >> > where new binaries are generated once a day whenever the svn has > >> > changed. > >> I found about daily PPA about couple days ago here: > >> http://flashrom.org/Downloads. And used it to collect data from > >> several boards. Is there plan to update the wiki page with info about > >> the new PPA? > > > > jup, i have updated the wiki page before sending the "announce" mail. > > what information do you think is missing/should be added? > > > > -- > > Kind regards/Mit freundlichen Gr??en, Stefan Tauner > > Ok. I was a bit confused as new person to the project. > There are 4 links: (package overview) [1], (questions) [2], (bugreports) [3] > Let say, I am using Ubuntu 10.04LTS and I want to download and install > latest well tested (stable) version of flashrom. I tried the first > link and there only can see version: 0.9.1+r946-1ubuntu1. > Next two links didn't help at all. Finally I found the > 0.9.5.1+r1508-1-20120303~lucid1 version in daily build PPA [4]. I > don't know how the releases are handled, but my experience is that > most of the daily PPAs brake without any notice. This made me quite > uncomfortable to flash M/B using daily build version. I am sure that I > sound quite stupid right now, but I hope that we can provide a bit > more clear picture how the binaries for Ubuntu are maintained and what > version should be used. I hope that this small improvement will lower > the barrier for entrance of new people and help flashrom project as > whole. > > [1] http://launchpad.net/ubuntu/+source/flashrom > [2] http://answers.launchpad.net/ubuntu/+source/flashrom/+questions?field.status=OPEN > [3] http://bugs.launchpad.net/ubuntu/+source/flashrom/+bugs?field.status:list=NEW > [4] http://code.launchpad.net/~flashrom-developers/+archive/flashrom-daily thanks for the verbose explanation! i have removed the answers and bugs links (nice idea of whoever added them, but i don't think they are useful. ubuntu users should be able to follow the links on the package overview page to that sections) and i have added more detail to the PPA description and the safety of the binaries. lowering the barrier for new and unexperienced ubuntu users might not necessarily help flashrom on the whole nor those users ;) if they are unsure they should ask us first. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From svetoslav.trochev at gmail.com Mon Mar 5 17:53:02 2012 From: svetoslav.trochev at gmail.com (Svetoslav Trochev) Date: Mon, 5 Mar 2012 08:53:02 -0800 Subject: [flashrom] Ubuntu daily builds PPA In-Reply-To: <201203042352.q24NqY1m012548@mail2.student.tuwien.ac.at> References: <201203041959.q24JxFwO022706@mail2.student.tuwien.ac.at> <201203042223.q24MNSKj014271@mail2.student.tuwien.ac.at> <201203042352.q24NqY1m012548@mail2.student.tuwien.ac.at> Message-ID: [cut] > thanks for the verbose explanation! > i have removed the answers and bugs links (nice idea of whoever added > them, but i don't think they are useful. ubuntu users should be able to > follow the links on the package overview page to that sections) and > i have added more detail to the PPA description and the safety of the > binaries. Thank you. It is much clear now. > lowering the barrier for new and unexperienced ubuntu users might not > necessarily help flashrom on the whole nor those users ;) if they are > unsure they should ask us first. Ah... It took me a second to sink in, but I see your point. :) I know that Ubuntu is rocking the boat too much lately, but I had chance to meat Mr. Shuttleworth once and I believe that his hearth and head are in the right place. He likes FOSS and is putting his money behind it. That is the only reason I like Ubuntu. :) But I agree 100% with you. My advice would be: If you never killed(a.k.a bricked) a mainboard or laptop while you flashing the system ROM, ASK FIRST. It saves you a lot of pain and money. Thanks again, Svetoslav. > > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Tue Mar 6 00:41:40 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 6 Mar 2012 00:41:40 +0100 Subject: [flashrom] [PATCH] Prevent submission of empty read requests in linux_spi In-Reply-To: <1330788527-2114-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> References: <1330788527-2114-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> Message-ID: <201203052341.q25NfenF029771@mail2.student.tuwien.ac.at> On Sat, 3 Mar 2012 16:28:47 +0100 Michael Karcher wrote: > The submission of zero-sized read requests in a write-only transaction > fails at least for omap2_mcspi drivers and is pointless in general. > > Even with this patch, zero-sized write requests might be submitted for > read-only transactions, but for most SPI chips, there always is a command > transferred (written) before reading data, so there is no such thing as > a pure-read transaction. maybe we should nevertheless guard against that with an if (readcnt != 0 && writecnt == 0) return SPI_INVALID_LENGTH; or so? > > Signed-off-by: Michael Karcher > --- > linux_spi.c | 10 +++++++++- > 1 files changed, 9 insertions(+), 1 deletions(-) > > diff --git a/linux_spi.c b/linux_spi.c > index d994389..3d1ca3e 100644 > --- a/linux_spi.c > +++ b/linux_spi.c > @@ -114,6 +114,7 @@ static int linux_spi_send_command(struct flashctx *flash, unsigned int writecnt, > const unsigned char *txbuf, > unsigned char *rxbuf) > { > + unsigned iocontrol_code; hm... afaics ioctl commands are always exactly 32b wide. naive kernel newbie question: why not use uint32_t? if there is a reason against that, please add "int" at least to match the rest of our code base. > struct spi_ioc_transfer msg[2] = { > { > .tx_buf = (uint64_t)(ptrdiff_t)txbuf, > @@ -128,7 +129,14 @@ static int linux_spi_send_command(struct flashctx *flash, unsigned int writecnt, > if (fd == -1) > return -1; > > - if (ioctl(fd, SPI_IOC_MESSAGE(2), msg) == -1) { > + /* Just submit the first (write) request in case there is nothing > + to read. Otherwise submit both requests */ missing full stop, if one likes to nitpick... :) (in the subject too btw). > + if (readcnt == 0) > + iocontrol_code = SPI_IOC_MESSAGE(1); > + else > + iocontrol_code = SPI_IOC_MESSAGE(2); > + > + if (ioctl(fd, iocontrol_code, msg) == -1) { > msg_cerr("%s: ioctl: %s\n", __func__, strerror(errno)); > return -1; > } if (ioctl(fd, SPI_IOC_MESSAGE((readcnt == 0) ? 1 : 2), msg) == -1) would work too i guess (it compiles on my machine at least), but it has disadvantages too. one could get rid of the first problem (correct type of IOC) by assigning 1 or 2 instead of the expanded SPI_IOC_MESSAGE(x) value to the local variable and use the macro in the argument list with the variable as parameter. i have no preference for any of those solutions... the posted one is fine too. regarding correctness i think it is ok too, although i have to admit that my review is probably not as thorough as carldani's would have been. i have looked at most of the macros involved; i have looked at spidev_ioctl and spidev_message and everything makes sense... since it's also tested on hardware i think it is good to go so it is... Acked-by: Stefan Tauner -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Tue Mar 6 16:25:40 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 6 Mar 2012 16:25:40 +0100 Subject: [flashrom] [PATCH] ft2232_spi.c: add frequency divider parameter. In-Reply-To: <4F4C40FD.5020800@gmail.com> References: <4EA3C847.5010501@gmail.com> <1330393681-12334-1-git-send-email-stefan.tauner@student.tuwien.ac.at> <4F4C40FD.5020800@gmail.com> Message-ID: <201203061525.q26FPgQZ020020@mail2.student.tuwien.ac.at> On Tue, 28 Feb 2012 11:50:37 +0900 Samir Ibrad?i? wrote: > > it might be a better idea to let the user specify the actual frequency instead of > > the divisor like some other programmers do (serprog and buspirate). > > Well, it may be more clear to specify exact frequencies, but we may end > up with weird set of frequencies for all these large dividers. > Maybe it would be better to support a limited set of "standard" dividers > and their corresponding frequencies, like: > > divider | freq > --------+-------- > 2 | 30MHz > 4 | 15MHz > 6 | 10MHz > [?] > (and so on) > > But i vote for supporting specific divider after all, one can never know > if there is some obscure device out there in the wild that supports only > 6365372Hz. well we could support both actually... selecting the divider as in our patch, or alternatively the frequency (if it is not possible print the next lower available one)... anyway this can be done later and i'd like to get this into svn now-ish rather than wait for the perfect patch. you do not happen to own a logic analyzer that could confirm that the frequency now is really what we think it is, do you? in any case could you please test the patch i have sent so that we know it does not break the programmer completely? if you like to work on a followup patch please use "spispeed" as the parameter for the frequency because that is the one used in serprog and the buspirate already. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From dark_prof at mail.ru Tue Mar 6 10:41:58 2012 From: dark_prof at mail.ru (=?UTF-8?B?0JDQvdC00YDQtdC5INCi0LjQvNC40YDQsNC10LI=?=) Date: Tue, 06 Mar 2012 13:41:58 +0400 Subject: [flashrom] =?utf-8?q?bug?= Message-ID: [darkprof at SUT tusl-2c]$ sudo flashrom -w 1014tc.001 ??????: flashrom v0.9.5.1-r1509 on Linux 3.0-ARCH (i686), built with libpci 3.1.9, GCC 4.6.2 20120120 (prerelease), little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OK. sh: dmidecode: ??????? ?? ??????? dmidecode execution unsuccessful - continuing without DMI info Found chipset "Intel ICH2". Enabling flash write... OK. Found Winbond flash chip "W49V002FA" (256 kB, FWH) at physical address 0xfffc0000. === This flash part has status UNTESTED for operations: ERASE WRITE The test status of this chip may have been updated in the latest development version of flashrom. If you are running the latest development version, please email a report to flashrom at flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -VE, -Vw), and mention which mainboard or programmer you tested. Please mention your board in the subject line. Thanks for your help! Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... done. Erasing and writing flash chip... ERASE FAILED at 0x00000000! Expected=0xff, Read=0x25, failed byte count from 0x00000000-0x0000ffff: 0xfee7 ERASE FAILED! Reading current flash chip contents... done. ERASE FAILED at 0x00000000! Expected=0xff, Read=0x25, failed byte count from 0x00000000-0x0003ffff: 0x36050 ERASE FAILED! FAILED! Uh oh. Erase/write failed. Checking if anything changed. Good. It seems nothing was changed. Writing to the flash chip apparently didn't do anything. This means we have to add special support for your board, programmer or flash chip. Please report this on IRC at irc.freenode.net (channel #flashrom) or mail flashrom at flashrom.org! ------------------------------------------------------------------------------- You may now reboot or simply leave the machine running. [darkprof at SUT tusl-2c]$ sudo flashrom -Vw 1014tc.001 ??????: flashrom v0.9.5.1-r1509 on Linux 3.0-ARCH (i686), built with libpci 3.1.9, GCC 4.6.2 20120120 (prerelease), little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 476M loops per second, delay more than 10% too short (got 84% of expected delay), recalculating... 380M loops per second, delay more than 10% too short (got 69% of expected delay), recalculating... 364M loops per second, delay more than 10% too short (got 65% of expected delay), recalculating... 525M loops per second, 10 myus = 10 us, 100 myus = 93 us, 1000 myus = 1022 us, 10000 myus = 15445 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. sh: dmidecode: ??????? ?? ??????? dmidecode execution unsuccessful - continuing without DMI info Found chipset "Intel ICH2" with PCI ID 8086:2440. Enabling flash write... BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0 OK. The following protocols are supported: FWH. Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0xda, id2 0x32 Found Winbond flash chip "W49V002FA" (256 kB, FWH) at physical address 0xfffc0000. Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xda, id2 0x32 Found Winbond flash chip "W49V002FA" (256 kB, FWH). === This flash part has status UNTESTED for operations: ERASE WRITE The test status of this chip may have been updated in the latest development version of flashrom. If you are running the latest development version, please email a report to flashrom at flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -VE, -Vw), and mention which mainboard or programmer you tested. Please mention your board in the subject line. Thanks for your help! Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... done. Erasing and writing flash chip... Trying erase function 0... 0x000000-0x00ffff:EERASE FAILED at 0x00000000! Expected=0xff, Read=0x25, failed byte count from 0x00000000-0x0000ffff: 0xfee7 ERASE FAILED! Reading current flash chip contents... done. Looking for another erase function. Trying erase function 1... 0x000000-0x03ffff:EERASE FAILED at 0x00000000! Expected=0xff, Read=0x25, failed byte count from 0x00000000-0x0003ffff: 0x36050 ERASE FAILED! Looking for another erase function. No usable erase functions left. FAILED! Uh oh. Erase/write failed. Checking if anything changed. Good. It seems nothing was changed. Writing to the flash chip apparently didn't do anything. This means we have to add special support for your board, programmer or flash chip. Please report this on IRC at irc.freenode.net (channel #flashrom) or mail flashrom at flashrom.org! ------------------------------------------------------------------------------- You may now reboot or simply leave the machine running. Restoring PCI config space for 00:1f:0 reg 0x4e [darkprof at SUT tusl-2c]$ -------------- next part -------------- An HTML attachment was scrubbed... URL: From vikingnomad2010 at gmail.com Mon Mar 5 18:56:49 2012 From: vikingnomad2010 at gmail.com (Thomas Saunders) Date: Mon, 5 Mar 2012 18:56:49 +0100 Subject: [flashrom] Codes for noobs Message-ID: <02DEC073-20FD-4E5A-BD03-535537CC72E1@gmail.com> Hi there :) We are building a mushroom farm out here in Denmark and were just wondering whether it was possible to change a chips code? We need the minimum temperature raised in the code. The chip itself is a G80F910C. Any help, however brief, is very much appreciated! Best wishes Thomas Saunders Danske Shiitake Hjelmagervej 7 8541 Sk?dstrup Danmark Tel: +4553144423 CVR: 33278721 From svn at flashrom.org Tue Mar 6 23:17:08 2012 From: svn at flashrom.org (repository service) Date: Tue, 06 Mar 2012 23:17:08 +0100 Subject: [flashrom] [commit] r1513 - trunk Message-ID: Author: mkarcher Date: Tue Mar 6 23:17:06 2012 New Revision: 1513 URL: http://flashrom.org/trac/flashrom/changeset/1513 Log: Prevent submission of empty read requests in linux_spi. The submission of zero-sized read requests in a write-only transaction fails at least for omap2_mcspi drivers and is pointless in general. This patch does not address the implementation of zero-sized writes (which would need to skip the write command), as there are no flash transactions not starting with a command. Signed-off-by: Michael Karcher Acked-by: Stefan Tauner Modified: trunk/linux_spi.c Modified: trunk/linux_spi.c ============================================================================== --- trunk/linux_spi.c Sat Mar 3 19:09:33 2012 (r1512) +++ trunk/linux_spi.c Tue Mar 6 23:17:06 2012 (r1513) @@ -130,6 +130,7 @@ const unsigned char *txbuf, unsigned char *rxbuf) { + int iocontrol_code; struct spi_ioc_transfer msg[2] = { { .tx_buf = (uint64_t)(ptrdiff_t)txbuf, @@ -143,8 +144,19 @@ if (fd == -1) return -1; + /* The implementation currently does not support requests that + don't start with sending a command. */ + if (writecnt == 0) + return SPI_INVALID_LENGTH; - if (ioctl(fd, SPI_IOC_MESSAGE(2), msg) == -1) { + /* Just submit the first (write) request in case there is nothing + to read. Otherwise submit both requests. */ + if (readcnt == 0) + iocontrol_code = SPI_IOC_MESSAGE(1); + else + iocontrol_code = SPI_IOC_MESSAGE(2); + + if (ioctl(fd, iocontrol_code, msg) == -1) { msg_cerr("%s: ioctl: %s\n", __func__, strerror(errno)); return -1; } From flashrom at mkarcher.dialup.fu-berlin.de Tue Mar 6 23:20:57 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Tue, 06 Mar 2012 23:20:57 +0100 Subject: [flashrom] [PATCH] Prevent submission of empty read requests in linux_spi In-Reply-To: <201203052341.q25NfenF029771@mail2.student.tuwien.ac.at> References: <1330788527-2114-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> <201203052341.q25NfenF029771@mail2.student.tuwien.ac.at> Message-ID: <1331072457.6250.41.camel@localhost> Am Dienstag, den 06.03.2012, 00:41 +0100 schrieb Stefan Tauner: > > Signed-off-by: Michael Karcher > Acked-by: Stefan Tauner Thanks, this is r1513 now, after incorporating your suggestions. I skipped the ?: idea, as using SPI_IOC_MESSAGE(1+(readcnt!=0)) failed at run time on the system of "GNUtoo". Regards, Michael Karcher From stefan.tauner at student.tuwien.ac.at Wed Mar 7 01:22:30 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Wed, 7 Mar 2012 01:22:30 +0100 Subject: [flashrom] ASUS TUSL2-C board enable (was: bug) In-Reply-To: References: Message-ID: <201203070022.q270MUFZ024017@mail2.student.tuwien.ac.at> On Tue, 06 Mar 2012 13:41:58 +0400 ?????? ???????? wrote: > [darkprof at SUT tusl-2c]$ sudo flashrom -w 1014tc.001 Hello ??????! Your board needs a small piece of code that disables the write protection pin of the flash chip. In flashrom this is called a board enable (see http://flashrom.org/Board_Enable for more details). Please try attached patch and report back. If it does *not* work, please send the "flashrom -V -w " output and also the output of lspci -nnvvvxxx (run as root), thanks. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Add-board-enable-for-ASUS-TUSL2-C.patch Type: text/x-patch Size: 1938 bytes Desc: not available URL: From mbrown at greenmountainservices.com Thu Mar 8 03:44:33 2012 From: mbrown at greenmountainservices.com (Mark Brown) Date: Wed, 07 Mar 2012 21:44:33 -0500 Subject: [flashrom] Realtek NIC (8169) Message-ID: <4F581D11.3010907@greenmountainservices.com> Wonder if there is a way to support the RTL8169 chipset, for SPI based programming. Very common and inexpensive card. Would be wonderful to support something like gPXE/iPXE PXE ROMs on those NICs. The typical 128kbit SPI rom/eprom/prom variations are often ATMEL or like. e.f. ATMEL518 93C64 Marc From mbrown at greenmountainservices.com Thu Mar 8 15:24:33 2012 From: mbrown at greenmountainservices.com (Mark Brown) Date: Thu, 08 Mar 2012 09:24:33 -0500 Subject: [flashrom] Realtek NIC (8169) Message-ID: <4F58C121.6080204@greenmountainservices.com> Wonder if there is a way to support the RTL8169 chipset, for SPI based programming. Very common and inexpensive card. Would be wonderful to support something like gPXE/iPXE PXE ROMs on those NICs. The typical 128kbit SPI rom/eprom/prom variations are often ATMEL or like. e.f. ATMEL518 93C64 Marc From c-d.hailfinger.devel.2006 at gmx.net Thu Mar 8 22:53:09 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 08 Mar 2012 22:53:09 +0100 Subject: [flashrom] [PATCH] flashrom 0.9.5.1 Message-ID: <4F592A45.9070803@gmx.net> Increase flashrom release number to 0.9.5.2 Informal ack by Stefan Tauner on IRC. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Stefan Tauner Index: flashrom-0.9.5.2-release/Makefile =================================================================== --- flashrom-0.9.5.2-release/Makefile (Revision 1513) +++ flashrom-0.9.5.2-release/Makefile (Arbeitskopie) @@ -277,7 +277,7 @@ # will not require subversion. The downloadable snapshots are already exported. SVNVERSION := $(shell LC_ALL=C svnversion -cn . 2>/dev/null | sed -e "s/.*://" -e "s/\([0-9]*\).*/\1/" | grep "[0-9]" || LC_ALL=C svn info . 2>/dev/null | awk '/^Revision:/ {print $$2 }' | grep "[0-9]" || LC_ALL=C git svn info . 2>/dev/null | awk '/^Revision:/ {print $$2 }' | grep "[0-9]" || echo unknown) -RELEASE := 0.9.5.1 +RELEASE := 0.9.5.2 VERSION := $(RELEASE)-r$(SVNVERSION) RELEASENAME ?= $(VERSION) -- http://www.hailfinger.org/ From c-d.hailfinger.devel.2006 at gmx.net Thu Mar 8 22:53:53 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 08 Mar 2012 22:53:53 +0100 Subject: [flashrom] [PATCH] flashrom 0.9.5.2 In-Reply-To: <4F592A45.9070803@gmx.net> References: <4F592A45.9070803@gmx.net> Message-ID: <4F592A71.4000002@gmx.net> Sorry! The subject should have been "[PATCH] flashrom 0.9.5.2". Am 08.03.2012 22:53 schrieb Carl-Daniel Hailfinger: > Increase flashrom release number to 0.9.5.2 > > Informal ack by Stefan Tauner on IRC. > > Signed-off-by: Carl-Daniel Hailfinger > Acked-by: Stefan Tauner > > Index: flashrom-0.9.5.2-release/Makefile > =================================================================== > --- flashrom-0.9.5.2-release/Makefile (Revision 1513) > +++ flashrom-0.9.5.2-release/Makefile (Arbeitskopie) > @@ -277,7 +277,7 @@ > # will not require subversion. The downloadable snapshots are already exported. > SVNVERSION := $(shell LC_ALL=C svnversion -cn . 2>/dev/null | sed -e "s/.*://" -e "s/\([0-9]*\).*/\1/" | grep "[0-9]" || LC_ALL=C svn info . 2>/dev/null | awk '/^Revision:/ {print $$2 }' | grep "[0-9]" || LC_ALL=C git svn info . 2>/dev/null | awk '/^Revision:/ {print $$2 }' | grep "[0-9]" || echo unknown) > > -RELEASE := 0.9.5.1 > +RELEASE := 0.9.5.2 > VERSION := $(RELEASE)-r$(SVNVERSION) > RELEASENAME ?= $(VERSION) > > > -- http://www.hailfinger.org/ From svn at flashrom.org Thu Mar 8 22:58:42 2012 From: svn at flashrom.org (repository service) Date: Thu, 08 Mar 2012 22:58:42 +0100 Subject: [flashrom] [commit] r1514 - trunk Message-ID: Author: hailfinger Date: Thu Mar 8 22:58:40 2012 New Revision: 1514 URL: http://flashrom.org/trac/flashrom/changeset/1514 Log: Increase flashrom release number to 0.9.5.2 Signed-off-by: Carl-Daniel Hailfinger Acked-by: Stefan Tauner Modified: trunk/Makefile Modified: trunk/Makefile ============================================================================== --- trunk/Makefile Tue Mar 6 23:17:06 2012 (r1513) +++ trunk/Makefile Thu Mar 8 22:58:40 2012 (r1514) @@ -277,7 +277,7 @@ # will not require subversion. The downloadable snapshots are already exported. SVNVERSION := $(shell LC_ALL=C svnversion -cn . 2>/dev/null | sed -e "s/.*://" -e "s/\([0-9]*\).*/\1/" | grep "[0-9]" || LC_ALL=C svn info . 2>/dev/null | awk '/^Revision:/ {print $$2 }' | grep "[0-9]" || LC_ALL=C git svn info . 2>/dev/null | awk '/^Revision:/ {print $$2 }' | grep "[0-9]" || echo unknown) -RELEASE := 0.9.5.1 +RELEASE := 0.9.5.2 VERSION := $(RELEASE)-r$(SVNVERSION) RELEASENAME ?= $(VERSION) From svn at flashrom.org Thu Mar 8 23:01:26 2012 From: svn at flashrom.org (repository service) Date: Thu, 08 Mar 2012 23:01:26 +0100 Subject: [flashrom] [commit] r1515 - tags/flashrom-0.9.5.2 Message-ID: Author: hailfinger Date: Thu Mar 8 23:01:25 2012 New Revision: 1515 URL: http://flashrom.org/trac/flashrom/changeset/1515 Log: Tag flashrom 0.9.5.2 Signed-off-by: Carl-Daniel Hailfinger Acked-by: Stefan Tauner Added: tags/flashrom-0.9.5.2/ - copied from r1514, trunk/ From c-d.hailfinger.devel.2006 at gmx.net Thu Mar 8 23:04:23 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 08 Mar 2012 23:04:23 +0100 Subject: [flashrom] [PATCH] flashrom 0.9.5.2 In-Reply-To: <4F592A71.4000002@gmx.net> References: <4F592A45.9070803@gmx.net> <4F592A71.4000002@gmx.net> Message-ID: <4F592CE7.6040507@gmx.net> Am 08.03.2012 22:53 schrieb Carl-Daniel Hailfinger: > Am 08.03.2012 22:53 schrieb Carl-Daniel Hailfinger: >> Increase flashrom release number to 0.9.5.2 Committed in r1514. Tagged in r1515. Regards, Carl-Daniel -- http://www.hailfinger.org/ From richud at gmail.com Fri Mar 9 12:43:51 2012 From: richud at gmail.com (RiCH @ gmail) Date: Fri, 9 Mar 2012 11:43:51 +0000 Subject: [flashrom] working card Message-ID: rfm6 at amd64:~/ipxe/src$ sudo flashrom -p nicintel flashrom v0.9.4-r1394 on Linux 3.0.0-12-generic (i686), built with libpci 3.1.7, GCC 4.6.1, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OK. Found "Intel 82557/8/9/0/1 Ethernet Pro 100" (8086:1229, BDF 04:08.0). === This PCI device is UNTESTED. Please report the 'flashrom -p xxxx' output to flashrom at flashrom.org if it works for you. Please add the name of your PCI device to the subject. Thank you for your help! === Found "Intel 82557/8/9/0/1 Ethernet Pro 100" (8086:1229, BDF 04:08.0). === This PCI device is UNTESTED. Please report the 'flashrom -p xxxx' output to flashrom at flashrom.org if it works for you. Please add the name of your PCI device to the subject. Thank you for your help! === Mapping Intel NIC control/status reg at 0xfdaff000, unaligned size 0x10. Found Atmel flash chip "AT49BV512" (64 kB, Parallel) on nicintel. No operations were specified. rfm6 at amd64:~/ipxe/src$ sudo flashrom -p nicintel -w test.rom [sudo] password for rfm6: flashrom v0.9.4-r1394 on Linux 3.0.0-12-generic (i686), built with libpci 3.1.7, GCC 4.6.1, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OK. Found "Intel 82557/8/9/0/1 Ethernet Pro 100" (8086:1229, BDF 04:08.0). === This PCI device is UNTESTED. Please report the 'flashrom -p xxxx' output to flashrom at flashrom.org if it works for you. Please add the name of your PCI device to the subject. Thank you for your help! === Found "Intel 82557/8/9/0/1 Ethernet Pro 100" (8086:1229, BDF 04:08.0). === This PCI device is UNTESTED. Please report the 'flashrom -p xxxx' output to flashrom at flashrom.org if it works for you. Please add the name of your PCI device to the subject. Thank you for your help! === Mapping Intel NIC control/status reg at 0xfdaff000, unaligned size 0x10. Found Atmel flash chip "AT49BV512" (64 kB, Parallel) on nicintel. Reading old flash chip contents... done. Erasing and writing flash chip... Erase/write done. Verifying flash... VERIFIED. -------------- next part -------------- An HTML attachment was scrubbed... URL: From allfer at rambler.ru Fri Mar 9 17:18:23 2012 From: allfer at rambler.ru (user) Date: Fri, 09 Mar 2012 20:18:23 +0400 Subject: [flashrom] Report for chipset "Intel Q67" on a GA-Q67M-D2H-B3 motheboard. Message-ID: <1331309903.4028.3.camel@localhost> Sorry for my previous report. Report for chipset "Intel Q67" on a GA-Q67M-D2H-B3 motheboard for READ operation. -------------- next part -------------- A non-text attachment was scrubbed... Name: ga-q67m-d2h-b3.read.log.zip Type: application/zip Size: 3646 bytes Desc: not available URL: From allfer at rambler.ru Fri Mar 9 20:20:54 2012 From: allfer at rambler.ru (user) Date: Fri, 09 Mar 2012 23:20:54 +0400 Subject: [flashrom] Report for HP ProBook 4510s NX693EA for READ operation. Message-ID: <1331320854.13519.4.camel@localhost> Report for HP ProBook 4510s NX693EA for READ operation. -------------- next part -------------- A non-text attachment was scrubbed... Name: hp-probook-4510s-nx693ea.read.log.zip Type: application/zip Size: 3250 bytes Desc: not available URL: From avbondarenko at gmail.com Fri Mar 9 20:13:24 2012 From: avbondarenko at gmail.com (Andrey V. Bondarenko) Date: Fri, 9 Mar 2012 23:13:24 +0400 Subject: [flashrom] FlashRom and Intel C204 chipset. In-Reply-To: <201110122157.p9CLvien005410@mail2.student.tuwien.ac.at> References: <201110122157.p9CLvien005410@mail2.student.tuwien.ac.at> Message-ID: Hello, I downloaded flashrom-0.9.5.2.tar.bz2. The flashrom does not compile. I think the problem is in SPI of kernel CentOS 5, the log of compilation is below. The kernel is 2.6.18-274.18.1.el5. I didn't find the file linux/spi/spidev.h. How can I compile flashrom without SPI? Log: Checking for a C compiler... found. Target arch is x86 Target OS is Linux Checking for libpci headers... found. Checking if libpci is present and sufficient... yes. Checking for FTDI support... not found. Checking for utsname support... found. cc -MMD -Os -Wall -Wshadow -Werror -D'CONFIG_INTERNAL=1' -D'CONFIG_SERPROG=1' -D'CONFIG_RAYER_SPI=1' -D'CONFIG_BITBANG_SPI=1' -D'CONFIG_NIC3COM=1' -D'CONFIG_GFXNVIDIA=1' -D'CONFIG_SATASII=1' -D'CONFIG_DUMMY=1' -D'CONFIG_DRKAISER=1' -D'CONFIG_NICREALTEK=1' -D'CONFIG_NICINTEL=1' -D'CONFIG_NICINTEL_SPI=1' -D'CONFIG_OGP_SPI=1' -D'CONFIG_BUSPIRATE_SPI=1' -D'CONFIG_SATAMV=1' -D'CONFIG_LINUX_SPI=1' -D'NEED_PCI=1' -D'HAVE_UTSNAME=1' -D'FLASHROM_VERSION="0.9.5.2-r1515"' -o linux_spi.o -c linux_spi.c linux_spi.c:27:30: error: linux/spi/spidev.h: No such file or directory linux_spi.c: In function 'linux_spi_init': linux_spi.c:62: error: 'SPI_MODE_0' undeclared (first use in this function) linux_spi.c:62: error: (Each undeclared identifier is reported only once linux_spi.c:62: error: for each function it appears in.) linux_spi.c:93: error: 'SPI_IOC_WR_MAX_SPEED_HZ' undeclared (first use in this function) linux_spi.c:102: error: 'SPI_IOC_WR_MODE' undeclared (first use in this function) linux_spi.c:108: error: 'SPI_IOC_WR_BITS_PER_WORD' undeclared (first use in this function) linux_spi.c: In function 'linux_spi_send_command': linux_spi.c:134: error: array type has incomplete element type linux_spi.c:136: error: field name not in record or union initializer linux_spi.c:136: error: (near initialization for 'msg') linux_spi.c:137: error: field name not in record or union initializer linux_spi.c:137: error: (near initialization for 'msg') linux_spi.c:140: error: field name not in record or union initializer linux_spi.c:140: error: (near initialization for 'msg') linux_spi.c:141: error: field name not in record or union initializer linux_spi.c:141: error: (near initialization for 'msg') cc1: warnings being treated as errors linux_spi.c:155: warning: implicit declaration of function 'SPI_IOC_MESSAGE' linux_spi.c:134: warning: unused variable 'msg' make: *** [linux_spi.o] Error 1 P.S. Was the problem solved with Asus P8B-E/4 (see email in end)? Thank you. 13 ??????? 2011 ?. 1:57 ???????????? Stefan Tauner < stefan.tauner at student.tuwien.ac.at> ???????: > On Wed, 12 Oct 2011 22:01:01 +0400 > "Andrey V. Bondarenko" wrote: > > > Hello, > > > > Verbose output is in the attachment file for chipset Intel C204. I sent > this > > e-mail because it was suggested to send report. > > > > # ./flashrom --read ./P8B-E-4L-ASUS-0602.ROM > > flashrom v0.9.4-r1395 on Linux 2.6.18-274.3.1.el5.028stab094.3 (x86_64), > > built with libpci 3.1.7, GCC 4.1.2 20080704 (Red Hat 4.1.2-51), little > > endian > > flashrom is free software, get the source code at > http://www.flashrom.org > > > > Calibrating delay loop... OK. > > Found chipset "Intel C204". > > This chipset is marked as untested. If you are using an up-to-date > version > > of flashrom please email a report to flashrom at flashrom.org including a > > verbose (-V) log. Thank you! > > Enabling flash write... OK. > > This chipset supports the following protocols: FWH, SPI. > > Found Winbond flash chip "W25Q64" (8192 kB, SPI) at physical address > > 0xff800000. > > Reading flash... Transaction error! > > Read operation failed! > > FAILED. > > hello and thanks for your report. > > this is another case of a locked Management Engine (ME) region, which > we can't unlock yet. > i have added the P8B-E/4L to our list of boards with a note about the > problem for now and will commit that later. > > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jeff at linuxwest.com Sat Mar 10 05:52:17 2012 From: jeff at linuxwest.com (jeff at linuxwest.com) Date: Fri, 09 Mar 2012 21:52:17 -0700 Subject: [flashrom] Dediprog programming is slow Message-ID: <20120309215217.f50467801c0b453a6c7e53a62af6edb5.752f01deb4.wbe@email03.secureserver.net> An HTML attachment was scrubbed... URL: -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: flashrom-run.txt URL: From stefan.tauner at student.tuwien.ac.at Sat Mar 10 11:15:12 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 10 Mar 2012 11:15:12 +0100 Subject: [flashrom] Realtek NIC (8169) In-Reply-To: <4F58C121.6080204@greenmountainservices.com> References: <4F58C121.6080204@greenmountainservices.com> Message-ID: <201203101015.q2AAFCnG021895@mail2.student.tuwien.ac.at> On Thu, 08 Mar 2012 09:24:33 -0500 Mark Brown wrote: > Wonder if there is a way to support the RTL8169 chipset, for SPI based > programming. Very common and inexpensive card. we have an untested (probably outdated) patch for it: http://patchwork.coreboot.org/patch/2489/ the problem is, that there are multiple versions of the chipset. the earlier revision(s?) have a square package and would support reading and writing to the flash (and eeprom) chip. the latter and by far more common version of the chipset does no longer support writing to the flash chip. if your card(s) have a square RTL8169 chip then i can update the patch for you to try. > > Would be wonderful to support something like gPXE/iPXE PXE ROMs on those > NICs. The typical 128kbit SPI rom/eprom/prom variations are often ATMEL > or like. e.f. ATMEL518 93C64 please note that the chips with "93" in the name like above are eeproms which are not supported at all by flashrom (please see http://flashrom.org/Supported_hardware#Supported_chips to get a general idea what series of memory devices can (easily) be supported). -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sat Mar 10 11:26:23 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 10 Mar 2012 11:26:23 +0100 Subject: [flashrom] linux_spi compilation fails due to too old linux headers (was: FlashRom and Intel C204 chipset.) In-Reply-To: References: <201110122157.p9CLvien005410@mail2.student.tuwien.ac.at> Message-ID: <201203101026.q2AAQNhE030594@mail2.student.tuwien.ac.at> On Fri, 9 Mar 2012 23:13:24 +0400 "Andrey V. Bondarenko" wrote: > Hello, > > I downloaded flashrom-0.9.5.2.tar.bz2. The flashrom does not compile. I > think the problem is in SPI of kernel CentOS 5, the log of compilation is > below. The kernel is 2.6.18-274.18.1.el5. I didn't find the file > linux/spi/spidev.h. How can I compile flashrom without SPI? > > Log: > > Checking for a C compiler... found. > Target arch is x86 > Target OS is Linux > Checking for libpci headers... found. > Checking if libpci is present and sufficient... yes. > Checking for FTDI support... not found. > Checking for utsname support... found. > cc -MMD -Os -Wall -Wshadow -Werror -D'CONFIG_INTERNAL=1' > -D'CONFIG_SERPROG=1' -D'CONFIG_RAYER_SPI=1' -D'CONFIG_BITBANG_SPI=1' > -D'CONFIG_NIC3COM=1' -D'CONFIG_GFXNVIDIA=1' -D'CONFIG_SATASII=1' > -D'CONFIG_DUMMY=1' -D'CONFIG_DRKAISER=1' -D'CONFIG_NICREALTEK=1' > -D'CONFIG_NICINTEL=1' -D'CONFIG_NICINTEL_SPI=1' -D'CONFIG_OGP_SPI=1' > -D'CONFIG_BUSPIRATE_SPI=1' -D'CONFIG_SATAMV=1' -D'CONFIG_LINUX_SPI=1' > -D'NEED_PCI=1' -D'HAVE_UTSNAME=1' -D'FLASHROM_VERSION="0.9.5.2-r1515"' -o > linux_spi.o -c linux_spi.c > linux_spi.c:27:30: error: linux/spi/spidev.h: No such file or directory > linux_spi.c: In function 'linux_spi_init': > linux_spi.c:62: error: 'SPI_MODE_0' undeclared (first use in this function) > linux_spi.c:62: error: (Each undeclared identifier is reported only once > linux_spi.c:62: error: for each function it appears in.) > linux_spi.c:93: error: 'SPI_IOC_WR_MAX_SPEED_HZ' undeclared (first use in > this function) > linux_spi.c:102: error: 'SPI_IOC_WR_MODE' undeclared (first use in this > function) > linux_spi.c:108: error: 'SPI_IOC_WR_BITS_PER_WORD' undeclared (first use in > this function) > linux_spi.c: In function 'linux_spi_send_command': > linux_spi.c:134: error: array type has incomplete element type > linux_spi.c:136: error: field name not in record or union initializer > linux_spi.c:136: error: (near initialization for 'msg') > linux_spi.c:137: error: field name not in record or union initializer > linux_spi.c:137: error: (near initialization for 'msg') > linux_spi.c:140: error: field name not in record or union initializer > linux_spi.c:140: error: (near initialization for 'msg') > linux_spi.c:141: error: field name not in record or union initializer > linux_spi.c:141: error: (near initialization for 'msg') > cc1: warnings being treated as errors > linux_spi.c:155: warning: implicit declaration of function 'SPI_IOC_MESSAGE' > linux_spi.c:134: warning: unused variable 'msg' > make: *** [linux_spi.o] Error 1 > > P.S. Was the problem solved with Asus P8B-E/4 (see email in end)? hello, sorry! we did merge the linux_spi support without adding a proper check for the linux headers. we will fix that soonish until then you can compile flashrom with the following command without linux_spi support but with all other programmers that are enabled by default: make CONFIG_INTERNAL=yes CONFIG_SERPROG=yes CONFIG_RAYER_SPI=yes CONFIG_BITBANG_SPI=yes CONFIG_NIC3COM=yes CONFIG_GFXNVIDIA=yes CONFIG_SATASII=yes CONFIG_FT2232_SPI=yes CONFIG_DUMMY=yes CONFIG_DRKAISER=yes CONFIG_NICREALTEK=yes CONFIG_NICINTEL=yes CONFIG_NICINTEL_SPI=yes CONFIG_OGP_SPI=yes CONFIG_BUSPIRATE_SPI=yes CONFIG_SATAMV=yes CONFIG_LINUX_SPI=no the problem with the locked ME is not solved yet, sorry. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From avbondarenko at gmail.com Sat Mar 10 11:53:21 2012 From: avbondarenko at gmail.com (Andrey V. Bondarenko) Date: Sat, 10 Mar 2012 14:53:21 +0400 Subject: [flashrom] linux_spi compilation fails due to too old linux headers (was: FlashRom and Intel C204 chipset.) In-Reply-To: <201203101026.q2AAQNhE030594@mail2.student.tuwien.ac.at> References: <201110122157.p9CLvien005410@mail2.student.tuwien.ac.at> <201203101026.q2AAQNhE030594@mail2.student.tuwien.ac.at> Message-ID: Hello, Thank you for prompt feedback. 10 ????? 2012 ?. 14:26 ???????????? Stefan Tauner < stefan.tauner at student.tuwien.ac.at> ???????: > On Fri, 9 Mar 2012 23:13:24 +0400 > "Andrey V. Bondarenko" wrote: > > > Hello, > > > > I downloaded flashrom-0.9.5.2.tar.bz2. The flashrom does not compile. I > > think the problem is in SPI of kernel CentOS 5, the log of compilation is > > below. The kernel is 2.6.18-274.18.1.el5. I didn't find the file > > linux/spi/spidev.h. How can I compile flashrom without SPI? > > > > Log: > > > > Checking for a C compiler... found. > > Target arch is x86 > > Target OS is Linux > > Checking for libpci headers... found. > > Checking if libpci is present and sufficient... yes. > > Checking for FTDI support... not found. > > Checking for utsname support... found. > > cc -MMD -Os -Wall -Wshadow -Werror -D'CONFIG_INTERNAL=1' > > -D'CONFIG_SERPROG=1' -D'CONFIG_RAYER_SPI=1' -D'CONFIG_BITBANG_SPI=1' > > -D'CONFIG_NIC3COM=1' -D'CONFIG_GFXNVIDIA=1' -D'CONFIG_SATASII=1' > > -D'CONFIG_DUMMY=1' -D'CONFIG_DRKAISER=1' -D'CONFIG_NICREALTEK=1' > > -D'CONFIG_NICINTEL=1' -D'CONFIG_NICINTEL_SPI=1' -D'CONFIG_OGP_SPI=1' > > -D'CONFIG_BUSPIRATE_SPI=1' -D'CONFIG_SATAMV=1' -D'CONFIG_LINUX_SPI=1' > > -D'NEED_PCI=1' -D'HAVE_UTSNAME=1' -D'FLASHROM_VERSION="0.9.5.2-r1515"' -o > > linux_spi.o -c linux_spi.c > > linux_spi.c:27:30: error: linux/spi/spidev.h: No such file or directory > > linux_spi.c: In function 'linux_spi_init': > > linux_spi.c:62: error: 'SPI_MODE_0' undeclared (first use in this > function) > > linux_spi.c:62: error: (Each undeclared identifier is reported only once > > linux_spi.c:62: error: for each function it appears in.) > > linux_spi.c:93: error: 'SPI_IOC_WR_MAX_SPEED_HZ' undeclared (first use in > > this function) > > linux_spi.c:102: error: 'SPI_IOC_WR_MODE' undeclared (first use in this > > function) > > linux_spi.c:108: error: 'SPI_IOC_WR_BITS_PER_WORD' undeclared (first use > in > > this function) > > linux_spi.c: In function 'linux_spi_send_command': > > linux_spi.c:134: error: array type has incomplete element type > > linux_spi.c:136: error: field name not in record or union initializer > > linux_spi.c:136: error: (near initialization for 'msg') > > linux_spi.c:137: error: field name not in record or union initializer > > linux_spi.c:137: error: (near initialization for 'msg') > > linux_spi.c:140: error: field name not in record or union initializer > > linux_spi.c:140: error: (near initialization for 'msg') > > linux_spi.c:141: error: field name not in record or union initializer > > linux_spi.c:141: error: (near initialization for 'msg') > > cc1: warnings being treated as errors > > linux_spi.c:155: warning: implicit declaration of function > 'SPI_IOC_MESSAGE' > > linux_spi.c:134: warning: unused variable 'msg' > > make: *** [linux_spi.o] Error 1 > > > > P.S. Was the problem solved with Asus P8B-E/4 (see email in end)? > > hello, > > sorry! we did merge the linux_spi support without adding a proper check > for the linux headers. we will fix that soonish until then you can > compile flashrom with the following command without linux_spi support > but with all other programmers that are enabled by default: > make CONFIG_INTERNAL=yes CONFIG_SERPROG=yes CONFIG_RAYER_SPI=yes > CONFIG_BITBANG_SPI=yes CONFIG_NIC3COM=yes CONFIG_GFXNVIDIA=yes > CONFIG_SATASII=yes CONFIG_FT2232_SPI=yes CONFIG_DUMMY=yes > CONFIG_DRKAISER=yes CONFIG_NICREALTEK=yes CONFIG_NICINTEL=yes > CONFIG_NICINTEL_SPI=yes CONFIG_OGP_SPI=yes CONFIG_BUSPIRATE_SPI=yes > CONFIG_SATAMV=yes CONFIG_LINUX_SPI=no > > the problem with the locked ME is not solved yet, sorry. > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner > -------------- next part -------------- An HTML attachment was scrubbed... URL: From c-d.hailfinger.devel.2006 at gmx.net Sat Mar 10 11:54:33 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sat, 10 Mar 2012 11:54:33 +0100 Subject: [flashrom] Dediprog programming is slow In-Reply-To: <20120309215217.f50467801c0b453a6c7e53a62af6edb5.752f01deb4.wbe@email03.secureserver.net> References: <20120309215217.f50467801c0b453a6c7e53a62af6edb5.752f01deb4.wbe@email03.secureserver.net> Message-ID: <4F5B32E9.9050400@gmx.net> Hi Jeff, Am 10.03.2012 05:52 schrieb jeff at linuxwest.com: > Thank you for the impressive work in this app! Glad to hear it works for you. > This is only my first time using Flashrom to write the bios file so I don't know > what is considered normal. The software provided by Dediprog writes the same > file in much less time it takes Flashrom to do it. I wonder if that's because > Flashrom will first erase the chip and then "In the process the chip is also > read several times"? No, it's because your flashrom version does not have the dediprog write speedup. You need at least 0.9.4-r1477 for a reasonable write speed (it won't help for all flash chips, but a majority of them). > Is it possible to bypass the erasing and in-memory backup operations to save > time? The slowness is with the "--noverify" option enabled. --noverify will save maybe 10 seconds if you're lucky. The slow write speed is caused by an incomplete dediprog driver in v0.9.4-r1395. > If I flash with the same image, it is really fast. Perhaps that is expected. But > notice in my attachment, it's taking 20 mins to flash 8M. You should get almost native speed (like the Windows tool from Dediprog) with latest flashrom unless your flash chip uses the AAI or write_1 methods. We're working to provide native speed for all SPI flash chips, but it depends on testers. > Also, something important I really want to know is if it is possible to run more > than one instance of flashrom at the same time (two dediprogs)? Do you own multiple Dediprogs? If yes, it would be very interesting to know how the Windows Dediprog tool differentiates between the two, and what flashrom does if it sees two Dediprogs (it will probably just ignore the second one). I'm willing to add support for concurrent flashrom instances (one per programmer) to the Dediprog driver if you're willing to test. Regards, Carl-Daniel -- http://www.hailfinger.org/ From stefan.tauner at student.tuwien.ac.at Sat Mar 10 11:56:48 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 10 Mar 2012 11:56:48 +0100 Subject: [flashrom] linux_spi compilation fails due to too old linux headers (was: FlashRom and Intel C204 chipset.) In-Reply-To: <201203101026.q2AAQNhE030594@mail2.student.tuwien.ac.at> References: <201110122157.p9CLvien005410@mail2.student.tuwien.ac.at> <201203101026.q2AAQNhE030594@mail2.student.tuwien.ac.at> Message-ID: <201203101056.q2AAunS0021082@mail2.student.tuwien.ac.at> On Sat, 10 Mar 2012 11:26:23 +0100 Stefan Tauner wrote: > you can > compile flashrom with the following command without linux_spi support > but with all other programmers that are enabled by default: > make CONFIG_INTERNAL=yes CONFIG_SERPROG=yes CONFIG_RAYER_SPI=yes CONFIG_BITBANG_SPI=yes CONFIG_NIC3COM=yes CONFIG_GFXNVIDIA=yes CONFIG_SATASII=yes CONFIG_FT2232_SPI=yes CONFIG_DUMMY=yes CONFIG_DRKAISER=yes CONFIG_NICREALTEK=yes CONFIG_NICINTEL=yes CONFIG_NICINTEL_SPI=yes CONFIG_OGP_SPI=yes CONFIG_BUSPIRATE_SPI=yes CONFIG_SATAMV=yes CONFIG_LINUX_SPI=no or just make CONFIG_LINUX_SPI=no oops. :) -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From flashrom at mkarcher.dialup.fu-berlin.de Sat Mar 10 17:43:27 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Sat, 10 Mar 2012 17:43:27 +0100 Subject: [flashrom] ASUS TUSL2-C board enable (was: bug) In-Reply-To: <201203070022.q270MUFZ024017@mail2.student.tuwien.ac.at> References: <201203070022.q270MUFZ024017@mail2.student.tuwien.ac.at> Message-ID: <1331397807.5523.12.camel@localhost> Am Mittwoch, den 07.03.2012, 01:22 +0100 schrieb Stefan Tauner: > From 4df237d340416aa424f93ca4a9d9b4dd719ed02f Mon Sep 17 00:00:00 2001 > From: Stefan Tauner > Date: Wed, 7 Mar 2012 01:16:11 +0100 > Subject: [PATCH] Add board enable for ASUS TUSL2-C > > Primary IDs SMBus controller, Secondary IDs MCH. > With implicit courtesy of Micheal 'awesome' Kracher :) My name is "Karcher", not "Kracher". And also it is "Michael", not "Micheal". > + {0x8086, 0x2443, 0x1043, 0x8027, 0x8086, 0x1130, 0x1043, 0x8027, NULL, NULL, NULL, P3, "ASUS", "TUSL2-C", 0, OK, intel_ich_gpio21_raise}, This line looks entirely correct, but you did not care about the "rule of three" for board enables: A typical board enable patch needs three hunks, one of them is vital for functionality. 1st: (you have it, it is vital) The board enable table 2nd: The comment with the board list at the enable function, or the complete enable function, if it is a new one 3rd: The entries in print.c Regards, Michael Karcher From stefan.tauner at student.tuwien.ac.at Sat Mar 10 17:55:54 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 10 Mar 2012 17:55:54 +0100 Subject: [flashrom] [PATCH] Add (untested) board enable for ASUS TUSL2-C In-Reply-To: <1331397807.5523.12.camel@localhost> References: <1331397807.5523.12.camel@localhost> Message-ID: <1331398554-6856-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Primary IDs SMBus controller, secondary IDs MCH. The reverse engineering was done by Michael Karcher. ?????? ???????? reported the problem, but did not reply (yet) to our propsed fix. Signed-off-by: Stefan Tauner Acked-by: Michael Karcher --- board_enable.c | 2 ++ print.c | 1 + 2 files changed, 3 insertions(+), 0 deletions(-) diff --git a/board_enable.c b/board_enable.c index d9e26bc..31b212a 100644 --- a/board_enable.c +++ b/board_enable.c @@ -1529,6 +1529,7 @@ static int intel_ich_gpio19_raise(void) * - ASUS P5GD2 Premium: Intel LGA775 + 915G + ICH6R * - ASUS P5GDC Deluxe: Intel socket775 + 915P + ICH6R * - ASUS P5PE-VM: Intel LGA775 + 865G + ICH5 + * - ASUS TUSL2-C: Intel socket370 + 815 + ICH2 * - Samsung Polaris 32: socket478 + 865P + ICH5 */ static int intel_ich_gpio21_raise(void) @@ -2173,6 +2174,7 @@ const struct board_match board_matches[] = { {0x10DE, 0x0260, 0x1043, 0x81BC, 0x10DE, 0x026C, 0x1043, 0x829E, "^P5N-D$", NULL, NULL, P3, "ASUS", "P5N-D", 0, OK, it8718f_gpio63_raise}, {0x10DE, 0x0260, 0x1043, 0x81BC, 0x10DE, 0x026C, 0x1043, 0x8249, "^P5N-E SLI$",NULL, NULL, P3, "ASUS", "P5N-E SLI", 0, NT, it8718f_gpio63_raise}, {0x8086, 0x24dd, 0x1043, 0x80a6, 0x8086, 0x2570, 0x1043, 0x8157, NULL, NULL, NULL, P3, "ASUS", "P5PE-VM", 0, OK, intel_ich_gpio21_raise}, + {0x8086, 0x2443, 0x1043, 0x8027, 0x8086, 0x1130, 0x1043, 0x8027, NULL, NULL, NULL, P3, "ASUS", "TUSL2-C", 0, NT, intel_ich_gpio21_raise}, {0x10b7, 0x9055, 0x1028, 0x0082, 0x8086, 0x7190, 0, 0, NULL, NULL, NULL, P3, "Dell", "OptiPlex GX1", 0, OK, intel_piix4_gpo30_lower}, {0x8086, 0x3590, 0x1028, 0x016c, 0x1000, 0x0030, 0x1028, 0x016c, NULL, NULL, NULL, P3, "Dell", "PowerEdge 1850", 0, OK, intel_ich_gpio23_raise}, {0x10de, 0x03ea, 0x1019, 0x2602, 0x10de, 0x03e0, 0x1019, 0x2602, NULL, NULL, NULL, P3, "Elitegroup", "GeForce6100SM-M", 0, OK, board_ecs_geforce6100sm_m}, diff --git a/print.c b/print.c index 1fdeac7..01f8ae9 100644 --- a/print.c +++ b/print.c @@ -706,6 +706,7 @@ const struct board_info boards_known[] = { B("ASUS", "P8H67-M PRO", 0, NULL, "Probing works (Macronix MX25L3205, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), B("ASUS", "P8P67 (rev. 3.1)", 0, NULL, "Probing works (Macronix MX25L3205, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), B("ASUS", "P8Z68-V PRO", 0, NULL, "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("ASUS", "TUSL2-C", 0, "http://support.asus.com/download.aspx?SLanguage=en&p=1&s=4&m=TUSL2-C&os=&hashedid=n/a", "Untested board enable."), B("ASUS", "Z8NA-D6C", 1, "http://www.asus.com/Server_Workstation/Server_Motherboards/Z8NAD6C/", NULL), B("ASUS", "Z8PE-D12", 1, "http://www.asus.com/Server_Workstation/Server_Motherboards/Z8PED12/", NULL), B("BCOM", "WinNET100", 1, "http://www.coreboot.org/BCOM_WINNET100", "Used in the IGEL-316 thin client."), -- 1.7.1 From svn at flashrom.org Sat Mar 10 20:22:13 2012 From: svn at flashrom.org (repository service) Date: Sat, 10 Mar 2012 20:22:13 +0100 Subject: [flashrom] [commit] r1516 - trunk Message-ID: Author: stefanct Date: Sat Mar 10 20:22:13 2012 New Revision: 1516 URL: http://flashrom.org/trac/flashrom/changeset/1516 Log: Add (untested) board enable for ASUS TUSL2-C Primary IDs SMBus controller, secondary IDs MCH. The reverse engineering was done by Michael Karcher. ?????? ???????? reported the problem, but did not reply (yet) to our propsed fix. Signed-off-by: Stefan Tauner Acked-by: Michael Karcher Modified: trunk/board_enable.c trunk/print.c Modified: trunk/board_enable.c ============================================================================== --- trunk/board_enable.c Thu Mar 8 23:01:25 2012 (r1515) +++ trunk/board_enable.c Sat Mar 10 20:22:13 2012 (r1516) @@ -1529,6 +1529,7 @@ * - ASUS P5GD2 Premium: Intel LGA775 + 915G + ICH6R * - ASUS P5GDC Deluxe: Intel socket775 + 915P + ICH6R * - ASUS P5PE-VM: Intel LGA775 + 865G + ICH5 + * - ASUS TUSL2-C: Intel socket370 + 815 + ICH2 * - Samsung Polaris 32: socket478 + 865P + ICH5 */ static int intel_ich_gpio21_raise(void) @@ -2173,6 +2174,7 @@ {0x10DE, 0x0260, 0x1043, 0x81BC, 0x10DE, 0x026C, 0x1043, 0x829E, "^P5N-D$", NULL, NULL, P3, "ASUS", "P5N-D", 0, OK, it8718f_gpio63_raise}, {0x10DE, 0x0260, 0x1043, 0x81BC, 0x10DE, 0x026C, 0x1043, 0x8249, "^P5N-E SLI$",NULL, NULL, P3, "ASUS", "P5N-E SLI", 0, NT, it8718f_gpio63_raise}, {0x8086, 0x24dd, 0x1043, 0x80a6, 0x8086, 0x2570, 0x1043, 0x8157, NULL, NULL, NULL, P3, "ASUS", "P5PE-VM", 0, OK, intel_ich_gpio21_raise}, + {0x8086, 0x2443, 0x1043, 0x8027, 0x8086, 0x1130, 0x1043, 0x8027, NULL, NULL, NULL, P3, "ASUS", "TUSL2-C", 0, NT, intel_ich_gpio21_raise}, {0x10b7, 0x9055, 0x1028, 0x0082, 0x8086, 0x7190, 0, 0, NULL, NULL, NULL, P3, "Dell", "OptiPlex GX1", 0, OK, intel_piix4_gpo30_lower}, {0x8086, 0x3590, 0x1028, 0x016c, 0x1000, 0x0030, 0x1028, 0x016c, NULL, NULL, NULL, P3, "Dell", "PowerEdge 1850", 0, OK, intel_ich_gpio23_raise}, {0x10de, 0x03ea, 0x1019, 0x2602, 0x10de, 0x03e0, 0x1019, 0x2602, NULL, NULL, NULL, P3, "Elitegroup", "GeForce6100SM-M", 0, OK, board_ecs_geforce6100sm_m}, Modified: trunk/print.c ============================================================================== --- trunk/print.c Thu Mar 8 23:01:25 2012 (r1515) +++ trunk/print.c Sat Mar 10 20:22:13 2012 (r1516) @@ -706,6 +706,7 @@ B("ASUS", "P8H67-M PRO", 0, NULL, "Probing works (Macronix MX25L3205, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), B("ASUS", "P8P67 (rev. 3.1)", 0, NULL, "Probing works (Macronix MX25L3205, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), B("ASUS", "P8Z68-V PRO", 0, NULL, "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("ASUS", "TUSL2-C", 0, "http://support.asus.com/download.aspx?SLanguage=en&p=1&s=4&m=TUSL2-C&os=&hashedid=n/a", "Untested board enable."), B("ASUS", "Z8NA-D6C", 1, "http://www.asus.com/Server_Workstation/Server_Motherboards/Z8NAD6C/", NULL), B("ASUS", "Z8PE-D12", 1, "http://www.asus.com/Server_Workstation/Server_Motherboards/Z8PED12/", NULL), B("BCOM", "WinNET100", 1, "http://www.coreboot.org/BCOM_WINNET100", "Used in the IGEL-316 thin client."), From stefan.tauner at student.tuwien.ac.at Sat Mar 10 21:01:57 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 10 Mar 2012 21:01:57 +0100 Subject: [flashrom] [PATCH] Add (untested) board enable for ASUS TUSL2-C In-Reply-To: <1331398554-6856-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <1331397807.5523.12.camel@localhost> <1331398554-6856-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <201203102001.q2AK1vte001449@mail2.student.tuwien.ac.at> On Sat, 10 Mar 2012 17:55:54 +0100 Stefan Tauner wrote: > Primary IDs SMBus controller, secondary IDs MCH. > The reverse engineering was done by Michael Karcher. > ?????? ???????? reported the problem, but did not > reply (yet) to our propsed fix. committed in r1516 -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sat Mar 10 22:23:04 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 10 Mar 2012 22:23:04 +0100 Subject: [flashrom] [PATCH] Make the presence of Linux SPI headers mandatory for linux_spi. In-Reply-To: <201203101026.q2AAQNhE030594@mail2.student.tuwien.ac.at> References: <201203101026.q2AAQNhE030594@mail2.student.tuwien.ac.at> Message-ID: <1331414584-17740-1-git-send-email-stefan.tauner@student.tuwien.ac.at> This solution is copied from ft2232_spi and is equally hacky. Thanks to M.K. for investigating the history of , which led to a hopefully more robust check. Signed-off-by: Stefan Tauner --- Andrey could you please test this patch? It should disable linux_spi if it can not find valid headers and compilation of flashrom should then succeed without the need of specifying CONFIG_LINUX_SPI=no. Makefile | 23 ++++++++++++++++++++++- linux_spi.c | 5 +++++ 2 files changed, 27 insertions(+), 1 deletions(-) diff --git a/Makefile b/Makefile index c921a74..4de89e0 100644 --- a/Makefile +++ b/Makefile @@ -485,7 +485,8 @@ NEED_PCI := yes endif ifeq ($(CONFIG_LINUX_SPI), yes) -FEATURE_CFLAGS += -D'CONFIG_LINUX_SPI=1' +# This is a totally ugly hack. +FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "LINUX_SPI_SUPPORT := yes" .features && printf "%s" "-D'CONFIG_LINUX_SPI=1'") PROGRAMMER_OBJS += linux_spi.o endif @@ -671,6 +672,19 @@ int main(int argc, char **argv) endef export UTSNAME_TEST +define LINUX_SPI_TEST +#include +#include + +int main(int argc, char **argv) +{ + (void) argc; + (void) argv; + return 0; +} +endef +export LINUX_SPI_TEST + features: compiler @echo "FEATURES := yes" > .features.tmp ifeq ($(CONFIG_FT2232_SPI), yes) @@ -680,6 +694,13 @@ ifeq ($(CONFIG_FT2232_SPI), yes) ( echo "found."; echo "FTDISUPPORT := yes" >> .features.tmp ) || \ ( echo "not found."; echo "FTDISUPPORT := no" >> .features.tmp ) endif +ifeq ($(CONFIG_LINUX_SPI), yes) + @printf "Checking if Linux SPI headers are present... " + @echo "$$LINUX_SPI_TEST" > .featuretest.c + @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) >/dev/null 2>&1 && \ + ( echo "yes."; echo "LINUX_SPI_SUPPORT := yes" >> .features.tmp ) || \ + ( echo "no."; echo "LINUX_SPI_SUPPORT := no" >> .features.tmp ) +endif @printf "Checking for utsname support... " @echo "$$UTSNAME_TEST" > .featuretest.c @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) >/dev/null 2>&1 && \ diff --git a/linux_spi.c b/linux_spi.c index 17d003e..f4d30c9 100644 --- a/linux_spi.c +++ b/linux_spi.c @@ -17,6 +17,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#if CONFIG_LINUX_SPI == 1 + #include #include #include @@ -24,6 +26,7 @@ #include #include #include +#include #include #include #include "flash.h" @@ -176,3 +179,5 @@ static int linux_spi_write_256(struct flashctx *flash, uint8_t *buf, return spi_write_chunked(flash, buf, start, len, ((unsigned int)getpagesize()) - 4); } + +#endif // CONFIG_LINUX_SPI == 1 -- 1.7.1 From flashrom at mkarcher.dialup.fu-berlin.de Sat Mar 10 23:09:24 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Sat, 10 Mar 2012 23:09:24 +0100 Subject: [flashrom] [PATCH] Make the presence of Linux SPI headers mandatory for linux_spi. In-Reply-To: <1331414584-17740-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <201203101026.q2AAQNhE030594@mail2.student.tuwien.ac.at> <1331414584-17740-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <1331417364.5523.16.camel@localhost> Am Samstag, den 10.03.2012, 22:23 +0100 schrieb Stefan Tauner: > This solution is copied from ft2232_spi and is equally hacky. > Thanks to M.K. for investigating the history of , which > led to a hopefully more robust check. > > Signed-off-by: Stefan Tauner Acked-by: Michael Karcher Well, this patch is not pretty, but that's inherent to the current configuration infrastructure, and it is not the job of this patch to fix that. Regards, Michael Karcher From kbkj at telia.com Sat Mar 10 21:10:06 2012 From: kbkj at telia.com (Kim Johansson) Date: Sat, 10 Mar 2012 21:10:06 +0100 Subject: [flashrom] MSI GF615M-P33: flashrom -V Message-ID: <201203102110.06964.kbkj@telia.com> -------------- next part -------------- flashrom v0.9.5.2-r1516 on Linux 2.6.35 (i686), built with libpci 2.2.10, GCC 4.2.4, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 1276M loops per second, delay more than 10% too short (got 85% of expected delay), recalculating... 1271M loops per second, delay more than 10% too short (got 85% of expected delay), recalculating... 1279M loops per second, delay more than 10% too short (got 85% of expected delay), recalculating... 1296M loops per second, delay more than 10% too short (got 86% of expected delay), recalculating... 1280M loops per second, 10 myus = 8 us, 100 myus = 85 us, 1000 myus = 929 us, 10000 myus = 16865 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "MICRO-STAR INTERNATIONAL CO.,LTD" DMI string system-product-name: "MS-7597" DMI string system-version: "1.0" DMI string baseboard-manufacturer: "MICRO-STAR INTERNATIONAL CO.,LTD" DMI string baseboard-product-name: "GF615M-P33 (MS-7597)" DMI string baseboard-version: "1.0" DMI string chassis-type: "Desktop" Found chipset "NVIDIA MCP61" with PCI ID 10de:03e0. Enabling flash write... This chipset is not really supported yet. Guesswork... ISA/LPC bridge reg 0x8a contents: 0x40, bit 6 is 1, bit 5 is 0 Flash bus type is SPI SPI on this chipset is WIP. Please report any success or failure by mailing us the verbose output to flashrom at flashrom.org, thanks! Found SMBus device 10de:03eb at 00:01:1 MCP SPI BAR is at 0xfec80000 SPI control is 0x0012, req=0, gnt=0 Please send the output of "flashrom -V" to flashrom at flashrom.org with your board name: flashrom -V as the subject to help us finish support for your chipset. Thanks. OK. The following protocols are supported: SPI. Probing for AMIC A25L05PT, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L05PU, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L10PT, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L10PU, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L20PT, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L20PU, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L40PT, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L40PU, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L80P, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L16PT, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L16PU, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L020, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L080, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L016, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L032, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25LQ032, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF021, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF041A, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF081, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF081A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF321, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF321A, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF641(A), 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DQ161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25F512B, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25FS010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25FS040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF041, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF081A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF161A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26F004, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45CS1282, 16896 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB011D, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB021D, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB041D, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB081D, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB161D, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB321C, 4224 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB321D, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB642D, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for EMST F25L008A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B05, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B05T, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B10T, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B20T, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B40T, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B80T, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B16T, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B32T, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B64T, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F05, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q80(A), 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q32(A/B), 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25QH16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1005, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L2005, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L4005, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L8005, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1605, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1635D, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1635E, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L3205, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L3235D, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L6405, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L12805, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV016B, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV020, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV080B, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Sanyo LF25FW203A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL004A, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL008A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL016A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL032A, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL064A, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25LF040A, 512 kB: probe_spi_res2: id1 0xff, id2 0xff Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0xff, id2 0xff Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF016B, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF032B, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF064C, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF040B, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF080B, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P05-A, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P05, 64 kB: probe_spi_res1: id 0xff Probing for ST M25P10-A, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P10, 128 kB: probe_spi_res1: id 0xff Probing for ST M25P20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P40-old, 512 kB: probe_spi_res1: id 0xff Probing for ST M25P80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Unknown SFDP-capable chip, 0 kB: No SFDP signature found. Probing for AMIC unknown AMIC SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel unknown Atmel SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon unknown Eon SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix unknown Macronix SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC unknown PMC SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST unknown SST SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST unknown ST SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Sanyo unknown Sanyo SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Generic unknown SPI chip (RDID), 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xff, id2 0xff No EEPROM/flash device found. Note: flashrom can never write if the flash chip isn't found automatically. From c-d.hailfinger.devel.2006 at gmx.net Sun Mar 11 16:51:08 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sun, 11 Mar 2012 16:51:08 +0100 Subject: [flashrom] 80/100/132 column line width policy Message-ID: <4F5CC9EC.9030500@gmx.net> Hi, we're hitting the 80 column limit in our code in ways which actually reduce readability for the code. Examples are various multiline messages and complicated nested code where refactoring to a separate function doesn't make sense. Keeping the old 80 column limit is not really an option anymore. Standard terminal sizes have one of 80, 100 or 132 columns. Given the monitor resolutions many people have nowadays, I think it is safe to say that you can fit two xterms with 100 columns horizonally next to each other. 100 columns should also be sufficient for a msg_p* of roughly 80 columns of text. 132 columns provide more leeway, but IMHO that would be too wide for good readability (and my screen can't fit two xterms side-by-side anymore). Of course some files have sections where any column limit is not acceptable (board lists etc.), but the column limit violations should be limited to the affected file sections, not whole files. Comments? I'd like to get this decided today or tomorrow so we know where we need line breaks in Stefan Tauner's new struct flashchip patch. Regards, Carl-Daniel -- http://www.hailfinger.org/ From Susan.Scheibe at innere.med.uni-giessen.de Sun Mar 11 18:03:35 2012 From: Susan.Scheibe at innere.med.uni-giessen.de (Susan Scheibe) Date: Sun, 11 Mar 2012 18:03:35 +0100 Subject: [flashrom] N61PB-M2S: flashrom -v Message-ID: <20120311180335.093a8811.Susan.Scheibe@innere.med.uni-giessen.de> at least with "nopat" on the kernel command line and accessible /dev/mem flashrom was able to flash this board successfully on a Gentoo hardened system. Probably it would have worked without all these safety measures, because flashrom was able to read and verify the existing bios before. Here is the output of flashrom -V: flashrom v0.9.5.1-r1509 on Linux 3.2.9-hardened-r1 (x86_64), built with libpci 3.1.9, GCC 4.5.3, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 754M loops per second, 10 myus = 11 us, 100 myus = 100 us, 1000 myus = 1001 us, 10000 myus = 10013 us, 4 myus = 5 us, OK. Initializing internal programmer DMI string system-manufacturer: "BIOSTAR Group" DMI string system-product-name: "N61PB-M2S" DMI string system-version: " " DMI string baseboard-manufacturer: "BIOSTAR Group" DMI string baseboard-product-name: "N61PB-M2S" DMI string baseboard-version: " " DMI string chassis-type: "Desktop" Found ITE Super I/O, ID 0x8716 on port 0x2e Found chipset "NVIDIA MCP61" with PCI ID 10de:03e0. Enabling flash write... This chipset is not really supported yet. Guesswork... ISA/LPC bridge reg 0x8a contents: 0x40, bit 6 is 1, bit 5 is 0 Flash bus type is SPI SPI on this chipset is WIP. Please report any success or failure by mailing us the verbose output to flashrom at flashrom.org, thanks! Found SMBus device 10de:03eb at 00:01:1 MCP SPI BAR is at 0xfec80000 SPI control is 0x0002, req=0, gnt=0 Please send the output of "flashrom -V" to flashrom at flashrom.org with your board name: flashrom -V as the subject to help us finish support for your chipset. Thanks. OK. No IT87* serial flash segment enabled. The following protocols are supported: SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Chip status register is 00 Chip status register: Status Register Write Disable (SRWD) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is not set Chip status register: Bit 3 / Block Protect 1 (BP1) is not set Chip status register: Bit 2 / Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found Macronix flash chip "MX25L8005" (1024 kB, SPI) at physical address 0xfff00000. Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for SST SST25LF040A, 512 kB: probe_spi_res2: id1 0x13, id2 0x13 Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0x13, id2 0x13 Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xc2, id2 0x13 Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xc2, id2 0x13 Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xc2, id2 0x13 Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Unknown SFDP-capable chip, 0 kB: No SFDP signature found. Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xc2, id2 0x13 Found Macronix flash chip "MX25L8005" (1024 kB, SPI). No operations were specified. From stefan.tauner at student.tuwien.ac.at Sun Mar 11 23:00:42 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 11 Mar 2012 23:00:42 +0100 Subject: [flashrom] 80/100/132 column line width policy In-Reply-To: <4F5CC9EC.9030500@gmx.net> References: <4F5CC9EC.9030500@gmx.net> Message-ID: <201203112200.q2BM0gZh011716@mail2.student.tuwien.ac.at> On Sun, 11 Mar 2012 16:51:08 +0100 Carl-Daniel Hailfinger wrote: > Hi, > > we're hitting the 80 column limit in our code in ways which actually > reduce readability for the code. Examples are various multiline messages > and complicated nested code where refactoring to a separate function > doesn't make sense. > > Keeping the old 80 column limit is not really an option anymore. > Standard terminal sizes have one of 80, 100 or 132 columns. > Given the monitor resolutions many people have nowadays, I think it is > safe to say that you can fit two xterms with 100 columns horizonally > next to each other. 100 columns should also be sufficient for a msg_p* > of roughly 80 columns of text. > 132 columns provide more leeway, but IMHO that would be too wide for > good readability (and my screen can't fit two xterms side-by-side anymore). > > Of course some files have sections where any column limit is not > acceptable (board lists etc.), but the column limit violations should be > limited to the affected file sections, not whole files. > > Comments? > I'd like to get this decided today or tomorrow so we know where we need > line breaks in Stefan Tauner's new struct flashchip patch. i would prefer more complex rules than a simple "break the line at a maximum of n chars or die". increasing the hard limit would lower the frequency for anger-inducing line breaks on my side a bit, but won't solve the problem completely. i think i once proposed something like the following after you went offline, so i am repeating it now in an RFC. x chars soft limit (e.g. 90); y chars hard limit (e.g. 120); o chars overhang (< 5 or "common sense"). before reaching x one should try to break at a convenient spot like logical operators for multi-term conditions, parameter names etc just like one usually does before hard limits. most printed text strings should have their line breaks before x at usual indention depths ((1 to 3)*8). expressions that fit in y chars completely, but not in x should *not* be split. same exceptions for long tables as used so far. optional: expressions that fit in y + o chars, should not be split, just for the sake of obeying the limit i.e. if it would make the expression less readable (e.g. the case where ";" breaks the limit and i start swearing :P) optional #2: neither limit should apply to printed text strings. they should be broken at "\n" no matter how far that is. the rationale is that it is possible to see if they are sanely formatted without runtime tests. all of that could be replaced with a simple "we want to limit lines to ca. y chars, please think a bit and use common sense when breaking lines" rule imho. hard limits can never have enough rules/exceptions to match "common sense". of course i am ignoring personal preferences here, but i think i can cope better with "annoying" preferences of others when reviewing patches or getting feedback than with hard limits that make me write lines like "\tab\tab\tab i) {". :) -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Sun Mar 11 23:11:20 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sun, 11 Mar 2012 23:11:20 +0100 Subject: [flashrom] [PATCH] Make struct flashchip a field in struct flashctx instead of a complete copy. In-Reply-To: <1330218352-32388-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <4EFF7680.9040506@gmx.net> <1330218352-32388-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <4F5D2308.9060507@gmx.net> Am 26.02.2012 02:05 schrieb Stefan Tauner: > This is not tested very thoroughly, but it compiles and writing the dummy works. > Most of the transformation is quite obvious and painless (well, it was no pleasure, > so i would rather not rebase this often. :) > I have introduced dedicated struct flashchip variables where the functions use the > chip field a lot and some of those (not) introduced variables may be debatable, > but one gets at least a feeling how the code would look like with this change. > > One major FIXME is: the code allocates "the new field" while probing and copies > the data from the *const* struct flashchip in the flashchips.c array into it. > We need to free that sometime... it is probably obvious (scope of fill_flash), but i > have not looked into it yet and this is my reminder. I have answered that in annotations. > Signed-off-by: Stefan Tauner Good idea. It was too dangerous to do this directly before 0.9.5, but now that the tree has reopened, I think we can merge such a patch early in the cycle (now) and have enough time to get it tested. > diff --git a/cli_classic.c b/cli_classic.c > index 972043b..4bce7d7 100644 > --- a/cli_classic.c > +++ b/cli_classic.c > @@ -166,6 +166,7 @@ int main(int argc, char *argv[]) > const struct flashchip *flash; > struct flashctx flashes[3]; > struct flashctx *fill_flash; > + const struct flashchip *chip; > const char *name; > int namelen, opt, i, j; > int startchip = -1, chipcount = 0, option_index = 0, force = 0; > @@ -441,11 +442,13 @@ int main(int argc, char *argv[]) > } > } > > + fill_flash = &flashes[0]; Can you move this assignment back to where it was? > + chip = fill_flash->chip; And move this assignment together with the other one? > if (chipcount > 1) { > printf("Multiple flash chips were detected: \"%s\"", > - flashes[0].name); > + chip->name); Can you please use flashes[0].chip->name here to keep the code consistent? Besides that, do you have any idea why the current code is so screwed up? Moving a printf for flashes[0] outside a perfectly working for loop seems odd to me. It would be nice if you could just let the loop below start at i=0 and remove the chip name part from the printf above. > for (i = 1; i < chipcount; i++) > - printf(", \"%s\"", flashes[i].name); > + printf(", \"%s\"", flashes[i].chip->name); > printf("\nPlease specify which chip to use with the " > "-c option.\n"); > ret = 1; > @@ -464,7 +467,7 @@ int main(int argc, char *argv[]) > /* This loop just counts compatible controllers. */ > for (j = 0; j < registered_programmer_count; j++) { > pgm = ®istered_programmers[j]; > - if (pgm->buses_supported & flashes[0].bustype) > + if (pgm->buses_supported & chip->bustype) flashes[0].chip->bustype please. Note to self: This code needs to be audited again if it should really run against flashes[0] here. It looks odd, at least when looking only at the patch. > compatible_programmers++; > } > if (compatible_programmers > 1) > @@ -491,19 +494,17 @@ int main(int argc, char *argv[]) > goto out_shutdown; > } else if (!chip_to_probe) { > /* repeat for convenience when looking at foreign logs */ > - tempstr = flashbuses_to_text(flashes[0].bustype); > + tempstr = flashbuses_to_text(chip->bustype); > msg_gdbg("Found %s flash chip \"%s\" (%d kB, %s).\n", > - flashes[0].vendor, flashes[0].name, > - flashes[0].total_size, tempstr); > + chip->vendor, chip->name, > + chip->total_size, tempstr); And the flashes[0].chip dance again. > free(tempstr); > } > > - fill_flash = &flashes[0]; > - > - check_chip_supported(fill_flash); > + check_chip_supported(chip); > > - size = fill_flash->total_size * 1024; > - if (check_max_decode(fill_flash->pgm->buses_supported & fill_flash->bustype, size) && > + size = chip->total_size * 1024; > + if (check_max_decode(fill_flash->pgm->buses_supported & chip->bustype, size) && > (!force)) { > fprintf(stderr, "Chip is too big for this programmer " > "(-V gives details). Use --force to override.\n"); > diff --git a/flash.h b/flash.h > index 0dac13d..ed64512 100644 > --- a/flash.h > +++ b/flash.h > @@ -87,6 +87,7 @@ enum chipbustype { > #define FEATURE_WRSR_EITHER (FEATURE_WRSR_EWSR | FEATURE_WRSR_WREN) > > struct flashctx; > +typedef int (erasefunc_t)(struct flashctx *flash, unsigned int addr, unsigned int blocklen); > > struct flashchip { > const char *vendor; > @@ -135,7 +136,7 @@ struct flashchip { > } eraseblocks[NUM_ERASEREGIONS]; > /* a block_erase function should try to erase one block of size > * 'blocklen' at address 'blockaddr' and return 0 on success. */ > - int (*block_erase) (struct flashctx *flash, unsigned int blockaddr, unsigned int blocklen); > + erasefunc_t *block_erase; I really really hate that typedef. I wonder if we could keep the code here and use typeof() instead of the typedef elsewhere. > } block_erasers[NUM_ERASEFUNCTIONS]; > > int (*printlock) (struct flashctx *flash); > @@ -148,35 +149,14 @@ struct flashchip { > } voltage; > }; > > -/* struct flashctx must always contain struct flashchip at the beginning. */ > struct flashctx { > - const char *vendor; > - const char *name; > - enum chipbustype bustype; > - uint32_t manufacture_id; > - uint32_t model_id; > - int total_size; > - int page_size; > - int feature_bits; > - uint32_t tested; > - int (*probe) (struct flashctx *flash); > - int probe_timing; > - struct block_eraser block_erasers[NUM_ERASEFUNCTIONS]; > - int (*printlock) (struct flashctx *flash); > - int (*unlock) (struct flashctx *flash); > - int (*write) (struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len); > - int (*read) (struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len); > - struct voltage voltage; > - /* struct flashchip ends here. */ > - > + struct flashchip *chip; Yay! > chipaddr virtual_memory; > /* Some flash devices have an additional register space. */ > chipaddr virtual_registers; > struct registered_programmer *pgm; > }; > > -typedef int (erasefunc_t)(struct flashctx *flash, unsigned int addr, unsigned int blocklen); > - > #define TEST_UNTESTED 0 > > #define TEST_OK_PROBE (1 << 0) > diff --git a/flashrom.c b/flashrom.c > index cad043b..0b6cca3 100644 > --- a/flashrom.c > +++ b/flashrom.c > @@ -522,7 +522,7 @@ char *extract_programmer_param(const char *param_name) > } > > /* Returns the number of well-defined erasers for a chip. */ > -static unsigned int count_usable_erasers(const struct flashctx *flash) > +static unsigned int count_usable_erasers(const struct flashchip *flash) Do we want to count usable erasers for the current programmer (for chips with erase functions limited to certain buses)? If yes, please keep struct flashctx. > { > unsigned int usable_erasefunctions = 0; > int k; > @@ -941,32 +942,38 @@ int check_max_decode(enum chipbustype buses, uint32_t size) > int probe_flash(struct registered_programmer *pgm, int startchip, > struct flashctx *fill_flash, int force) > { > - const struct flashchip *flash; > + const struct flashchip *chip; > unsigned long base = 0; > char location[64]; > uint32_t size; > enum chipbustype buses_common; > char *tmp; > > - for (flash = flashchips + startchip; flash && flash->name; flash++) { > - if (chip_to_probe && strcmp(flash->name, chip_to_probe) != 0) > + for (chip = flashchips + startchip; chip && chip->name; chip++) { > + if (chip_to_probe && strcmp(chip->name, chip_to_probe) != 0) > continue; > - buses_common = pgm->buses_supported & flash->bustype; > + buses_common = pgm->buses_supported & chip->bustype; > if (!buses_common) > continue; > msg_gdbg("Probing for %s %s, %d kB: ", > - flash->vendor, flash->name, flash->total_size); > - if (!flash->probe && !force) { > + chip->vendor, chip->name, chip->total_size); > + if (!chip->probe && !force) { > msg_gdbg("failed! flashrom has no probe function for " > "this flash chip.\n"); > continue; > } > > - size = flash->total_size * 1024; > + size = chip->total_size * 1024; > check_max_decode(buses_common, size); > > /* Start filling in the dynamic data. */ > - memcpy(fill_flash, flash, sizeof(struct flashchip)); > + /* FIXME: when to free? */ Tricky, but I think we are lucky here because there is only one path which returns a non-match and that's the only path where we want to free. I have annotated that place a few hunks below. > + fill_flash->chip = malloc(sizeof(struct flashchip)); > + if (fill_flash->chip == NULL) { > + msg_gerr("%s: out of memory.\n", __func__); > + return -1; Can we return an explicit code for OOM here or would that screw up the caller? > + } > + memcpy(fill_flash->chip, chip, sizeof(struct flashchip)); > fill_flash->pgm = pgm; > > base = flashbase ? flashbase : (0xffffffff - size + 1); > @@ -985,11 +992,11 @@ int probe_flash(struct registered_programmer *pgm, int startchip, > * one for this programmer interface and thus no other chip has > * been found on this interface. > */ > - if (startchip == 0 && fill_flash->model_id == SFDP_DEVICE_ID) { > + if (startchip == 0 && chip->model_id == SFDP_DEVICE_ID) { We used fill_flash for consistency (i.e. only use the rw copy of the flashchip entry) here, and if we want to keep that consistency, it's fill_flash->chip->model_id. > msg_cinfo("===\n" > "SFDP has autodetected a flash chip which is " > "not natively supported by flashrom yet.\n"); > - if (count_usable_erasers(fill_flash) == 0) > + if (count_usable_erasers(chip) == 0) See the count_usable_erasers comment a few hunks above. > msg_cinfo("The standard operations read and " > "verify should work, but to support " > "erase, write and all other " > @@ -1010,15 +1017,15 @@ int probe_flash(struct registered_programmer *pgm, int startchip, > } > > if (startchip == 0 || > - ((fill_flash->model_id != GENERIC_DEVICE_ID) && > - (fill_flash->model_id != SFDP_DEVICE_ID))) > + ((chip->model_id != GENERIC_DEVICE_ID) && > + (chip->model_id != SFDP_DEVICE_ID))) See above for fill_flash->chip->model_id. > break; > > notfound: > programmer_unmap_flash_region((void *)fill_flash->virtual_memory, size); > } > > - if (!flash || !flash->name) > + if (!chip || !chip->name) Here you have to free flash->chip. No other freeing is needed AFAICS. > return -1; > > #if CONFIG_INTERNAL == 1 > @@ -1028,27 +1035,27 @@ notfound: > #endif > snprintf(location, sizeof(location), "on %s", programmer_table[programmer].name); > > - tmp = flashbuses_to_text(flash->bustype); > + tmp = flashbuses_to_text(chip->bustype); fill_flash->chip->... > msg_cinfo("%s %s flash chip \"%s\" (%d kB, %s) %s.\n", > - force ? "Assuming" : "Found", fill_flash->vendor, > - fill_flash->name, fill_flash->total_size, tmp, location); > + force ? "Assuming" : "Found", chip->vendor, > + chip->name, chip->total_size, tmp, location); dito > free(tmp); > > /* Flash registers will not be mapped if the chip was forced. Lock info > * may be stored in registers, so avoid lock info printing. > */ > if (!force) > - if (fill_flash->printlock) > - fill_flash->printlock(fill_flash); > + if (chip->printlock) dito > + chip->printlock(fill_flash); dito > > /* Return position of matching chip. */ > - return flash - flashchips; > + return chip - flashchips; > } > > int verify_flash(struct flashctx *flash, uint8_t *buf) > @@ -1308,7 +1315,7 @@ static int walk_eraseregions(struct flashctx *flash, int erasefunction, > return 0; > } > > -static int check_block_eraser(const struct flashctx *flash, int k, int log) > +static int check_block_eraser(const struct flashchip *flash, int k, int log) No conversion, please. See below. > { > struct block_eraser eraser = flash->block_erasers[k]; > > @@ -1357,7 +1366,7 @@ int erase_and_write_flash(struct flashctx *flash, uint8_t *oldcontents, > break; > } > msg_cdbg("Trying erase function %i... ", k); > - if (check_block_eraser(flash, k, 1)) > + if (check_block_eraser(chip, k, 1)) This one is debatable. We know that some chips support certain erase functions only on some buses, e.g. Sharp LHF00L04 which can do a full-chip erase only if it is accesses in A/A Mux mode, not in FWH mode. My mid-term plan is to augment erase functions (and possibly also read/write/probe) with a list of valid buses for any given function. > continue; > usable_erasefunctions--; > ret = walk_eraseregions(flash, k, &erase_and_write_block_helper, > @@ -1550,14 +1559,6 @@ int selfcheck(void) > msg_gerr("Flashchips table miscompilation!\n"); > ret = 1; > } > - /* Check that virtual_memory in struct flashctx is placed directly > - * after the members copied from struct flashchip. > - */ > - if (sizeof(struct flashchip) != > - offsetof(struct flashctx, virtual_memory)) { > - msg_gerr("struct flashctx broken!\n"); > - ret = 1; > - } Glad to lose this hunk! > for (flash = flashchips; flash && flash->name; flash++) > if (selfcheck_eraseblocks(flash)) > ret = 1; > @@ -1642,7 +1643,7 @@ void check_chip_supported(const struct flashctx *flash) > /* FIXME: This function signature needs to be improved once doit() has a better > * function signature. > */ > -int chip_safety_check(struct flashctx *flash, int force, int read_it, > +int chip_safety_check(const struct flashchip *flash, int force, int read_it, Can you please make sure that all pointers to struct flashchip are called "chip"? Otherwise grepping for "chip->" won't return all accesses to struct flashchip. The same comment applies to other hunks of the patch as well. However, chip_safety_check can not be converted to a different calling convention because we need struct flashctx here. Admittedly we don't need it right now, but we will need it once programmer_may_write is part of the programmer struct in struct flashctx. > int write_it, int erase_it, int verify_it) > { > if (!programmer_may_write && (write_it || erase_it)) { > @@ -1710,9 +1711,10 @@ int doit(struct flashctx *flash, int force, const char *filename, int read_it, > uint8_t *oldcontents; > uint8_t *newcontents; > int ret = 0; > - unsigned long size = flash->total_size * 1024; > + const struct flashchip *chip = flash->chip; > + unsigned long size = chip->total_size * 1024; > > - if (chip_safety_check(flash, force, read_it, write_it, erase_it, verify_it)) { > + if (chip_safety_check(chip, force, read_it, write_it, erase_it, verify_it)) { No conversion, please. See above. > msg_cerr("Aborting.\n"); > ret = 1; > goto out_nofree; > @@ -1791,7 +1793,7 @@ int doit(struct flashctx *flash, int force, const char *filename, int read_it, > > // This should be moved into each flash part's code to do it > // cleanly. This does the job. > - handle_romentries(flash, oldcontents, newcontents); > + handle_romentries(chip, oldcontents, newcontents); No conversion, please. See two hunks below. > > // //////////////////////////////////////////////////////////// > > diff --git a/jedec.c b/jedec.c > index 69c0c0c..5c549a2 100644 > --- a/jedec.c > +++ b/jedec.c > @@ -93,7 +93,7 @@ void data_polling_jedec(const struct flashctx *flash, chipaddr dst, > msg_cdbg("%s: excessive loops, i=0x%x\n", __func__, i); > } > > -static unsigned int getaddrmask(struct flashctx *flash) > +static unsigned int getaddrmask(const struct flashchip *flash) Hm yes, const makes sense. In fact, const makes sense in many more places. > { > switch (flash->feature_bits & FEATURE_ADDR_MASK) { > case FEATURE_ADDR_FULL: > diff --git a/layout.c b/layout.c > index 90d3cce..f0f7a6f 100644 > --- a/layout.c > +++ b/layout.c > @@ -302,7 +302,7 @@ romlayout_t *get_next_included_romentry(unsigned int start) > return best_entry; > } > > -int handle_romentries(struct flashctx *flash, uint8_t *oldcontents, uint8_t *newcontents) > +int handle_romentries(const struct flashchip *flash, uint8_t *oldcontents, uint8_t *newcontents) Will we have to change this back once we try to merge the layout patches? In that case, we need some way to get permissible regions from the programmer, and that would probably be done via the programmer struct. > { > unsigned int start = 0; > romlayout_t *entry; > diff --git a/spi25.c b/spi25.c > index b7e8189..2accb6d 100644 > --- a/spi25.c > +++ b/spi25.c > @@ -416,22 +416,23 @@ void spi_prettyprint_status_register_sst25vf040b(uint8_t status) > > int spi_prettyprint_status_register(struct flashctx *flash) > { > + const struct flashchip *chip = flash->chip; const struct flashchip here, but just struct flashchip in the next hunk. What's the reason? Same question applies to other hunks of the patch as well. > uint8_t status; > > status = spi_read_status_register(flash); > msg_cdbg("Chip status register is %02x\n", status); > - switch (flash->manufacture_id) { > + switch (chip->manufacture_id) { > case ST_ID: > - if (((flash->model_id & 0xff00) == 0x2000) || > - ((flash->model_id & 0xff00) == 0x2500)) > + if (((chip->model_id & 0xff00) == 0x2000) || > + ((chip->model_id & 0xff00) == 0x2500)) > spi_prettyprint_status_register_st_m25p(status); > break; > case MACRONIX_ID: > - if ((flash->model_id & 0xff00) == 0x2000) > + if ((chip->model_id & 0xff00) == 0x2000) > spi_prettyprint_status_register_st_m25p(status); > break; > case SST_ID: > - switch (flash->model_id) { > + switch (chip->model_id) { > case 0x2541: > spi_prettyprint_status_register_sst25vf016(status); > break; > @@ -862,16 +863,17 @@ static int spi_write_status_register_wren(struct flashctx *flash, int status) > > int spi_write_status_register(struct flashctx *flash, int status) > { > + struct flashchip *chip = flash->chip; > int ret = 1; > > - if (!(flash->feature_bits & (FEATURE_WRSR_WREN | FEATURE_WRSR_EWSR))) { > + if (!(chip->feature_bits & (FEATURE_WRSR_WREN | FEATURE_WRSR_EWSR))) { > msg_cdbg("Missing status register write definition, assuming " > "EWSR is needed\n"); > - flash->feature_bits |= FEATURE_WRSR_EWSR; > + chip->feature_bits |= FEATURE_WRSR_EWSR; > } > - if (flash->feature_bits & FEATURE_WRSR_WREN) > + if (chip->feature_bits & FEATURE_WRSR_WREN) > ret = spi_write_status_register_wren(flash, status); > - if (ret && (flash->feature_bits & FEATURE_WRSR_EWSR)) > + if (ret && (chip->feature_bits & FEATURE_WRSR_EWSR)) > ret = spi_write_status_register_ewsr(flash, status); > return ret; > } I think the next iteration of this patch can go in. Regards, Carl-Daniel -- http://www.hailfinger.org/ From svetoslav.trochev at gmail.com Sun Mar 11 23:44:35 2012 From: svetoslav.trochev at gmail.com (Svetoslav Trochev) Date: Sun, 11 Mar 2012 15:44:35 -0700 Subject: [flashrom] Support for ASRock 890GX Extreme3 mainboard In-Reply-To: <201203010009.q2109Eae014679@mail2.student.tuwien.ac.at> References: <201203010009.q2109Eae014679@mail2.student.tuwien.ac.at> Message-ID: Hi Stefan, Yes, I can confirm that flashrom v0.9.5.2 works. I successfully tested all operations: Read, Erase and Write. I used OEM flash image version 3.10 from ASRock's website. Filename: '890GXE3.10'. The flash chip was W25Q080BV. Thanks, Svetoslav Trochev. P.S. I am not attaching output logs, but I have them and if there is an interest I can send them at any time. From svetoslav.trochev at gmail.com Sun Mar 11 23:19:03 2012 From: svetoslav.trochev at gmail.com (Svetoslav Trochev) Date: Sun, 11 Mar 2012 15:19:03 -0700 Subject: [flashrom] ASRock H67M: Board Testing In-Reply-To: <201203042235.q24MZlmR024774@mail2.student.tuwien.ac.at> References: <201203042235.q24MZlmR024774@mail2.student.tuwien.ac.at> Message-ID: Hi Stefan and everybody here, Today, I tested this board with flashrom v0.9.5.2 again and looks like it needs "Board-Enable" code in order to unlock the flash ship. I am attaching the output log from '-Vr' operation that failed. What else I can do to help? Best regards, Svetoslav Trochev [cut] > the flashrom -V output alone was enough in this case already, thanks. > i have added the board to our list and will commit that later. > > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner -------------- next part -------------- flashrom v0.9.5.2-runknown on Linux 3.2.0-17-generic (x86_64), built with libpci 3.1.8, GCC 4.6.3, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 2492M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 1001 us, 10000 myus = 9998 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "To Be Filled By O.E.M." DMI string system-product-name: "To Be Filled By O.E.M." DMI string system-version: "To Be Filled By O.E.M." DMI string baseboard-manufacturer: "ASRock" DMI string baseboard-product-name: "H67M" DMI string baseboard-version: " " DMI string chassis-type: "Desktop" Found chipset "Intel H67" with PCI ID 8086:1c4a. Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x1 0xffe00000/0xffa00000 FWH IDSEL: 0x1 0xffd80000/0xff980000 FWH IDSEL: 0x2 0xffd00000/0xff900000 FWH IDSEL: 0x2 0xffc80000/0xff880000 FWH IDSEL: 0x3 0xffc00000/0xff800000 FWH IDSEL: 0x3 0xff700000/0xff300000 FWH IDSEL: 0x4 0xff600000/0xff200000 FWH IDSEL: 0x5 0xff500000/0xff100000 FWH IDSEL: 0x6 0xff400000/0xff000000 FWH IDSEL: 0x7 0xfff80000/0xffb80000 FWH decode enabled 0xfff00000/0xffb00000 FWH decode enabled 0xffe80000/0xffa80000 FWH decode enabled 0xffe00000/0xffa00000 FWH decode enabled 0xffd80000/0xff980000 FWH decode enabled 0xffd00000/0xff900000 FWH decode enabled 0xffc80000/0xff880000 FWH decode enabled 0xffc00000/0xff800000 FWH decode enabled 0xff700000/0xff300000 FWH decode disabled 0xff600000/0xff200000 FWH decode disabled 0xff500000/0xff100000 FWH decode disabled 0xff400000/0xff000000 FWH decode disabled Maximum FWH chip size: 0x100000 bytes BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0 Root Complex Register Block address = 0xfed1c000 GCS = 0xc04: BIOS Interface Lock-Down: disabled, Boot BIOS Straps: 0x3 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3800 0x04: 0x6008 (HSFS) HSFS: FDONE=0, FCERR=0, AEL=0, BERASE=1, SCIP=0, FDOPSS=1, FDV=1, FLOCKDN=0 Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done 0x06: 0x0000 (HSFC) HSFC: FGO=0, FCYCLE=0, FDBC=0, SME=0 0x08: 0x00010000 (FADDR) 0x50: 0x00000a0b (FRAP) BMWAG 0x00, BMRAG 0x00, BRWA 0x0a, BRRA 0x0b 0x54: 0x000f0000 FREG0: WARNING: Flash Descriptor region (0x00000000-0x0000ffff) is read-only. 0x58: 0x07ff0400 FREG1: BIOS region (0x00400000-0x007fffff) is read-write. 0x5C: 0x03ff0010 FREG2: WARNING: Management Engine region (0x00010000-0x003fffff) is locked. Please send a verbose log to flashrom at flashrom.org if this board is not listed on http://flashrom.org/Supported_hardware#Supported_mainboards yet. Writes have been disabled. You can enforce write support with the ich_spi_force programmer option, but it will most likely harm your hardware! If you force flashrom you will get no support if something breaks. 0x90: 0xc4 (SSFS) SSFS: SCIP=0, FDONE=1, FCERR=0, AEL=0 0x91: 0xf80000 (SSFC) SSFC: SCGO=0, ACS=0, SPOP=0, COP=0, DBC=0, SME=0, SCF=0 0x94: 0x5006 (PREOP) 0x96: 0x463b (OPTYPE) 0x98: 0x05d80302 (OPMENU) 0x9C: 0xc79f0190 (OPMENU+4) 0xA0: 0x00000000 (BBAR) 0xC4: 0x00002005 (LVSCC) LVSCC: BES=0x1, WG=1, WSR=0, WEWS=0, EO=0x20, VCL=0 0xC8: 0x00002005 (UVSCC) UVSCC: BES=0x1, WG=1, WSR=0, WEWS=0, EO=0x20, VCL=0 0xD0: 0x00000000 (FPB) SPI Read Configuration: prefetching disabled, caching enabled, OK. The following protocols are supported: FWH, SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for SST SST25LF040A, 512 kB: program_opcodes: preop=5006 optype=462b opmenu=05ab0302c79f0190 on-the-fly OPCODE (0xAB) re-programmed, op-pos=2 probe_spi_res2: id1 0x16, id2 0x16 Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0x16, id2 0x16 Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xef, id2 0x16 Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xef, id2 0x16 Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xef, id2 0x16 Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Chip status register is 00 Found Winbond flash chip "W25Q64" (8192 kB, SPI) at physical address 0xff800000. Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Unknown SFDP-capable chip, 0 kB: program_opcodes: preop=5006 optype=462b opmenu=055a0302c79f0190 on-the-fly OPCODE (0x5A) re-programmed, op-pos=2 No SFDP signature found. Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4017 Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xef, id2 0x16 Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x08, id2 0xe8, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0x08, id2 0xe8, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0x08, id2 0xe8, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0x90, id2 0xd7, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x08, id2 0xe8, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0x90, id2 0xd7, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x08, id2 0xe8, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Found Winbond flash chip "W25Q64" (8192 kB, SPI). This chip may contain one-time programmable memory. flashrom cannot read and may never be able to write it, hence it may not be able to completely clone the contents of this chip (see man page for details). Reading flash... SSFS: SCIP=0, FDONE=1, FCERR=1, AEL=0 SSFC: SCGO=0, ACS=0, SPOP=0, COP=1, DBC=63, SME=0, SCF=0 Running OPCODE 0x03 failed at address 0x010000 (payload length was 64). FAILED. Restoring MMIO space at 0x7fd112f168a0 Restoring MMIO space at 0x7fd112f1689c Restoring MMIO space at 0x7fd112f16898 Restoring MMIO space at 0x7fd112f16896 Restoring MMIO space at 0x7fd112f16894 Restoring PCI config space for 00:1f:0 reg 0xdc From svetoslav.trochev at gmail.com Sun Mar 11 23:53:27 2012 From: svetoslav.trochev at gmail.com (Svetoslav Trochev) Date: Sun, 11 Mar 2012 15:53:27 -0700 Subject: [flashrom] Help sourcing flash chip W25Q25BV in PDIP8 package. Message-ID: Hi Everyone, I am working on testing flashrom on Zotac ZBOX-AD02-PLUS-U. It uses Winbond W25Q25BV. I tried to get one from Digi-Key and Mouser Electronics, but they don't have it. I scavenge all my surplus boards and laptops, but none of them is using it. Any ideas how to get one? Thanks, Svetoslav Trochev From stefan.tauner at student.tuwien.ac.at Mon Mar 12 03:11:13 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 12 Mar 2012 03:11:13 +0100 Subject: [flashrom] [PATCH] Add Documentation regarding unlocking the ME region on Intel chipsets. In-Reply-To: <1319150349-24326-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <1319150349-24326-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <1331518273-12563-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Signed-off-by: Stefan Tauner --- Documentation/mysteries_intel.txt | 81 ++++++++++++++++++++++++++++++++++++- 1 files changed, 80 insertions(+), 1 deletions(-) diff --git a/Documentation/mysteries_intel.txt b/Documentation/mysteries_intel.txt index d6d3dfb..8a9a113 100644 --- a/Documentation/mysteries_intel.txt +++ b/Documentation/mysteries_intel.txt @@ -15,4 +15,83 @@ See also http://www.flashrom.org/pipermail/flashrom/2011-August/007606.html = Unlocking the ME region = -TODO + If the ME region is locked by the FRAP register in descriptor mode, the host + software is not allowed to read or write any address inside that region. There + are different ways to unlock access: + + - a pin strap: Flash Descriptor Security Override Strap (as indicated by the + Flash Descriptor Override Pin Strap Status (FDOPSS) in HSFS. That pin is + probably not accessible to end users on consumer boards (every Intel doc i + have seen stresses that this is for debugging in manufacturing only and + should not be available for end users). + The ME indicates this in bits [19:16] (Operation Mode) in the HFS register of + the HECI/MEI PCI device by setting them to 4 (SECOVR_JMPR) [MODE_CTRL]. + + - Intel Management Engine BIOS Extension (MEBx) Disable This option may be + available to end users on some boards usually accessible by hitting + ctrl+p after BIOS POST. Quote: "???Disabling??? the Intel ME does not really + disable it: it causes the Intel ME code to be halted at an early stage of + the Intel ME???s booting so that the system has no traffic originating from + the Intel ME on any of the buses." [MEBX] + The ME indicates this in bits [19:16] (Operation Mode) in the HFS register of + the HECI/MEI PCI device by setting them to 3 (Soft Temporary Disable) + [MODE_CTRL]. + + - Previous to Ibex Peak/5 Series chipsets removing the DIMM from slot (or + channel?) #0 disables the ME completely, which may give the host access to + the ME region. + + - HMRFPO (Host ME Region Flash Protection Override) Enable MEI command + This is the most interesting one because it allows to temporarily disable + the ME region protection by software. The ME indicates this in bits [19:16] + (Operation Mode) in the HFS register of the HECI/MEI PCI device by setting + them to 5 (SECOVER_MEI_MSG) [MODE_CTRL]. + +== MEI/HECI == + Communication between the host software and the different services provided by + the ME is done via a packet-based protocol that uses MMIO transfers to one or + more virtual PCI devices. Upon this layer there exist various services that can + be used to read out hardware management values (e.g. temperatures, fan speeds + etc.). The lower levels of that protocol are well documented: + The locations/offsets of the PCI MMIO registers are noted in the chipset + datasheets. The actually communication is documented in a whitepaper [DCMI] and + an outdated as well as a current Linux kernel implementation (currently in + staging/ exist [KERNEL]. There exists a patch that re-implements this in user + space (as part of flashrom). + +== Problems == + The problem is that only very few higher level protocols are documented publicly, + especially the bunch of messages that contain the HMRFPO commands is probably + well protected and only documented in ME-specific docs and the BIOS writer's + guides. We are aware of a few leaked documents though that give us a few hints + about it, but nothing substantial regarding its implementation. + + The documents are somewhat contradicting each other in various points which + might be due to factual changes in process of time or due to the different + capabilities of the ME firmwares, example: + + Intel's Flash Programming Tool (FPT) "automatically stops ME writing to SPI + ME Region, to prevent both writing at the same time, causing data corruption." [ME8] + + "FPT is not HMRFPO-capable, so needs [the help of the FDOPS pin] HDA_SDO if + used to update the ME Region." [SPS] + + When looking at the various ME firmware editions (and different chipsets), things + get very unclear. Some docs say that HMRFPO needs to be sent before End-of-POST + (EOP), others say that the ME region can be updated in the field or that some + vendor tools use it for updates. This needs to be investigated further before + drawing any conclusion. + +[MODE_CTRL] Client Platform Enabling Tour: Platform Software + Document Number: 439167, Revision 1.2, page 52 +[MEBX] Intel?? Management Engine BIOS Extension (MEBX) User???s Guide + Revision 1.2, Section 3.1 and 3.5 +[DCMI] DCMI Host Interface Specification + Revision 1.0 +[KERNEL] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=drivers/staging/mei;hb=HEAD +[SPI_PROG] Ibex Peak SPI Programming Guide + Document Number: 403598, Revision 1.3, page 79 +[ME8] Manufacturing with Intel?? Management Engine (ME) Firmware 8.X on Intel 7 Series + Revision 2.0, page 59 +[SPS] Manufacturing with Intel?? Management Engine (ME) on Intel?? C600 Series Chipset 1 for Romley Server 2 Platforms using Server Platform Services (SPS) Firmware + Revision 2.2, page 51 -- 1.7.1 From stefan.tauner at student.tuwien.ac.at Mon Mar 12 15:58:38 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 12 Mar 2012 15:58:38 +0100 Subject: [flashrom] Help sourcing flash chip W25Q25BV in PDIP8 package. In-Reply-To: References: Message-ID: <201203121458.q2CEwcBZ026955@mail2.student.tuwien.ac.at> On Sun, 11 Mar 2012 15:53:27 -0700 Svetoslav Trochev wrote: > Hi Everyone, > > I am working on testing flashrom on Zotac ZBOX-AD02-PLUS-U. It uses > Winbond W25Q25BV. I tried to get one from Digi-Key and Mouser > Electronics, but they don't have it. I scavenge all my surplus boards > and laptops, but none of them is using it. Any ideas how to get one? > Hi, the common 25 series chips of any major flash chip vendor are pretty much interchangeable, even a different may work without problems, but i am not sure if the bios would handle that correctly. please note that you have two times "W25Q25BV" in your mail although the model in your board is "W25Q32(BV)". neither digi-key nor mouser seem to have 32M dip chips though... rs has two amic chips: https://rs-online.com/web/c/halbleiter/ics-speicher/flash/?sort-by=default&sort-order=default&applied-dimensions=4294875848,4294871909&lastAttributeSelectedBlock=4294959377 they are both untested in flashrom though.. the one with Q in the name has even a non-standard (and unimplemented) unlocking method... might be interesting if you want to code something too :) farnell seems to also have the same amic chips but not in stock. you could also try local "BIOS repair" shops etc, but they are usually very expensive. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Mon Mar 12 16:26:43 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 12 Mar 2012 16:26:43 +0100 Subject: [flashrom] ASRock H67M: Board Testing In-Reply-To: References: <201203042235.q24MZlmR024774@mail2.student.tuwien.ac.at> Message-ID: <201203121526.q2CFQhoB029211@mail2.student.tuwien.ac.at> On Sun, 11 Mar 2012 15:19:03 -0700 Svetoslav Trochev wrote: > 0x50: 0x00000a0b (FRAP) > BMWAG 0x00, BMRAG 0x00, BRWA 0x0a, BRRA 0x0b > 0x54: 0x000f0000 FREG0: WARNING: Flash Descriptor region (0x00000000-0x0000ffff) is read-only. > 0x58: 0x07ff0400 FREG1: BIOS region (0x00400000-0x007fffff) is read-write. > 0x5C: 0x03ff0010 FREG2: WARNING: Management Engine region (0x00010000-0x003fffff) is locked. > Please send a verbose log to flashrom at flashrom.org if this board is not listed on > http://flashrom.org/Supported_hardware#Supported_mainboards yet. > Writes have been disabled. You can enforce write support with the > ich_spi_force programmer option, but it will most likely harm your hardware! > If you force flashrom you will get no support if something breaks. > Hi Stefan and everybody here, > > Today, I tested this board with flashrom v0.9.5.2 again and looks like > it needs "Board-Enable" code in order to unlock the flash ship. I am > attaching the output log from '-Vr' operation that failed. What else I > can do to help? there is no need for a board enable but for additional code in the chipset support (there are many more boards like yours with exactly the same problem, hence the warning above). i have posted more information about locked ME regions yesterday here: http://www.flashrom.org/pipermail/flashrom/2012-March/008964.html -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Mon Mar 12 16:28:58 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 12 Mar 2012 16:28:58 +0100 Subject: [flashrom] Support for ASRock 890GX Extreme3 mainboard In-Reply-To: References: <201203010009.q2109Eae014679@mail2.student.tuwien.ac.at> Message-ID: <201203121528.q2CFSwou031685@mail2.student.tuwien.ac.at> On Sun, 11 Mar 2012 15:44:35 -0700 Svetoslav Trochev wrote: > P.S. I am not attaching output logs, but I have them and if there is > an interest I can send them at any time. since the board is already known to be working, this is not needed. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Mon Mar 12 16:40:18 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 12 Mar 2012 16:40:18 +0100 Subject: [flashrom] N61PB-M2S: flashrom -v In-Reply-To: <20120311180335.093a8811.Susan.Scheibe@innere.med.uni-giessen.de> References: <20120311180335.093a8811.Susan.Scheibe@innere.med.uni-giessen.de> Message-ID: <201203121540.q2CFeIkU012873@mail2.student.tuwien.ac.at> On Sun, 11 Mar 2012 18:03:35 +0100 Susan Scheibe wrote: > at least with "nopat" on the kernel command line and accessible /dev/mem flashrom was able to flash this board successfully on a Gentoo hardened system. Probably it would have worked without all these safety measures, because flashrom was able to read and verify the existing bios before. Here is the output of flashrom -V: > Hello Susan, thanks for your report! I have added the board to our list of supported boards and will commit that later together with other small changes. Can you confirm, that the two files (the one you read before the write and the one you wrote) are different? that is very important because flashrom does skip equal blocks completely and in that case we do not know if erasing/writing really works. the verbose log indicates skipping by printing something like ":S" instead of ":EW" (erase, write) after the address ranges. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From svetoslav.trochev at gmail.com Mon Mar 12 19:24:06 2012 From: svetoslav.trochev at gmail.com (Svetoslav Trochev) Date: Mon, 12 Mar 2012 11:24:06 -0700 Subject: [flashrom] Help sourcing flash chip W25Q25BV in PDIP8 package. In-Reply-To: <201203121458.q2CEwcBZ026955@mail2.student.tuwien.ac.at> References: <201203121458.q2CEwcBZ026955@mail2.student.tuwien.ac.at> Message-ID: Oh... no. I can't believe how stupid I sounded in my previous e-mail. Sorry. Of course it is W25W32BV chip. I will take a look of amic chips you suggested. I am very rusty in C programming, but I will try. Thank you, Svetoslav Trochev On Mon, Mar 12, 2012 at 7:58 AM, Stefan Tauner wrote: > On Sun, 11 Mar 2012 15:53:27 -0700 > Svetoslav Trochev wrote: > >> Hi Everyone, >> >> I am working on testing flashrom on Zotac ZBOX-AD02-PLUS-U. It uses >> Winbond W25Q25BV. I tried to get one from Digi-Key and Mouser >> Electronics, but they don't have it. I scavenge all my surplus boards >> and laptops, but none of them is using it. Any ideas how to get one? >> > > Hi, > > the common 25 series chips of any major flash chip vendor are pretty > much interchangeable, even a different may work without problems, but i > am not sure if the bios would handle that correctly. please note that > you have two times "W25Q25BV" in your mail although the model in your > board is "W25Q32(BV)". neither digi-key nor mouser seem to have 32M dip > chips though... > > rs has two amic chips: > https://rs-online.com/web/c/halbleiter/ics-speicher/flash/?sort-by=default&sort-order=default&applied-dimensions=4294875848,4294871909&lastAttributeSelectedBlock=4294959377 > they are both untested in flashrom though.. the one with Q in the name > has even a non-standard (and unimplemented) unlocking method... might be > interesting if you want to code something too :) > > farnell seems to also have the same amic chips but not in stock. > you could also try local "BIOS repair" shops etc, but they are usually > very expensive. > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner From dhendrix at google.com Mon Mar 12 19:39:56 2012 From: dhendrix at google.com (David Hendricks) Date: Mon, 12 Mar 2012 11:39:56 -0700 Subject: [flashrom] 80/100/132 column line width policy In-Reply-To: <201203112200.q2BM0gZh011716@mail2.student.tuwien.ac.at> References: <4F5CC9EC.9030500@gmx.net> <201203112200.q2BM0gZh011716@mail2.student.tuwien.ac.at> Message-ID: On Sun, Mar 11, 2012 at 3:00 PM, Stefan Tauner < stefan.tauner at student.tuwien.ac.at> wrote: > all of that could be replaced with a simple "we want to limit lines to > ca. y chars, please think a bit and use common sense when breaking > lines" rule imho. hard limits can never have enough rules/exceptions to > match "common sense". of course i am ignoring personal preferences > here, but i think i can cope better with "annoying" preferences of > others when reviewing patches or getting feedback than with hard limits > that make me write lines like "\tab\tab\tab i) {". :) +1. Hard limits will never quite capture every rule and exception to match common sense. I dislike militant enforcement of code style, but I think 80 columns (with 8-char indentation) is a useful soft limit to aspire to for encouraging concise code. I think I'd rather see the 80 column soft-limit broken only when it makes sense to do so (arbitrary, I know), preferably only in affected areas (e.g. tables). Breaking the soft limit, whether it's to nest deeper or add a huge print statement to Flashrom's already verbose output, should take some careful consideration but should not distract from the ultimate goal of readability and maintainability. -- David Hendricks (dhendrix) Systems Software Engineer, Google Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From flashrom at mkarcher.dialup.fu-berlin.de Mon Mar 12 22:23:39 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Mon, 12 Mar 2012 22:23:39 +0100 Subject: [flashrom] 80/100/132 column line width policy In-Reply-To: <201203112200.q2BM0gZh011716@mail2.student.tuwien.ac.at> References: <4F5CC9EC.9030500@gmx.net> <201203112200.q2BM0gZh011716@mail2.student.tuwien.ac.at> Message-ID: <1331587419.4591.36.camel@localhost> Am Sonntag, den 11.03.2012, 23:00 +0100 schrieb Stefan Tauner: > > Keeping the old 80 column limit is not really an option anymore. > > Standard terminal sizes have one of 80, 100 or 132 columns. > > Given the monitor resolutions many people have nowadays, I think it is > > safe to say that you can fit two xterms with 100 columns horizonally > > next to each other. 100 columns should also be sufficient for a msg_p* > > of roughly 80 columns of text. > > 132 columns provide more leeway, but IMHO that would be too wide for > > good readability (and my screen can't fit two xterms side-by-side anymore). > > > > Of course some files have sections where any column limit is not > > acceptable (board lists etc.), but the column limit violations should be > > limited to the affected file sections, not whole files. > > > > Comments? > > I'd like to get this decided today or tomorrow so we know where we need > > line breaks in Stefan Tauner's new struct flashchip patch. > i would prefer more complex rules than a simple "break the line at a > maximum of n chars or die". > increasing the hard limit would lower the frequency for anger-inducing > line breaks on my side a bit, but won't solve the problem completely. The idea of line length limits is of course not to make anyone angry, but to make the code readable in a "typical" editing situation. Even if my window is just one or two characters too small, the last character gets chopped off at the right margin of the window. So there is a kind of hard limit for the person trying to read the code. But as windows can be resized, the limit is still kind-of soft. Defining some "window size that makes you able to see all the code" still would be a good idea to prevent a slow creep of steadily increasing line lenghts (like "Hey, it's just one char longer than this other line, so why is this line forbidden?!") Also having strings in the source as they are printed is a good idea, so we need at least 2*tabsize + strlen("msg_perr(\"") + strlen("\");") = 29 more chars than 80 characters (actually, for adding a "\n", even a bit more, but you seldomly hit the 80 exactly, so to have messages in a once indented block in a function body, you need 110 chars. On the other hand, the estimate of 200 chars/screen is quite reasonable for 4:3 monitors (which are still in use by a lot of programmers), so 100 chars to put to terminals next to each other sound sensible, too. > i think i once proposed something like the following after you went > offline, so i am repeating it now in an RFC. > > x chars soft limit (e.g. 90); > y chars hard limit (e.g. 120); > o chars overhang (< 5 or "common sense"). > > before reaching x one should try to break at a convenient spot like > logical operators for multi-term conditions, parameter names etc just > like one usually does before hard limits. > most printed text strings should have their line breaks before x at > usual indention depths ((1 to 3)*8). > expressions that fit in y chars completely, but not in x should *not* be > split. This means I need to have the window y chars wide to be able to read the expression. So the soft limit of x does not really help. Thus I don't get what the advantage of a soft limit so much lower than the hard limit is useful for. > optional: expressions that fit in y + o chars, should not be split, > just for the sake of obeying the limit i.e. if it would make the > expression less readable (e.g. the case where ";" breaks the limit and > i start swearing :P) And here you are kind-of re-inventing the soft-limit/hard-limit split, but this time with a 5 char difference instead of a 30 char difference. If the stuff that is not fitting my window is just a semicolon after a function call with unused result, you can be quite sure that what is "lost" is just a semicolon. For a printing function, even if the window is just up to the closing quote, the closing parenthesis and the semicolon need not be visible to understand the line. So a small overhang indeed makes sense, if you consider it as: "If I don't see the characters in the overhang, can I still be quite confident I know what the code does?" If you can answer that question with yes, use the overhang. > optional #2: neither limit should apply to printed text strings. they > should be broken at "\n" no matter how far that is. the rationale is > that it is possible to see if they are sanely formatted without runtime > tests. Makes sense too, if you require that the varargs for a printf-like function again are fitting the limit. Having to scroll the window to read a detailed message is fine with me, as long as everything except string constants is completely understandable without scrolling. > here, but i think i can cope better with "annoying" preferences of > others when reviewing patches or getting feedback than with hard limits > that make me write lines like "\tab\tab\tab i) {". :) Kind-of far-fetched example. Usually you should have a better line break point before that. Only exception where this might not be the case is: msg_pinfo("%d frobbing fizzles of furious foxes failed. Try teasing turkeys to\n" "testify the truth. Ignoring irratating ibises is immensely important\n", i); In this case, the only sensible line-break point really *is* before the i. As an occasional reader of that code, I might not be interested whether teasing turkeys or teasing tortoises is suggested, but I am more likely interested in knowing what value is printed. If the "i" gets pushed out of the window, I loose important information. So, yes, in this case, I am all for having "\tab\tab\tab i);" on a line. The comma may disappear past the right-border, as that comma is obviously there if the code compiles. So my 2 cents for the discussion is: - we should have a "suggested window size" (kind of equals your hard limit. - only "obvious" characters may be past that window size - verbose hints (where flashrom tries to write novels to the screen) are unaffected of the suggested window size, but the output needs to fit in 80 chars. with following softeninig applied - If some section of code is way more legible if you get some extra chars, take them. not being able to read a code side-by-side without horizontal scrolling of the window is the lesser evil compared to having lots of obnoxious line breaks. - BUT: Do not assume if you exceeded this limit by 3 chars according to the previous rule this is generally the new suggested window size! - Plain string constants may exceed the suggested window size in the "flashrom writes a novel" case. If the message itself is not multi-line, but just on one line, break it, if you have to break the line anyway for the printf varargs. - Use whatever space you need for tables, but don't make them wider than necessary. For the last item about making tables not wider than necessary I suggest to not use TABs inside a table, but *only* for indention of code blocks. This enables changing the tab size without everything falling apart - you just get a different indent steps. The consequence for tables is that if some column is determined to take 11 characters (including comma and space), you can just use them instead of needing to use 16 characters to get back to the TAB grid. If in a table one column entry is excessively long (e.g. a board name like "P9XGH3-Deluxe/Pro or P9XGH4-basic", this does not necessarily mean this excessive entry determines column width. Especially if it is followed by filler entries like NULL or 0 which can be squashed below nominal column width, so interesting fields do again line up. For the "suggested window size, I think carldani's value 100 would be a good start. Regards, Michael Karcher From stefan.tauner at student.tuwien.ac.at Tue Mar 13 01:16:26 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 13 Mar 2012 01:16:26 +0100 Subject: [flashrom] MSI GF615M-P33: flashrom -V In-Reply-To: <201203102110.06964.kbkj@telia.com> References: <201203102110.06964.kbkj@telia.com> Message-ID: <201203130016.q2D0GQx0007865@mail2.student.tuwien.ac.at> On Sat, 10 Mar 2012 21:10:06 +0100 Kim Johansson wrote: > flashrom v0.9.5.2-r1516 on Linux 2.6.35 (i686), built with libpci 2.2.10, GCC 4.2.4, little endian > flashrom is free software, get the source code at http://www.flashrom.org > > Calibrating delay loop... OS timer resolution is 1 usecs, 1276M loops per second, delay more than 10% too short (got 85% of expected delay), recalculating... 1271M loops per second, delay more than 10% too short (got 85% of expected delay), recalculating... 1279M loops per second, delay more than 10% too short (got 85% of expected delay), recalculating... 1296M loops per second, delay more than 10% too short (got 86% of expected delay), recalculating... 1280M loops per second, 10 myus = 8 us, 100 myus = 85 us, 1000 myus = 929 us, 10000 myus = 16865 us, 4 myus = 4 us, OK. > Initializing internal programmer > No coreboot table found. > DMI string system-manufacturer: "MICRO-STAR INTERNATIONAL CO.,LTD" > DMI string system-product-name: "MS-7597" > DMI string system-version: "1.0" > DMI string baseboard-manufacturer: "MICRO-STAR INTERNATIONAL CO.,LTD" > DMI string baseboard-product-name: "GF615M-P33 (MS-7597)" > DMI string baseboard-version: "1.0" > DMI string chassis-type: "Desktop" > Found chipset "NVIDIA MCP61" with PCI ID 10de:03e0. Enabling flash write... This chipset is not really supported yet. Guesswork... > ISA/LPC bridge reg 0x8a contents: 0x40, bit 6 is 1, bit 5 is 0 > Flash bus type is SPI > SPI on this chipset is WIP. Please report any success or failure by mailing us the verbose output to flashrom at flashrom.org, thanks! > Found SMBus device 10de:03eb at 00:01:1 > MCP SPI BAR is at 0xfec80000 > SPI control is 0x0012, req=0, gnt=0 > Please send the output of "flashrom -V" to flashrom at flashrom.org with > your board name: flashrom -V as the subject to help us finish support for your > chipset. Thanks. > OK. > The following protocols are supported: SPI. > [?] > No EEPROM/flash device found. > Note: flashrom can never write if the flash chip isn't found automatically. hello kim and thanks for your report! your log looks suspicious, maybe you have found a bug in our MCP61 code or the flash is not attached to the southbridge, but the fintek chip. could you please send us the output of "superiotool -dV", thanks. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From svn at flashrom.org Tue Mar 13 01:18:20 2012 From: svn at flashrom.org (repository service) Date: Tue, 13 Mar 2012 01:18:20 +0100 Subject: [flashrom] [commit] r1517 - trunk Message-ID: Author: stefanct Date: Tue Mar 13 01:18:19 2012 New Revision: 1517 URL: http://flashrom.org/trac/flashrom/changeset/1517 Log: Make the presence of Linux SPI headers mandatory for linux_spi. This solution is copied from ft2232_spi and is equally hacky. Thanks to M.K. for investigating the history of , which led to a hopefully more robust check. Signed-off-by: Stefan Tauner Acked-by: Michael Karcher Modified: trunk/Makefile trunk/linux_spi.c Modified: trunk/Makefile ============================================================================== --- trunk/Makefile Sat Mar 10 20:22:13 2012 (r1516) +++ trunk/Makefile Tue Mar 13 01:18:19 2012 (r1517) @@ -485,7 +485,8 @@ endif ifeq ($(CONFIG_LINUX_SPI), yes) -FEATURE_CFLAGS += -D'CONFIG_LINUX_SPI=1' +# This is a totally ugly hack. +FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "LINUX_SPI_SUPPORT := yes" .features && printf "%s" "-D'CONFIG_LINUX_SPI=1'") PROGRAMMER_OBJS += linux_spi.o endif @@ -671,6 +672,19 @@ endef export UTSNAME_TEST +define LINUX_SPI_TEST +#include +#include + +int main(int argc, char **argv) +{ + (void) argc; + (void) argv; + return 0; +} +endef +export LINUX_SPI_TEST + features: compiler @echo "FEATURES := yes" > .features.tmp ifeq ($(CONFIG_FT2232_SPI), yes) @@ -680,6 +694,13 @@ ( echo "found."; echo "FTDISUPPORT := yes" >> .features.tmp ) || \ ( echo "not found."; echo "FTDISUPPORT := no" >> .features.tmp ) endif +ifeq ($(CONFIG_LINUX_SPI), yes) + @printf "Checking if Linux SPI headers are present... " + @echo "$$LINUX_SPI_TEST" > .featuretest.c + @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) >/dev/null 2>&1 && \ + ( echo "yes."; echo "LINUX_SPI_SUPPORT := yes" >> .features.tmp ) || \ + ( echo "no."; echo "LINUX_SPI_SUPPORT := no" >> .features.tmp ) +endif @printf "Checking for utsname support... " @echo "$$UTSNAME_TEST" > .featuretest.c @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) >/dev/null 2>&1 && \ Modified: trunk/linux_spi.c ============================================================================== --- trunk/linux_spi.c Sat Mar 10 20:22:13 2012 (r1516) +++ trunk/linux_spi.c Tue Mar 13 01:18:19 2012 (r1517) @@ -17,6 +17,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#if CONFIG_LINUX_SPI == 1 + #include #include #include @@ -24,6 +26,7 @@ #include #include #include +#include #include #include #include "flash.h" @@ -176,3 +179,5 @@ return spi_write_chunked(flash, buf, start, len, ((unsigned int)getpagesize()) - 4); } + +#endif // CONFIG_LINUX_SPI == 1 From stefan.tauner at student.tuwien.ac.at Tue Mar 13 01:24:25 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 13 Mar 2012 01:24:25 +0100 Subject: [flashrom] [PATCH] Make the presence of Linux SPI headers mandatory for linux_spi. In-Reply-To: <1331417364.5523.16.camel@localhost> References: <201203101026.q2AAQNhE030594@mail2.student.tuwien.ac.at> <1331414584-17740-1-git-send-email-stefan.tauner@student.tuwien.ac.at> <1331417364.5523.16.camel@localhost> Message-ID: <201203130024.q2D0OPkf011346@mail2.student.tuwien.ac.at> On Sat, 10 Mar 2012 23:09:24 +0100 Michael Karcher wrote: > Am Samstag, den 10.03.2012, 22:23 +0100 schrieb Stefan Tauner: > > This solution is copied from ft2232_spi and is equally hacky. > > Thanks to M.K. for investigating the history of , which > > led to a hopefully more robust check. > > > > Signed-off-by: Stefan Tauner > Acked-by: Michael Karcher > > Well, this patch is not pretty, but that's inherent to the current > configuration infrastructure, and it is not the job of this patch to fix > that. thanks for the ack, committed in r1517. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Tue Mar 13 01:28:02 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 13 Mar 2012 01:28:02 +0100 Subject: [flashrom] working card In-Reply-To: References: Message-ID: <201203130028.q2D0S2Rw013006@mail2.student.tuwien.ac.at> On Fri, 9 Mar 2012 11:43:51 +0000 "RiCH @ gmail" wrote: > rfm6 at amd64:~/ipxe/src$ sudo flashrom -p nicintel > flashrom v0.9.4-r1394 on Linux 3.0.0-12-generic (i686), built with libpci > 3.1.7, GCC 4.6.1, little endian > flashrom is free software, get the source code at http://www.flashrom.org > > Calibrating delay loop... OK. > Found "Intel 82557/8/9/0/1 Ethernet Pro 100" (8086:1229, BDF 04:08.0). > === > This PCI device is UNTESTED. Please report the 'flashrom -p xxxx' output > to flashrom at flashrom.org if it works for you. Please add the name of your > PCI device to the subject. Thank you for your help! > [?] hi and thanks for your report, this card was already reported to work earlier. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From mbrown at greenmountainservices.com Tue Mar 13 01:53:22 2012 From: mbrown at greenmountainservices.com (Mark Brown) Date: Mon, 12 Mar 2012 20:53:22 -0400 Subject: [flashrom] Multiple NICs - not selectable Message-ID: <4F5E9A82.6050705@greenmountainservices.com> All, I have run into the following: #flashrom -p nicrealtek:00:0c.0 flashrom v0.9.2-r1141 on Linux 2.6.32-5-686 (i686), built with libpci 3.1.7, GCC 4.4.5 20100728 (prerelease), little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OK. Found "Realtek RTL8139/8139C/8139C+" (10ec:8139, BDF 00:0c.0). Found "Realtek RTL8139/8139C/8139C+" (10ec:8139, BDF 00:08.0). Error: Multiple supported PCI devices found. Use 'flashrom -p xxxx:bb:dd.f' to explicitly select the card with the given BDF (PCI bus, device, function). Should be correct to select the first PCI card right? Mark From mbrown at greenmountainservices.com Tue Mar 13 01:56:00 2012 From: mbrown at greenmountainservices.com (Mark Brown) Date: Mon, 12 Mar 2012 20:56:00 -0400 Subject: [flashrom] Realtek NIC (8169) In-Reply-To: <201203101015.q2AAFCnG021895@mail2.student.tuwien.ac.at> References: <4F58C121.6080204@greenmountainservices.com> <201203101015.q2AAFCnG021895@mail2.student.tuwien.ac.at> Message-ID: <4F5E9B20.5070709@greenmountainservices.com> Stefan, thanks for the clarification. I'd like to try the patch, will take a look at the patch in a few days - I have mostly rectangular versions (newer chip) but some board with older square versions, those are in use right now however. On a seperate note - does anyone have pointers to the packaging of BIOS images - e.g. how to spot the boot/pxe code in the bigger picture? Mark On 3/10/2012 5:15 AM, Stefan Tauner wrote: > On Thu, 08 Mar 2012 09:24:33 -0500 > Mark Brown wrote: > >> Wonder if there is a way to support the RTL8169 chipset, for SPI based >> programming. Very common and inexpensive card. > > we have an untested (probably outdated) patch for it: > http://patchwork.coreboot.org/patch/2489/ > the problem is, that there are multiple versions of the chipset. the > earlier revision(s?) have a square package and would support reading > and writing to the flash (and eeprom) chip. the latter and by far more > common version of the chipset does no longer support writing to the > flash chip. if your card(s) have a square RTL8169 chip then i can > update the patch for you to try. > >> >> Would be wonderful to support something like gPXE/iPXE PXE ROMs on those >> NICs. The typical 128kbit SPI rom/eprom/prom variations are often ATMEL >> or like. e.f. ATMEL518 93C64 > > please note that the chips with "93" in the name like above are eeproms > which are not supported at all by flashrom (please see > http://flashrom.org/Supported_hardware#Supported_chips to get a general > idea what series of memory devices can (easily) be supported). > From stefan.tauner at student.tuwien.ac.at Tue Mar 13 02:07:51 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 13 Mar 2012 02:07:51 +0100 Subject: [flashrom] Realtek NIC (8169) In-Reply-To: <4F5E9B20.5070709@greenmountainservices.com> References: <4F58C121.6080204@greenmountainservices.com> <201203101015.q2AAFCnG021895@mail2.student.tuwien.ac.at> <4F5E9B20.5070709@greenmountainservices.com> Message-ID: <201203130107.q2D17p0f027537@mail2.student.tuwien.ac.at> On Mon, 12 Mar 2012 20:56:00 -0400 Mark Brown wrote: > On a seperate note - does anyone have pointers to the packaging of > BIOS images - e.g. how to spot the boot/pxe code in the bigger picture? looking at http://cgit.freedesktop.org/~libv/bios_extract is probably a good first step ;) if you have problems with the 8169 patch and can not figure them out yourself, ping me and i'll update it. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Tue Mar 13 02:11:59 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 13 Mar 2012 02:11:59 +0100 Subject: [flashrom] Multiple NICs - not selectable In-Reply-To: <4F5E9A82.6050705@greenmountainservices.com> References: <4F5E9A82.6050705@greenmountainservices.com> Message-ID: <201203130111.q2D1BxWf028876@mail2.student.tuwien.ac.at> On Mon, 12 Mar 2012 20:53:22 -0400 Mark Brown wrote: > All, > > I have run into the following: > > #flashrom -p nicrealtek:00:0c.0 > flashrom v0.9.2-r1141 on Linux 2.6.32-5-686 (i686), built with libpci > 3.1.7, GCC 4.4.5 20100728 (prerelease), little endian > flashrom is free software, get the source code at http://www.flashrom.org > > Calibrating delay loop... OK. > Found "Realtek RTL8139/8139C/8139C+" (10ec:8139, BDF 00:0c.0). > Found "Realtek RTL8139/8139C/8139C+" (10ec:8139, BDF 00:08.0). > Error: Multiple supported PCI devices found. Use 'flashrom -p xxxx:bb:dd.f' > to explicitly select the card with the given BDF (PCI bus, device, > function). > > Should be correct to select the first PCI card right? dunno about that *ancient* version (please update), but in the current version it would be flashrom -p nicrealtek:pci=00:0c.0 i think -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From kbkj at telia.com Tue Mar 13 09:39:55 2012 From: kbkj at telia.com (Kim Johansson) Date: Tue, 13 Mar 2012 09:39:55 +0100 Subject: [flashrom] MSI GF615M-P33: superiotool -dV In-Reply-To: <201203130016.q2D0GQx0007865@mail2.student.tuwien.ac.at> References: <201203102110.06964.kbkj@telia.com> <201203130016.q2D0GQx0007865@mail2.student.tuwien.ac.at> Message-ID: <201203130939.55652.kbkj@telia.com> Den Tuesday 13 March 2012 01.16.26 skrev Stefan Tauner: > On Sat, 10 Mar 2012 21:10:06 +0100 > > Kim Johansson wrote: > > flashrom v0.9.5.2-r1516 on Linux 2.6.35 (i686), built with libpci 2.2.10, > > GCC 4.2.4, little endian flashrom is free software, get the source code > > at http://www.flashrom.org > > > > Calibrating delay loop... OS timer resolution is 1 usecs, 1276M loops per > > second, delay more than 10% too short (got 85% of expected delay), > > recalculating... 1271M loops per second, delay more than 10% too short > > (got 85% of expected delay), recalculating... 1279M loops per second, > > delay more than 10% too short (got 85% of expected delay), > > recalculating... 1296M loops per second, delay more than 10% too short > > (got 86% of expected delay), recalculating... 1280M loops per second, 10 > > myus = 8 us, 100 myus = 85 us, 1000 myus = 929 us, 10000 myus = 16865 us, > > 4 myus = 4 us, OK. Initializing internal programmer > > No coreboot table found. > > DMI string system-manufacturer: "MICRO-STAR INTERNATIONAL CO.,LTD" > > DMI string system-product-name: "MS-7597" > > DMI string system-version: "1.0" > > DMI string baseboard-manufacturer: "MICRO-STAR INTERNATIONAL CO.,LTD" > > DMI string baseboard-product-name: "GF615M-P33 (MS-7597)" > > DMI string baseboard-version: "1.0" > > DMI string chassis-type: "Desktop" > > Found chipset "NVIDIA MCP61" with PCI ID 10de:03e0. Enabling flash > > write... This chipset is not really supported yet. Guesswork... ISA/LPC > > bridge reg 0x8a contents: 0x40, bit 6 is 1, bit 5 is 0 > > Flash bus type is SPI > > SPI on this chipset is WIP. Please report any success or failure by > > mailing us the verbose output to flashrom at flashrom.org, thanks! Found > > SMBus device 10de:03eb at 00:01:1 > > MCP SPI BAR is at 0xfec80000 > > SPI control is 0x0012, req=0, gnt=0 > > Please send the output of "flashrom -V" to flashrom at flashrom.org with > > your board name: flashrom -V as the subject to help us finish support for > > your chipset. Thanks. > > OK. > > The following protocols are supported: SPI. > > [?] > > No EEPROM/flash device found. > > Note: flashrom can never write if the flash chip isn't found > > automatically. > > hello kim and thanks for your report! > > your log looks suspicious, maybe you have found a bug in our MCP61 code > or the flash is not attached to the southbridge, but the fintek chip. > could you please send us the output of "superiotool -dV", thanks. -------------- next part -------------- superiotool r Probing for ALi Super I/O at 0x3f0... Failed. Returned data: id=0xffff, rev=0xff Probing for ALi Super I/O at 0x370... Failed. Returned data: id=0xffff, rev=0xff Probing for Fintek Super I/O at 0x2e... Failed. Returned data: vid=0xffff, id=0xffff Probing for Fintek Super I/O at 0x4e... Found Fintek F71889 (vid=0x3419, id=0x2307) at 0x4e Register dump: idx 20 21 23 24 25 26 27 28 2a 2b 2c 2d val 07 23 19 34 00 80 50 00 c0 c0 00 08 def 07 23 19 34 00 00 00 00 f0 30 00 08 LDN 0x00 (Floppy) idx 30 60 61 70 74 f0 f2 f4 val 01 03 f0 06 02 0e ff 00 def 01 03 f0 06 02 0e 03 00 LDN 0x01 (COM1) idx 30 60 61 70 f0 val 01 03 f8 04 00 def 01 03 f8 04 00 LDN 0x02 (COM2) idx 30 60 61 70 f0 f1 val 00 02 f8 03 00 44 def 01 02 f8 03 00 04 LDN 0x03 (Parallel port) idx 30 60 61 70 74 f0 val 01 03 78 07 04 3c def 01 03 78 07 03 42 LDN 0x04 (Hardware monitor) idx 30 60 61 70 val 01 0a 00 00 def 01 02 95 00 LDN 0x05 (Keyboard) idx 30 60 61 70 72 fe val 01 00 60 01 0c 01 def 01 00 60 01 0c 81 LDN 0x06 (GPIO) idx 80 81 82 83 90 91 92 93 a0 a1 a2 a3 b0 b1 b2 c0 c1 c2 c3 d0 d1 d2 d3 e0 e1 e2 e3 f0 f1 f2 f3 fe ff val 00 ff 00 00 00 ff ff 00 00 1f 1f 00 00 ff 00 00 ff ff 00 80 ff 9a 00 08 7f 68 00 40 7f 50 40 15 1c def 00 ff NA 00 00 ff NA 00 00 1f NA 00 00 ff NA 00 ff NA 00 00 ff NA 00 00 7f NA 00 00 7f NA 00 00 00 LDN 0x07 (VID) idx 30 60 61 val 00 0a e0 def 00 00 00 LDN 0x08 (SPI) idx f0 f1 f2 f3 f4 f5 f6 f7 f8 fa fb fc fd fe ff val 00 04 01 70 f8 00 00 08 00 00 00 00 00 00 00 def 00 RR 01 00 00 00 00 00 00 00 00 00 00 00 00 LDN 0x0a (PME, ACPI) idx 30 f0 f1 f4 f5 f6 val 01 00 6b 06 1c 07 def 00 00 00 26 1c 07 LDN 0x0b (VREF) idx f0 f1 f2 f3 ff val 64 64 64 00 00 def 64 64 64 00 00 Probing for Fintek Super I/O at 0x2e... Failed. Returned data: vid=0xffff, id=0xffff Probing for Fintek Super I/O at 0x4e... Failed. Returned data: vid=0xffff, id=0xffff Probing for ITE Super I/O (init=standard) at 0x25e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=it8502e) at 0x25e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=it8761e) at 0x25e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=it8228e) at 0x25e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=0x87,0x87) at 0x25e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=standard) at 0x2e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=it8502e) at 0x2e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=it8761e) at 0x2e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=it8228e) at 0x2e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=0x87,0x87) at 0x2e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=standard) at 0x4e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=it8502e) at 0x4e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=it8761e) at 0x4e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=it8228e) at 0x4e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=0x87,0x87) at 0x4e... Failed. Returned data: id=0x0723, rev=0x5 Probing for ITE Super I/O (init=legacy/it8661f) at 0x370... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=legacy/it8671f) at 0x370... Failed. Returned data: id=0xffff, rev=0xf Probing for NSC Super I/O at 0x2e... Failed. Returned data: port=0xff, port+1=0xff Probing for NSC Super I/O at 0x4e... Failed. Returned data: port=0xff, port+1=0xff Probing for NSC Super I/O at 0x15c... Failed. Returned data: port=0xff, port+1=0xff Probing for NSC Super I/O at 0x164e... Failed. Returned data: port=0xff, port+1=0xff Probing for Nuvoton Super I/O at 0x164e... Failed. Returned data: chip_id=0xffff Probing for Nuvoton Super I/O (sid=0xfc) at 0x164e... Failed. Returned data: sid=0xff, id=0xffff, rev=0x00 Probing for Nuvoton Super I/O at 0x2e... Failed. Returned data: chip_id=0xffff Probing for Nuvoton Super I/O (sid=0xfc) at 0x2e... Failed. Returned data: sid=0xff, id=0xffff, rev=0x00 Probing for Nuvoton Super I/O at 0x4e... Failed. Returned data: chip_id=0x0723 Probing for Nuvoton Super I/O (sid=0xfc) at 0x4e... Failed. Returned data: sid=0xff, id=0x723, rev=0x00 Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x2e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x2e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x4e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x4e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x162e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x162e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x164e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x164e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x3f0... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x3f0... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x370... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x370... Failed. Returned data: id=0xff, rev=0xff Probing for Winbond Super I/O (init=0x88) at 0x2e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x2e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x2e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x2e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x88) at 0x4e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x4e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x4e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x4e... Failed. Returned data: id/oldid=0x07/0x0f, rev=0x23 Probing for Winbond Super I/O (init=0x88) at 0x3f0... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x3f0... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x3f0... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x3f0... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x88) at 0x370... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x370... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x370... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x370... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x88) at 0x250... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x250... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x250... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x250... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for VIA Super I/O at 0x3f0... PCI device 1106:0686 not found. Probing for Server Engines Super I/O at 0x2e... Failed. Returned data: id=0xffff, rev=0xff From zakrzewskim at wp.pl Tue Mar 13 19:27:46 2012 From: zakrzewskim at wp.pl (Marek Zakrzewski) Date: Tue, 13 Mar 2012 19:27:46 +0100 Subject: [flashrom] Intel D425KT flashing Message-ID: Hello, I finally got 1 MB BIOS for this board, but I'm still unable to flash: flashrom -Vw d425kt.bin flashrom v0.9.4-r1487 on Linux 3.2.2-xxxx-std-ipv6-64 (x86_64), built with libpci 3.1.7, GCC 4.1.2 20080704 (Red Hat 4.1.2-51), little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 441M loops per second, 10 myus = 11 us, 100 myus = 98 us, 1000 myus = 1006 us, 10000 myus = 10544 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. dmidecode execution unsuccessful - continuing without DMI info Found chipset "Intel NM10" with PCI ID 8086:27bc. Enabling flash write... 0x7fffffff/0x7fffffff FWH IDSEL: 0x0 0x7fffffff/0x7fffffff FWH IDSEL: 0x0 0x7fffffff/0x7fffffff FWH IDSEL: 0x1 0x7fffffff/0x7fffffff FWH IDSEL: 0x1 0x7fffffff/0x7fffffff FWH IDSEL: 0x2 0x7fffffff/0x7fffffff FWH IDSEL: 0x2 0x7fffffff/0x7fffffff FWH IDSEL: 0x3 0x7fffffff/0x7fffffff FWH IDSEL: 0x3 0x7fffffff/0x7fffffff FWH IDSEL: 0x4 0x7fffffff/0x7fffffff FWH IDSEL: 0x5 0x7fffffff/0x7fffffff FWH IDSEL: 0x6 0x7fffffff/0x7fffffff FWH IDSEL: 0x7 0x7fffffff/0x7fffffff FWH decode enabled 0x7fffffff/0x7fffffff FWH decode enabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled Maximum FWH chip size: 0x100000 bytes BIOS Lock Enable: enabled, BIOS Write Enable: disabled, BIOS_CNTL is 0xa WARNING: Setting 0xdc from 0xa to 0xb on NM10 failed. New value is 0xa. Root Complex Register Block address = 0xfed1c000 GCS = 0x465: BIOS Interface Lock-Down: enabled, Boot BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3020 0x00: 0x8004 (SPIS) 0x02: 0x7f10 (SPIC) 0x04: 0x000fffc0 (SPIA) 0x08: 0x19000040 (SPID0) 0x0c: 0x00000000 (SPID0+4) 0x10: 0x00000000 (SPID1) 0x14: 0x00000000 (SPID1+4) 0x18: 0xeb4150bf (SPID2) 0x1c: 0x0000001d (SPID2+4) 0x20: 0x00000000 (SPID3) 0x24: 0x00000000 (SPID3+4) 0x28: 0xffff0434 (SPID4) 0x2c: 0xffffff50 (SPID4+4) 0x30: 0x00000000 (SPID5) 0x34: 0x00000000 (SPID5+4) 0x38: 0x8be9090f (SPID6) 0x3c: 0x000000f8 (SPID6+4) 0x40: 0x00000000 (SPID7) 0x44: 0xffff0000 (SPID7+4) 0x50: 0x00000000 (BBAR) 0x54: 0x0006 (PREOP) 0x56: 0x103b (OPTYPE) 0x58: 0x05200302 (OPMENU) 0x5c: 0x0001009f (OPMENU+4) 0x60: 0x00000000 (PBR0) 0x64: 0x00000000 (PBR1) 0x68: 0x00000000 (PBR2) WARNING: SPI Configuration Lockdown activated. Reading OPCODES... done SPI Read Configuration: prefetching enabled, caching enabled, PROBLEMS, continuing anyway The following protocols are supported: SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF641, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for SST SST25LF040A, 512 kB: Invalid OPCODE 0xab, will not execute. Probing for SST SST25LF080A, 1024 kB: Invalid OPCODE 0xab, will not execute. Probing for SST SST25VF010, 128 kB: Invalid OPCODE 0x90, will not execute. Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for SST SST25VF040, 512 kB: Invalid OPCODE 0x90, will not execute. Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for SST SST25VF040B.REMS, 512 kB: Invalid OPCODE 0x90, will not execute. Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Chip status register is 00 Found Winbond flash chip "W25Q80" (1024 kB, SPI) at physical address 0xfff00000. Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Generic unknown SPI chip (REMS), 0 kB: Invalid OPCODE 0x90, will not execute. Found Winbond flash chip "W25Q80" (1024 kB, SPI). Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... done. Erasing and writing flash chip... Trying erase function 0... 0x000000-0x000fff:ERunning OPCODE 0x20 failed at address 0x000000 (payload length was 0). Reading current flash chip contents... done. Looking for another erase function. Trying erase function 1... 0x000000-0x007fff:EInvalid OPCODE 0x06, will not execute. Reading current flash chip contents... done. Looking for another erase function. Trying erase function 2... 0x000000-0x00ffff:EInvalid OPCODE 0x06, will not execute. Reading current flash chip contents... done. Looking for another erase function. Trying erase function 3... 0x000000-0x0fffff:EInvalid OPCODE 0x06, will not execute. Reading current flash chip contents... done. Looking for another erase function. Trying erase function 4... 0x000000-0x0fffff:EInvalid OPCODE 0x06, will not execute. Looking for another erase function. No usable erase functions left. Good. It seems nothing was changed. Restoring MMIO space at 0x7f8ac901f070 Restoring PCI config space for 00:1f:0 reg 0xdc Best regards, Marek Zakrzewski -------------- next part -------------- An HTML attachment was scrubbed... URL: From zakrzewskim at wp.pl Tue Mar 13 19:58:35 2012 From: zakrzewskim at wp.pl (Marek Zakrzewski) Date: Tue, 13 Mar 2012 19:58:35 +0100 Subject: [flashrom] Intel D425KT flashing Message-ID: Hello, The same on new version of flashrom: flashrom -Vw d425kt.bin flashrom v0.9.5.2-r1515 on Linux 3.2.2-xxxx-std-ipv6-64 (x86_64), built with libpci 3.1.7, GCC 4.1.2 20080704 (Red Hat 4.1.2-52), little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 876M loops per second, 10 myus = 10 us, 100 myus = 97 us, 1000 myus = 983 us, 10000 myus = 9746 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. dmidecode execution unsuccessful - continuing without DMI info Found chipset "Intel NM10" with PCI ID 8086:27bc. Enabling flash write... 0x7fffffff/0x7fffffff FWH IDSEL: 0x0 0x7fffffff/0x7fffffff FWH IDSEL: 0x0 0x7fffffff/0x7fffffff FWH IDSEL: 0x1 0x7fffffff/0x7fffffff FWH IDSEL: 0x1 0x7fffffff/0x7fffffff FWH IDSEL: 0x2 0x7fffffff/0x7fffffff FWH IDSEL: 0x2 0x7fffffff/0x7fffffff FWH IDSEL: 0x3 0x7fffffff/0x7fffffff FWH IDSEL: 0x3 0x7fffffff/0x7fffffff FWH IDSEL: 0x4 0x7fffffff/0x7fffffff FWH IDSEL: 0x5 0x7fffffff/0x7fffffff FWH IDSEL: 0x6 0x7fffffff/0x7fffffff FWH IDSEL: 0x7 0x7fffffff/0x7fffffff FWH decode enabled 0x7fffffff/0x7fffffff FWH decode enabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled Maximum FWH chip size: 0x100000 bytes BIOS Lock Enable: enabled, BIOS Write Enable: disabled, BIOS_CNTL is 0xa WARNING: Setting 0xdc from 0xa to 0xb on NM10 failed. New value is 0xa. Root Complex Register Block address = 0xfed1c000 GCS = 0x465: BIOS Interface Lock-Down: enabled, Boot BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3020 0x00: 0x8004 (SPIS) 0x02: 0x7f10 (SPIC) 0x04: 0x000fffc0 (SPIA) 0x08: 0x19000040 (SPID0) 0x0c: 0x00000000 (SPID0+4) 0x10: 0x00000000 (SPID1) 0x14: 0x00000000 (SPID1+4) 0x18: 0xeb4150bf (SPID2) 0x1c: 0x0000001d (SPID2+4) 0x20: 0x00000000 (SPID3) 0x24: 0x00000000 (SPID3+4) 0x28: 0xffff0434 (SPID4) 0x2c: 0xffffff50 (SPID4+4) 0x30: 0x00000000 (SPID5) 0x34: 0x00000000 (SPID5+4) 0x38: 0x8be9090f (SPID6) 0x3c: 0x000000f8 (SPID6+4) 0x40: 0x00000000 (SPID7) 0x44: 0xffff0000 (SPID7+4) 0x50: 0x00000000 (BBAR) 0x54: 0x0006 (PREOP) 0x56: 0x103b (OPTYPE) 0x58: 0x05200302 (OPMENU) 0x5c: 0x0001009f (OPMENU+4) 0x60: 0x00000000 (PBR0) 0x64: 0x00000000 (PBR1) 0x68: 0x00000000 (PBR2) WARNING: SPI Configuration Lockdown activated. Reading OPCODES... done SPI Read Configuration: prefetching enabled, caching enabled, PROBLEMS, continuing anyway The following protocols are supported: SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for SST SST25LF040A, 512 kB: Invalid OPCODE 0xab, will not execute. Probing for SST SST25LF080A, 1024 kB: Invalid OPCODE 0xab, will not execute. Probing for SST SST25VF010, 128 kB: Invalid OPCODE 0x90, will not execute. Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for SST SST25VF040, 512 kB: Invalid OPCODE 0x90, will not execute. Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for SST SST25VF040B.REMS, 512 kB: Invalid OPCODE 0x90, will not execute. Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Chip status register is 00 Found Winbond flash chip "W25Q80" (1024 kB, SPI) at physical address 0xfff00000. Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Unknown SFDP-capable chip, 0 kB: Invalid OPCODE 0x5a, will not execute. Receiving SFDP signature failed. Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4014 Probing for Generic unknown SPI chip (REMS), 0 kB: Invalid OPCODE 0x90, will not execute. Found Winbond flash chip "W25Q80" (1024 kB, SPI). This chip may contain one-time programmable memory. flashrom cannot read and may never be able to write it, hence it may not be able to completely clone the contents of this chip (see man page for details). Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... done. Erasing and writing flash chip... Trying erase function 0... 0x000000-0x000fff:ERunning OPCODE 0x20 failed at address 0x000000 (payload length was 0). Reading current flash chip contents... done. Looking for another erase function. No usable erase functions left. Good. It seems nothing was changed. Restoring MMIO space at 0x7f18df1e6070 Restoring PCI config space for 00:1f:0 reg 0xdc Best regards, Marek Zakrzewski From flashrom at mkarcher.dialup.fu-berlin.de Tue Mar 13 21:27:33 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Tue, 13 Mar 2012 21:27:33 +0100 Subject: [flashrom] Realtek NIC (8169) In-Reply-To: <201203130107.q2D17p0f027537@mail2.student.tuwien.ac.at> References: <4F58C121.6080204@greenmountainservices.com> <201203101015.q2AAFCnG021895@mail2.student.tuwien.ac.at> <4F5E9B20.5070709@greenmountainservices.com> <201203130107.q2D17p0f027537@mail2.student.tuwien.ac.at> Message-ID: <1331670453.4591.41.camel@localhost> Am Dienstag, den 13.03.2012, 02:07 +0100 schrieb Stefan Tauner: > > On a seperate note - does anyone have pointers to the packaging of > > BIOS images - e.g. how to spot the boot/pxe code in the bigger picture? > looking at http://cgit.freedesktop.org/~libv/bios_extract is probably a > good first step ;) bios_extract works well for mainboard BIOSes from the three major BIOS companies Award, AMI and Phoenix before EFI started to get common. But bios_extract is not usefull for PCI option ROMs (like you find them on a NIC, for example). The format of PCI option ROMs can be found for example in the Appendix of the BIOS Boot Specification (which is available copious times in the Internet). Regards, Michael Karcher From sai at rawthrills.com Tue Mar 13 21:11:21 2012 From: sai at rawthrills.com (sai at rawthrills.com) Date: Tue, 13 Mar 2012 16:11:21 -0400 Subject: [flashrom] Optiplex 380 BIOS read Message-ID: <20120313161121.26453viypa5ix14w@rawthrills.com> Hello All, I am trying to use flashrom to read/write my bios settings. This is the error that I get when I try to read the BIOS: Found chipset "Intel ICH7/ICH7R". Enabling flash write... WARNING: Setting 0xdc from 0x2 to 0x3 on ICH7/ICH7R failed. New value is 0x2. WARNING: SPI Configuration Lockdown activated. Setting BBAR to 0x00000000 failed! New value: 0x00e00000. PROBLEMS, continuing anyway Found Macronix flash chip "MX25L1605" (2048 kB, SPI) at physical address 0xffe00000. ich_spi_send_command: Internal command size error for opcode 0xab, got writecnt=4, want =1 ich_spi_send_command: Internal command size error for opcode 0xab, got writecnt=4, want =1 Reading flash... Read operation failed! FAILED. When I read through this mail archives, I learned that SPI locked down configuration is not possible. I read through the list of supported hardware and I could see that MX25L1605 is among the list of supported hardware. But I still not able to read my BIOS settings. Any suggestions would be appreciated Sai From emmfleur at gmail.com Tue Mar 13 05:41:22 2012 From: emmfleur at gmail.com (mmanu) Date: Tue, 13 Mar 2012 05:41:22 +0100 Subject: [flashrom] MSI H61MA-E35(B3) Message-ID: here is my flashrom -V > log all works fine, thanks. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: log Type: application/octet-stream Size: 20224 bytes Desc: not available URL: From bscipioni at att.net Tue Mar 13 15:09:51 2012 From: bscipioni at att.net (Brian Scipioni) Date: Tue, 13 Mar 2012 07:09:51 -0700 (PDT) Subject: [flashrom] Tyan S2875 (Tiger K8W) Message-ID: <1331647791.14215.YahooMailRC@web181520.mail.ne1.yahoo.com> Dear all, You may add the Tyan S2875 (Tiger K8W) main board BIOS to the list of "known to be working". Whew, although it wasn't really that much of a gamble. The updated BIOS installed was the AMI 2875V304.ROM available from Tyan. thanks for the very good software - I never used flashrom before and it was clear what to do. Brian Scipioni -------------- next part -------------- An HTML attachment was scrubbed... URL: From froh at gmx.net Tue Mar 13 17:06:29 2012 From: froh at gmx.net (froh at gmx.net) Date: Tue, 13 Mar 2012 17:06:29 +0100 Subject: [flashrom] report for FUJITSU CELSIUS W410 Message-ID: <4F5F7085.7000402@gmx.net> flashrom v0.9.5.2-r1515 on Linux 3.1.10-gentoo-r1 (x86_64), built with libpci 3.1.9, GCC 4.5.3, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 3341M loops per second, 10 myus = 9 us, 100 myus = 101 us, 1000 myus = 1002 us, 10000 myus = 10022 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "FUJITSU" DMI string system-product-name: "CELSIUS W410" DMI string system-version: " " DMI string baseboard-manufacturer: "FUJITSU" DMI string baseboard-product-name: "D3062-A1" DMI string baseboard-version: "S26361-D3062-A1 " DMI string chassis-type: "Mini Tower" Found chipset "Intel Q67" with PCI ID 8086:1c4e. This chipset is marked as untested. If you are using an up-to-date version of flashrom please email a report to flashrom at flashrom.org including a verbose (-V) log. Thank you! Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x1 0xffe00000/0xffa00000 FWH IDSEL: 0x1 0xffd80000/0xff980000 FWH IDSEL: 0x2 0xffd00000/0xff900000 FWH IDSEL: 0x2 0xffc80000/0xff880000 FWH IDSEL: 0x3 0xffc00000/0xff800000 FWH IDSEL: 0x3 0xff700000/0xff300000 FWH IDSEL: 0x4 0xff600000/0xff200000 FWH IDSEL: 0x5 0xff500000/0xff100000 FWH IDSEL: 0x6 0xff400000/0xff000000 FWH IDSEL: 0x7 0xfff80000/0xffb80000 FWH decode enabled 0xfff00000/0xffb00000 FWH decode enabled 0xffe80000/0xffa80000 FWH decode enabled 0xffe00000/0xffa00000 FWH decode enabled 0xffd80000/0xff980000 FWH decode enabled 0xffd00000/0xff900000 FWH decode disabled 0xffc80000/0xff880000 FWH decode disabled 0xffc00000/0xff800000 FWH decode disabled 0xff700000/0xff300000 FWH decode disabled 0xff600000/0xff200000 FWH decode disabled 0xff500000/0xff100000 FWH decode disabled 0xff400000/0xff000000 FWH decode disabled Maximum FWH chip size: 0x100000 bytes BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0 Root Complex Register Block address = 0xfed1c000 GCS = 0xc25: BIOS Interface Lock-Down: enabled, Boot BIOS Straps: 0x3 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3800 0x04: 0xe008 (HSFS) HSFS: FDONE=0, FCERR=0, AEL=0, BERASE=1, SCIP=0, FDOPSS=1, FDV=1, FLOCKDN=1 WARNING: SPI Configuration Lockdown activated. Reading OPCODES... done 0x06: 0x0000 (HSFC) HSFC: FGO=0, FCYCLE=0, FDBC=0, SME=0 0x08: 0x00000000 (FADDR) 0x50: 0x00000a0b (FRAP) BMWAG 0x00, BMRAG 0x00, BRWA 0x0a, BRRA 0x0b 0x54: 0x00000000 FREG0: WARNING: Flash Descriptor region (0x00000000-0x00000fff) is read-only. 0x58: 0x07ff0580 FREG1: BIOS region (0x00580000-0x007fffff) is read-write. 0x5C: 0x057f0003 FREG2: WARNING: Management Engine region (0x00003000-0x0057ffff) is locked. 0x60: 0x00020001 FREG3: Gigabit Ethernet region (0x00001000-0x00002fff) is read-write. Please send a verbose log to flashrom at flashrom.org if this board is not listed on http://flashrom.org/Supported_hardware#Supported_mainboards yet. Writes have been disabled. You can enforce write support with the ich_spi_force programmer option, but it will most likely harm your hardware! If you force flashrom you will get no support if something breaks. 0x90: 0x84 (SSFS) SSFS: SCIP=0, FDONE=1, FCERR=0, AEL=0 0x91: 0xf94240 (SSFC) SSFC: SCGO=0, ACS=0, SPOP=0, COP=4, DBC=2, SME=0, SCF=1 0x94: 0x0006 (PREOP) 0x96: 0x043b (OPTYPE) 0x98: 0x05200302 (OPMENU) 0x9C: 0x0000019f (OPMENU+4) 0xA0: 0x00000000 (BBAR) 0xC4: 0x00802005 (LVSCC) LVSCC: BES=0x1, WG=1, WSR=0, WEWS=0, EO=0x20, VCL=1 0xC8: 0x00002005 (UVSCC) UVSCC: BES=0x1, WG=1, WSR=0, WEWS=0, EO=0x20, VCL=0 0xD0: 0x00000000 (FPB) SPI Read Configuration: prefetching disabled, caching enabled, OK. The following protocols are supported: FWH, SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Chip status register is 00 Chip status register: Status Register Write Disable (SRWD) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is not set Chip status register: Bit 3 / Block Protect 1 (BP1) is not set Chip status register: Bit 2 / Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found Macronix flash chip "MX25L6405" (8192 kB, SPI) at physical address 0xff800000. Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for SST SST25LF040A, 512 kB: Invalid OPCODE 0xab, will not execute. Probing for SST SST25LF080A, 1024 kB: Invalid OPCODE 0xab, will not execute. Probing for SST SST25VF010, 128 kB: Invalid OPCODE 0x90, will not execute. Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for SST SST25VF040, 512 kB: Invalid OPCODE 0x90, will not execute. Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for SST SST25VF040B.REMS, 512 kB: Invalid OPCODE 0x90, will not execute. Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Unknown SFDP-capable chip, 0 kB: Invalid OPCODE 0x5a, will not execute. Receiving SFDP signature failed. Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017 Probing for Generic unknown SPI chip (REMS), 0 kB: Invalid OPCODE 0x90, will not execute. Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x83, id2 0x65, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0x46, id2 0x43, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0x83, id2 0x65, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0x46, id2 0x43, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0x83, id2 0x65, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0x46, id2 0x43, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0x46, id2 0x43, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xdf, id2 0x66, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0x46, id2 0x43, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0x46, id2 0x43, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x83, id2 0x65, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xdf, id2 0x66, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0x46, id2 0x43, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x83, id2 0x65, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0x46, id2 0x43, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Found Macronix flash chip "MX25L6405" (8192 kB, SPI). No operations were specified. Restoring MMIO space at 0x7f2d393158a0 Restoring PCI config space for 00:1f:0 reg 0xdc From flashrom at mkarcher.dialup.fu-berlin.de Tue Mar 13 22:29:32 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Tue, 13 Mar 2012 22:29:32 +0100 Subject: [flashrom] [PATCH] Check class for nvidia southbridge Message-ID: <1331674172-10714-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> On dual-socket mainboards, there are two nvidia southbridge chips (one per socket). The south bridge really used as south bridge has the device class of the ISA/LPC bridge device set to 0x0601 [ISA Bridge], while the other one has a device class in the 0x05xx range [RAM stuff]. This will select the correct south bridge for the chipset enable, and removes the hack that the 0x361 device needed to be ignored to get rid of the secondary south bridge on the Tyan S2915 / HP xw9400. The CK804 entry with the ID 10de:00d3 (which triggers on the secondary south bridge of the L1N64) has the comment /* Slave, should not be here, to fix known bug for A01. */ Does anyone still remember what this 7 year old comment is trying to tell us? What is "A01"? A chipset revision? What class does this device have in "A01"? Will the class-must-be-0601-check break "it"? Signed-off-by: Michael Karcher --- chipset_enable.c | 22 +++++++++++++--------- 1 files changed, 13 insertions(+), 9 deletions(-) diff --git a/chipset_enable.c b/chipset_enable.c index 0aba1e0..adf2e0d 100644 --- a/chipset_enable.c +++ b/chipset_enable.c @@ -906,6 +906,12 @@ static int enable_flash_ck804(struct pci_dev *dev, const char *name) { uint8_t old, new; + if (pci_read_word(dev, PCI_CLASS_DEVICE) != 0x0601) { + /* output is followed by "OK - searching for ...\n" */ + msg_pinfo(" Seems to be a secondary south bridge, "); + return NOT_DONE_YET; + } + pci_write_byte(dev, 0x92, 0x00); if (pci_read_byte(dev, 0x92) != 0x00) { msg_pinfo("Setting register 0x%x to 0x%x on %s failed " @@ -995,6 +1001,12 @@ static int enable_flash_mcp55(struct pci_dev *dev, const char *name) uint8_t old, new, val; uint16_t wordval; + if (pci_read_word(dev, PCI_CLASS_DEVICE) != 0x0601) { + /* output is followed by "OK - searching for ...\n" */ + msg_pinfo(" Seems to be a secondary south bridge, "); + return NOT_DONE_YET; + } + /* Set the 0-16 MB enable bits. */ val = pci_read_byte(dev, 0x88); val |= 0xff; /* 256K */ @@ -1207,15 +1219,7 @@ const struct penable chipset_enables[] = { {0x10de, 0x0262, NT, "NVIDIA", "MCP51", enable_flash_ck804}, {0x10de, 0x0263, NT, "NVIDIA", "MCP51", enable_flash_ck804}, {0x10de, 0x0360, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* M57SLI*/ - /* 10de:0361 is present in Tyan S2915 OEM systems, but not connected to - * the flash chip. Instead, 10de:0364 is connected to the flash chip. - * Until we have PCI device class matching or some fallback mechanism, - * this is needed to get flashrom working on Tyan S2915 and maybe other - * dual-MCP55 boards. - */ -#if 0 - {0x10de, 0x0361, NT, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ -#endif + {0x10de, 0x0361, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ {0x10de, 0x0362, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ {0x10de, 0x0363, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ {0x10de, 0x0364, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ -- 1.7.9 From c-d.hailfinger.devel.2006 at gmx.net Tue Mar 13 22:47:15 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Tue, 13 Mar 2012 22:47:15 +0100 Subject: [flashrom] [PATCH] Check class for nvidia southbridge In-Reply-To: <1331674172-10714-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> References: <1331674172-10714-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> Message-ID: <4F5FC063.8060104@gmx.net> Hi Yinghai, maybe you remember what the CK804 A01 comment mentioned in the mail below refers to. The chipset_enable.c code we're referring to is available at http://www.flashrom.org/trac/flashrom/browser/trunk/chipset_enable.c Michael, I would mask with the PCI class with 0xff00 and allow all bridges. Regards, Carl-Daniel Am 13.03.2012 22:29 schrieb Michael Karcher: > On dual-socket mainboards, there are two nvidia southbridge chips (one > per socket). The south bridge really used as south bridge has the > device class of the ISA/LPC bridge device set to 0x0601 [ISA Bridge], > while the other one has a device class in the 0x05xx range [RAM stuff]. > > This will select the correct south bridge for the chipset enable, and > removes the hack that the 0x361 device needed to be ignored to get rid > of the secondary south bridge on the Tyan S2915 / HP xw9400. > > The CK804 entry with the ID 10de:00d3 (which triggers on the secondary > south bridge of the L1N64) has the comment > /* Slave, should not be here, to fix known bug for A01. */ > Does anyone still remember what this 7 year old comment is trying to tell > us? What is "A01"? A chipset revision? What class does this device > have in "A01"? Will the class-must-be-0601-check break "it"? > > Signed-off-by: Michael Karcher > --- > chipset_enable.c | 22 +++++++++++++--------- > 1 files changed, 13 insertions(+), 9 deletions(-) > > diff --git a/chipset_enable.c b/chipset_enable.c > index 0aba1e0..adf2e0d 100644 > --- a/chipset_enable.c > +++ b/chipset_enable.c > @@ -906,6 +906,12 @@ static int enable_flash_ck804(struct pci_dev *dev, const char *name) > { > uint8_t old, new; > > + if (pci_read_word(dev, PCI_CLASS_DEVICE) != 0x0601) { > + /* output is followed by "OK - searching for ...\n" */ > + msg_pinfo(" Seems to be a secondary south bridge, "); > + return NOT_DONE_YET; > + } > + > pci_write_byte(dev, 0x92, 0x00); > if (pci_read_byte(dev, 0x92) != 0x00) { > msg_pinfo("Setting register 0x%x to 0x%x on %s failed " > @@ -995,6 +1001,12 @@ static int enable_flash_mcp55(struct pci_dev *dev, const char *name) > uint8_t old, new, val; > uint16_t wordval; > > + if (pci_read_word(dev, PCI_CLASS_DEVICE) != 0x0601) { > + /* output is followed by "OK - searching for ...\n" */ > + msg_pinfo(" Seems to be a secondary south bridge, "); > + return NOT_DONE_YET; > + } > + > /* Set the 0-16 MB enable bits. */ > val = pci_read_byte(dev, 0x88); > val |= 0xff; /* 256K */ > @@ -1207,15 +1219,7 @@ const struct penable chipset_enables[] = { > {0x10de, 0x0262, NT, "NVIDIA", "MCP51", enable_flash_ck804}, > {0x10de, 0x0263, NT, "NVIDIA", "MCP51", enable_flash_ck804}, > {0x10de, 0x0360, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* M57SLI*/ > - /* 10de:0361 is present in Tyan S2915 OEM systems, but not connected to > - * the flash chip. Instead, 10de:0364 is connected to the flash chip. > - * Until we have PCI device class matching or some fallback mechanism, > - * this is needed to get flashrom working on Tyan S2915 and maybe other > - * dual-MCP55 boards. > - */ > -#if 0 > - {0x10de, 0x0361, NT, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ > -#endif > + {0x10de, 0x0361, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ > {0x10de, 0x0362, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ > {0x10de, 0x0363, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ > {0x10de, 0x0364, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ -- http://www.hailfinger.org/ From bblaauw at home.nl Tue Mar 13 22:48:57 2012 From: bblaauw at home.nl (Bernd Blaauw) Date: Tue, 13 Mar 2012 22:48:57 +0100 Subject: [flashrom] 80/100/132 column line width policy In-Reply-To: <4F5CC9EC.9030500@gmx.net> References: <4F5CC9EC.9030500@gmx.net> Message-ID: <4F5FC0C9.3050400@home.nl> Op 11-3-2012 16:51, Carl-Daniel Hailfinger schreef: > we're hitting the 80 column limit in our code in ways which actually > reduce readability for the code. Examples are various multiline messages > and complicated nested code where refactoring to a separate function > doesn't make sense. Coming from DOS as as experimentation platform, I guess there's no sensible way to take in a per-platform (or 'dos' versus 'non-dos') approach to output messages. Too much if/else, though Stefan's technical approach/algorythm sounds viable in some kind of odd way. As a compromise I'd suggest keeping the default (non-verbose) messages within 80char limit, and everything else (verbose messages, detailed messages) beyond 80 if so desired. Already used to ugly output anyway since ReactOS started using Cmake with its full path references. (for example http://www.reactos.org/bugzilla/attachment.cgi?id=7390 ) > Regards, > Carl-Daniel Is this list accepting Coreboot GSOC idea suggestions? Not subscribed at the relevant place, don't like to sign up to too many places: 1) Live compile distro (small: puppy/tinycore/partedmagic + GCC?) 2) Somehow make use of raspberry-pi with regard to coreboot 3) DRAM-less system (Coreboot/CAR + SeaBIOS + DOS on AMD APU system?). Bernd From yinghai at kernel.org Tue Mar 13 23:02:43 2012 From: yinghai at kernel.org (Yinghai Lu) Date: Tue, 13 Mar 2012 15:02:43 -0700 Subject: [flashrom] [PATCH] Check class for nvidia southbridge In-Reply-To: <4F5FC063.8060104@gmx.net> References: <1331674172-10714-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> <4F5FC063.8060104@gmx.net> Message-ID: On Tue, Mar 13, 2012 at 2:47 PM, Carl-Daniel Hailfinger wrote: > Hi Yinghai, > > maybe you remember what the CK804 A01 comment mentioned in the mail > below refers to. > > The chipset_enable.c code we're referring to is available at > http://www.flashrom.org/trac/flashrom/browser/trunk/chipset_enable.c I only remember that old chipset would have same device id even it is on HT chain without legacy support. new rev would change the device id if it is not legacy ... Thanks Yinghai From stefan.tauner at student.tuwien.ac.at Wed Mar 14 00:01:46 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Wed, 14 Mar 2012 00:01:46 +0100 Subject: [flashrom] MSI H61MA-E35(B3) In-Reply-To: References: Message-ID: <201203132301.q2DN1ku1003024@mail2.student.tuwien.ac.at> On Tue, 13 Mar 2012 05:41:22 +0100 mmanu wrote: > here is my flashrom -V > log > all works fine, thanks. hi and thanks for your report! by "all" do you also mean writing/updating the firmware? if so i'll add that board to our list of supported devices. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Wed Mar 14 00:05:15 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Wed, 14 Mar 2012 00:05:15 +0100 Subject: [flashrom] Tyan S2875 (Tiger K8W) In-Reply-To: <1331647791.14215.YahooMailRC@web181520.mail.ne1.yahoo.com> References: <1331647791.14215.YahooMailRC@web181520.mail.ne1.yahoo.com> Message-ID: <201203132305.q2DN5Fx7006143@mail2.student.tuwien.ac.at> On Tue, 13 Mar 2012 07:09:51 -0700 (PDT) Brian Scipioni wrote: > Dear all, > > You may add the Tyan S2875 (Tiger K8W) main board BIOS to the list of "known to > be working". > Whew, although it wasn't really that much of a gamble. > > The updated BIOS installed was the AMI 2875V304.ROM available from Tyan. > > thanks for the very good software - I never used flashrom before and it was > clear what to do. > > Brian Scipioni Hello Brian, thanks for your report! I have added the board as you suggested and will commit that later together with other small changes. If it is not too much of a hassle please send us the output of flashrom -V too for documentation purposes. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Wed Mar 14 00:25:50 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 14 Mar 2012 00:25:50 +0100 Subject: [flashrom] MSI GF615M-P33: superiotool -dV In-Reply-To: <201203130939.55652.kbkj@telia.com> References: <201203102110.06964.kbkj@telia.com> <201203130016.q2D0GQx0007865@mail2.student.tuwien.ac.at> <201203130939.55652.kbkj@telia.com> Message-ID: <4F5FD77E.5020403@gmx.net> Hi Kim, Am 13.03.2012 09:39 schrieb Kim Johansson: > Den Tuesday 13 March 2012 01.16.26 skrev Stefan Tauner: >> On Sat, 10 Mar 2012 21:10:06 +0100 >> >> Kim Johansson wrote: >>> flashrom v0.9.5.2-r1516 on Linux 2.6.35 (i686) >>> >>> Calibrating delay loop... OK. Initializing internal programmer >>> DMI string system-manufacturer: "MICRO-STAR INTERNATIONAL CO.,LTD" >>> DMI string system-product-name: "MS-7597" >>> DMI string system-version: "1.0" >>> DMI string baseboard-manufacturer: "MICRO-STAR INTERNATIONAL CO.,LTD" >>> DMI string baseboard-product-name: "GF615M-P33 (MS-7597)" >>> DMI string baseboard-version: "1.0" >>> DMI string chassis-type: "Desktop" >>> Found chipset "NVIDIA MCP61" with PCI ID 10de:03e0. Enabling flash >>> write... This chipset is not really supported yet. Guesswork... ISA/LPC >>> bridge reg 0x8a contents: 0x40, bit 6 is 1, bit 5 is 0 >>> Flash bus type is SPI Not good. This bit usually is a very good indicator that the flash chip is attached via chipset SPI, not via LPC (as would be the case with flash translation in the Super I/O chip). >>> SMBus device 10de:03eb at 00:01:1 >>> MCP SPI BAR is at 0xfec80000 >>> SPI control is 0x0012, req=0, gnt=0 >>> Please send the output of "flashrom -V" to flashrom at flashrom.org with >>> your board name: flashrom -V as the subject to help us finish support for >>> your chipset. Thanks. >>> OK. >>> The following protocols are supported: SPI. >>> [?] >>> No EEPROM/flash device found. >> your log looks suspicious, maybe you have found a bug in our MCP61 code >> or the flash is not attached to the southbridge, but the fintek chip. >> could you please send us the output of "superiotool -dV", thanks. > superiotool > [...] > Probing for Fintek Super I/O at 0x4e... > Found Fintek F71889 (vid=0x3419, id=0x2307) at 0x4e > Register dump: > idx 20 21 23 24 25 26 27 28 2a 2b 2c 2d > val 07 23 19 34 00 80 50 00 c0 c0 00 08 > def 07 23 19 34 00 00 00 00 f0 30 00 08 > LDN 0x00 (Floppy) > idx 30 60 61 70 74 f0 f2 f4 > val 01 03 f0 06 02 0e ff 00 > def 01 03 f0 06 02 0e 03 00 > LDN 0x01 (COM1) > idx 30 60 61 70 f0 > val 01 03 f8 04 00 > def 01 03 f8 04 00 > LDN 0x02 (COM2) > idx 30 60 61 70 f0 f1 > val 00 02 f8 03 00 44 > def 01 02 f8 03 00 04 > LDN 0x03 (Parallel port) > idx 30 60 61 70 74 f0 > val 01 03 78 07 04 3c > def 01 03 78 07 03 42 > LDN 0x04 (Hardware monitor) > idx 30 60 61 70 > val 01 0a 00 00 > def 01 02 95 00 > LDN 0x05 (Keyboard) > idx 30 60 61 70 72 fe > val 01 00 60 01 0c 01 > def 01 00 60 01 0c 81 > LDN 0x06 (GPIO) > idx 80 81 82 83 90 91 92 93 a0 a1 a2 a3 b0 b1 b2 c0 c1 c2 c3 d0 d1 d2 d3 e0 e1 e2 e3 f0 f1 f2 f3 fe ff > val 00 ff 00 00 00 ff ff 00 00 1f 1f 00 00 ff 00 00 ff ff 00 80 ff 9a 00 08 7f 68 00 40 7f 50 40 15 1c > def 00 ff NA 00 00 ff NA 00 00 1f NA 00 00 ff NA 00 ff NA 00 00 ff NA 00 00 7f NA 00 00 7f NA 00 00 00 > LDN 0x07 (VID) > idx 30 60 61 > val 00 0a e0 > def 00 00 00 > LDN 0x08 (SPI) > idx f0 f1 f2 f3 f4 f5 f6 f7 f8 fa fb fc fd fe ff > val 00 04 01 70 f8 00 00 08 00 00 00 00 00 00 00 > def 00 RR 01 00 00 00 00 00 00 00 00 00 00 00 00 > LDN 0x0a (PME, ACPI) > idx 30 f0 f1 f4 f5 f6 > val 01 00 6b 06 1c 07 > def 00 00 00 26 1c 07 > LDN 0x0b (VREF) > idx f0 f1 f2 f3 ff > val 64 64 64 00 00 > def 64 64 64 00 00 NOLDN register 0x27 indicates that the Fintek Super I/O chip indeed has SPI translation switched on. Could you try this patch against latest flashrom and report the verbose output of flashrom? http://patchwork.coreboot.org/patch/3440/ (click on the "patch" link in the line which starts with "Download"). Instead of downloading manually, you could also run the following command in your flashrom source tree: curl -s http://patchwork.coreboot.org/patch/3440/raw/|patch -p1 That patch will not magically add the needed feature to flashrom, but it will show us what to expect and how to proceed. Regards, Carl-Daniel -- http://www.hailfinger.org/ From flashrom at mkarcher.dialup.fu-berlin.de Wed Mar 14 00:26:27 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Wed, 14 Mar 2012 00:26:27 +0100 Subject: [flashrom] 80/100/132 column line width policy In-Reply-To: <4F5FC0C9.3050400@home.nl> References: <4F5CC9EC.9030500@gmx.net> <4F5FC0C9.3050400@home.nl> Message-ID: <1331681187.4591.46.camel@localhost> Am Dienstag, den 13.03.2012, 22:48 +0100 schrieb Bernd Blaauw: > Op 11-3-2012 16:51, Carl-Daniel Hailfinger schreef: > > we're hitting the 80 column limit in our code in ways which actually > > reduce readability for the code. Examples are various multiline messages > > and complicated nested code where refactoring to a separate function > > doesn't make sense. > Coming from DOS as as experimentation platform, I guess there's no > sensible way to take in a per-platform (or 'dos' versus 'non-dos') > approach to output messages. Too much if/else, though Stefan's technical > approach/algorythm sounds viable in some kind of odd way. It seems you maybe missed the point of our discussion. We were not discussing the number of columns of the messages we print on the screen, but the number of columns in the source code. Output messages are still formatted to fit into 80 characters (which is not only the default width of DOS text mode, the Windows DOS box or the linux console, but also the default width of most Linux "terminal emulators" (which are in Linux graphical user interface what DOS/console boxes are in Windows). Regards, Michael Karcher From stefan.tauner at student.tuwien.ac.at Wed Mar 14 00:38:25 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Wed, 14 Mar 2012 00:38:25 +0100 Subject: [flashrom] report for FUJITSU CELSIUS W410 In-Reply-To: <4F5F7085.7000402@gmx.net> References: <4F5F7085.7000402@gmx.net> Message-ID: <201203132338.q2DNcPHG030053@mail2.student.tuwien.ac.at> On Tue, 13 Mar 2012 17:06:29 +0100 "froh at gmx.net" wrote: > 0x50: 0x00000a0b (FRAP) > BMWAG 0x00, BMRAG 0x00, BRWA 0x0a, BRRA 0x0b > 0x54: 0x00000000 FREG0: WARNING: Flash Descriptor region > (0x00000000-0x00000fff) is read-only. > 0x58: 0x07ff0580 FREG1: BIOS region (0x00580000-0x007fffff) is read-write. > 0x5C: 0x057f0003 FREG2: WARNING: Management Engine region > (0x00003000-0x0057ffff) is locked. > 0x60: 0x00020001 FREG3: Gigabit Ethernet region (0x00001000-0x00002fff) > is read-write. > Please send a verbose log to flashrom at flashrom.org if this board is not > listed on > http://flashrom.org/Supported_hardware#Supported_mainboards yet. > Writes have been disabled. You can enforce write support with the > ich_spi_force programmer option, but it will most likely harm your hardware! > If you force flashrom you will get no support if something breaks. Hi and thanks for your report! i have added your board/system to our list of unsupported boards. please use the vendor tools until we have added support for that board, sorry. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Wed Mar 14 00:55:36 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Wed, 14 Mar 2012 00:55:36 +0100 Subject: [flashrom] Optiplex 380 BIOS read In-Reply-To: <20120313161121.26453viypa5ix14w@rawthrills.com> References: <20120313161121.26453viypa5ix14w@rawthrills.com> Message-ID: <201203132355.q2DNtaub006023@mail2.student.tuwien.ac.at> On Tue, 13 Mar 2012 16:11:21 -0400 sai at rawthrills.com wrote: > Hello All, > > I am trying to use flashrom to read/write my bios settings. > > This is the error that I get when I try to read the BIOS: > > Found chipset "Intel ICH7/ICH7R". Enabling flash write... WARNING: > Setting 0xdc from 0x2 to 0x3 on ICH7/ICH7R failed. New value is 0x2. > WARNING: SPI Configuration Lockdown activated. > Setting BBAR to 0x00000000 failed! New value: 0x00e00000. > PROBLEMS, continuing anyway > Found Macronix flash chip "MX25L1605" (2048 kB, SPI) at physical > address 0xffe00000. > ich_spi_send_command: Internal command size error for opcode 0xab, got > writecnt=4, want =1 > ich_spi_send_command: Internal command size error for opcode 0xab, got > writecnt=4, want =1 > Reading flash... Read operation failed! > FAILED. > > When I read through this mail archives, I learned that SPI locked down > configuration is not possible. I read through the list of supported > hardware and I could see that MX25L1605 is among the list of supported > hardware. > > But I still not able to read my BIOS settings. Any suggestions would > be appreciated Hello Sai! you are writing about BIOS "settings" all the time. this may be a translation error. i just want to make clear that flashrom does not touch/access/handle any so-called CMOS settings but the BIOS software itself. you probably read about a very common problem with newer boards (ICH8 and newer), but that is only slightly related to your problem. in your case the chipset does not allow us to read the flash chip from the start, but only starting from 0x00e00000. The errors that follow that warning are a bit confusing to me right now. Which flashrom version did you use? could you please provide the full output of flashrom -V thanks. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From sai at rawthrills.com Wed Mar 14 01:00:58 2012 From: sai at rawthrills.com (sai at rawthrills.com) Date: Tue, 13 Mar 2012 20:00:58 -0400 Subject: [flashrom] Optiplex 380 BIOS read In-Reply-To: <201203132355.q2DNtaub006023@mail2.student.tuwien.ac.at> References: <20120313161121.26453viypa5ix14w@rawthrills.com> <201203132355.q2DNtaub006023@mail2.student.tuwien.ac.at> Message-ID: <20120313200058.90691beuqkfs4fj4@rawthrills.com> Thanks for the kind and quick reply. My need is to overwrite the BIOS settings. I need to re-write the boot sequence everytime I launch a script. I am using the most latest snapshot from the website 0.9.5-r1504 I am also attaching the verbose output. Thanks, Sai flashrom v0.9.5-r1504 on Linux 2.6.32-38-generic (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 2913M loops per second, 10 myus = 10 us, 100 myus = 98 us, 1000 myus = 1443 us, 10000 myus = 10239 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Dell Inc." DMI string system-product-name: "OptiPlex 380 " DMI string system-version: "Not Specified" DMI string baseboard-manufacturer: "Dell Inc." DMI string baseboard-product-name: "0HN7XN" DMI string baseboard-version: "A01" DMI string chassis-type: "Mini Tower" Found chipset "Intel ICH7/ICH7R" with PCI ID 8086:27b8. Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x1 0xffe00000/0xffa00000 FWH IDSEL: 0x1 0xffd80000/0xff980000 FWH IDSEL: 0x2 0xffd00000/0xff900000 FWH IDSEL: 0x2 0xffc80000/0xff880000 FWH IDSEL: 0x3 0xffc00000/0xff800000 FWH IDSEL: 0x3 0xff700000/0xff300000 FWH IDSEL: 0x4 0xff600000/0xff200000 FWH IDSEL: 0x5 0xff500000/0xff100000 FWH IDSEL: 0x6 0xff400000/0xff000000 FWH IDSEL: 0x7 0xfff80000/0xffb80000 FWH decode enabled 0xfff00000/0xffb00000 FWH decode enabled 0xffe80000/0xffa80000 FWH decode enabled 0xffe00000/0xffa00000 FWH decode enabled 0xffd80000/0xff980000 FWH decode disabled 0xffd00000/0xff900000 FWH decode disabled 0xffc80000/0xff880000 FWH decode disabled 0xffc00000/0xff800000 FWH decode disabled 0xff700000/0xff300000 FWH decode disabled 0xff600000/0xff200000 FWH decode disabled 0xff500000/0xff100000 FWH decode disabled 0xff400000/0xff000000 FWH decode disabled Maximum FWH chip size: 0x100000 bytes BIOS Lock Enable: enabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x2 WARNING: Setting 0xdc from 0x2 to 0x3 on ICH7/ICH7R failed. New value is 0x2. Root Complex Register Block address = 0xfeda8000 GCS = 0x800460: BIOS Interface Lock-Down: disabled, Boot BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfeda8000 + 0x3020 0x00: 0x8002 (SPIS) 0x02: 0x4061 (SPIC) 0x04: 0x00e00000 (SPIA) 0x08: 0x00152000 (SPID0) 0x0c: 0x00000000 (SPID0+4) 0x10: 0x00000000 (SPID1) 0x14: 0x00000000 (SPID1+4) 0x18: 0x00000000 (SPID2) 0x1c: 0x00000000 (SPID2+4) 0x20: 0x00000000 (SPID3) 0x24: 0x00000000 (SPID3+4) 0x28: 0x00000000 (SPID4) 0x2c: 0x00000000 (SPID4+4) 0x30: 0x00000000 (SPID5) 0x34: 0x00000000 (SPID5+4) 0x38: 0x00000000 (SPID6) 0x3c: 0x00000000 (SPID6+4) 0x40: 0x00000000 (SPID7) 0x44: 0x00000000 (SPID7+4) 0x50: 0x00e00000 (BBAR) 0x54: 0x0606 (PREOP) 0x56: 0x4fc8 (OPTYPE) 0x58: 0x029fabab (OPMENU) 0x5c: 0x01050220 (OPMENU+4) 0x60: 0x00000000 (PBR0) 0x64: 0x00000000 (PBR1) 0x68: 0x00000000 (PBR2) WARNING: SPI Configuration Lockdown activated. Reading OPCODES... done Setting BBAR to 0x00000000 failed! New value: 0x00e00000. SPI Read Configuration: prefetching disabled, caching enabled, PROBLEMS, continuing anyway The following protocols are supported: SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Chip status register is 00 Chip status register: Status Register Write Disable (SRWD) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is not set Chip status register: Bit 3 / Block Protect 1 (BP1) is not set Chip status register: Bit 2 / Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found Macronix flash chip "MX25L1605" (2048 kB, SPI) at physical address 0xffe00000. Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for SST SST25LF040A, 512 kB: ich_spi_send_command: Internal command size error for opcode 0xab, got writecnt=4, want =1 Probing for SST SST25LF080A, 1024 kB: ich_spi_send_command: Internal command size error for opcode 0xab, got writecnt=4, want =1 Probing for SST SST25VF010, 128 kB: Invalid OPCODE 0x90, will not execute. Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for SST SST25VF040, 512 kB: Invalid OPCODE 0x90, will not execute. Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for SST SST25VF040B.REMS, 512 kB: Invalid OPCODE 0x90, will not execute. Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Unknown SFDP-capable chip, 0 kB: Invalid OPCODE 0x5a, will not execute. Receiving SFDP signature failed. Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2015 Probing for Generic unknown SPI chip (REMS), 0 kB: Invalid OPCODE 0x90, will not execute. Found Macronix flash chip "MX25L1605" (2048 kB, SPI). Reading flash... Invalid OPCODE 0x03, will not execute. Read operation failed! FAILED. Restoring MMIO space at 0x7f37b2263070 Restoring PCI config space for 00:1f:0 reg 0xdc Quoting Stefan Tauner : > On Tue, 13 Mar 2012 16:11:21 -0400 > sai at rawthrills.com wrote: > >> Hello All, >> >> I am trying to use flashrom to read/write my bios settings. >> >> This is the error that I get when I try to read the BIOS: >> >> Found chipset "Intel ICH7/ICH7R". Enabling flash write... WARNING: >> Setting 0xdc from 0x2 to 0x3 on ICH7/ICH7R failed. New value is 0x2. >> WARNING: SPI Configuration Lockdown activated. >> Setting BBAR to 0x00000000 failed! New value: 0x00e00000. >> PROBLEMS, continuing anyway >> Found Macronix flash chip "MX25L1605" (2048 kB, SPI) at physical >> address 0xffe00000. >> ich_spi_send_command: Internal command size error for opcode 0xab, got >> writecnt=4, want =1 >> ich_spi_send_command: Internal command size error for opcode 0xab, got >> writecnt=4, want =1 >> Reading flash... Read operation failed! >> FAILED. >> >> When I read through this mail archives, I learned that SPI locked down >> configuration is not possible. I read through the list of supported >> hardware and I could see that MX25L1605 is among the list of supported >> hardware. >> >> But I still not able to read my BIOS settings. Any suggestions would >> be appreciated > > Hello Sai! > > you are writing about BIOS "settings" all the time. this may be a > translation error. i just want to make clear that flashrom does not > touch/access/handle any so-called CMOS settings but the BIOS software > itself. > > you probably read about a very common problem with newer boards (ICH8 > and newer), but that is only slightly related to your problem. in your > case the chipset does not allow us to read the flash chip from the > start, but only starting from 0x00e00000. > The errors that follow that warning are a bit confusing to me right now. > Which flashrom version did you use? could you please provide the full > output of flashrom -V thanks. > > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner > From emmfleur at gmail.com Wed Mar 14 07:22:24 2012 From: emmfleur at gmail.com (mmanu) Date: Wed, 14 Mar 2012 07:22:24 +0100 Subject: [flashrom] MSI H61MA-E35(B3) In-Reply-To: <201203132301.q2DN1ku1003024@mail2.student.tuwien.ac.at> References: <201203132301.q2DN1ku1003024@mail2.student.tuwien.ac.at> Message-ID: that's exactly what i ment : the update of my H61MA-E35(B3) went off without a hitch. 2012/3/14 Stefan Tauner > On Tue, 13 Mar 2012 05:41:22 +0100 > mmanu wrote: > > > here is my flashrom -V > log > > all works fine, thanks. > > hi and thanks for your report! > by "all" do you also mean writing/updating the firmware? if so i'll add > that board to our list of supported devices. > > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner > -------------- next part -------------- An HTML attachment was scrubbed... URL: From roysjosh at gmail.com Wed Mar 14 14:53:23 2012 From: roysjosh at gmail.com (Joshua Roys) Date: Wed, 14 Mar 2012 09:53:23 -0400 Subject: [flashrom] [PATCH] Check class for nvidia southbridge In-Reply-To: <1331674172-10714-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> References: <1331674172-10714-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> Message-ID: <4F60A2D3.3050503@gmail.com> On 03/13/2012 05:29 PM, Michael Karcher wrote: > @@ -995,6 +1001,12 @@ static int enable_flash_mcp55(struct pci_dev *dev, const char *name) > uint8_t old, new, val; > uint16_t wordval; > > + if (pci_read_word(dev, PCI_CLASS_DEVICE) != 0x0601) { > + /* output is followed by "OK - searching for ...\n" */ > + msg_pinfo(" Seems to be a secondary south bridge, "); > + return NOT_DONE_YET; > + } > + > /* Set the 0-16 MB enable bits. */ > val = pci_read_byte(dev, 0x88); > val |= 0xff; /* 256K */ > @@ -1207,15 +1219,7 @@ const struct penable chipset_enables[] = { > {0x10de, 0x0262, NT, "NVIDIA", "MCP51", enable_flash_ck804}, > {0x10de, 0x0263, NT, "NVIDIA", "MCP51", enable_flash_ck804}, > {0x10de, 0x0360, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* M57SLI*/ > - /* 10de:0361 is present in Tyan S2915 OEM systems, but not connected to > - * the flash chip. Instead, 10de:0364 is connected to the flash chip. > - * Until we have PCI device class matching or some fallback mechanism, > - * this is needed to get flashrom working on Tyan S2915 and maybe other > - * dual-MCP55 boards. > - */ > -#if 0 > - {0x10de, 0x0361, NT, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ > -#endif > + {0x10de, 0x0361, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ > {0x10de, 0x0362, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ > {0x10de, 0x0363, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ > {0x10de, 0x0364, OK, "NVIDIA", "MCP55", enable_flash_mcp55}, /* LPC */ Hello, In http://paste.flashrom.org/view.php?id=1136 both LPC bridges have ID 10de:0360, but different class. However, due to the architecture of the chipset enable scanning loop, returning NOT_DONE_YET will not find a second bridge with identical IDs. In http://paste.flashrom.org/view.php?id=1142 (which was the almost working version of the patch) it was required to add pci_dev_find_next and loop on that when NOT_DONE_YET was returned. Thoughts? Josh From c-d.hailfinger.devel.2006 at gmx.net Wed Mar 14 19:19:05 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 14 Mar 2012 19:19:05 +0100 Subject: [flashrom] 80/100/132 column line width policy In-Reply-To: <1331587419.4591.36.camel@localhost> References: <4F5CC9EC.9030500@gmx.net> <201203112200.q2BM0gZh011716@mail2.student.tuwien.ac.at> <1331587419.4591.36.camel@localhost> Message-ID: <4F60E119.8030808@gmx.net> Am 12.03.2012 22:23 schrieb Michael Karcher: > Am Sonntag, den 11.03.2012, 23:00 +0100 schrieb Stefan Tauner: >>> Keeping the old 80 column limit is not really an option anymore. >>> Standard terminal sizes have one of 80, 100 or 132 columns. >>> Given the monitor resolutions many people have nowadays, I think it is >>> safe to say that you can fit two xterms with 100 columns horizonally >>> next to each other. 100 columns should also be sufficient for a msg_p* >>> of roughly 80 columns of text. >>> 132 columns provide more leeway, but IMHO that would be too wide for >>> good readability (and my screen can't fit two xterms side-by-side anymore). >>> >>> Of course some files have sections where any column limit is not >>> acceptable (board lists etc.), but the column limit violations should be >>> limited to the affected file sections, not whole files. >> i would prefer more complex rules than a simple "break the line at a >> maximum of n chars or die". >> increasing the hard limit would lower the frequency for anger-inducing >> line breaks on my side a bit, but won't solve the problem completely. > The idea of line length limits is of course not to make anyone angry, > but to make the code readable in a "typical" editing situation. Even if > my window is just one or two characters too small, the last character > gets chopped off at the right margin of the window. So there is a kind > of hard limit for the person trying to read the code. But as windows can > be resized, the limit is still kind-of soft. Defining some "window size > that makes you able to see all the code" still would be a good idea to > prevent a slow creep of steadily increasing line lenghts (like "Hey, > it's just one char longer than this other line, so why is this line > forbidden?!") > > Also having strings in the source as they are printed is a good idea, so > we need at least 2*tabsize + strlen("msg_perr(\"") + strlen("\");") = 29 > more chars than 80 characters (actually, for adding a "\n", even a bit > more, but you seldomly hit the 80 exactly, so to have messages in a once > indented block in a function body, you need 110 chars. My screen can fit two xterms with exactly 112 columns each next to each other, so I like this suggestion. > On the other hand, the estimate of 200 chars/screen is quite reasonable > for 4:3 monitors (which are still in use by a lot of programmers), so > 100 chars to put to terminals next to each other sound sensible, too. 100 columns is of course nice as well. >> i think i once proposed something like the following after you went >> offline, so i am repeating it now in an RFC. >> >> x chars soft limit (e.g. 90); >> y chars hard limit (e.g. 120); >> o chars overhang (< 5 or "common sense"). >> >> before reaching x one should try to break at a convenient spot like >> logical operators for multi-term conditions, parameter names etc just >> like one usually does before hard limits. >> most printed text strings should have their line breaks before x at >> usual indention depths ((1 to 3)*8). >> expressions that fit in y chars completely, but not in x should *not* be >> split. > This means I need to have the window y chars wide to be able to read the > expression. So the soft limit of x does not really help. Thus I don't > get what the advantage of a soft limit so much lower than the hard limit > is useful for. > >> optional: expressions that fit in y + o chars, should not be split, >> just for the sake of obeying the limit i.e. if it would make the >> expression less readable (e.g. the case where ";" breaks the limit and >> i start swearing :P) > And here you are kind-of re-inventing the soft-limit/hard-limit split, > but this time with a 5 char difference instead of a 30 char difference. > If the stuff that is not fitting my window is just a semicolon after a > function call with unused result, you can be quite sure that what is > "lost" is just a semicolon. For a printing function, even if the window > is just up to the closing quote, the closing parenthesis and the > semicolon need not be visible to understand the line. > So a small overhang indeed makes sense, if you consider it as: "If I > don't see the characters in the overhang, can I still be quite confident > I know what the code does?" If you can answer that question with yes, > use the overhang. And I'm totally against having 4 kinds of limits: extremely soft (Stefan's soft limit), soft (Stefan's hard limit), hard (Stefan's hard+overhang) and none (for tables). The no-limits exception for tables is good. No objection there. Everybody is free to introduce linebreaks before any limit if it improves readability. Admittedly those linebreaks will disappear if someone runs indent on the code and commits it as "trivial patch" - we had quite a few such commits in the past (and I was not really happy about that). Other than for tables, I really want a hard limit with no exceptions because I'm pretty sure there will be quite some disagreement about what constitutes being "confident about what the code does". For me, "\n" or not is a question which has an impact on output, especially when I'm hunting for empty lines which got printed somewhere. Even more so if we're talking about parts of a printed string which contain format strings. If I have to resize the terminal anyway to see the complete code, I might as well make the most of it and not waste lines by introducing linebreaks elsewhere. >> optional #2: neither limit should apply to printed text strings. they >> should be broken at "\n" no matter how far that is. the rationale is >> that it is possible to see if they are sanely formatted without runtime >> tests. > Makes sense too, if you require that the varargs for a printf-like > function again are fitting the limit. Having to scroll the window to > read a detailed message is fine with me, as long as everything except > string constants is completely understandable without scrolling. > >> here, but i think i can cope better with "annoying" preferences of >> others when reviewing patches or getting feedback than with hard limits >> that make me write lines like "\tab\tab\tab i) {". :) > Kind-of far-fetched example. Usually you should have a better line break > point before that. Only exception where this might not be the case is: > msg_pinfo("%d frobbing fizzles of furious foxes failed. Try teasing turkeys to\n" > "testify the truth. Ignoring irratating ibises is immensely important\n", i); > In this case, the only sensible line-break point really *is* before the > i. As an occasional reader of that code, I might not be interested > whether teasing turkeys or teasing tortoises is suggested, but I am more > likely interested in knowing what value is printed. If the "i" gets > pushed out of the window, I loose important information. So, yes, in > this case, I am all for having "\tab\tab\tab i);" on a line. The comma > may disappear past the right-border, as that comma is obviously there if > the code compiles. > > So my 2 cents for the discussion is: > - we should have a "suggested window size" (kind of equals your hard > limit. > - only "obvious" characters may be past that window size > - verbose hints (where flashrom tries to write novels to the screen) > are unaffected of the suggested window size, but the output needs to > fit in 80 chars. > with following softeninig applied > - If some section of code is way more legible if you get some extra > chars, take them. not being able to read a code side-by-side without > horizontal scrolling of the window is the lesser evil compared to > having lots of obnoxious line breaks. > - BUT: Do not assume if you exceeded this limit by 3 chars according > to the previous rule this is generally the new suggested window size! > - Plain string constants may exceed the suggested window size in the > "flashrom writes a novel" case. If the message itself is not > multi-line, but just on one line, break it, if you have to break > the line anyway for the printf varargs. And what line length would be the real hard (no exceptions except for tables) limit? The softening of limits just makes it harder to find out what the real limit is, and I don't think there is any indentation tool (even the stuff which is not as crappy as GNU indent) which has enough atificial intelligence to find out what's considered to be "obvious" content allowed after the limit. > - Use whatever space you need for tables, but don't make them wider > than necessary. > > For the last item about making tables not wider than necessary I suggest > to not use TABs inside a table, but *only* for indention of code blocks. > This enables changing the tab size without everything falling apart - > you just get a different indent steps. The consequence for tables is > that if some column is determined to take 11 characters (including comma > and space), you can just use them instead of needing to use 16 > characters to get back to the TAB grid. > If in a table one column entry is excessively long (e.g. a board name > like "P9XGH3-Deluxe/Pro or P9XGH4-basic", this does not necessarily mean > this excessive entry determines column width. Especially if it is > followed by filler entries like NULL or 0 which can be squashed below > nominal column width, so interesting fields do again line up. Full agreement for squeezing tables in a way which does not make a table the vitcim of its longest member. > For the "suggested window size, I think carldani's value 100 would be a > good start. Regards, Carl-Daniel -- http://www.hailfinger.org/ From mr.mark.starikov at gmail.com Thu Mar 15 03:45:42 2012 From: mr.mark.starikov at gmail.com (Mark Starikov) Date: Thu, 15 Mar 2012 13:45:42 +1100 Subject: [flashrom] updating Intel H61 went well Message-ID: Dear Flashrom team, Just have updated bois on gigabyte H61M-D2-B3 from version F3 to version F9. rom link: http://www.gigabyte.com/products/product-page.aspx?pid=3773#bios Will reboot in a second to confirm. flashrom running on opensuse 12.1 (Linux marklinux 3.1.9-1.4-desktop #1 SMP PREEMPT Fri Jan 27 08:55:10 UTC 2012 (efb5ff4) x86_64 x86_64 x86_64 GNU/Linux) flashrom version is: flashrom v0.9.4-r1457 on Linux 3.1.9-1.4-desktop (x86_64), built with libpci 3.1.7, GCC 4.6.2, little endian here is the flashrom -V output: marklinux:~ # flashrom -V flashrom v0.9.4-r1457 on Linux 3.1.9-1.4-desktop (x86_64), built with libpci 3.1.7, GCC 4.6.2, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 3245M loops per second, 10 myus = 10 us, 100 myus = 106 us, 1000 myus = 994 us, 10000 myus = 10454 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Gigabyte Technology Co., Ltd." DMI string system-product-name: "H61M-D2-B3" DMI string system-version: " " DMI string baseboard-manufacturer: "Gigabyte Technology Co., Ltd." DMI string baseboard-product-name: "H61M-D2-B3" DMI string baseboard-version: "x.x" DMI string chassis-type: "Desktop" Found ITE Super I/O, ID 0x8728 on port 0x2e Found chipset "Intel H61" with PCI ID 8086:1c5c. This chipset is marked as untested. If you are using an up-to-date version of flashrom please email a report to flashrom at flashrom.org including a verbose (-V) log. Thank you! Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x1 0xffe00000/0xffa00000 FWH IDSEL: 0x1 0xffd80000/0xff980000 FWH IDSEL: 0x2 0xffd00000/0xff900000 FWH IDSEL: 0x2 0xffc80000/0xff880000 FWH IDSEL: 0x3 0xffc00000/0xff800000 FWH IDSEL: 0x3 0xff700000/0xff300000 FWH IDSEL: 0x4 0xff600000/0xff200000 FWH IDSEL: 0x5 0xff500000/0xff100000 FWH IDSEL: 0x6 0xff400000/0xff000000 FWH IDSEL: 0x7 0xfff80000/0xffb80000 FWH decode enabled 0xfff00000/0xffb00000 FWH decode enabled 0xffe80000/0xffa80000 FWH decode enabled 0xffe00000/0xffa00000 FWH decode enabled 0xffd80000/0xff980000 FWH decode enabled 0xffd00000/0xff900000 FWH decode enabled 0xffc80000/0xff880000 FWH decode enabled 0xffc00000/0xff800000 FWH decode enabled 0xff700000/0xff300000 FWH decode disabled 0xff600000/0xff200000 FWH decode disabled 0xff500000/0xff100000 FWH decode disabled 0xff400000/0xff000000 FWH decode disabled Maximum FWH chip size: 0x100000 bytes BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0 Root Complex Register Block address = 0xfed1c000 GCS = 0xc65: BIOS Interface Lock-Down: enabled, Boot BIOS Straps: 0x3 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3800 0x04: 0x6008 (HSFS) HSFS: FDONE=0, FCERR=0, AEL=0, BERASE=1, SCIP=0, FDOPSS=1, FDV=1, FLOCKDN=0 0x06: 0x0000 (HSFC) HSFC: FGO=0, FCYCLE=0, FDBC=0, SME=0 0x08: 0x003fffc0 (FADDR) 0x50: 0x0000ffff (FRAP) BMWAG 0x00, BMRAG 0x00, BRWA 0xff, BRRA 0xff 0x54: 0x00000000 (FREG0: Flash Descriptor) 0x00000000-0x00000fff is read-write 0x58: 0x03ff0000 (FREG1: BIOS) 0x00000000-0x003fffff is read-write 0x5C: 0x01800001 (FREG2: Management Engine) 0x00001000-0x00180fff is read-write 0x60: 0x00000fff (FREG3: Gigabit Ethernet) Gigabit Ethernet region is unused. 0x64: 0x00000fff (FREG4: Platform Data) Platform Data region is unused. 0x90: 0x84 (SSFS) SSFS: SCIP=0, FDONE=1, FCERR=0, AEL=0 0x91: 0xf87f10 (SSFC) SSFC: SCGO=0, ACS=0, SPOP=0, COP=1, DBC=63, SME=0, SCF=0 0x94: 0x5006 (PREOP) 0x96: 0x163b (OPTYPE) 0x98: 0x05200302 (OPMENU) 0x9C: 0x0006019f (OPMENU+4) 0xA0: 0x00000000 (BBAR) 0xC4: 0x00002005 (LVSCC) LVSCC: BES=0x1, WG=1, WSR=0, WEWS=0, EO=0x20, VCL=0 0xC8: 0x00002005 (UVSCC) UVSCC: BES=0x1, WG=1, WSR=0, WEWS=0, EO=0x20, VCL=0 0xD0: 0x00000000 (FPB) Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done SPI Read Configuration: prefetching disabled, caching enabled, OK. This chipset supports the following protocols: FWH, SPI. Super I/O ID 0x8728 is not on the list of flash capable controllers. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT25DF641, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Chip status register is 00 Chip status register: Status Register Write Disable (SRWD) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is not set Chip status register: Bit 3 / Block Protect 1 (BP1) is not set Chip status register: Bit 2 / Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found Macronix flash chip "MX25L3205" (4096 kB, SPI) at physical address 0xffc00000. Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for SST SST25LF040A, 512 kB: program_opcodes: preop=5006 optype=462b opmenu=05ab0302c79f0190 on-the-fly OPCODE (0xAB) re-programmed, op-pos=2 probe_spi_res2: id1 0x15, id2 0x15 Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0x15, id2 0x15 Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xc2, id2 0x15 Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xc2, id2 0x15 Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xc2, id2 0x15 Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0x21, id2 0x9c, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0x21, id2 0x9c, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xc2, id2 0x15 Found Macronix flash chip "MX25L3205" (4096 kB, SPI). No operations were specified. Restoring MMIO space at 0x7fd2ba1dc89c Restoring MMIO space at 0x7fd2ba1dc898 Restoring MMIO space at 0x7fd2ba1dc896 Restoring MMIO space at 0x7fd2ba1dc894 Restoring MMIO space at 0x7fd2ba1dc8a0 Restoring PCI config space for 00:1f:0 reg 0xdc Result: SUCCESS! Thank you for the brilliant program(before using flashrom tried freedos and got a bit stuck) and let me know if you need any additional information. Kind regards, Mark. -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan.tauner at student.tuwien.ac.at Thu Mar 15 23:09:17 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Thu, 15 Mar 2012 23:09:17 +0100 Subject: [flashrom] updating Intel H61 went well In-Reply-To: References: Message-ID: <201203152209.q2FM9H2n002520@mail2.student.tuwien.ac.at> On Thu, 15 Mar 2012 13:45:42 +1100 Mark Starikov wrote: > Dear Flashrom team, > > Just have updated bois on gigabyte H61M-D2-B3 from version F3 to version F9. > > rom link: http://www.gigabyte.com/products/product-page.aspx?pid=3773#bios > > Will reboot in a second to confirm. > > [?] > Result: SUCCESS! > > Thank you for the brilliant program(before using flashrom tried freedos and > got a bit stuck) and let me know if you need any additional information. > > Kind regards, Hello Mark, thanks for your report! I have marked the chipset as fully tested, added the board to our list of supported boards and will commit that later together with other small changes. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From alphageek at hotmail.com Sat Mar 17 04:13:09 2012 From: alphageek at hotmail.com (Alpha Geek) Date: Sat, 17 Mar 2012 03:13:09 +0000 Subject: [flashrom] P8Z68-V-PRO/GEN3 - Confirm Working Message-ID: Confirmed working P8Z68-V-PRO/GEN3 works with 0.9.5. WARNING: MAC Address of LOM [Lan on Mainboard] will be overwritten with 0x88,0x88,0x88,0x88,0x87,0x88 in place of real MAC Address. MAC Address is stored in offset 0x1000 - 0x1005 of flashrom image. [verified for BIOS vers 0301, 0402, 3101, 3202]. Editing these addrs, with a MAC address affects the MAC address of the LOM, and remains between power downs. Congrats on being more reliable so far than the ASUS provided tools, which bricked a board. hot-swapping a ROM on another MB and using flashrom v0.9.5 allowed me to fix. Passing on whatever I know as thanks. -Alpha -------------- next part -------------- An HTML attachment was scrubbed... URL: From palschmitt at zoho.com Sat Mar 17 12:21:56 2012 From: palschmitt at zoho.com (Pal Schmitt) Date: Sat, 17 Mar 2012 11:21:56 +0000 Subject: [flashrom] M3N75 EMHDMI Message-ID: <1331983316.4093.1.camel@pal-desktop> The flashrom -V output of my board. Enjoy, Pal Schmitt -------------- next part -------------- flashrom v0.9.4-r1394 on Linux 3.0.0-16-generic (x86_64), built with libpci 3.1.7, GCC 4.6.1, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 2 usecs, 664M loops per second, 10 myus = 11 us, 100 myus = 101 us, 1000 myus = 997 us, 10000 myus = 9976 us, 8 myus = 9 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "System manufacturer" DMI string system-product-name: "System Product Name" DMI string system-version: "System Version" DMI string baseboard-manufacturer: "ASUSTeK Computer INC." DMI string baseboard-product-name: "M3N78-EMH HDMI" DMI string baseboard-version: "Rev 1.xx" DMI string chassis-type: "Desktop" Found ITE Super I/O, ID 0x8712 on port 0x2e Found chipset "NVIDIA MCP78S" with PCI ID 10de:075c. This chipset is marked as untested. If you are using an up-to-date version of flashrom please email a report to flashrom at flashrom.org including a verbose (-V) log. Thank you! Enabling flash write... This chipset is not really supported yet. Guesswork... ISA/LPC bridge reg 0x8a contents: 0x40, bit 6 is 1, bit 5 is 0 Flash bus type is SPI SPI on this chipset is WIP. Please report any success or failure by mailing us the verbose output to flashrom at flashrom.org, thanks! Found SMBus device 10de:0752 at 00:01:1 MCP SPI BAR is at 0xfcf80000 SPI control is 0xc012, req=0, gnt=0 Please send the output of "flashrom -V" to flashrom at flashrom.org with your board name: flashrom -V as the subject to help us finish support for your chipset. Thanks. OK. This chipset supports the following protocols: SPI. Super I/O ID 0x8712 is not on the list of flash capable controllers. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DF641, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Chip status register is 00 Chip status register: Status Register Write Disable (SRWD) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is not set Chip status register: Bit 3 / Block Protect 1 (BP1) is not set Chip status register: Bit 2 / Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found Macronix flash chip "MX25L8005" (1024 kB, SPI) at physical address 0xfff00000. Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for SST SST25VF010.REMS, 128 kB: probe_spi_rems: id1 0xc2, id2 0x13 Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for SST SST25VF040.REMS, 512 kB: probe_spi_rems: id1 0xc2, id2 0x13 Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for SST SST25LF040A.RES, 512 kB: probe_spi_res2: id1 0x13, id2 0x13 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xc2, id2 0x13 Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P05.RES, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P10.RES, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014 Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xc2, id2 0x13 No operations were specified. From jchevrier at gmail.com Sat Mar 17 17:39:38 2012 From: jchevrier at gmail.com (Justin Chevrier) Date: Sat, 17 Mar 2012 12:39:38 -0400 Subject: [flashrom] HP xw6400 workstation: Flashrom -V Message-ID: -------------- next part -------------- flashrom v0.9.5.2-r1515 on Linux 3.2.1-gentoo-r2 (x86_64), built with libpci 3.1.9, GCC 4.5.3, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 2657M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 1002 us, 10000 myus = 10003 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Hewlett-Packard" DMI string system-product-name: "HP xw6400 Workstation" DMI string system-version: " " DMI string baseboard-manufacturer: "Hewlett-Packard" DMI string baseboard-product-name: "0A04h" DMI string baseboard-version: "NA" DMI string chassis-type: "Mini Tower" Found chipset "Intel 631xESB/632xESB/3100" with PCI ID 8086:2670. Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x1 0xffe00000/0xffa00000 FWH IDSEL: 0x1 0xffd80000/0xff980000 FWH IDSEL: 0x2 0xffd00000/0xff900000 FWH IDSEL: 0x2 0xffc80000/0xff880000 FWH IDSEL: 0x3 0xffc00000/0xff800000 FWH IDSEL: 0x3 0xff700000/0xff300000 FWH IDSEL: 0x4 0xff600000/0xff200000 FWH IDSEL: 0x5 0xff500000/0xff100000 FWH IDSEL: 0x6 0xff400000/0xff000000 FWH IDSEL: 0x7 0xfff80000/0xffb80000 FWH decode enabled 0xfff00000/0xffb00000 FWH decode enabled 0xffe80000/0xffa80000 FWH decode disabled 0xffe00000/0xffa00000 FWH decode disabled 0xffd80000/0xff980000 FWH decode disabled 0xffd00000/0xff900000 FWH decode disabled 0xffc80000/0xff880000 FWH decode disabled 0xffc00000/0xff800000 FWH decode disabled 0xff700000/0xff300000 FWH decode disabled 0xff600000/0xff200000 FWH decode disabled 0xff500000/0xff100000 FWH decode disabled 0xff400000/0xff000000 FWH decode disabled Maximum FWH chip size: 0x100000 bytes BIOS Lock Enable: enabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x2 WARNING: Setting 0xdc from 0x2 to 0x3 on 631xESB/632xESB/3100 failed. New value is 0x2. FAILED! The following protocols are supported: FWH. Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x2a, id2 0x98, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0x20, id2 0x20, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0x2a, id2 0x98, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0x20, id2 0x20, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0x2a, id2 0x98, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0x0a, id2 0x7e, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0x20, id2 0x20, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0x20, id2 0x20, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0x20, id2 0x20, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0x20, id2 0x20, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x2a, id2 0x98, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0x20, id2 0x20, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x2a, id2 0x98, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0x20, id2 0x20, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content No EEPROM/flash device found. Note: flashrom can never write if the flash chip isn't found automatically. Restoring PCI config space for 00:1f:0 reg 0xdc From bscipioni at att.net Sat Mar 17 22:08:26 2012 From: bscipioni at att.net (Brian L Scipioni) Date: Sat, 17 Mar 2012 17:08:26 -0400 Subject: [flashrom] Tyan S2875 (Tiger K8W) In-Reply-To: <201203132305.q2DN5Fx7006143@mail2.student.tuwien.ac.at> References: <1331647791.14215.YahooMailRC@web181520.mail.ne1.yahoo.com> <201203132305.q2DN5Fx7006143@mail2.student.tuwien.ac.at> Message-ID: <1332018506.13531.7.camel@cesium.gaugetheory.org> Stefan, Attached - as requested. And thank you all - I was about to go through the whole DOS boot/drive thing when I came across flashrom. I couldn't believe it at first that I could flash my bios in linux "live" and verify it. brian On Wed, 2012-03-14 at 00:05 +0100, Stefan Tauner wrote: > On Tue, 13 Mar 2012 07:09:51 -0700 (PDT) > Brian Scipioni wrote: > > > Dear all, > > > > You may add the Tyan S2875 (Tiger K8W) main board BIOS to the list of "known to > > be working". > > Whew, although it wasn't really that much of a gamble. > > > > The updated BIOS installed was the AMI 2875V304.ROM available from Tyan. > > > > thanks for the very good software - I never used flashrom before and it was > > clear what to do. > > > > Brian Scipioni > > Hello Brian, > > thanks for your report! > I have added the board as you suggested and will commit that later > together with other small changes. If it is not too much of a hassle > please send us the output of flashrom -V too for documentation purposes. -------------- next part -------------- flashrom v0.9.4-r1455 on Linux 2.6.35.14-106.fc14.i686.PAE (i686), built with libpci 3.1.7, GCC 4.5.1 20100924 (Red Hat 4.5.1-4), little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 2 usecs, 1250M loops per second, 10 myus = 11 us, 100 myus = 98 us, 1000 myus = 1003 us, 10000 myus = 9951 us, 8 myus = 9 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "To Be Filled By O.E.M." DMI string system-product-name: "To Be Filled By O.E.M." DMI string system-version: "To Be Filled By O.E.M." DMI string baseboard-manufacturer: "TYAN" DMI string baseboard-product-name: "TYAN Tiger K8W Dual AMD Opteron, S2875" DMI string baseboard-version: "To be filled by O.E.M." DMI string chassis-type: "Desktop" Found chipset "AMD AMD8111" with PCI ID 1022:7468. Enabling flash write... OK. This chipset supports the following protocols: Non-SPI. Probing for AMD Am29F010A/B, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F002(N)BB, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F002(N)BT, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F016D, 2048 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F040B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F080B, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV001BB, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV001BT, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV002BB, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV002BT, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV004BB, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV004BT, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV008BB, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV008BT, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV040B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV081B, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMIC A29002B, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for AMIC A29002T, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for AMIC A29040B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMIC A49LF040A, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Atmel AT29C512, 64 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Atmel AT29C010A, 128 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Atmel AT29C020, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Atmel AT29C040A, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Atmel AT49BV512, 64 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Atmel AT49F020, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Atmel AT49F002(N), 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Atmel AT49F002(N)T, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for Catalyst CAT28F512, 64 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Bright BM29F040, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for EMST F49B002UA, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Eon EN29F010, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29F002(A)(N)B, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29F002(A)(N)T, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for Fujitsu MBM29F004BC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Fujitsu MBM29F004TC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Fujitsu MBM29F400BC, 512 kB: probe_m29f400bt: id1 0xff, id2 0xff Probing for Fujitsu MBM29F400TC, 512 kB: probe_m29f400bt: id1 0xff, id2 0xff Probing for Hyundai HY29F002T, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Hyundai HY29F002B, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Hyundai HY29F040A, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F001BN/BX-B, 128 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Intel 28F001BN/BX-T, 128 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Intel 28F002BC/BL/BV/BX-T, 256 kB: probe_82802ab: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F008S3/S5/SC, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F004B5/BE/BV/BX-B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F004B5/BE/BV/BX-T, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F400BV/BX/CE/CV-B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F400BV/BX/CE/CV-T, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F001B, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F001T, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F002(N)B, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F002(N)T, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F040, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29LV040, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29C51000B, 64 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for MoselVitelic V29C51000T, 64 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for MoselVitelic V29C51400B, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for MoselVitelic V29C51400T, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for MoselVitelic V29LC51000, 64 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for MoselVitelic V29LC51001, 128 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for MoselVitelic V29LC51002, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for PMC Pm29F002T, 256 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm29F002B, 256 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm39LV010, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm39LV020, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm39LV040, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Found PMC flash chip "Pm49FL004" (512 kB, LPC, FWH) at physical address 0xfff80000. Probing for Sharp LH28F008BJT-BTLZ1, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST28SF040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST29EE010, 128 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST29LE010, 128 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST29EE020A, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST29LE020, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST39SF512, 64 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST39SF010A, 128 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST39SF020A, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST39SF040, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST39VF512, 64 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST39VF010, 128 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST39VF020, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST39VF040, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST39VF080, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF020, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST49LF020A, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST49LF040, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST49LF040B, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SST SST49LF080A, 1024 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF160C, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M29F002B, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for ST M29F002T/NT, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for ST M29F040B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M29F400BB, 512 kB: probe_m29f400bt: id1 0xff, id2 0xff Probing for ST M29F400BT, 512 kB: probe_m29f400bt: id1 0xff, id2 0xff Probing for ST M29W010B, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M29W040B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M29W512B, 64 kB: probe_jedec_common: id1 0xa9, id2 0x6c, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50LPW116, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51001B, 128 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SyncMOS/MoselVitelic {F,S,V}29C51001T, 128 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SyncMOS/MoselVitelic {F,S,V}29C51002B, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SyncMOS/MoselVitelic {F,S,V}29C51002T, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SyncMOS/MoselVitelic {F,S,V}29C51004B, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SyncMOS/MoselVitelic {F,S,V}29C51004T, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SyncMOS/MoselVitelic {S,V}29C31004B, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for SyncMOS/MoselVitelic {S,V}29C31004T, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for TI TMS29F002RB, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for TI TMS29F002RT, 256 kB: probe_jedec_common: id1 0x85, id2 0xeb, id1 is normal flash content, id2 is normal flash content Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012-old, 128 kB: Old Winbond W29* probe method disabled because the probing sequence puts the AMIC A49LF040A in a funky state. Use 'flashrom -c W29C010(M)/W29C011A/W29EE011/W29EE012-old' if you have a board with such a chip. Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012, 128 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W29C020(C)/W29C022, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W29C040/P, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W39L040, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W39V040A, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W39V040B, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W39V040C, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W39V080A, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49F002U/N, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W49F020, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W49V002A, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x9d, id2 0x6e Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0x9d, id2 0x6e Found PMC flash chip "Pm49FL004" (512 kB, LPC, FWH). No operations were specified. Restoring PCI config space for 00:07:0 reg 0x40 Restoring PCI config space for 00:07:0 reg 0x43 From stefan.tauner at student.tuwien.ac.at Sun Mar 18 17:52:16 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 18 Mar 2012 17:52:16 +0100 Subject: [flashrom] HP xw6400 workstation: Flashrom -V In-Reply-To: References: Message-ID: <201203181652.q2IGqG99002891@mail2.student.tuwien.ac.at> Hello Justin, could you please also provide the output of 'lspci -nnvvvxxx' and 'superiotool -deV'. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From jchevrier at gmail.com Mon Mar 19 02:37:54 2012 From: jchevrier at gmail.com (Justin Chevrier) Date: Sun, 18 Mar 2012 21:37:54 -0400 Subject: [flashrom] HP xw6400 workstation: Flashrom -V In-Reply-To: <201203181652.q2IGqG99002891@mail2.student.tuwien.ac.at> References: <201203181652.q2IGqG99002891@mail2.student.tuwien.ac.at> Message-ID: Attached. Justin On Sun, Mar 18, 2012 at 12:52 PM, Stefan Tauner wrote: > Hello Justin, > > could you please also provide the output of 'lspci -nnvvvxxx' and > 'superiotool -deV'. > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner -------------- next part -------------- 00:00.0 Host bridge [0600]: Intel Corporation 5000X Chipset Memory Controller Hub [8086:25c0] (rev 12) Subsystem: Hewlett-Packard Company Device [103c:3014] Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] MSI: Enable- Count=1/2 Maskable- 64bit- Address: fee00020 Data: 0000 Capabilities: [6c] Express (v1) Root Port (Slot-), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited ExtTag- RBE- FLReset- DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 4096 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #2, Speed 2.5GT/s, Width x4, ASPM L0s, Latency L0 unlimited, L1 unlimited ClockPM- Surprise+ LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP+ SDES+ TLP+ FCP+ CmpltTO+ CmpltAbrt+ UnxCmplt+ RxOF+ MalfTLP+ ECRC- UnsupReq+ ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr+ BadTLP+ BadDLLP+ Rollover+ Timeout+ NonFatalErr- AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn- Kernel driver in use: pcieport 00: 86 80 e2 25 47 01 10 00 12 00 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 00 10 20 00 f0 00 00 20 20: 90 d0 e0 d2 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 50 00 00 00 00 00 00 00 00 00 06 00 40: 00 00 00 00 00 00 00 00 84 04 c0 00 01 10 00 00 50: 01 58 02 c8 00 00 00 00 05 6c 02 00 20 00 e0 fe 60: 00 00 00 00 06 10 00 00 00 00 00 00 10 00 41 00 70: c1 0f 00 00 0f 50 00 00 41 f4 1b 02 00 00 41 30 80: 00 00 00 00 c0 03 60 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:03.0 PCI bridge [0604]: Intel Corporation 5000 Series Chipset PCI Express x4 Port 3 [8086:25e3] (rev 12) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] MSI: Enable- Count=1/2 Maskable- 64bit- Address: fee00020 Data: 0000 Capabilities: [6c] Express (v1) Root Port (Slot+), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited ExtTag- RBE- FLReset- DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 4096 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #3, Speed 2.5GT/s, Width x4, ASPM L0s, Latency L0 unlimited, L1 unlimited ClockPM- Surprise+ LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise- Slot #0, PowerLimit 25.000W; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd Off, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL+ CmdCplt- PresDet+ Interlock- Changed: MRL- PresDet- LinkState- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP+ SDES+ TLP+ FCP+ CmpltTO+ CmpltAbrt+ UnxCmplt+ RxOF+ MalfTLP+ ECRC- UnsupReq+ ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr+ BadTLP+ BadDLLP+ Rollover+ Timeout+ NonFatalErr- AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn- Kernel driver in use: pcieport 00: 86 80 e3 25 47 01 10 00 12 00 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 00 60 60 00 10 10 00 00 20: 20 d0 40 d0 01 c0 11 d0 00 00 00 00 00 00 00 00 30: 00 00 00 00 50 00 00 00 00 00 00 00 00 00 0a 00 40: 00 00 00 00 00 00 00 00 86 04 c0 00 01 10 00 00 50: 01 58 02 c8 00 00 00 00 05 6c 02 00 20 00 e0 fe 60: 00 00 00 00 06 10 00 00 00 00 00 00 10 00 41 01 70: c1 0f 00 00 0f 50 00 00 41 f4 1b 03 40 00 41 30 80: 80 0c 00 00 c0 03 60 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:04.0 PCI bridge [0604]: Intel Corporation 5000X Chipset PCI Express x16 Port 4-7 [8086:25fa] (rev 12) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] MSI: Enable- Count=1/2 Maskable- 64bit- Address: fee00020 Data: 0000 Capabilities: [6c] Express (v1) Root Port (Slot+), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited ExtTag- RBE- FLReset- DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 4096 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #4, Speed 2.5GT/s, Width x16, ASPM L0s, Latency L0 unlimited, L1 unlimited ClockPM- Surprise+ LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise- Slot #0, PowerLimit 75.000W; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd Off, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL+ CmdCplt- PresDet- Interlock- Changed: MRL- PresDet+ LinkState- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP+ SDES+ TLP+ FCP+ CmpltTO+ CmpltAbrt+ UnxCmplt+ RxOF+ MalfTLP+ ECRC- UnsupReq+ ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr+ BadTLP+ BadDLLP+ Rollover+ Timeout+ NonFatalErr- AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn- Kernel driver in use: pcieport 00: 86 80 fa 25 47 01 10 00 12 00 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 00 40 40 00 f0 00 00 00 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 50 00 00 00 00 00 00 00 00 00 06 00 40: 00 00 00 00 00 00 00 00 86 04 c0 00 01 1c 00 00 50: 01 58 02 c8 00 00 00 00 05 6c 02 00 20 00 e0 fe 60: 00 00 00 00 06 10 00 00 00 00 00 00 10 00 41 01 70: c1 0f 00 00 0f 50 00 00 01 f5 1b 04 00 00 41 10 80: 80 25 00 00 c0 03 28 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:05.0 PCI bridge [0604]: Intel Corporation 5000 Series Chipset PCI Express x4 Port 5 [8086:25e5] (rev 12) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] MSI: Enable- Count=1/2 Maskable- 64bit- Address: fee00020 Data: 0000 Capabilities: [6c] Express (v1) Root Port (Slot-), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited ExtTag- RBE- FLReset- DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 4096 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #5, Speed 2.5GT/s, Width x4, ASPM L0s, Latency L0 unlimited, L1 unlimited ClockPM- Surprise+ LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP+ SDES+ TLP+ FCP+ CmpltTO+ CmpltAbrt+ UnxCmplt+ RxOF+ MalfTLP+ ECRC- UnsupReq+ ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr+ BadTLP+ BadDLLP+ Rollover+ Timeout+ NonFatalErr- AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn- Kernel driver in use: pcieport 00: 86 80 e5 25 47 01 10 00 12 00 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 00 fe fe 00 f0 00 00 00 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 50 00 00 00 00 00 00 00 00 00 06 00 40: 00 00 00 00 00 00 00 00 86 04 00 00 01 1c 00 00 50: 01 58 02 c8 00 00 00 00 05 6c 02 00 20 00 e0 fe 60: 00 00 00 00 06 10 00 00 00 00 00 00 10 00 41 00 70: c1 0f 00 00 0f 50 00 00 41 f4 1b 05 00 00 01 10 80: 00 00 00 00 c0 03 60 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:06.0 PCI bridge [0604]: Intel Corporation 5000 Series Chipset PCI Express x4 Port 6 [8086:25e6] (rev 12) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] MSI: Enable- Count=1/2 Maskable- 64bit- Address: fee00020 Data: 0000 Capabilities: [6c] Express (v1) Root Port (Slot-), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited ExtTag- RBE- FLReset- DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 4096 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #6, Speed 2.5GT/s, Width x4, ASPM L0s, Latency L0 unlimited, L1 unlimited ClockPM- Surprise+ LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP+ SDES+ TLP+ FCP+ CmpltTO+ CmpltAbrt+ UnxCmplt+ RxOF+ MalfTLP+ ECRC- UnsupReq+ ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr+ BadTLP+ BadDLLP+ Rollover+ Timeout+ NonFatalErr- AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn- Kernel driver in use: pcieport 00: 86 80 e6 25 47 01 10 00 12 00 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 00 fd fd 00 f0 00 00 00 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 50 00 00 00 00 00 00 00 00 00 06 00 40: 00 00 00 00 00 00 00 00 86 04 00 00 01 1c 00 00 50: 01 58 02 c8 00 00 00 00 05 6c 02 00 20 00 e0 fe 60: 00 00 00 00 06 10 00 00 00 00 00 00 10 00 41 00 70: c1 0f 00 00 0f 50 00 00 41 f4 1b 06 00 00 01 10 80: 00 00 00 00 c0 03 60 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:07.0 PCI bridge [0604]: Intel Corporation 5000 Series Chipset PCI Express x4 Port 7 [8086:25e7] (rev 12) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] MSI: Enable- Count=1/2 Maskable- 64bit- Address: fee00020 Data: 0000 Capabilities: [6c] Express (v1) Root Port (Slot-), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited ExtTag- RBE- FLReset- DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 4096 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #7, Speed 2.5GT/s, Width x4, ASPM L0s, Latency L0 unlimited, L1 unlimited ClockPM- Surprise+ LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP+ SDES+ TLP+ FCP+ CmpltTO+ CmpltAbrt+ UnxCmplt+ RxOF+ MalfTLP+ ECRC- UnsupReq+ ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr+ BadTLP+ BadDLLP+ Rollover+ Timeout+ NonFatalErr- AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn- Kernel driver in use: pcieport 00: 86 80 e7 25 47 01 10 00 12 00 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 00 fc fc 00 f0 00 00 00 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 50 00 00 00 00 00 00 00 00 00 06 00 40: 00 00 00 00 00 00 00 00 86 04 00 00 01 1c 00 00 50: 01 58 02 c8 00 00 00 00 05 6c 02 00 20 00 e0 fe 60: 00 00 00 00 06 10 00 00 00 00 00 00 10 00 41 00 70: c1 0f 00 00 0f 50 00 00 41 f4 1b 07 00 00 01 10 80: 00 00 00 00 c0 03 60 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:10.0 Host bridge [0600]: Intel Corporation 5000 Series Chipset FSB Registers [8086:25f0] (rev 12) Subsystem: Hewlett-Packard Company Device [103c:3014] Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [40] Express (v1) Root Port (Slot+), MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited ExtTag+ RBE- FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 128 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend- LnkCap: Port #1, Speed 2.5GT/s, Width x4, ASPM L0s L1, Latency L0 <1us, L1 <4us ClockPM- Surprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+ Slot #0, PowerLimit 25.000W; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock- Changed: MRL- PresDet- LinkState- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit- Address: fee0300c Data: 4149 Capabilities: [90] Subsystem: Hewlett-Packard Company Device [103c:3014] Capabilities: [a0] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [100 v1] Virtual Channel Caps: LPEVC=0 RefClk=100ns PATEntryBits=1 Arb: Fixed+ WRR32- WRR64- WRR128- Ctrl: ArbSelect=Fixed Status: InProgress- VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans- Arb: Fixed+ WRR32- WRR64- WRR128- TWRR128- WRR256- Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff Status: NegoPending- InProgress- VC1: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans- Arb: Fixed+ WRR32- WRR64- WRR128- TWRR128- WRR256- Ctrl: Enable- ID=0 ArbSelect=Fixed TC/VC=00 Status: NegoPending- InProgress- Capabilities: [180 v1] Root Complex Link Desc: PortNumber=01 ComponentID=00 EltType=Config Link0: Desc: TargetPort=00 TargetComponent=00 AssocRCRB- LinkType=MemMapped LinkValid+ Addr: 00000000fed1c001 Kernel driver in use: pcieport 00: 86 80 90 26 07 05 10 00 09 00 04 06 10 00 81 00 10: 00 00 00 00 00 00 00 00 00 80 80 00 30 30 00 00 20: 60 d0 70 d0 f1 d2 01 d3 00 00 00 00 00 00 00 00 30: 00 00 00 00 40 00 00 00 00 00 00 00 03 01 06 00 40: 10 80 41 01 e0 0f 00 00 00 00 10 00 41 4c 01 01 50: 00 00 01 10 e0 0c 00 00 00 00 00 00 00 00 00 00 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 05 90 01 00 0c 30 e0 fe 49 41 00 00 00 00 00 00 90: 0d a0 00 00 3c 10 14 30 00 00 00 00 00 00 00 00 a0: 01 00 02 c8 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 80 00 11 80 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 80 0f 01 00 00 00 00 00 00:1d.0 USB controller [0c03]: Intel Corporation 631xESB/632xESB/3100 Chipset UHCI USB Controller #1 [8086:2688] (rev 09) (prog-if 00 [UHCI]) Subsystem: Hewlett-Packard Company Device [103c:3014] Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [50] Subsystem: Hewlett-Packard Company Device [103c:3014] 00: 86 80 4e 24 07 01 10 00 d9 01 04 06 00 00 01 00 10: 00 00 00 00 00 00 00 00 00 01 01 20 f0 00 80 22 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 50 00 00 00 00 00 00 00 ff 00 06 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 0d 00 00 00 3c 10 14 30 00 00 00 00 00 00 00 00 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 80 0f 01 00 00 00 00 00 00:1f.0 ISA bridge [0601]: Intel Corporation 631xESB/632xESB/3100 Chipset LPC Interface Controller [8086:2670] (rev 09) Subsystem: Hewlett-Packard Company Device [103c:3014] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [44] Express (v1) Upstream Port, MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- AttnBtn- AttnInd- PwrInd- RBE- FLReset-SlotPowerLimit 0.000W DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 4096 bytes DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x8, ASPM L0s, Latency L0 unlimited, L1 unlimited ClockPM- Surprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- Capabilities: [70] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [80] Subsystem: Hewlett-Packard Company Device [103c:3014] Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol- UEMsk: DLP+ SDES- TLP+ FCP+ CmpltTO+ CmpltAbrt+ UnxCmplt+ RxOF+ MalfTLP+ ECRC- UnsupReq+ ACSViol- UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr+ BadTLP+ BadDLLP+ Rollover+ Timeout+ NonFatalErr- AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn- Kernel driver in use: pcieport 00: 86 80 00 35 07 01 10 00 01 00 04 06 10 00 81 00 10: 00 00 00 00 00 00 00 00 10 1e 20 00 f0 00 00 20 20: 90 d0 10 d1 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 44 00 00 00 00 00 00 00 ff 00 06 00 40: 00 28 00 10 10 70 51 00 01 00 00 00 00 50 0a 00 50: 81 f4 03 00 00 00 41 10 00 00 00 00 00 00 00 00 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 01 80 02 c8 00 00 00 00 00 00 00 00 00 00 00 00 80: 0d 00 00 00 3c 10 14 30 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 10:00.3 PCI bridge [0604]: Intel Corporation 6311ESB/6321ESB PCI Express to PCI-X Bridge [8086:350c] (rev 01) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [44] Express (v1) PCI/PCI-X Bridge, MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- AttnBtn- AttnInd- PwrInd- RBE- FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- BrConfRtry- MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x8, ASPM L0s, Latency L0 unlimited, L1 unlimited ClockPM- Surprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt- Capabilities: [5c] MSI: Enable- Count=1/1 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [6c] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [78] Hot-plug capable Capabilities: [80] Subsystem: Hewlett-Packard Company Device [103c:3014] Capabilities: [d8] PCI-X bridge device Secondary Status: 64bit+ 133MHz+ SCD- USC- SCO- SRD- Freq=conv Status: Dev=00:00.3 64bit- 133MHz- SCD- USC- SCO- SRD- Upstream: Capacity=65535 CommitmentLimit=65535 Downstream: Capacity=65535 CommitmentLimit=65535 Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- AERCap: First Error Pointer: 14, GenCap- CGenEn- ChkCap- ChkEn- 00: 86 80 0c 35 07 01 10 00 01 00 04 06 10 00 81 00 10: 04 10 e0 d2 00 00 00 00 10 11 1d 20 f0 00 a0 22 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 44 00 00 00 00 00 00 00 ff 01 06 00 40: 80 28 00 ff 10 5c 71 00 01 00 00 00 00 20 0a 00 50: 81 f4 03 00 00 00 41 00 00 00 00 00 05 6c 80 00 60: 00 00 00 00 00 00 00 00 00 00 00 00 01 78 02 c8 70: 00 00 00 00 00 00 00 00 0c 80 00 00 00 00 00 00 80: 0d d8 00 00 3c 10 14 30 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 07 00 03 00 03 00 00 00 e0: ff ff ff ff ff ff ff ff 01 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 1e:00.0 PCI bridge [0604]: Intel Corporation 6311ESB/6321ESB PCI Express Downstream Port E1 [8086:3510] (rev 01) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [44] Express (v1) Downstream Port (Slot-), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- RBE- FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 4096 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x4, ASPM L0s, Latency L0 unlimited, L1 unlimited ClockPM- Surprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; Disabled- Retrain+ CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- Capabilities: [60] MSI: Enable- Count=1/1 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [70] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [80] Subsystem: Hewlett-Packard Company Device [103c:3014] Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP+ SDES- TLP+ FCP+ CmpltTO+ CmpltAbrt+ UnxCmplt+ RxOF+ MalfTLP+ ECRC- UnsupReq+ ACSViol- UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr+ BadTLP+ BadDLLP+ Rollover+ Timeout+ NonFatalErr- AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn- Kernel driver in use: pcieport 00: 86 80 10 35 07 01 10 00 01 00 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 1e 20 20 00 f0 00 00 00 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 44 00 00 00 00 00 00 00 00 01 06 00 40: 00 00 c0 00 10 60 61 00 01 00 00 00 00 50 00 00 50: 41 f4 03 00 20 00 01 10 80 0c 00 00 c0 03 48 00 60: 05 70 80 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 01 80 02 c8 00 00 00 00 00 00 00 00 00 00 00 00 80: 0d 00 00 00 3c 10 14 30 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 15 00 10 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1e:01.0 PCI bridge [0604]: Intel Corporation 6311ESB/6321ESB PCI Express Downstream Port E2 [8086:3514] (rev 01) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [44] Express (v1) Downstream Port (Slot-), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- RBE- FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 4096 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x4, ASPM L0s, Latency L0 unlimited, L1 unlimited ClockPM- Surprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- Capabilities: [60] MSI: Enable- Count=1/1 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [70] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [80] Subsystem: Hewlett-Packard Company Device [103c:3014] Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP+ SDES- TLP+ FCP+ CmpltTO+ CmpltAbrt+ UnxCmplt+ RxOF+ MalfTLP+ ECRC- UnsupReq+ ACSViol- UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr+ BadTLP+ BadDLLP+ Rollover+ Timeout+ NonFatalErr- AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn- Kernel driver in use: pcieport 00: 86 80 14 35 07 01 10 00 01 00 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 1e 1f 1f 00 f0 00 00 00 20: 90 d0 f0 d0 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 44 00 00 00 00 00 00 00 00 01 06 00 40: 00 00 c0 00 10 60 61 00 01 00 00 00 00 50 00 00 50: 41 f4 03 00 00 00 11 10 00 00 00 00 c0 03 48 00 60: 05 70 80 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 01 80 02 c8 00 00 00 00 00 00 00 00 00 00 00 00 80: 0d 00 00 00 3c 10 14 30 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 15 00 10 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1f:00.0 Ethernet controller [0200]: Broadcom Corporation NetXtreme BCM5752 Gigabit Ethernet PCI Express [14e4:1600] (rev 01) Subsystem: Hewlett-Packard Company Device [103c:3014] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- [disabled] Capabilities: [48] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME- Capabilities: [50] Vital Product Data Product Name: Broadcom NetXtreme Gigabit Ethernet Controller Read-only fields: [PN] Part number: BCM95752 [EC] Engineering changes: 106679-15 [SN] Serial number: 0123456789 [MN] Manufacture ID: 31 34 65 34 [RV] Reserved: checksum bad, 28 byte(s) reserved Read/write fields: [YA] Asset tag: XYZ01234567 [RW] Read-write area: 107 byte(s) free End Capabilities: [58] MSI: Enable+ Count=1/8 Maskable- 64bit+ Address: 00000000fee0300c Data: 4181 Capabilities: [d0] Express (v1) Endpoint, MSI 00 DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited ExtTag+ AttnBtn- AttnInd- PwrInd- RBE- FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 4096 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 <4us, L1 <64us ClockPM- Surprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn- Capabilities: [13c v1] Virtual Channel Caps: LPEVC=0 RefClk=100ns PATEntryBits=1 Arb: Fixed- WRR32- WRR64- WRR128- Ctrl: ArbSelect=Fixed Status: InProgress- VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans- Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256- Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff Status: NegoPending- InProgress- Kernel driver in use: tg3 Kernel modules: tg3 00: e4 14 00 16 06 05 10 00 01 00 00 02 10 00 00 00 10: 04 00 90 d0 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 07 00 00 00 3c 10 14 30 30: 00 00 20 00 48 00 00 00 00 00 00 00 05 01 00 00 40: 00 00 00 00 00 00 00 00 01 50 02 c0 00 20 00 64 50: 03 58 fc 80 00 00 00 78 05 d0 87 00 0c 30 e0 fe 60: 00 00 00 00 81 41 00 00 98 02 01 60 00 00 18 76 70: f2 10 00 00 40 00 00 00 50 00 00 00 00 00 00 00 80: 03 58 fc 80 00 00 00 00 34 00 13 04 82 10 08 34 90: 29 b8 00 01 00 00 00 0a 00 00 00 00 74 00 00 00 a0: 00 00 00 00 ac 01 00 00 00 00 00 00 d5 00 00 00 b0: 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 d0: 10 00 01 00 a2 0f 00 00 00 50 10 00 11 6c 03 00 e0: 00 00 11 10 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI RV515GL [FireGL V3350] [1002:7153] (prog-if 00 [VGA controller]) Subsystem: Advanced Micro Devices [AMD] nee ATI Device [1002:1b02] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- SERR- References: <20120313161121.26453viypa5ix14w@rawthrills.com> <201203132355.q2DNtaub006023@mail2.student.tuwien.ac.at> <20120313200058.90691beuqkfs4fj4@rawthrills.com> Message-ID: <201203191253.q2JCr66D007634@mail2.student.tuwien.ac.at> On Tue, 13 Mar 2012 20:00:58 -0400 sai at rawthrills.com wrote: > Thanks for the kind and quick reply. My need is to overwrite the BIOS > settings. > > I need to re-write the boot sequence everytime I launch a script. > > I am using the most latest snapshot from the website 0.9.5-r1504 > > I am also attaching the verbose output. > as i tried to explain previously flashrom does *not* access the bios *settings* at all. they are not stored in the flash usually but in the NVRAM usually called "cmos". maybe this could help: http://www.coreboot.org/pipermail/coreboot/2007-January/018099.html -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From rayfward at gmail.com Mon Mar 19 20:31:12 2012 From: rayfward at gmail.com (rayfward) Date: Mon, 19 Mar 2012 19:31:12 +0000 Subject: [flashrom] Bios Information Message-ID: <4F678980.6000400@gmail.com> flashrom v0.9.2-r1141 on Linux 2.6.38-8-generic (x86_64), built with libpci 3.1.7, GCC 4.5.1, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 669M loops per second, 10 myus = 11 us, 100 myus = 101 us, 1000 myus = 1000 us, 10000 myus = 9997 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Gigabyte Technology Co., Ltd." DMI string system-product-name: "M52L-S3P" DMI string system-version: " " DMI string baseboard-manufacturer: "Gigabyte Technology Co., Ltd." DMI string baseboard-product-name: "M52L-S3P" DMI string baseboard-version: "x.x" DMI string chassis-type: "Desktop" Found ITE Super I/O, id 8718 Found chipset "NVIDIA MCP61", enabling flash write... chipset PCI ID is 10de:03e0, This chipset is not really supported yet. Guesswork... ISA/LPC bridge reg 0x8a contents: 0x00, bit 6 is 0, bit 5 is 0 Flash bus type is LPC Found SMBus device 10de:03eb at 00:01:1 MCP SPI BAR is at 0xfec80000 Strange. MCP SPI BAR is valid, but chipset apparently doesn't have SPI enabled. Please send the output of "flashrom -V" to flashrom at flashrom.org to help us finish support for your chipset. Thanks. OK. This chipset supports the following protocols: LPC. Serial flash segment 0xfffe0000-0xffffffff enabled Serial flash segment 0x000e0000-0x000fffff enabled Serial flash segment 0xffee0000-0xffefffff disabled Serial flash segment 0xfff80000-0xfffeffff enabled LPC write to serial flash enabled Serial flash pin 29 Serial flash port 0x0820 Probing for AMD Am29F010A/B, 128 KB: skipped. Probing for AMD Am29F002(N)BB, 256 KB: skipped. Probing for AMD Am29F002(N)BT, 256 KB: skipped. Probing for AMD Am29F016D, 2048 KB: skipped. Probing for AMD Am29F040B, 512 KB: skipped. Probing for AMD Am29F080B, 1024 KB: skipped. Probing for AMD Am29LV040B, 512 KB: skipped. Probing for AMD Am29LV081B, 1024 KB: skipped. Probing for AMIC A25L05PT, 64 KB: 4 byte RDID not supported on this SPI controller Probing for AMIC A25L05PU, 64 KB: 4 byte RDID not supported on this SPI controller Probing for AMIC A25L10PT, 128 KB: 4 byte RDID not supported on this SPI controller Probing for AMIC A25L10PU, 128 KB: 4 byte RDID not supported on this SPI controller Probing for AMIC A25L20PT, 256 KB: 4 byte RDID not supported on this SPI controller Probing for AMIC A25L20PU, 256 KB: 4 byte RDID not supported on this SPI controller Probing for AMIC A25L40PT, 512 KB: 4 byte RDID not supported on this SPI controller Probing for AMIC A25L40PU, 512 KB: 4 byte RDID not supported on this SPI controller Probing for AMIC A25L80P, 1024 KB: 4 byte RDID not supported on this SPI controller Probing for AMIC A25L16PT, 2048 KB: 4 byte RDID not supported on this SPI controller Probing for AMIC A25L16PU, 2048 KB: 4 byte RDID not supported on this SPI controller Probing for AMIC A25L512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L020, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L080, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L016, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L032, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25LQ032, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A29002B, 256 KB: skipped. Probing for AMIC A29002T, 256 KB: skipped. Probing for AMIC A29040B, 512 KB: skipped. Probing for AMIC A49LF040A, 512 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ASD AE49F2008, 256 KB: skipped. Probing for Atmel AT25DF021, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF081, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF081A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321A, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF641, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DQ161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25F512B, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF041, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF081A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26F004, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT29C512, 64 KB: skipped. Probing for Atmel AT29C010A, 128 KB: skipped. Probing for Atmel AT29C020, 256 KB: skipped. Probing for Atmel AT29C040A, 512 KB: skipped. Probing for Atmel AT45CS1282, 16896 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB011D, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB021D, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB041D, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB081D, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB161D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321C, 4224 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB642D, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT49BV512, 64 KB: skipped. Probing for Atmel AT49F020, 256 KB: skipped. Probing for Atmel AT49F002(N), 256 KB: skipped. Probing for Atmel AT49F002(N)T, 256 KB: skipped. Probing for EMST F49B002UA, 256 KB: skipped. Probing for EMST F25L008A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B05T, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10T, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20T, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40T, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80T, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16T, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32T, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64T, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25D16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN29F010, 128 KB: skipped. Probing for Eon EN29F002(A)(N)B, 256 KB: skipped. Probing for Eon EN29F002(A)(N)T, 256 KB: skipped. Probing for Fujitsu MBM29F004BC, 512 KB: skipped. Probing for Fujitsu MBM29F004TC, 512 KB: skipped. Probing for Fujitsu MBM29F400BC, 512 KB: skipped. Probing for Fujitsu MBM29F400TC, 512 KB: skipped. Probing for Hyundai HY29F002T, 256 KB: skipped. Probing for Hyundai HY29F002B, 256 KB: skipped. Probing for Intel 28F001BX-B, 128 KB: skipped. Probing for Intel 28F001BX-T, 128 KB: skipped. Probing for Intel 28F002BC-T, 256 KB: skipped. Probing for Intel 28F004S5, 512 KB: skipped. Probing for Intel 28F004BV/BE-B, 512 KB: skipped. Probing for Intel 28F004BV/BE-T, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-B, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-T, 512 KB: skipped. Probing for Intel 82802AB, 512 KB: skipped. Probing for Intel 82802AC, 1024 KB: skipped. Probing for Macronix MX25L512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1005, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L2005, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L4005, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L8005, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1605, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1635D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3205, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3235D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L6405, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L12805, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX29F001B, 128 KB: skipped. Probing for Macronix MX29F001T, 128 KB: skipped. Probing for Macronix MX29F002B, 256 KB: skipped. Probing for Macronix MX29F002T, 256 KB: skipped. Probing for Macronix MX29LV040, 512 KB: skipped. Probing for MoselVitelic V29C51000B, 64 KB: skipped. Probing for MoselVitelic V29C51000T, 64 KB: skipped. Probing for MoselVitelic V29C51400B, 512 KB: skipped. Probing for MoselVitelic V29C51400T, 512 KB: skipped. Probing for MoselVitelic V29LC51000, 64 KB: skipped. Probing for MoselVitelic V29LC51001, 128 KB: skipped. Probing for MoselVitelic V29LC51002, 256 KB: skipped. Probing for Numonyx M25PE10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV020, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm29F002T, 256 KB: skipped. Probing for PMC Pm29F002B, 256 KB: skipped. Probing for PMC Pm39LV010, 128 KB: skipped. Probing for PMC Pm39LV020, 256 KB: skipped. Probing for PMC Pm39LV040, 512 KB: skipped. Probing for PMC Pm49FL002, 256 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sanyo LF25FW203A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sharp LHF00L04, 1024 KB: skipped. Probing for Spansion S25FL008A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Spansion S25FL016A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF032B, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF064C, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF040.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF040B, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25LF040A.RES, 512 KB: probe_spi_res2: id1 0xbf, id2 0x8e Probing for SST SST25VF040B.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 00 Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is not set Chip status register: Bit 3 / Block Protect 1 (BP1) is not set Chip status register: Bit 2 / Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Probing for SST SST28SF040A, 512 KB: skipped. Probing for SST SST29EE010, 128 KB: skipped. Probing for SST SST29LE010, 128 KB: skipped. Probing for SST SST29EE020A, 256 KB: skipped. Probing for SST SST29LE020, 256 KB: skipped. Probing for SST SST39SF512, 64 KB: skipped. Probing for SST SST39SF010A, 128 KB: skipped. Probing for SST SST39SF020A, 256 KB: skipped. Probing for SST SST39SF040, 512 KB: skipped. Probing for SST SST39VF512, 64 KB: skipped. Probing for SST SST39VF010, 128 KB: skipped. Probing for SST SST39VF020, 256 KB: skipped. Probing for SST SST39VF040, 512 KB: skipped. Probing for SST SST39VF080, 1024 KB: skipped. Probing for SST SST49LF002A/B, 256 KB: skipped. Probing for SST SST49LF003A/B, 384 KB: skipped. Probing for SST SST49LF004A/B, 512 KB: skipped. Probing for SST SST49LF004C, 512 KB: skipped. Probing for SST SST49LF008A, 1024 KB: skipped. Probing for SST SST49LF008C, 1024 KB: skipped. Probing for SST SST49LF016C, 2048 KB: skipped. Probing for SST SST49LF020, 256 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF020A, 256 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF040, 512 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF040B, 512 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF080A, 1024 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0x24, id2 0x46, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF160C, 2048 KB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M25P05-A, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P05.RES, 64 KB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P10.RES, 128 KB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40-old, 512 KB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P128, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M29F002B, 256 KB: skipped. Probing for ST M29F002T/NT, 256 KB: skipped. Probing for ST M29F040B, 512 KB: skipped. Probing for ST M29F400BB, 512 KB: skipped. Probing for ST M29F400BT, 512 KB: skipped. Probing for ST M29W010B, 128 KB: skipped. Probing for ST M29W040B, 512 KB: skipped. Probing for ST M29W512B, 64 KB: skipped. Probing for ST M50FLW040A, 512 KB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 KB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 KB: probe_82802ab: id1 0x24, id2 0x46, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 KB: probe_82802ab: id1 0x24, id2 0x46, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 KB: skipped. Probing for ST M50FW016, 2048 KB: skipped. Probing for ST M50FW040, 512 KB: skipped. Probing for ST M50FW080, 1024 KB: skipped. Probing for ST M50LPW116, 2048 KB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51001B, 128 KB: skipped. Probing for SyncMOS/MoselVitelic {F,S,V}29C51001T, 128 KB: skipped. Probing for SyncMOS/MoselVitelic {F,S,V}29C51002B, 256 KB: skipped. Probing for SyncMOS/MoselVitelic {F,S,V}29C51002T, 256 KB: skipped. Probing for SyncMOS/MoselVitelic {F,S,V}29C51004B, 512 KB: skipped. Probing for SyncMOS/MoselVitelic {F,S,V}29C51004T, 512 KB: skipped. Probing for SyncMOS/MoselVitelic {S,V}29C31004B, 512 KB: skipped. Probing for SyncMOS/MoselVitelic {S,V}29C31004T, 512 KB: skipped. Probing for TI TMS29F002RB, 256 KB: skipped. Probing for TI TMS29F002RT, 256 KB: skipped. Probing for Winbond W25Q80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W29C011, 128 KB: skipped. Probing for Winbond W29C020C, 256 KB: skipped. Probing for Winbond W29C040P, 512 KB: skipped. Probing for Winbond W29EE011, 128 KB: skipped. Probing for Winbond W39V040A, 512 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040B, 512 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040C, 512 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 KB: skipped. Probing for Winbond W39V080A, 1024 KB: probe_jedec_common: id1 0x24, id2 0x46, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49F002U, 256 KB: skipped. Probing for Winbond W49F020, 256 KB: skipped. Probing for Winbond W49V002A, 256 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 KB: skipped. Probing for Winbond W39V080FA, 1024 KB: skipped. Probing for Winbond W39V080FA (dual mode), 512 KB: skipped. Probing for AMIC unknown AMIC SPI chip, 0 KB: 4 byte RDID not supported on this SPI controller Probing for Atmel unknown Atmel SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon unknown Eon SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix unknown Macronix SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC unknown PMC SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST unknown SST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST unknown ST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sanyo unknown Sanyo SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (RDID), 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (REMS), 0 KB: probe_spi_rems: id1 0xbf, id2 0x8e No operations were specified. From r.marek at assembler.cz Tue Mar 20 15:28:49 2012 From: r.marek at assembler.cz (Rudolf Marek) Date: Tue, 20 Mar 2012 15:28:49 +0100 Subject: [flashrom] [PATCH] Add en29lv640b In-Reply-To: <4F314739.3040808@assembler.cz> References: <4F314739.3040808@assembler.cz> Message-ID: <4F689421.5090606@assembler.cz> Ping? Thanks Rudolf From Michael.Burkhard at gmx.net Tue Mar 20 17:53:13 2012 From: Michael.Burkhard at gmx.net (Michael.Burkhard at gmx.net) Date: Tue, 20 Mar 2012 17:53:13 +0100 Subject: [flashrom] output of flashrom -V on a asrock-K10N78FullHD-hSLI Message-ID: <4F68B5F9.6090000@gmx.net> wie gew?nscht / as requested Michael -------------- next part -------------- flashrom v0.9.5.1-r1509 on Linux 3.2.11-1-ARCH (i686), built with libpci 3.1.9, GCC 4.6.2 20120120 (prerelease), little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 1548M loops per second, 10 myus = 11 us, 100 myus = 101 us, 1000 myus = 1006 us, 10000 myus = 10007 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "To Be Filled By O.E.M." DMI string system-product-name: "To Be Filled By O.E.M." DMI string system-version: "To Be Filled By O.E.M." DMI string baseboard-manufacturer: "ASRock" DMI string baseboard-product-name: "K10N78FullHD-hSLI.. " DMI string baseboard-version: " " DMI string chassis-type: "Desktop" Found chipset "NVIDIA MCP78S" with PCI ID 10de:075c. This chipset is marked as untested. If you are using an up-to-date version of flashrom please email a report to flashrom at flashrom.org including a verbose (-V) log. Thank you! Enabling flash write... This chipset is not really supported yet. Guesswork... ISA/LPC bridge reg 0x8a contents: 0x40, bit 6 is 1, bit 5 is 0 Flash bus type is SPI SPI on this chipset is WIP. Please report any success or failure by mailing us the verbose output to flashrom at flashrom.org, thanks! Found SMBus device 10de:0752 at 00:01:1 MCP SPI BAR is at 0xfcf80000 Mapping NVIDIA MCP6x SPI at 0xfcf80000, unaligned size 0x544. SPI control is 0xc012, req=0, gnt=0 Please send the output of "flashrom -V" to flashrom at flashrom.org with your board name: flashrom -V as the subject to help us finish support for your chipset. Thanks. OK. The following protocols are supported: SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Chip status register is 00 Chip status register: Status Register Write Disable (SRWD) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is not set Chip status register: Bit 3 / Block Protect 1 (BP1) is not set Chip status register: Bit 2 / Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found Macronix flash chip "MX25L4005" (512 kB, SPI) at physical address 0xfff80000. Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for SST SST25LF040A, 512 kB: probe_spi_res2: id1 0x12, id2 0x12 Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0x12, id2 0x12 Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xc2, id2 0x12 Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xc2, id2 0x12 Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xc2, id2 0x12 Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Unknown SFDP-capable chip, 0 kB: No SFDP signature found. Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013 Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xc2, id2 0x12 Found Macronix flash chip "MX25L4005" (512 kB, SPI). No operations were specified. From marcosfrm at gmail.com Wed Mar 21 13:06:00 2012 From: marcosfrm at gmail.com (Marcos Felipe Rasia de Mello) Date: Wed, 21 Mar 2012 09:06:00 -0300 Subject: [flashrom] ASUS P5VD2-MX (works, but onboard lan mac is lost) Message-ID: flashrom -w works, but the onboard lan mac address is reseted to 00 00 00 00 00 10. Same problem http://www.flashrom.org/pipermail/flashrom/2012-March/009004.html but I didn't find any string that could be the mac address in the P5VD2-MX 1017 BIOS image. I've read AwardBIOS can have the lan's mac stored inside a compressed module. Any tips is welcome. Marcos -------------- next part -------------- flashrom v0.9.5.2-r1516 on Linux 3.2.9-zero (i686), built with libpci 3.1.7, GCC 4.6.2 20111027 (Red Hat 4.6.2-1), little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 1599M loops per second, 10 myus = 11 us, 100 myus = 100 us, 1000 myus = 1000 us, 10000 myus = 10002 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "System manufacturer" DMI string system-product-name: "System Product Name" DMI string system-version: " " DMI string baseboard-manufacturer: "ASUSTeK Computer INC." DMI string baseboard-product-name: "P5VD2-MX" DMI string baseboard-version: "1.XX" DMI string chassis-type: "Desktop" Found ITE Super I/O, ID 0x8712 on port 0x2e Found chipset "VIA VT8237A" with PCI ID 1106:3337. Enabling flash write... OK. Super I/O ID 0x8712 is not on the list of flash capable controllers. The following protocols are supported: Non-SPI. Probing for AMD Am29F010A/B, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F002(N)BB, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F002(N)BT, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F016D, 2048 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F040B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F080B, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV001BB, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV001BT, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV002BB, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV002BT, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV004BB, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV004BT, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV008BB, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV008BT, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV040B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV081B, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMIC A29002B, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMIC A29002T, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMIC A29040B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for AMIC A49LF040A, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Atmel AT29C512, 64 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Atmel AT29C010A, 128 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Atmel AT29C020, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Atmel AT29C040A, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Atmel AT49BV512, 64 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Atmel AT49F020, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Atmel AT49F002(N), 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Atmel AT49F002(N)T, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Catalyst CAT28F512, 64 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Bright BM29F040, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for EMST F49B002UA, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Eon EN29F010, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29F002(A)(N)B, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29F002(A)(N)T, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Fujitsu MBM29F004BC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Fujitsu MBM29F004TC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Fujitsu MBM29F400BC, 512 kB: probe_m29f400bt: id1 0xff, id2 0xff Probing for Fujitsu MBM29F400TC, 512 kB: probe_m29f400bt: id1 0xff, id2 0xff Probing for Hyundai HY29F002T, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Hyundai HY29F002B, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Hyundai HY29F040A, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F001BN/BX-B, 128 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Intel 28F001BN/BX-T, 128 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Intel 28F002BC/BL/BV/BX-T, 256 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F008S3/S5/SC, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F004B5/BE/BV/BX-B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F004B5/BE/BV/BX-T, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F400BV/BX/CE/CV-B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F400BV/BX/CE/CV-T, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F001B, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F001T, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F002(N)B, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F002(N)T, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F040, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29LV040, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29C51000B, 64 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for MoselVitelic V29C51000T, 64 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for MoselVitelic V29C51400B, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for MoselVitelic V29C51400T, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for MoselVitelic V29LC51000, 64 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for MoselVitelic V29LC51001, 128 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for MoselVitelic V29LC51002, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for PMC Pm29F002T, 256 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm29F002B, 256 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm39LV010, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm39LV020, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm39LV040, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Sharp LH28F008BJT-BTLZ1, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST28SF040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST29EE010, 128 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST29LE010, 128 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST29EE020A, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST29LE020, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST39SF512, 64 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST39SF010A, 128 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST39SF020A, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST39SF040, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST39VF512, 64 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST39VF010, 128 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST39VF020, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST39VF040, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST39VF080, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF020, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST49LF020A, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST49LF040, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SST SST49LF040B, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Found SST flash chip "SST49LF040B" (512 kB, LPC) at physical address 0xfff80000. Probing for SST SST49LF080A, 1024 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF160C, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M29F002B, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M29F002T/NT, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M29F040B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M29F400BB, 512 kB: probe_m29f400bt: id1 0xff, id2 0xff Probing for ST M29F400BT, 512 kB: probe_m29f400bt: id1 0xff, id2 0xff Probing for ST M29W010B, 128 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M29W040B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M29W512B, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50LPW116, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51001B, 128 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SyncMOS/MoselVitelic {F,S,V}29C51001T, 128 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SyncMOS/MoselVitelic {F,S,V}29C51002B, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SyncMOS/MoselVitelic {F,S,V}29C51002T, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SyncMOS/MoselVitelic {F,S,V}29C51004B, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SyncMOS/MoselVitelic {F,S,V}29C51004T, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SyncMOS/MoselVitelic {S,V}29C31004B, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for SyncMOS/MoselVitelic {S,V}29C31004T, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for TI TMS29F002RB, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for TI TMS29F002RT, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012-old, 128 kB: Old Winbond W29* probe method disabled because the probing sequence puts the AMIC A49LF040A in a funky state. Use 'flashrom -c W29C010(M)/W29C011A/W29EE011/W29EE012-old' if you have a board with such a chip. Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012, 128 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W29C020(C)/W29C022, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W29C040/P, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W39L040, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W39V040A, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W39V040B, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W39V040C, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W39V080A, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49F002U/N, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W49F020, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W49V002A, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Found SST flash chip "SST49LF040B" (512 kB, LPC). Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... done. Erasing and writing flash chip... Trying erase function 0... 0x000000-0x000fff:W, 0x001000-0x001fff:W, 0x002000-0x002fff:W, 0x003000-0x003fff:W, 0x004000-0x004fff:W, 0x005000-0x005fff:W, 0x006000-0x006fff:W, 0x007000-0x007fff:W, 0x008000-0x008fff:W, 0x009000-0x009fff:W, 0x00a000-0x00afff:W, 0x00b000-0x00bfff:W, 0x00c000-0x00cfff:W, 0x00d000-0x00dfff:W, 0x00e000-0x00efff:W, 0x00f000-0x00ffff:W, 0x010000-0x010fff:W, 0x011000-0x011fff:W, 0x012000-0x012fff:W, 0x013000-0x013fff:W, 0x014000-0x014fff:W, 0x015000-0x015fff:W, 0x016000-0x016fff:W, 0x017000-0x017fff:W, 0x018000-0x018fff:W, 0x019000-0x019fff:W, 0x01a000-0x01afff:W, 0x01b000-0x01bfff:W, 0x01c000-0x01cfff:W, 0x01d000-0x01dfff:W, 0x01e000-0x01efff:W, 0x01f000-0x01ffff:W, 0x020000-0x020fff:W, 0x021000-0x021fff:W, 0x022000-0x022fff:W, 0x023000-0x023fff:W, 0x024000-0x024fff:W, 0x025000-0x025fff:W, 0x026000-0x026fff:W, 0x027000-0x027fff:W, 0x028000-0x028fff:W, 0x029000-0x029fff:W, 0x02a000-0x02afff:W, 0x02b000-0x02bfff:W, 0x02c000-0x02cfff:W, 0x02d000-0x02dfff:W, 0x02e000-0x02efff:W, 0x02f000-0x02ffff:W, 0x030000-0x030fff:W, 0x031000-0x031fff:W, 0x032000-0x032fff:W, 0x033000-0x033fff:W, 0x034000-0x034fff:W, 0x035000-0x035fff:W, 0x036000-0x036fff:W, 0x037000-0x037fff:W, 0x038000-0x038fff:W, 0x039000-0x039fff:W, 0x03a000-0x03afff:W, 0x03b000-0x03bfff:W, 0x03c000-0x03cfff:W, 0x03d000-0x03dfff:W, 0x03e000-0x03efff:W, 0x03f000-0x03ffff:W, 0x040000-0x040fff:W, 0x041000-0x041fff:W, 0x042000-0x042fff:W, 0x043000-0x043fff:W, 0x044000-0x044fff:W, 0x045000-0x045fff:W, 0x046000-0x046fff:W, 0x047000-0x047fff:W, 0x048000-0x048fff:W, 0x049000-0x049fff:W, 0x04a000-0x04afff:W, 0x04b000-0x04bfff:W, 0x04c000-0x04cfff:W, 0x04d000-0x04dfff:W, 0x04e000-0x04efff:W, 0x04f000-0x04ffff:S, 0x050000-0x050fff:W, 0x051000-0x051fff:W, 0x052000-0x052fff:W, 0x053000-0x053fff:W, 0x054000-0x054fff:W, 0x055000-0x055fff:W, 0x056000-0x056fff:W, 0x057000-0x057fff:W, 0x058000-0x058fff:W, 0x059000-0x059fff:W, 0x05a000-0x05afff:W, 0x05b000-0x05bfff:W, 0x05c000-0x05cfff:W, 0x05d000-0x05dfff:W, 0x05e000-0x05efff:W, 0x05f000-0x05ffff:W, 0x060000-0x060fff:W, 0x061000-0x061fff:W, 0x062000-0x062fff:W, 0x063000-0x063fff:W, 0x064000-0x064fff:W, 0x065000-0x065fff:W, 0x066000-0x066fff:W, 0x067000-0x067fff:W, 0x068000-0x068fff:W, 0x069000-0x069fff:W, 0x06a000-0x06afff:W, 0x06b000-0x06bfff:W, 0x06c000-0x06cfff:W, 0x06d000-0x06dfff:W, 0x06e000-0x06efff:W, 0x06f000-0x06ffff:S, 0x070000-0x070fff:W, 0x071000-0x071fff:W, 0x072000-0x072fff:W, 0x073000-0x073fff:W, 0x074000-0x074fff:W, 0x075000-0x075fff:W, 0x076000-0x076fff:W, 0x077000-0x077fff:W, 0x078000-0x078fff:W, 0x079000-0x079fff:W, 0x07a000-0x07afff:W, 0x07b000-0x07bfff:W, 0x07c000-0x07cfff:W, 0x07d000-0x07dfff:W, 0x07e000-0x07efff:W, 0x07f000-0x07ffff:W Erase/write done. Verifying flash... VERIFIED. Restoring PCI config space for 00:11:0 reg 0x40 Restoring PCI config space for 00:11:0 reg 0x41 From olcay.mz at gmail.com Thu Mar 22 12:53:34 2012 From: olcay.mz at gmail.com (Olcay Korkmaz) Date: Thu, 22 Mar 2012 13:53:34 +0200 Subject: [flashrom] About mcp73 support on flashrom Message-ID: Hello all I have Zotac 630i-itx board (old pcb rev model..very old i guess) flashrom -V log details on mail attachment is it safe to erase/write process extra info bios dump is ok via flashrom -r command -- Olcay K. -------------- next part -------------- flashrom v0.9.5.2-r1515 on Linux 3.0.0-17-generic (i686), built with libpci 3.1.7, GCC 4.6.1, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 1436M loops per second, 10 myus = 9 us, 100 myus = 90 us, 1000 myus = 898 us, 10000 myus = 9309 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Unknow" DMI string system-product-name: "Unknow" DMI string system-version: "Unknow" DMI string baseboard-manufacturer: "Unknow" DMI string baseboard-product-name: "MCP73" DMI string baseboard-version: "Unknow" DMI string chassis-type: "Desktop" Found chipset "NVIDIA MCP73" with PCI ID 10de:07d7. Enabling flash write... This chipset is not really supported yet. Guesswork... ISA/LPC bridge reg 0x8a contents: 0x40, bit 6 is 1, bit 5 is 0 Flash bus type is SPI SPI on this chipset is WIP. Please report any success or failure by mailing us the verbose output to flashrom at flashrom.org, thanks! Found SMBus device 10de:07d8 at 00:03:1 MCP SPI BAR is at 0xeff00000 SPI control is 0xc01a, req=0, gnt=0 Please send the output of "flashrom -V" to flashrom at flashrom.org with your board name: flashrom -V as the subject to help us finish support for your chipset. Thanks. OK. The following protocols are supported: SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for SST SST25LF040A, 512 kB: probe_spi_res2: id1 0x13, id2 0x13 Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0x13, id2 0x13 Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xef, id2 0x13 Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xef, id2 0x13 Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xef, id2 0x13 Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Chip status register is 00 Found Winbond flash chip "W25X80" (1024 kB, SPI) at physical address 0xfff00000. Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Unknown SFDP-capable chip, 0 kB: No SFDP signature found. Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x3014 Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xef, id2 0x13 Found Winbond flash chip "W25X80" (1024 kB, SPI). No operations were specified. From spzakulec at gmail.com Mon Mar 26 04:24:01 2012 From: spzakulec at gmail.com (Steven Zakulec) Date: Sun, 25 Mar 2012 22:24:01 -0400 Subject: [flashrom] Tagging all EWSR chips correctly (was: [PATCH] spi25.c: Refactor spi_write_status_register helpers.) In-Reply-To: <201202080024.q180OrPg023657@mail2.student.tuwien.ac.at> References: <1327989061-15494-1-git-send-email-stefan.tauner@student.tuwien.ac.at> <4F31A656.9090009@gmx.net> <201202080024.q180OrPg023657@mail2.student.tuwien.ac.at> Message-ID: On Tue, Feb 7, 2012 at 7:25 PM, Stefan Tauner < stefan.tauner at student.tuwien.ac.at> wrote: > On Tue, 07 Feb 2012 23:31:50 +0100 > Carl-Daniel Hailfinger wrote: > > > Ahem. Once we do the per-region unlock dance, this will be extremely > > painful. We have three choices: > > - Keep that part of the code as is. Not good. > > - Spit out that message for every status register write. Not good. > > - Fix all flash chip definitions. Good, but separate patch. > > How do we proceed? > > fixing the stuff that needs fixing, of course. > > steve said he might look into it, so this is what has to be done: > i have attached a file containing what seems to be the spi chips > without correctly set feature_bits fields. we need to check the > datasheets for the opcodes needed to enable writing to the status > register. normally this is either WREN (write enable) or EWSR (enable > write status register), or both. > currently we are only interested in the non-volatile bits of the status > register, but there are chips that require another write enable command > for the volatile bits. if anyone creates a spreadsheet, he should > probably note those too if feasible or maybe even add a comment in the > patch. > > the field should be added after page_size and either set to: > .feature_bits = FEATURE_WRSR_EWSR > or > .feature_bits = FEATURE_WRSR_EITHER > if EWSR and WREN are allowed (all other SPI chips are already set > to FEATURE_WRSR_WREN). in the case we encounter a chip that does use > something else a comment should suffice for the time being. > > we could also split the work up, if it takes too long otherwise... > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner > I have tagged all of the ones in this list Stefan gave me except the Sanyo one (no datasheet- apparently not a new issue either). If there are any questions or comments, please send them. Signed-off-by: Steven Zakulec -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: spi-write-enable.patch Type: text/x-patch Size: 20387 bytes Desc: not available URL: From narayananbest at gmail.com Mon Mar 26 20:24:15 2012 From: narayananbest at gmail.com (narayanan best) Date: Mon, 26 Mar 2012 23:54:15 +0530 Subject: [flashrom] Erase error with hardware sequencing Message-ID: Hi, I have Intel ICH9 with 2 SPI flash chips each with 8MB. I am able to read 16MB of flash chip with hardware sequencing. But while writing the image i get ERASE FAILED at 0x00100000! Expected=0xff , Read=0x44, failed byte count from 0x00100000-0x0010ffff:0xfef4 ERASE FAILED I believe the cause is due to hardware sequencing write does not disable SRPL (sector protection register lock). I used -p internal:ich_spi_force=yes option which didn't help. This was confirmed when i gave ich_spi_mode=swseq (read or write) as parameter, it disables the SRPL and next write of 16MB with hardware sequencing succeeded. Let me know if i am missing anything here. Thanks in advance. -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan.tauner at student.tuwien.ac.at Mon Mar 26 21:16:02 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 26 Mar 2012 21:16:02 +0200 Subject: [flashrom] Erase error with hardware sequencing In-Reply-To: References: Message-ID: <201203261916.q2QJG289031519@mail2.student.tuwien.ac.at> On Mon, 26 Mar 2012 23:54:15 +0530 narayanan best wrote: > Hi, > > I have Intel ICH9 with 2 SPI flash chips each with 8MB. I am able to read > 16MB of flash chip with hardware sequencing. > But while writing the image i get > ERASE FAILED at 0x00100000! Expected=0xff , Read=0x44, failed byte count > from 0x00100000-0x0010ffff:0xfef4 > ERASE FAILED > > I believe the cause is due to hardware sequencing write does not disable > SRPL (sector protection register lock). I used -p > internal:ich_spi_force=yes option which didn't help. > > This was confirmed when i gave ich_spi_mode=swseq (read or write) as > parameter, it disables the SRPL and next write of 16MB with hardware > sequencing succeeded. > > Let me know if i am missing anything here. > > Thanks in advance. hi and thanks for your report! i dont have time right now to look at it, but it would be great if you could send a log of flashrom's output with the verbose flags "-VV" added to your write command line (especially the one with hwseq forced, both would be best). -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From narayananbest at gmail.com Mon Mar 26 22:10:30 2012 From: narayananbest at gmail.com (narayanan best) Date: Tue, 27 Mar 2012 01:40:30 +0530 Subject: [flashrom] Erase error with hardware sequencing In-Reply-To: <201203261916.q2QJG289031519@mail2.student.tuwien.ac.at> References: <201203261916.q2QJG289031519@mail2.student.tuwien.ac.at> Message-ID: Stefan, Please find the attached log On Tue, Mar 27, 2012 at 12:46 AM, Stefan Tauner < stefan.tauner at student.tuwien.ac.at> wrote: > On Mon, 26 Mar 2012 23:54:15 +0530 > narayanan best wrote: > > > Hi, > > > > I have Intel ICH9 with 2 SPI flash chips each with 8MB. I am able to read > > 16MB of flash chip with hardware sequencing. > > But while writing the image i get > > ERASE FAILED at 0x00100000! Expected=0xff , Read=0x44, failed byte count > > from 0x00100000-0x0010ffff:0xfef4 > > ERASE FAILED > > > > I believe the cause is due to hardware sequencing write does not disable > > SRPL (sector protection register lock). I used -p > > internal:ich_spi_force=yes option which didn't help. > > > > This was confirmed when i gave ich_spi_mode=swseq (read or write) as > > parameter, it disables the SRPL and next write of 16MB with hardware > > sequencing succeeded. > > > > Let me know if i am missing anything here. > > > > Thanks in advance. > > hi and thanks for your report! > > i dont have time right now to look at it, but it would be great if you > could send a log of flashrom's output with the verbose flags "-VV" > added to your write command line (especially the one with hwseq forced, > both would be best). > > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- flashrom -VVVw /tmp/bioswrite flashrom v0.9.5.2-r1517 on Linux 3.1.0 (i686), built with libpci , GCC 4.6.2, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 1597M loops per second, 10 myus = 10 us, 100 myus = 105 us, 1000 myus = 1012 us, 10000 myus = 10011 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. sh: dmidecode: not found dmidecode execution unsuccessful - continuing without DMI info Found chipset "Intel ICH9M-E" with PCI ID 8086:2917. Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x1 0xffe00000/0xffa00000 FWH IDSEL: 0x1 0xffd80000/0xff980000 FWH IDSEL: 0x2 0xffd00000/0xff900000 FWH IDSEL: 0x2 0xffc80000/0xff880000 FWH IDSEL: 0x3 0xffc00000/0xff800000 FWH IDSEL: 0x3 0xff700000/0xff300000 FWH IDSEL: 0x4 0xff600000/0xff200000 FWH IDSEL: 0x5 0xff500000/0xff100000 FWH IDSEL: 0x6 0xff400000/0xff000000 FWH IDSEL: 0x7 0xfff80000/0xffb80000 FWH decode enabled 0xfff00000/0xffb00000 FWH decode enabled 0xffe80000/0xffa80000 FWH decode enabled 0xffe00000/0xffa00000 FWH decode enabled 0xffd80000/0xff980000 FWH decode enabled 0xffd00000/0xff900000 FWH decode enabled 0xffc80000/0xff880000 FWH decode enabled 0xffc00000/0xff800000 FWH decode enabled 0xff700000/0xff300000 FWH decode disabled 0xff600000/0xff200000 FWH decode disabled 0xff500000/0xff100000 FWH decode disabled 0xff400000/0xff000000 FWH decode disabled Maximum FWH chip size: 0x100000 bytes BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0 Root Complex Register Block address = 0xfed1c000 GCS = 0x461: BIOS Interface Lock-Down: enabled, Boot BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3800 0x04: 0x6018 (HSFS) HSFS: FDONE=0, FCERR=0, AEL=0, BERASE=3, SCIP=0, FDOPSS=1, FDV=1, FLOCKDN=0 Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done OP Type Pre-OP op[0]: 0x02, write w/ addr, none op[1]: 0x03, read w/ addr, none op[2]: 0xd8, write w/ addr, none op[3]: 0x05, read w/o addr, none op[4]: 0x90, read w/ addr, none op[5]: 0x01, write w/o addr, none op[6]: 0x9f, read w/o addr, none op[7]: 0xc7, write w/o addr, none Pre-OP 0: 0x06, Pre-OP 1: 0x50 0x06: 0x0000 (HSFC) HSFC: FGO=0, FCYCLE=0, FDBC=0, SME=0 0x08: 0x00221c80 (FADDR) 0x50: 0x0000ffff (FRAP) BMWAG 0x00, BMRAG 0x00, BRWA 0xff, BRRA 0xff 0x54: 0x00000000 FREG0: Flash Descriptor region (0x00000000-0x00000fff) is read-write. 0x58: 0x07ff0001 FREG1: BIOS region (0x00001000-0x007fffff) is read-write. 0x5C: 0x0ff70802 FREG2: Management Engine region (0x00802000-0x00ff7fff) is read-write. 0x60: 0x08010800 FREG3: Gigabit Ethernet region (0x00800000-0x00801fff) is read-write. 0x64: 0x0fff0ff8 FREG4: Platform Data region (0x00ff8000-0x00ffffff) is read-write. PR0 is 0x00000000 already. 0x74: 0x00000000 (PR0 is unused) PR1 is 0x00000000 already. 0x78: 0x00000000 (PR1 is unused) PR2 is 0x00000000 already. 0x7C: 0x00000000 (PR2 is unused) PR3 is 0x00000000 already. 0x80: 0x00000000 (PR3 is unused) PR4 is 0x00000000 already. 0x84: 0x00000000 (PR4 is unused) 0x90: 0x04 (SSFS) SSFS: SCIP=0, FDONE=1, FCERR=0, AEL=0 0x91: 0x007f10 (SSFC) SSFC: SCGO=0, ACS=0, SPOP=0, COP=1, DBC=63, SME=0, SCF=0 0x94: 0x5006 (PREOP) 0x96: 0x463b (OPTYPE) 0x98: 0x05d80302 (OPMENU) 0x9C: 0xc79f0190 (OPMENU+4) 0xA0: 0x00000000 (BBAR) 0xC4: 0x0000d803 (LVSCC) LVSCC: BES=0x3, WG=0, WSR=0, WEWS=0, EO=0xd8, VCL=0 0xC8: 0x0000d803 (UVSCC) UVSCC: BES=0x3, WG=0, WSR=0, WEWS=0, EO=0xd8, VCL=0 0xD0: 0x00000000 (FPB) Reading flash descriptors mapped by the chipset via FDOC/FDOD...read_ich_descriptors_via_fdo: number of regions too high (5) - failed Enabling hardware sequencing due to multiple flash chips detected. SPI Read Configuration: prefetching disabled, caching enabled, OK. The following protocols are supported: FWH, Programmer-specific. Probing for Programmer Opaque flash chip, 0 kB: Not mapping flash chip, zero size at 0x00000000. Found 2 attached SPI flash chips with a combined density of 16384 kB. There is only one partition containing the whole address space (0x000000 - 0xffffff). There are 256 erase blocks with 65536 B each. Found Programmer flash chip "Opaque flash chip" (16384 kB, Programmer-specific) at physical address 0x0. Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Found Programmer flash chip "Opaque flash chip" (16384 kB, Programmer-specific). Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... Reading 16777216 bytes starting at 0x000000. done. Erasing and writing flash chip... Trying erase function 0... 0x000000-0x00ffff:S, 0x010000-0x01ffff:S, 0x020000-0x02ffff:S, 0x030000-0x03ffff:S, 0x040000-0x04ffff:S, 0x050000-0x05ffff:S, 0x060000-0x06ffff:S, 0x070000-0x07ffff:S, 0x080000-0x08ffff:S, 0x090000-0x09ffff:S, 0x0a0000-0x0affff:S, 0x0b0000-0x0bffff:S, 0x0c0000-0x0cffff:S, 0x0d0000-0x0dffff:S, 0x0e0000-0x0effff:S, 0x0f0000-0x0fffff:S, 0x100000-0x10ffff:EErasing 65536 bytes starting at 0x100000. HSFC used for block erasing: HSFC: FGO=1, FCYCLE=3, FDBC=63, SME=0 Reading 65536 bytes starting at 0x100000. ERASE FAILED at 0x00100000! Expected=0xff, Read=0x44, failed byte count from 0x00100000-0x0010ffff: 0xfef4 ERASE FAILED! Looking for another erase function. No usable erase functions left. FAILED! Uh oh. Erase/write failed. Checking if anything changed. Reading 16777216 bytes starting at 0x000000. Good. It seems nothing was changed. Writing to the flash chip apparently didn't do anything. This means we have to add special support for your board, programmer or flash chip. Please report this on IRC at irc.freenode.net (channel #flashrom) or mail flashrom at flashrom.org! ------------------------------------------------------------------------------- You may now reboot or simply leave the machine running. Restoring MMIO space at 0xb75e18a0 Restoring MMIO space at 0xb75e189c Restoring MMIO space at 0xb75e1898 Restoring MMIO space at 0xb75e1896 Restoring MMIO space at 0xb75e1894 Restoring PCI config space for 00:1f:0 reg 0xdc flashrom -p internal:ich_spi_force=yes -VVVw /tmp/bioswrite flashrom v0.9.5.2-r1517 on Linux 3.1.0 (i686), built with libpci , GCC 4.6.2, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 1596M loops per second, 10 myus = 11 us, 100 myus = 100 us, 1000 myus = 1020 us, 10000 myus = 10010 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. sh: dmidecode: not found dmidecode execution unsuccessful - continuing without DMI info Found chipset "Intel ICH9M-E" with PCI ID 8086:2917. Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x1 0xffe00000/0xffa00000 FWH IDSEL: 0x1 0xffd80000/0xff980000 FWH IDSEL: 0x2 0xffd00000/0xff900000 FWH IDSEL: 0x2 0xffc80000/0xff880000 FWH IDSEL: 0x3 0xffc00000/0xff800000 FWH IDSEL: 0x3 0xff700000/0xff300000 FWH IDSEL: 0x4 0xff600000/0xff200000 FWH IDSEL: 0x5 0xff500000/0xff100000 FWH IDSEL: 0x6 0xff400000/0xff000000 FWH IDSEL: 0x7 0xfff80000/0xffb80000 FWH decode enabled 0xfff00000/0xffb00000 FWH decode enabled 0xffe80000/0xffa80000 FWH decode enabled 0xffe00000/0xffa00000 FWH decode enabled 0xffd80000/0xff980000 FWH decode enabled 0xffd00000/0xff900000 FWH decode enabled 0xffc80000/0xff880000 FWH decode enabled 0xffc00000/0xff800000 FWH decode enabled 0xff700000/0xff300000 FWH decode disabled 0xff600000/0xff200000 FWH decode disabled 0xff500000/0xff100000 FWH decode disabled 0xff400000/0xff000000 FWH decode disabled Maximum FWH chip size: 0x100000 bytes BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0 Root Complex Register Block address = 0xfed1c000 GCS = 0x461: BIOS Interface Lock-Down: enabled, Boot BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3800 ich_spi_force enabled. 0x04: 0x6018 (HSFS) HSFS: FDONE=0, FCERR=0, AEL=0, BERASE=3, SCIP=0, FDOPSS=1, FDV=1, FLOCKDN=0 Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done OP Type Pre-OP op[0]: 0x02, write w/ addr, none op[1]: 0x03, read w/ addr, none op[2]: 0xd8, write w/ addr, none op[3]: 0x05, read w/o addr, none op[4]: 0x90, read w/ addr, none op[5]: 0x01, write w/o addr, none op[6]: 0x9f, read w/o addr, none op[7]: 0xc7, write w/o addr, none Pre-OP 0: 0x06, Pre-OP 1: 0x50 0x06: 0x3f00 (HSFC) HSFC: FGO=0, FCYCLE=0, FDBC=63, SME=0 0x08: 0x00ffffc0 (FADDR) 0x50: 0x0000ffff (FRAP) BMWAG 0x00, BMRAG 0x00, BRWA 0xff, BRRA 0xff 0x54: 0x00000000 FREG0: Flash Descriptor region (0x00000000-0x00000fff) is read-write. 0x58: 0x07ff0001 FREG1: BIOS region (0x00001000-0x007fffff) is read-write. 0x5C: 0x0ff70802 FREG2: Management Engine region (0x00802000-0x00ff7fff) is read-write. 0x60: 0x08010800 FREG3: Gigabit Ethernet region (0x00800000-0x00801fff) is read-write. 0x64: 0x0fff0ff8 FREG4: Platform Data region (0x00ff8000-0x00ffffff) is read-write. PR0 is 0x00000000 already. 0x74: 0x00000000 (PR0 is unused) PR1 is 0x00000000 already. 0x78: 0x00000000 (PR1 is unused) PR2 is 0x00000000 already. 0x7C: 0x00000000 (PR2 is unused) PR3 is 0x00000000 already. 0x80: 0x00000000 (PR3 is unused) PR4 is 0x00000000 already. 0x84: 0x00000000 (PR4 is unused) 0x90: 0x04 (SSFS) SSFS: SCIP=0, FDONE=1, FCERR=0, AEL=0 0x91: 0x007f10 (SSFC) SSFC: SCGO=0, ACS=0, SPOP=0, COP=1, DBC=63, SME=0, SCF=0 0x94: 0x5006 (PREOP) 0x96: 0x463b (OPTYPE) 0x98: 0x05d80302 (OPMENU) 0x9C: 0xc79f0190 (OPMENU+4) 0xA0: 0x00000000 (BBAR) 0xC4: 0x0000d803 (LVSCC) LVSCC: BES=0x3, WG=0, WSR=0, WEWS=0, EO=0xd8, VCL=0 0xC8: 0x0000d803 (UVSCC) UVSCC: BES=0x3, WG=0, WSR=0, WEWS=0, EO=0xd8, VCL=0 0xD0: 0x00000000 (FPB) Reading flash descriptors mapped by the chipset via FDOC/FDOD...read_ich_descriptors_via_fdo: number of regions too high (5) - failed Enabling hardware sequencing due to multiple flash chips detected. SPI Read Configuration: prefetching disabled, caching enabled, OK. The following protocols are supported: FWH, Programmer-specific. Probing for Programmer Opaque flash chip, 0 kB: Not mapping flash chip, zero size at 0x00000000. Found 2 attached SPI flash chips with a combined density of 16384 kB. There is only one partition containing the whole address space (0x000000 - 0xffffff). There are 256 erase blocks with 65536 B each. Found Programmer flash chip "Opaque flash chip" (16384 kB, Programmer-specific) at physical address 0x0. Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Found Programmer flash chip "Opaque flash chip" (16384 kB, Programmer-specific). Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... Reading 16777216 bytes starting at 0x000000. done. Erasing and writing flash chip... Trying erase function 0... 0x000000-0x00ffff:S, 0x010000-0x01ffff:S, 0x020000-0x02ffff:S, 0x030000-0x03ffff:S, 0x040000-0x04ffff:S, 0x050000-0x05ffff:S, 0x060000-0x06ffff:S, 0x070000-0x07ffff:S, 0x080000-0x08ffff:S, 0x090000-0x09ffff:S, 0x0a0000-0x0affff:S, 0x0b0000-0x0bffff:S, 0x0c0000-0x0cffff:S, 0x0d0000-0x0dffff:S, 0x0e0000-0x0effff:S, 0x0f0000-0x0fffff:S, 0x100000-0x10ffff:EErasing 65536 bytes starting at 0x100000. HSFC used for block erasing: HSFC: FGO=1, FCYCLE=3, FDBC=63, SME=0 Reading 65536 bytes starting at 0x100000. ERASE FAILED at 0x00100000! Expected=0xff, Read=0x44, failed byte count from 0x00100000-0x0010ffff: 0xfef4 ERASE FAILED! Looking for another erase function. No usable erase functions left. FAILED! Uh oh. Erase/write failed. Checking if anything changed. Reading 16777216 bytes starting at 0x000000. Good. It seems nothing was changed. Writing to the flash chip apparently didn't do anything. This means we have to add special support for your board, programmer or flash chip. Please report this on IRC at irc.freenode.net (channel #flashrom) or mail flashrom at flashrom.org! ------------------------------------------------------------------------------- You may now reboot or simply leave the machine running. Restoring MMIO space at 0xb748f8a0 Restoring MMIO space at 0xb748f89c Restoring MMIO space at 0xb748f898 Restoring MMIO space at 0xb748f896 Restoring MMIO space at 0xb748f894 Restoring PCI config space for 00:1f:0 reg 0xdc flashrom -p internal:ich_spi_mode=swseq -VVVr /tmp/biosread.two flashrom v0.9.5.2-r1517 on Linux 3.10 (i686), built with libpci , GCC 4.6.2, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 1596M loops per second, 10 myus = 10 us, 100 myus = 101 us, 1000 myus = 1013 us, 10000 myus = 10010 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. sh: dmidecode: not found dmidecode execution unsuccessful - continuing without DMI info Found chipset "Intel ICH9M-E" with PCI ID 8086:2917. Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x1 0xffe00000/0xffa00000 FWH IDSEL: 0x1 0xffd80000/0xff980000 FWH IDSEL: 0x2 0xffd00000/0xff900000 FWH IDSEL: 0x2 0xffc80000/0xff880000 FWH IDSEL: 0x3 0xffc00000/0xff800000 FWH IDSEL: 0x3 0xff700000/0xff300000 FWH IDSEL: 0x4 0xff600000/0xff200000 FWH IDSEL: 0x5 0xff500000/0xff100000 FWH IDSEL: 0x6 0xff400000/0xff000000 FWH IDSEL: 0x7 0xfff80000/0xffb80000 FWH decode enabled 0xfff00000/0xffb00000 FWH decode enabled 0xffe80000/0xffa80000 FWH decode enabled 0xffe00000/0xffa00000 FWH decode enabled 0xffd80000/0xff980000 FWH decode enabled 0xffd00000/0xff900000 FWH decode enabled 0xffc80000/0xff880000 FWH decode enabled 0xffc00000/0xff800000 FWH decode enabled 0xff700000/0xff300000 FWH decode disabled 0xff600000/0xff200000 FWH decode disabled 0xff500000/0xff100000 FWH decode disabled 0xff400000/0xff000000 FWH decode disabled Maximum FWH chip size: 0x100000 bytes BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0 Root Complex Register Block address = 0xfed1c000 GCS = 0x461: BIOS Interface Lock-Down: enabled, Boot BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3800 user selected swseq 0x04: 0x6018 (HSFS) HSFS: FDONE=0, FCERR=0, AEL=0, BERASE=3, SCIP=0, FDOPSS=1, FDV=1, FLOCKDN=0 Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done OP Type Pre-OP op[0]: 0x02, write w/ addr, none op[1]: 0x03, read w/ addr, none op[2]: 0xd8, write w/ addr, none op[3]: 0x05, read w/o addr, none op[4]: 0x90, read w/ addr, none op[5]: 0x01, write w/o addr, none op[6]: 0x9f, read w/o addr, none op[7]: 0xc7, write w/o addr, none Pre-OP 0: 0x06, Pre-OP 1: 0x50 0x06: 0x3f00 (HSFC) HSFC: FGO=0, FCYCLE=0, FDBC=63, SME=0 0x08: 0x00ffffc0 (FADDR) 0x50: 0x0000ffff (FRAP) BMWAG 0x00, BMRAG 0x00, BRWA 0xff, BRRA 0xff 0x54: 0x00000000 FREG0: Flash Descriptor region (0x00000000-0x00000fff) is read-write. 0x58: 0x07ff0001 FREG1: BIOS region (0x00001000-0x007fffff) is read-write. 0x5C: 0x0ff70802 FREG2: Management Engine region (0x00802000-0x00ff7fff) is read-write. 0x60: 0x08010800 FREG3: Gigabit Ethernet region (0x00800000-0x00801fff) is read-write. 0x64: 0x0fff0ff8 FREG4: Platform Data region (0x00ff8000-0x00ffffff) is read-write. PR0 is 0x00000000 already. 0x74: 0x00000000 (PR0 is unused) PR1 is 0x00000000 already. 0x78: 0x00000000 (PR1 is unused) PR2 is 0x00000000 already. 0x7C: 0x00000000 (PR2 is unused) PR3 is 0x00000000 already. 0x80: 0x00000000 (PR3 is unused) PR4 is 0x00000000 already. 0x84: 0x00000000 (PR4 is unused) 0x90: 0x04 (SSFS) SSFS: SCIP=0, FDONE=1, FCERR=0, AEL=0 0x91: 0x007f10 (SSFC) SSFC: SCGO=0, ACS=0, SPOP=0, COP=1, DBC=63, SME=0, SCF=0 0x94: 0x5006 (PREOP) 0x96: 0x463b (OPTYPE) 0x98: 0x05d80302 (OPMENU) 0x9C: 0xc79f0190 (OPMENU+4) 0xA0: 0x00000000 (BBAR) 0xC4: 0x0000d803 (LVSCC) LVSCC: BES=0x3, WG=0, WSR=0, WEWS=0, EO=0xd8, VCL=0 0xC8: 0x0000d803 (UVSCC) UVSCC: BES=0x3, WG=0, WSR=0, WEWS=0, EO=0xd8, VCL=0 0xD0: 0x00000000 (FPB) Reading flash descriptors mapped by the chipset via FDOC/FDOD...read_ich_descriptors_via_fdo: number of regions too high (5) - failed SPI Read Configuration: prefetching disabled, caching enabled, OK. The following protocols are supported: FWH, SPI. Probing for AMIC A25L05PT, 64 kB: RDID returned 0x1f 0x48 0x00 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L05PU, 64 kB: RDID returned 0x1f 0x48 0x00 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L10PT, 128 kB: RDID returned 0x1f 0x48 0x00 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L10PU, 128 kB: RDID returned 0x1f 0x48 0x00 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L20PT, 256 kB: RDID returned 0x1f 0x48 0x00 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L20PU, 256 kB: RDID returned 0x1f 0x48 0x00 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L40PT, 512 kB: RDID returned 0x1f 0x48 0x00 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L40PU, 512 kB: RDID returned 0x1f 0x48 0x00 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L80P, 1024 kB: RDID returned 0x1f 0x48 0x00 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L16PT, 2048 kB: RDID returned 0x1f 0x48 0x00 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L16PU, 2048 kB: RDID returned 0x1f 0x48 0x00 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L512, 64 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L010, 128 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L020, 256 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L040, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L080, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L016, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25L032, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for AMIC A25LQ032, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT25DF021, 256 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT25DF041A, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT25DF081, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT25DF081A, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT25DF161, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT25DF321, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT25DF321A, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT25DF641(A), 8192 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Chip status register is 9c Found Atmel flash chip "AT25DF641(A)" (8192 kB, SPI) at physical address 0xff800000. Ignoring security lockdown (if present) Ignoring status register byte 2 Chip status register is 9c Chip status register: Sector Protection Register Lock (SRPL) is set Chip status register: Bit 6 is not set Chip status register: Erase/Program Error (EPE) is not set Chip status register: WP# pin (WPP) is not asserted Chip status register: Software Protection Status (SWP): all sectors are protected Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Probing for Atmel AT25DQ161, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT25F512B, 64 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT25FS010, 128 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT25FS040, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT26DF041, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT26DF081A, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT26DF161, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT26DF161A, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT26F004, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT45CS1282, 16896 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT45DB011D, 128 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT45DB021D, 256 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT45DB041D, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT45DB081D, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT45DB161D, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT45DB321C, 4224 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT45DB321D, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Atmel AT45DB642D, 8192 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for EMST F25L008A, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B05, 64 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B05T, 64 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B10, 128 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B10T, 128 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B20, 256 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B20T, 256 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B40, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B40T, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B80, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B80T, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B16, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B16T, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B32, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B32T, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B64, 8192 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25B64T, 8192 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25F05, 64 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25F10, 128 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25F20, 256 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25F40, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25F80, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25F16, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25F32, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25Q40, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25Q80(A), 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25Q16, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25Q32(A/B), 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25Q64, 8192 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25Q128, 16384 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Eon EN25QH16, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Macronix MX25L512, 64 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Macronix MX25L1005, 128 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Macronix MX25L2005, 256 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Macronix MX25L4005, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Macronix MX25L8005, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Macronix MX25L1605, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Macronix MX25L1635D, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Macronix MX25L1635E, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Macronix MX25L3205, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Macronix MX25L3235D, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Macronix MX25L6405, 8192 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Macronix MX25L12805, 16384 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Numonyx M25PE10, 128 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Numonyx M25PE20, 256 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Numonyx M25PE40, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Numonyx M25PE80, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Numonyx M25PE16, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for PMC Pm25LV010, 128 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for PMC Pm25LV016B, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for PMC Pm25LV020, 256 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for PMC Pm25LV040, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for PMC Pm25LV080B, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for PMC Pm25LV512, 64 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Sanyo LF25FW203A, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Spansion S25FL004A, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Spansion S25FL008A, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Spansion S25FL016A, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Spansion S25FL032A, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Spansion S25FL064A, 8192 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for SST SST25LF040A, 512 kB: program_opcodes: preop=5006 optype=462b opmenu=05ab0302c79f0190 on-the-fly OPCODE (0xAB) re-programmed, op-pos=2 RES returned 0xff 0xff. probe_spi_res2: id1 0xff, id2 0xff Probing for SST SST25LF080A, 1024 kB: RES returned 0xff 0xff. probe_spi_res2: id1 0xff, id2 0xff Probing for SST SST25VF010, 128 kB: REMS returned 0xff 0xff. probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF016B, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for SST SST25VF032B, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for SST SST25VF064C, 8192 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for SST SST25VF040, 512 kB: REMS returned 0xff 0xff. probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF040B, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for SST SST25VF040B.REMS, 512 kB: REMS returned 0xff 0xff. probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF080B, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for ST M25P05-A, 64 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for ST M25P05, 64 kB: RDID returned 0x1f 0x48 0x00. Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for ST M25P10, 128 kB: RDID returned 0x1f 0x48 0x00. Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for ST M25P40, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for ST M25P40-old, 512 kB: RDID returned 0x1f 0x48 0x00. Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for ST M25P16, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for ST M25P32, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for ST M25P64, 8192 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for ST M25P128, 16384 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for ST M25PX16, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for ST M25PX32, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for ST M25PX64, 8192 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Winbond W25Q80, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Winbond W25Q16, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Winbond W25Q32, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Winbond W25Q64, 8192 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Winbond W25Q128, 16384 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Winbond W25X10, 128 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Winbond W25X20, 256 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Winbond W25X40, 512 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Winbond W25X80, 1024 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Winbond W25X16, 2048 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Winbond W25X32, 4096 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Winbond W25X64, 8192 kB: RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Probing for Unknown SFDP-capable chip, 0 kB: Not mapping flash chip, zero size at 0x00000000. spi_sfdp_read_sfdp_chunk: addr=0x0, len=2, data: program_opcodes: preop=5006 optype=462b opmenu=055a0302c79f0190 on-the-fly OPCODE (0x5A) re-programmed, op-pos=2 0xff 0xff spi_sfdp_read_sfdp_chunk: addr=0x2, len=2, data: 0xff 0xff Signature = 0xffffffff (should be 0x50444653) No SFDP signature found. Not unmapping zero size at 0xffffffff Probing for AMIC unknown AMIC SPI chip, 0 kB: Not mapping flash chip, zero size at 0x00000000. RDID returned 0x1f 0x48 0x00 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Not unmapping zero size at 0xffffffff Probing for Atmel unknown Atmel SPI chip, 0 kB: Not mapping flash chip, zero size at 0x00000000. RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Not unmapping zero size at 0xffffffff Probing for Eon unknown Eon SPI chip, 0 kB: Not mapping flash chip, zero size at 0x00000000. RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Not unmapping zero size at 0xffffffff Probing for Macronix unknown Macronix SPI chip, 0 kB: Not mapping flash chip, zero size at 0x00000000. RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Not unmapping zero size at 0xffffffff Probing for PMC unknown PMC SPI chip, 0 kB: Not mapping flash chip, zero size at 0x00000000. RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Not unmapping zero size at 0xffffffff Probing for SST unknown SST SPI chip, 0 kB: Not mapping flash chip, zero size at 0x00000000. RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Not unmapping zero size at 0xffffffff Probing for ST unknown ST SPI chip, 0 kB: Not mapping flash chip, zero size at 0x00000000. RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Not unmapping zero size at 0xffffffff Probing for Sanyo unknown Sanyo SPI chip, 0 kB: Not mapping flash chip, zero size at 0x00000000. RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Not unmapping zero size at 0xffffffff Probing for Generic unknown SPI chip (RDID), 0 kB: Not mapping flash chip, zero size at 0x00000000. RDID returned 0x1f 0x48 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4800 Not unmapping zero size at 0xffffffff Probing for Generic unknown SPI chip (REMS), 0 kB: Not mapping flash chip, zero size at 0x00000000. REMS returned 0xff 0xff. probe_spi_rems: id1 0xff, id2 0xff Not unmapping zero size at 0xffffffff Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Found Atmel flash chip "AT25DF641(A)" (8192 kB, SPI). === This flash part has status UNTESTED for operations: PROBE READ ERASE WRITE The test status of this chip may have been updated in the latest development version of flashrom. If you are running the latest development version, please email a report to flashrom at flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -VE, -Vw), and mention which mainboard or programmer you tested. Please mention your board in the subject line. Thanks for your help! Ignoring security lockdown (if present) Some block protection in effect, disabling Need to disable Sector Protection Register Lock Reading flash... done. Restoring MMIO space at 0xb75c68a0 Restoring MMIO space at 0xb75c689c Restoring MMIO space at 0xb75c6898 Restoring MMIO space at 0xb75c6896 Restoring MMIO space at 0xb75c6894 Restoring PCI config space for 00:1f:0 reg 0xdc flashrom -VVVw /tmp/narayanan/biosread flashrom v0.9.5.2-r1517 on Linux 3.1.0t (i686), built with libpci , GCC 4.6.2, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 1597M loops per second, 10 myus = 11 us, 100 myus = 100 us, 1000 myus = 1012 us, 10000 myus = 10017 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. sh: dmidecode: not found dmidecode execution unsuccessful - continuing without DMI info Found chipset "Intel ICH9M-E" with PCI ID 8086:2917. Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x1 0xffe00000/0xffa00000 FWH IDSEL: 0x1 0xffd80000/0xff980000 FWH IDSEL: 0x2 0xffd00000/0xff900000 FWH IDSEL: 0x2 0xffc80000/0xff880000 FWH IDSEL: 0x3 0xffc00000/0xff800000 FWH IDSEL: 0x3 0xff700000/0xff300000 FWH IDSEL: 0x4 0xff600000/0xff200000 FWH IDSEL: 0x5 0xff500000/0xff100000 FWH IDSEL: 0x6 0xff400000/0xff000000 FWH IDSEL: 0x7 0xfff80000/0xffb80000 FWH decode enabled 0xfff00000/0xffb00000 FWH decode enabled 0xffe80000/0xffa80000 FWH decode enabled 0xffe00000/0xffa00000 FWH decode enabled 0xffd80000/0xff980000 FWH decode enabled 0xffd00000/0xff900000 FWH decode enabled 0xffc80000/0xff880000 FWH decode enabled 0xffc00000/0xff800000 FWH decode enabled 0xff700000/0xff300000 FWH decode disabled 0xff600000/0xff200000 FWH decode disabled 0xff500000/0xff100000 FWH decode disabled 0xff400000/0xff000000 FWH decode disabled Maximum FWH chip size: 0x100000 bytes BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0 Root Complex Register Block address = 0xfed1c000 GCS = 0x461: BIOS Interface Lock-Down: enabled, Boot BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3800 0x04: 0x6018 (HSFS) HSFS: FDONE=0, FCERR=0, AEL=0, BERASE=3, SCIP=0, FDOPSS=1, FDV=1, FLOCKDN=0 Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done OP Type Pre-OP op[0]: 0x02, write w/ addr, none op[1]: 0x03, read w/ addr, none op[2]: 0xd8, write w/ addr, none op[3]: 0x05, read w/o addr, none op[4]: 0x90, read w/ addr, none op[5]: 0x01, write w/o addr, none op[6]: 0x9f, read w/o addr, none op[7]: 0xc7, write w/o addr, none Pre-OP 0: 0x06, Pre-OP 1: 0x50 0x06: 0x3f00 (HSFC) HSFC: FGO=0, FCYCLE=0, FDBC=63, SME=0 0x08: 0x00ffffc0 (FADDR) 0x50: 0x0000ffff (FRAP) BMWAG 0x00, BMRAG 0x00, BRWA 0xff, BRRA 0xff 0x54: 0x00000000 FREG0: Flash Descriptor region (0x00000000-0x00000fff) is read-write. 0x58: 0x07ff0001 FREG1: BIOS region (0x00001000-0x007fffff) is read-write. 0x5C: 0x0ff70802 FREG2: Management Engine region (0x00802000-0x00ff7fff) is read-write. 0x60: 0x08010800 FREG3: Gigabit Ethernet region (0x00800000-0x00801fff) is read-write. 0x64: 0x0fff0ff8 FREG4: Platform Data region (0x00ff8000-0x00ffffff) is read-write. PR0 is 0x00000000 already. 0x74: 0x00000000 (PR0 is unused) PR1 is 0x00000000 already. 0x78: 0x00000000 (PR1 is unused) PR2 is 0x00000000 already. 0x7C: 0x00000000 (PR2 is unused) PR3 is 0x00000000 already. 0x80: 0x00000000 (PR3 is unused) PR4 is 0x00000000 already. 0x84: 0x00000000 (PR4 is unused) 0x90: 0x04 (SSFS) SSFS: SCIP=0, FDONE=1, FCERR=0, AEL=0 0x91: 0x007f10 (SSFC) SSFC: SCGO=0, ACS=0, SPOP=0, COP=1, DBC=63, SME=0, SCF=0 0x94: 0x5006 (PREOP) 0x96: 0x463b (OPTYPE) 0x98: 0x05d80302 (OPMENU) 0x9C: 0xc79f0190 (OPMENU+4) 0xA0: 0x00000000 (BBAR) 0xC4: 0x0000d803 (LVSCC) LVSCC: BES=0x3, WG=0, WSR=0, WEWS=0, EO=0xd8, VCL=0 0xC8: 0x0000d803 (UVSCC) UVSCC: BES=0x3, WG=0, WSR=0, WEWS=0, EO=0xd8, VCL=0 0xD0: 0x00000000 (FPB) Reading flash descriptors mapped by the chipset via FDOC/FDOD...read_ich_descriptors_via_fdo: number of regions too high (5) - failed Enabling hardware sequencing due to multiple flash chips detected. SPI Read Configuration: prefetching disabled, caching enabled, OK. The following protocols are supported: FWH, Programmer-specific. Probing for Programmer Opaque flash chip, 0 kB: Not mapping flash chip, zero size at 0x00000000. Found 2 attached SPI flash chips with a combined density of 16384 kB. There is only one partition containing the whole address space (0x000000 - 0xffffff). There are 256 erase blocks with 65536 B each. Found Programmer flash chip "Opaque flash chip" (16384 kB, Programmer-specific) at physical address 0x0. Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: Chip size 2048 kB is bigger than supported size 1024 kB of chipset/board/programmer for FWH interface, probe/read/erase/write may fail. probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x00, id2 0x03, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0x49, id2 0xa0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Found Programmer flash chip "Opaque flash chip" (16384 kB, Programmer-specific). Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... Reading 16777216 bytes starting at 0x000000. done. Erasing and writing flash chip... Trying erase function 0... 0x000000-0x00ffff:S, 0x010000-0x01ffff:S, 0x020000-0x02ffff:S, 0x030000-0x03ffff:S, 0x040000-0x04ffff:S, 0x050000-0x05ffff:S, 0x060000-0x06ffff:S, 0x070000-0x07ffff:S, 0x080000-0x08ffff:S, 0x090000-0x09ffff:S, 0x0a0000-0x0affff:S, 0x0b0000-0x0bffff:S, 0x0c0000-0x0cffff:S, 0x0d0000-0x0dffff:S, 0x0e0000-0x0effff:S, 0x0f0000-0x0fffff:S, 0x100000-0x10ffff:S, 0x110000-0x11ffff:S, 0x120000-0x12ffff:S, 0x130000-0x13ffff:S, 0x140000-0x14ffff:S, 0x150000-0x15ffff:S, 0x160000-0x16ffff:S, 0x170000-0x17ffff:S, 0x180000-0x18ffff:S, 0x190000-0x19ffff:S, 0x1a0000-0x1affff:S, 0x1b0000-0x1bffff:S, 0x1c0000-0x1cffff:S, 0x1d0000-0x1dffff:S, 0x1e0000-0x1effff:S, 0x1f0000-0x1fffff:S, 0x200000-0x20ffff:S, 0x210000-0x21ffff:S, 0x220000-0x22ffff:S, 0x230000-0x23ffff:S, 0x240000-0x24ffff:S, 0x250000-0x25ffff:S, 0x260000-0x26ffff:S, 0x270000-0x27ffff:S, 0x280000-0x28ffff:S, 0x290000-0x29ffff:S, 0x2a0000-0x2affff:S, 0x2b0000-0x2bffff:S, 0x2c0000-0x2cffff:S, 0x2d0000-0x2dffff:S, 0x2e0000-0x2effff:S, 0x2f0000-0x2fffff:S, 0x300000-0x30ffff:S, 0x310000-0x31ffff:S, 0x320000-0x32ffff:S, 0x330000-0x33ffff:S, 0x340000-0x34ffff:S, 0x350000-0x35ffff:S, 0x360000-0x36ffff:S, 0x370000-0x37ffff:S, 0x380000-0x38ffff:S, 0x390000-0x39ffff:S, 0x3a0000-0x3affff:S, 0x3b0000-0x3bffff:S, 0x3c0000-0x3cffff:S, 0x3d0000-0x3dffff:S, 0x3e0000-0x3effff:S, 0x3f0000-0x3fffff:S, 0x400000-0x40ffff:S, 0x410000-0x41ffff:S, 0x420000-0x42ffff:S, 0x430000-0x43ffff:S, 0x440000-0x44ffff:S, 0x450000-0x45ffff:S, 0x460000-0x46ffff:S, 0x470000-0x47ffff:S, 0x480000-0x48ffff:S, 0x490000-0x49ffff:S, 0x4a0000-0x4affff:S, 0x4b0000-0x4bffff:S, 0x4c0000-0x4cffff:S, 0x4d0000-0x4dffff:S, 0x4e0000-0x4effff:S, 0x4f0000-0x4fffff:S, 0x500000-0x50ffff:S, 0x510000-0x51ffff:S, 0x520000-0x52ffff:S, 0x530000-0x53ffff:S, 0x540000-0x54ffff:S, 0x550000-0x55ffff:S, 0x560000-0x56ffff:S, 0x570000-0x57ffff:S, 0x580000-0x58ffff:S, 0x590000-0x59ffff:S, 0x5a0000-0x5affff:S, 0x5b0000-0x5bffff:S, 0x5c0000-0x5cffff:S, 0x5d0000-0x5dffff:S, 0x5e0000-0x5effff:S, 0x5f0000-0x5fffff:S, 0x600000-0x60ffff:S, 0x610000-0x61ffff:S, 0x620000-0x62ffff:S, 0x630000-0x63ffff:S, 0x640000-0x64ffff:S, 0x650000-0x65ffff:S, 0x660000-0x66ffff:S, 0x670000-0x67ffff:S, 0x680000-0x68ffff:S, 0x690000-0x69ffff:S, 0x6a0000-0x6affff:S, 0x6b0000-0x6bffff:S, 0x6c0000-0x6cffff:S, 0x6d0000-0x6dffff:S, 0x6e0000-0x6effff:S, 0x6f0000-0x6fffff:S, 0x700000-0x70ffff:S, 0x710000-0x71ffff:S, 0x720000-0x72ffff:S, 0x730000-0x73ffff:S, 0x740000-0x74ffff:S, 0x750000-0x75ffff:S, 0x760000-0x76ffff:S, 0x770000-0x77ffff:S, 0x780000-0x78ffff:S, 0x790000-0x79ffff:S, 0x7a0000-0x7affff:S, 0x7b0000-0x7bffff:S, 0x7c0000-0x7cffff:S, 0x7d0000-0x7dffff:S, 0x7e0000-0x7effff:S, 0x7f0000-0x7fffff:S, 0x800000-0x80ffff:S, 0x810000-0x81ffff:S, 0x820000-0x82ffff:S, 0x830000-0x83ffff:S, 0x840000-0x84ffff:S, 0x850000-0x85ffff:S, 0x860000-0x86ffff:S, 0x870000-0x87ffff:S, 0x880000-0x88ffff:S, 0x890000-0x89ffff:S, 0x8a0000-0x8affff:S, 0x8b0000-0x8bffff:S, 0x8c0000-0x8cffff:S, 0x8d0000-0x8dffff:S, 0x8e0000-0x8effff:S, 0x8f0000-0x8fffff:S, 0x900000-0x90ffff:S, 0x910000-0x91ffff:S, 0x920000-0x92ffff:S, 0x930000-0x93ffff:S, 0x940000-0x94ffff:S, 0x950000-0x95ffff:S, 0x960000-0x96ffff:S, 0x970000-0x97ffff:S, 0x980000-0x98ffff:S, 0x990000-0x99ffff:S, 0x9a0000-0x9affff:S, 0x9b0000-0x9bffff:S, 0x9c0000-0x9cffff:S, 0x9d0000-0x9dffff:S, 0x9e0000-0x9effff:S, 0x9f0000-0x9fffff:S, 0xa00000-0xa0ffff:S, 0xa10000-0xa1ffff:S, 0xa20000-0xa2ffff:S, 0xa30000-0xa3ffff:S, 0xa40000-0xa4ffff:S, 0xa50000-0xa5ffff:S, 0xa60000-0xa6ffff:S, 0xa70000-0xa7ffff:S, 0xa80000-0xa8ffff:S, 0xa90000-0xa9ffff:S, 0xaa0000-0xaaffff:S, 0xab0000-0xabffff:S, 0xac0000-0xacffff:S, 0xad0000-0xadffff:S, 0xae0000-0xaeffff:S, 0xaf0000-0xafffff:S, 0xb00000-0xb0ffff:S, 0xb10000-0xb1ffff:S, 0xb20000-0xb2ffff:S, 0xb30000-0xb3ffff:S, 0xb40000-0xb4ffff:S, 0xb50000-0xb5ffff:S, 0xb60000-0xb6ffff:S, 0xb70000-0xb7ffff:S, 0xb80000-0xb8ffff:S, 0xb90000-0xb9ffff:S, 0xba0000-0xbaffff:S, 0xbb0000-0xbbffff:S, 0xbc0000-0xbcffff:S, 0xbd0000-0xbdffff:S, 0xbe0000-0xbeffff:S, 0xbf0000-0xbfffff:S, 0xc00000-0xc0ffff:S, 0xc10000-0xc1ffff:S, 0xc20000-0xc2ffff:S, 0xc30000-0xc3ffff:S, 0xc40000-0xc4ffff:S, 0xc50000-0xc5ffff:S, 0xc60000-0xc6ffff:S, 0xc70000-0xc7ffff:S, 0xc80000-0xc8ffff:S, 0xc90000-0xc9ffff:S, 0xca0000-0xcaffff:S, 0xcb0000-0xcbffff:S, 0xcc0000-0xccffff:S, 0xcd0000-0xcdffff:S, 0xce0000-0xceffff:S, 0xcf0000-0xcfffff:S, 0xd00000-0xd0ffff:S, 0xd10000-0xd1ffff:S, 0xd20000-0xd2ffff:S, 0xd30000-0xd3ffff:S, 0xd40000-0xd4ffff:S, 0xd50000-0xd5ffff:S, 0xd60000-0xd6ffff:S, 0xd70000-0xd7ffff:S, 0xd80000-0xd8ffff:S, 0xd90000-0xd9ffff:S, 0xda0000-0xdaffff:S, 0xdb0000-0xdbffff:S, 0xdc0000-0xdcffff:S, 0xdd0000-0xddffff:S, 0xde0000-0xdeffff:S, 0xdf0000-0xdfffff:S, 0xe00000-0xe0ffff:S, 0xe10000-0xe1ffff:S, 0xe20000-0xe2ffff:S, 0xe30000-0xe3ffff:S, 0xe40000-0xe4ffff:S, 0xe50000-0xe5ffff:S, 0xe60000-0xe6ffff:S, 0xe70000-0xe7ffff:S, 0xe80000-0xe8ffff:S, 0xe90000-0xe9ffff:S, 0xea0000-0xeaffff:S, 0xeb0000-0xebffff:S, 0xec0000-0xecffff:S, 0xed0000-0xedffff:S, 0xee0000-0xeeffff:S, 0xef0000-0xefffff:S, 0xf00000-0xf0ffff:S, 0xf10000-0xf1ffff:S, 0xf20000-0xf2ffff:S, 0xf30000-0xf3ffff:S, 0xf40000-0xf4ffff:S, 0xf50000-0xf5ffff:S, 0xf60000-0xf6ffff:S, 0xf70000-0xf7ffff:S, 0xf80000-0xf8ffff:S, 0xf90000-0xf9ffff:S, 0xfa0000-0xfaffff:S, 0xfb0000-0xfbffff:S, 0xfc0000-0xfcffff:S, 0xfd0000-0xfdffff:S, 0xfe0000-0xfeffff:S, 0xff0000-0xffffff:S Erase/write done. Verifying flash... Reading 16777216 bytes starting at 0x000000. VERIFIED. Restoring MMIO space at 0xb74728a0 Restoring MMIO space at 0xb747289c Restoring MMIO space at 0xb7472898 Restoring MMIO space at 0xb7472896 Restoring MMIO space at 0xb7472894 Restoring PCI config space for 00:1f:0 reg 0xdc 7 From colenbyre at gmail.com Mon Mar 26 09:58:40 2012 From: colenbyre at gmail.com (Cole Byre) Date: Mon, 26 Mar 2012 00:58:40 -0700 Subject: [flashrom] Latest version in console Message-ID: Hello. I used the Linux command sudo apt-get install flashrom to get flashrom on Linux mint..but when I run sudo flashrom, it tells me its version 0.9.4..which is outdated. What is the command to download the latest version of flashrom? -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan.tauner at student.tuwien.ac.at Tue Mar 27 00:34:45 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 27 Mar 2012 00:34:45 +0200 Subject: [flashrom] Erase error with hardware sequencing In-Reply-To: References: <201203261916.q2QJG289031519@mail2.student.tuwien.ac.at> Message-ID: <201203262234.q2QMYjip023965@mail2.student.tuwien.ac.at> On Tue, 27 Mar 2012 01:40:30 +0530 narayanan best wrote: > > > I believe the cause is due to hardware sequencing write does not disable > > > SRPL (sector protection register lock). I used -p > > > internal:ich_spi_force=yes option which didn't help. > > > > > > This was confirmed when i gave ich_spi_mode=swseq (read or write) as > > > parameter, it disables the SRPL and next write of 16MB with hardware > > > sequencing succeeded. you are right with your diagnosis afaics. when i implemented hwseq i was not thinking about setups like yours. hwseq abstracts away so many aspects of the write process that it did not make a lot of sense to think about chip-specific write protections. but in the case hwseq is only used to be able to access two flash chips, it is (apparently) a viable use case for some. are you involved in the design of that specific machine and are you able to change the firmware? in that case i wonder why you made the design choice to use chip-specific write protections instead of the ones provided by the chipset. if you bought it completely i would like to know which board that is. in any case, changing flashrom to unlock the first flash chip with sw sequencing and then doing the rest of the process with hwseq would be a major effort. a possible workaround is to use swseq to access the first chip and hwseq for the other half. this could be done with layout files, see manpage for details please (layout files do only work for writing at the moment. patches exist for the other operation modes too, but they are not committed yet. this does not really affect you, because you only need a workaround for writing anyway). i also spotted a bug in ich_descriptors.c that showed up in your log. line 822 should be " if (nr > 5) {" instead of " if (nr >= 5) {" would be nice if you could recompile with that change and post another log. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From narayananbest at gmail.com Tue Mar 27 01:46:45 2012 From: narayananbest at gmail.com (narayanan best) Date: Tue, 27 Mar 2012 05:16:45 +0530 Subject: [flashrom] Erase error with hardware sequencing In-Reply-To: <201203262234.q2QMYjip023965@mail2.student.tuwien.ac.at> References: <201203261916.q2QJG289031519@mail2.student.tuwien.ac.at> <201203262234.q2QMYjip023965@mail2.student.tuwien.ac.at> Message-ID: Thanks for pointing out layout option. But it still accepts 16MB image as argument. Is there a way where i can select the second chip and give only 8MB image file ?. Just curious: How to select the SPI flash chip using CS on ICH9 ? ICH9 doc states that CS can used to select the chip but didn't have enough information on how to program CS. Is hwseq only solution for accessing multiple chips ?. On Tue, Mar 27, 2012 at 4:04 AM, Stefan Tauner < stefan.tauner at student.tuwien.ac.at> wrote: > On Tue, 27 Mar 2012 01:40:30 +0530 > narayanan best wrote: > > > > > I believe the cause is due to hardware sequencing write does not > disable > > > > SRPL (sector protection register lock). I used -p > > > > internal:ich_spi_force=yes option which didn't help. > > > > > > > > This was confirmed when i gave ich_spi_mode=swseq (read or write) as > > > > parameter, it disables the SRPL and next write of 16MB with hardware > > > > sequencing succeeded. > > you are right with your diagnosis afaics. when i implemented hwseq i > was not thinking about setups like yours. hwseq abstracts away so many > aspects of the write process that it did not make a lot of sense to > think about chip-specific write protections. but in the case hwseq is > only used to be able to access two flash chips, it is (apparently) a > viable use case for some. > > are you involved in the design of that specific machine and are you > able to change the firmware? in that case i wonder why you made the > design choice to use chip-specific write protections instead of the > ones provided by the chipset. > > if you bought it completely i would like to know which board that is. > > in any case, changing flashrom to unlock the first flash chip with sw > sequencing and then doing the rest of the process with hwseq would be a > major effort. a possible workaround is to use swseq to access the first > chip and hwseq for the other half. this could be done with layout > files, see manpage for details please (layout files do only work for > writing at the moment. patches exist for the other operation modes too, > but they are not committed yet. this does not really affect you, > because you only need a workaround for writing anyway). > > i also spotted a bug in ich_descriptors.c that showed up in your log. > line 822 should be > " if (nr > 5) {" > instead of > " if (nr >= 5) {" > > I will get back on this in my next mail. > would be nice if you could recompile with that change and post another > log. > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner > -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan.tauner at student.tuwien.ac.at Tue Mar 27 02:38:32 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 27 Mar 2012 02:38:32 +0200 Subject: [flashrom] Erase error with hardware sequencing In-Reply-To: References: <201203261916.q2QJG289031519@mail2.student.tuwien.ac.at> <201203262234.q2QMYjip023965@mail2.student.tuwien.ac.at> Message-ID: <201203270038.q2R0cWxt013463@mail2.student.tuwien.ac.at> On Tue, 27 Mar 2012 05:16:45 +0530 narayanan best wrote: > Thanks for pointing out layout option. But it still accepts 16MB image as > argument. true, but it will only "use" the part that is needed to fill the address range defined by the layout file. so this should be already sufficient for you? > Is there a way where i can select the second chip and give only 8MB image > file ?. not without patches. there is a patch to specify a file per layout image: http://patchwork.coreboot.org/patch/3486/ > > Just curious: > > How to select the SPI flash chip using CS on ICH9 ? ICH9 doc states that > CS can used to select the chip but > didn't have enough information on how to program CS. > > Is hwseq only solution for accessing multiple chips ?. afaik hwseq is the only option because there is no (publicly documented?) access to any register that allows to toggle CS by the host software. we have studied all public and some non-public intel documents to no avail. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From kolobock at gmail.com Tue Mar 27 10:32:15 2012 From: kolobock at gmail.com (KolobocK) Date: Tue, 27 Mar 2012 11:32:15 +0300 Subject: [flashrom] Gigabyte H55M-USB3 Message-ID: sudo flashrom -V > flashrom_-V.log Regards, --andrew -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: flashrom_-V.log Type: text/x-log Size: 21831 bytes Desc: not available URL: From smahood at uwaterloo.ca Tue Mar 27 21:01:43 2012 From: smahood at uwaterloo.ca (Sean Mahood) Date: Tue, 27 Mar 2012 15:01:43 -0400 Subject: [flashrom] Support for Intel DH89xxCC PCH Message-ID: <20120327150143.59501hwhysjs7hxc@www.nexusmail.uwaterloo.ca> Hello, I have confirmed that the the following addition to chipset_enable.c will allow the programming of DH89xxCC PCH chips. {0x8086, 0x1d40, OK, "Intel", "X79", enable_flash_pch6}, {0x8086, 0x1d41, NT, "Intel", "X79", enable_flash_pch6}, + {0x8086, 0x2310, NT, "Intel", "DH89xxCC", enable_flash_pch6}, {0x8086, 0x2410, OK, "Intel", "ICH", enable_flash_ich_4e}, {0x8086, 0x2420, OK, "Intel", "ICH0", enable_flash_ich_4e}, Similar patches have been made to operating systems: Linux http://groups.google.com/group/linux.kernel/browse_thread/thread/ddfde330d4ce70f8 FreeBSD http://lists.freebsd.org/pipermail/svn-src-head/2011-January/024584.html I am not sure of the process in which to get this added to the next release, so I thought it wise to post it here. Hope this helps! Sincerely, Sean Mahood From narayananbest at gmail.com Tue Mar 27 22:38:48 2012 From: narayananbest at gmail.com (narayanan best) Date: Wed, 28 Mar 2012 02:08:48 +0530 Subject: [flashrom] Erase error with hardware sequencing In-Reply-To: <201203270038.q2R0cWxt013463@mail2.student.tuwien.ac.at> References: <201203261916.q2QJG289031519@mail2.student.tuwien.ac.at> <201203262234.q2QMYjip023965@mail2.student.tuwien.ac.at> <201203270038.q2R0cWxt013463@mail2.student.tuwien.ac.at> Message-ID: Hi Stefan, I applied the patches pointed by you http://patchwork.coreboot.org/patch/3486/ and now i can write 8MB image file. Even with this patch why do we need to give argument to -w image (16MB in mycase). Is this image used for verification ?. From the log , i see this is not used and only file which follows -i is being used (-i image <:file> ) In flashrom.c -> verify_flash I have to change unsigned int len = l->end - l->start + 1; (this is introduced as part of the patch above) to unsigned int len = l->end - l->start ; I changed ich_descriptors.c line 822 to if(nr > 5) { With these changes i am attaching the log. On Tue, Mar 27, 2012 at 6:08 AM, Stefan Tauner < stefan.tauner at student.tuwien.ac.at> wrote: > On Tue, 27 Mar 2012 05:16:45 +0530 > narayanan best wrote: > > > Thanks for pointing out layout option. But it still accepts 16MB image > as > > argument. > > true, but it will only "use" the part that is needed to fill the > address range defined by the layout file. so this should be already > sufficient for you? > > > Is there a way where i can select the second chip and give only 8MB > image > > file ?. > > not without patches. there is a patch to specify a file per layout > image: http://patchwork.coreboot.org/patch/3486/ > > > > > Just curious: > > > > How to select the SPI flash chip using CS on ICH9 ? ICH9 doc states > that > > CS can used to select the chip but > > didn't have enough information on how to program CS. > > > > Is hwseq only solution for accessing multiple chips ?. > > afaik hwseq is the only option because there is no (publicly > documented?) access to any register that allows to toggle CS by the > host software. we have studied all public and some non-public intel > documents to no avail. > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- flashrom -VVV -l rom.layout -i secondary:biosread.two -w dummy flashrom v0.9.5-r1504 on Linux 3.1.0 (i686), built with libpci , GCC 4.6.2, little endian flashrom is free software, get the source code at http://www.flashrom.org romlayout 00800000 - 01000000 named secondary Looking for region "secondary" (file="biosread.two")... found. Using region: "secondary". Calibrating delay loop... OS timer resolution is 1 usecs, 1597M loops per second, 10 myus = 10 us, 100 myus = 101 us, 1000 myus = 1025 us, 10000 myus = 10015 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. sh: dmidecode: not found dmidecode execution unsuccessful - continuing without DMI info Found chipset "Intel ICH9M-E" with PCI ID 8086:2917. Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x1 0xffe00000/0xffa00000 FWH IDSEL: 0x1 0xffd80000/0xff980000 FWH IDSEL: 0x2 0xffd00000/0xff900000 FWH IDSEL: 0x2 0xffc80000/0xff880000 FWH IDSEL: 0x3 0xffc00000/0xff800000 FWH IDSEL: 0x3 0xff700000/0xff300000 FWH IDSEL: 0x4 0xff600000/0xff200000 FWH IDSEL: 0x5 0xff500000/0xff100000 FWH IDSEL: 0x6 0xff400000/0xff000000 FWH IDSEL: 0x7 0xfff80000/0xffb80000 FWH decode enabled 0xfff00000/0xffb00000 FWH decode enabled 0xffe80000/0xffa80000 FWH decode enabled 0xffe00000/0xffa00000 FWH decode enabled 0x