From flashrom at mkarcher.dialup.fu-berlin.de Tue May 1 01:13:38 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Tue, 01 May 2012 01:13:38 +0200 Subject: [flashrom] PONY_SPI, now with Windows support In-Reply-To: References: <1335733317.960.28.camel@localhost> <1335739016.960.45.camel@localhost> Message-ID: <1335827618.960.48.camel@localhost> On Mon, 2012-04-30 at 00:55 +0200, Virgil-Adrian Teaca wrote: > Then, I attached another patch, which I hope it is what we need... I just replaced eight spaces by a tab at two points in serial.c, otherwise, it really is fine. > Signed-off-by: Virgil-Adrian Teaca Acked-by: Michael Karcher Committed in r1525. Thanks for your patch. From flashrom at mkarcher.dialup.fu-berlin.de Tue May 1 01:28:31 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Tue, 1 May 2012 01:28:31 +0200 Subject: [flashrom] [PATCH 1/1] Add manpage entry for pony_spi Message-ID: <1335828511-23079-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> Signed-off-by: Michael Karcher --- flashrom.8 | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/flashrom.8 b/flashrom.8 index ff8ed9d..b2b356d 100644 --- a/flashrom.8 +++ b/flashrom.8 @@ -201,6 +201,9 @@ atmegaXXu2-flasher by Stefan Tauner." .BR "* rayer_spi" " (for SPI flash ROMs attached to a RayeR parport " or Xilinx DLC5 compatible cable) .sp +.BR "* pony_spi" " (for SPI flash ROMs attached to a SI_Prog serial port +bitbanging adapter)" +.sp .BR "* nicintel_spi" " (for SPI flash ROMs on Intel Gigabit network cards)" .sp .BR "* ogp_spi" " (for SPI flash ROMs on Open Graphics Project graphics card)" @@ -614,6 +617,26 @@ More information about the RayeR hardware is available at The schematic of the Xilinx DLC 5 was published at .BR "http://www.xilinx.com/itp/xilinx4/data/docs/pac/appendixb.html " . .SS +.BR "pony_spi " programmer +The serial port (like /dev/ttyS0, /dev/ttyUSB0 on Linux or COM3 on windows) is +specified using the mandatory +.B dev +parameter. The adapter type is selectable between SI-Prog (used for +SPI devices with PonyProg 2000) or a custom made serial bitbanging programmer +named "serbang". The optional +.B type +parameter accepts the values "si_prog" (default) or "serbang". +.sp +Information about the SI_Prog adapter can be found at +.BR "http://www.lancos.com/siprogsch.html " . +.sp +An example call to flashrom is +.sp +.B " flashrom \-p pony_spi:dev=/dev/ttyS0,type=serbang" +.sp +Please note that while USB-to-serial adapters work under certain circumstances, +this slows down operation considerably. +.SS .BR "ogp_spi " programmer The flash ROM chip to access must be specified with the .B rom -- 1.7.10 From svn at flashrom.org Tue May 1 01:11:07 2012 From: svn at flashrom.org (repository service) Date: Tue, 01 May 2012 01:11:07 +0200 Subject: [flashrom] [commit] r1525 - trunk Message-ID: Author: mkarcher Date: Tue May 1 01:11:06 2012 New Revision: 1525 URL: http://flashrom.org/trac/flashrom/changeset/1525 Log: Add serial port bitbanging code This adds the pony_spi driver which supports the SI_Prog adapter, which is commonly used for SPI chips with PonyProg 2000, and a custom adapter called "SERBANG" which differs in the logic of two pins. Signed-off-by: Virgil-Adrian Teaca Acked-by: Michael Karcher Added: trunk/pony_spi.c Modified: trunk/Makefile trunk/flashrom.c trunk/print.c trunk/programmer.h trunk/serial.c Modified: trunk/Makefile ============================================================================== --- trunk/Makefile Fri Apr 27 22:41:23 2012 (r1524) +++ trunk/Makefile Tue May 1 01:11:06 2012 (r1525) @@ -292,6 +292,9 @@ # RayeR SPIPGM hardware support CONFIG_RAYER_SPI ?= yes +# PonyProg2000 SPI hardware support +CONFIG_PONY_SPI ?= yes + # Always enable 3Com NICs for now. CONFIG_NIC3COM ?= yes @@ -348,6 +351,9 @@ ifeq ($(CONFIG_RAYER_SPI), yes) override CONFIG_BITBANG_SPI = yes else +ifeq ($(CONFIG_PONY_SPI), yes) +override CONFIG_BITBANG_SPI = yes +else ifeq ($(CONFIG_INTERNAL), yes) override CONFIG_BITBANG_SPI = yes else @@ -362,6 +368,7 @@ endif endif endif +endif ifeq ($(CONFIG_INTERNAL), yes) FEATURE_CFLAGS += -D'CONFIG_INTERNAL=1' @@ -388,6 +395,12 @@ NEED_PCI := yes endif +ifeq ($(CONFIG_PONY_SPI), yes) +FEATURE_CFLAGS += -D'CONFIG_PONY_SPI=1' +PROGRAMMER_OBJS += pony_spi.o +NEED_SERIAL := yes +endif + ifeq ($(CONFIG_BITBANG_SPI), yes) FEATURE_CFLAGS += -D'CONFIG_BITBANG_SPI=1' PROGRAMMER_OBJS += bitbang_spi.o Modified: trunk/flashrom.c ============================================================================== --- trunk/flashrom.c Fri Apr 27 22:41:23 2012 (r1524) +++ trunk/flashrom.c Tue May 1 01:11:06 2012 (r1525) @@ -201,6 +201,16 @@ }, #endif +#if CONFIG_PONY_SPI == 1 + { + .name = "pony_spi", + .init = pony_spi_init, + .map_flash_region = fallback_map, + .unmap_flash_region = fallback_unmap, + .delay = internal_delay, +}, +#endif + #if CONFIG_NICINTEL == 1 { .name = "nicintel", Added: trunk/pony_spi.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/pony_spi.c Tue May 1 01:11:06 2012 (r1525) @@ -0,0 +1,160 @@ +/* + * This file is part of the flashrom project. + * + * Copyright (C) 2012 Virgil-Adrian Teaca + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* Driver for the SI-Prog like hardware by Lancos.com. + * See http://www.lancos.com/siprogsch.html for schematics and instructions. + */ + +#include +#include + +#include "flash.h" +#include "programmer.h" + +/* We have: + + MOSI -----> DTR + MISO -----> CTS + SCK --+--> RTS + +--> DSR + CS# -----> TXD + +*/ + +enum pony_type { + TYPE_SI_PROG, + TYPE_SERBANG, +}; + +/* The hardware programmer used. */ +static enum pony_type pony_type = TYPE_SI_PROG; + +static void pony_bitbang_set_cs(int val) +{ + if (pony_type == TYPE_SI_PROG) + { + /* CS# is negated by the SI-Prog programmer. */ + val ^= 1; + } + sp_set_pin(PIN_TXD, val); +} + +static void pony_bitbang_set_sck(int val) +{ + sp_set_pin(PIN_RTS, val); +} + +static void pony_bitbang_set_mosi(int val) +{ + sp_set_pin(PIN_DTR, val); +} + +static int pony_bitbang_get_miso(void) +{ + int tmp; + + tmp = sp_get_pin(PIN_CTS); + + if (pony_type == TYPE_SERBANG) + { + /* MISO is negated by the SERBANG programmer. */ + tmp ^= 1; + } + return tmp; +} + +static const struct bitbang_spi_master bitbang_spi_master_pony = { + .type = BITBANG_SPI_MASTER_PONY, + .set_cs = pony_bitbang_set_cs, + .set_sck = pony_bitbang_set_sck, + .set_mosi = pony_bitbang_set_mosi, + .get_miso = pony_bitbang_get_miso, + .half_period = 0, +}; + +int pony_spi_init(void) +{ + char *arg = NULL; + int i, data_in, data_out, have_device = 0; + int have_prog = 1; + + /* The parameter is on format "dev=/dev/device,type=serbang" */ + arg = extract_programmer_param("dev"); + + if (arg && strlen(arg)) { + sp_fd = sp_openserport( arg, 9600 ); + have_device++; + } + free(arg); + + if (!have_device) { + msg_perr("Error: No valid device specified.\n" + "Use flashrom -p pony_spi:dev=/dev/device\n"); + + return 1; + } + /* Register the shutdown callback. */ + if (register_shutdown(serialport_shutdown, NULL)) { + return 1; + } + arg = extract_programmer_param("type"); + + if (arg) { + if (!strcasecmp( arg, "serbang")) { + pony_type = TYPE_SERBANG; + } else if (!strcasecmp( arg, "si_prog") ) { + pony_type = TYPE_SI_PROG; + } else { + msg_perr("Error: Invalid programmer type specified.\n"); + free(arg); + return 1; + } + } + free(arg); + + msg_pdbg("Using the %s programmer.\n", ((pony_type == TYPE_SI_PROG ) ? "SI-Prog" : "SERBANG")); + /* + * Detect if there is a SI-Prog compatible programmer connected. + */ + pony_bitbang_set_cs(1); + pony_bitbang_set_mosi(1); + + /* We toggle SCK while we keep MOSI and CS# on. */ + for (i = 1; i <= 10; ++i) { + data_out = i & 1; + sp_set_pin(PIN_RTS, data_out); + programmer_delay( 1000 ); + data_in = sp_get_pin(PIN_DSR); + + if (data_out != data_in) { + have_prog = 0; + break; + } + } + + if (!have_prog) { + msg_perr( "No SI-Prog compatible hardware detected.\n" ); + return 1; + } + + if (bitbang_spi_init(&bitbang_spi_master_pony)) { + return 1; + } + return 0; +} Modified: trunk/print.c ============================================================================== --- trunk/print.c Fri Apr 27 22:41:23 2012 (r1524) +++ trunk/print.c Tue May 1 01:11:06 2012 (r1525) @@ -507,6 +507,12 @@ /* FIXME */ msg_ginfo("RayeR parallel port programmer\n"); #endif +#if CONFIG_PONY_SPI == 1 + msg_ginfo("\nSupported devices for the %s programmer:\n", + programmer_table[PROGRAMMER_PONY_SPI].name); + /* FIXME */ + msg_ginfo("SI-Prog and SERBANG serial port programmer\n"); +#endif #if CONFIG_NICINTEL == 1 msg_ginfo("\nSupported devices for the %s programmer:\n", programmer_table[PROGRAMMER_NICINTEL].name); Modified: trunk/programmer.h ============================================================================== --- trunk/programmer.h Fri Apr 27 22:41:23 2012 (r1524) +++ trunk/programmer.h Tue May 1 01:11:06 2012 (r1525) @@ -69,6 +69,9 @@ #if CONFIG_RAYER_SPI == 1 PROGRAMMER_RAYER_SPI, #endif +#if CONFIG_PONY_SPI == 1 + PROGRAMMER_PONY_SPI, +#endif #if CONFIG_NICINTEL == 1 PROGRAMMER_NICINTEL, #endif @@ -110,6 +113,9 @@ #if CONFIG_RAYER_SPI == 1 BITBANG_SPI_MASTER_RAYER, #endif +#if CONFIG_PONY_SPI == 1 + BITBANG_SPI_MASTER_PONY, +#endif #if CONFIG_NICINTEL_SPI == 1 BITBANG_SPI_MASTER_NICINTEL, #endif @@ -430,6 +436,11 @@ int rayer_spi_init(void); #endif +/* pony_spi.c */ +#if CONFIG_PONY_SPI == 1 +int pony_spi_init(void); +#endif + /* bitbang_spi.c */ int bitbang_spi_init(const struct bitbang_spi_master *master); @@ -492,7 +503,7 @@ #if CONFIG_DEDIPROG == 1 SPI_CONTROLLER_DEDIPROG, #endif -#if CONFIG_OGP_SPI == 1 || CONFIG_NICINTEL_SPI == 1 || CONFIG_RAYER_SPI == 1 || (CONFIG_INTERNAL == 1 && (defined(__i386__) || defined(__x86_64__))) +#if CONFIG_OGP_SPI == 1 || CONFIG_NICINTEL_SPI == 1 || CONFIG_RAYER_SPI == 1 || CONFIG_PONY_SPI == 1 || (CONFIG_INTERNAL == 1 && (defined(__i386__) || defined(__x86_64__))) SPI_CONTROLLER_BITBANG, #endif #if CONFIG_LINUX_SPI == 1 @@ -636,4 +647,31 @@ int serialport_write(unsigned char *buf, unsigned int writecnt); int serialport_read(unsigned char *buf, unsigned int readcnt); +/* Serial port/pin mapping: + + 1 CD <- + 2 RXD <- + 3 TXD -> + 4 DTR -> + 5 GND -- + 6 DSR <- + 7 RTS -> + 8 CTS <- + 9 RI <- +*/ +enum SP_PIN { + PIN_CD = 1, + PIN_RXD, + PIN_TXD, + PIN_DTR, + PIN_GND, + PIN_DSR, + PIN_RTS, + PIN_CTS, + PIN_RI, +}; + +void sp_set_pin(enum SP_PIN pin, int val); +int sp_get_pin(enum SP_PIN pin); + #endif /* !__PROGRAMMER_H__ */ Modified: trunk/serial.c ============================================================================== --- trunk/serial.c Fri Apr 27 22:41:23 2012 (r1524) +++ trunk/serial.c Tue May 1 01:11:06 2012 (r1525) @@ -32,6 +32,9 @@ #include #else #include +#include +#include +#include #endif #include "flash.h" #include "programmer.h" @@ -172,6 +175,58 @@ #endif } +void sp_set_pin(enum SP_PIN pin, int val) { +#ifdef _WIN32 + DWORD ctl; + + if(pin == PIN_TXD) { + ctl = val ? SETBREAK: CLRBREAK; + } + else if(pin == PIN_DTR) { + ctl = val ? SETDTR: CLRDTR; + } + else { + ctl = val ? SETRTS: CLRRTS; + } + EscapeCommFunction(sp_fd, ctl); +#else + int ctl, s; + + if(pin == PIN_TXD) { + ioctl(sp_fd, val ? TIOCSBRK : TIOCCBRK, 0); + } + else { + s = (pin == PIN_DTR) ? TIOCM_DTR : TIOCM_RTS; + ioctl(sp_fd, TIOCMGET, &ctl); + + if (val) { + ctl |= s; + } + else { + ctl &= ~s; + } + ioctl(sp_fd, TIOCMSET, &ctl); + } +#endif +} + +int sp_get_pin(enum SP_PIN pin) { + int s; +#ifdef _WIN32 + DWORD ctl; + + s = (pin == PIN_CTS) ? MS_CTS_ON : MS_DSR_ON; + GetCommModemStatus(sp_fd, &ctl); +#else + int ctl; + s = (pin == PIN_CTS) ? TIOCM_CTS : TIOCM_DSR; + ioctl(sp_fd, TIOCMGET, &ctl); +#endif + + return ((ctl & s) ? 1 : 0); + +} + void sp_flush_incoming(void) { #ifdef _WIN32 From czajernia at gmail.com Tue May 1 17:38:39 2012 From: czajernia at gmail.com (=?utf-8?Q?Pawe=C5=82?= Drewniak) Date: Tue, 1 May 2012 16:38:39 +0100 (BST) Subject: [flashrom] Inspiron 1420 Flashrom report In-Reply-To: <201204271338.q3RDcSh3015892@mail2.student.tuwien.ac.at> Message-ID: <693292150.602.1335886716155.JavaMail.woody@woody-laptop> Hi, another report, this time from Dell Inspiron 1420 - read/erase/write works! Cheers, Pawe? wielmoza-laptop flashrom-0.9.5.2 # ./flashrom -p internal:laptop=force_I_want_a_brick -V -w /tmp/1420a10.bin flashrom v0.9.5.2-r1515 on Linux 3.2.1-gentoo-r2-woody (x86_64), built with libpci 3.1.7, 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, 1909M loops per second, 10 myus = 10 us, 100 myus = 97 us, 1000 myus = 1167 us, 10000 myus = 10987 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Dell Inc." DMI string system-product-name: "Inspiron 1420 " DMI string system-version: "Not Specified" DMI string baseboard-manufacturer: "Dell Inc." DMI string baseboard-product-name: "0JX269" DMI string baseboard-version: " " DMI string chassis-type: "Portable" Laptop detected via DMI. ======================================================================== WARNING! You seem to be running flashrom on an unsupported laptop. Laptops, notebooks and netbooks are difficult to support and we recommend to use the vendor flashing utility. The embedded controller (EC) in these machines often interacts badly with flashing. See http://www.flashrom.org/Laptops for details. If flash is shared with the EC, erase is guaranteed to brick your laptop and write may brick your laptop. Read and probe may irritate your EC and cause fan failure, backlight failure and sudden poweroff. You have been warned. ======================================================================== Proceeding anyway because user forced us to. Found chipset "Intel ICH8M" with PCI ID 8086:2815. Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x0 0xffe00000/0xffa00000 FWH IDSEL: 0x0 0xffd80000/0xff980000 FWH IDSEL: 0x0 0xffd00000/0xff900000 FWH IDSEL: 0x0 0xffc80000/0xff880000 FWH IDSEL: 0x0 0xffc00000/0xff800000 FWH IDSEL: 0x0 0xff700000/0xff300000 FWH IDSEL: 0x0 0xff600000/0xff200000 FWH IDSEL: 0x0 0xff500000/0xff100000 FWH IDSEL: 0x0 0xff400000/0xff000000 FWH IDSEL: 0x0 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 = 0xfed18000 GCS = 0x460: BIOS Interface Lock-Down: disabled, Boot BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfed18000 + 0x3020 0x04: 0x0000 (HSFS) HSFS: FDONE=0, FCERR=0, AEL=0, BERASE=0, SCIP=0, FDOPSS=0, FDV=0, FLOCKDN=0 Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done 0x08: 0x000fffc0 (FADDR) 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) BBAR offset is unknown on ICH8! SPI Read Configuration: prefetching enabled, caching enabled, OK. The following protocols are supported: FWH, SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Chip status register is 00 Found Spansion flash chip "S25FL008A" (1024 kB, SPI) at physical address 0xfff00000. Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 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 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 0xff, id2 0xff Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 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 0x01, id2 0x213 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x53, id2 0x00, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xe0, id2 0x10, 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 0x53, id2 0x00, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xe0, id2 0x10, 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 0x53, id2 0x00, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0x5d, id2 0x42, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xe0, id2 0x10, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xe0, id2 0x10, 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 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 0xe0, id2 0x10, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xe0, id2 0x10, 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 0x53, id2 0x00, 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 0xe0, id2 0x10, 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 0xe0, id2 0x10, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xe0, id2 0x10, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xe0, id2 0x10, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x53, id2 0x00, 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 0xe0, id2 0x10, id1 is normal flash content, id2 is normal flash content Found Spansion flash chip "S25FL008A" (1024 kB, SPI). === This flash part has status UNTESTED for operations: 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: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 Erase/write done. Verifying flash... VERIFIED. Restoring MMIO space at 0x7faf937570bc Restoring MMIO space at 0x7faf937570b8 Restoring MMIO space at 0x7faf937570b6 Restoring MMIO space at 0x7faf937570b4 Restoring PCI config space for 00:1f:0 reg 0xdc ----- Original Message ----- From: "Stefan Tauner" To: "Pawe? Drewniak" Cc: flashrom at flashrom.org Sent: Friday, 27 April, 2012 2:38:28 PM Subject: Re: [flashrom] Flashrom report On Tue, 24 Apr 2012 22:29:49 +0100 Pawe? Drewniak wrote: > Hi, as requested by the program, a report for the read below: > [?] Hello Pawe?, thanks for your report! I have added the board to our list of (un)supported boards (with an appropriate note) and will commit that later together with other small changes. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Tue May 1 18:42:21 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 1 May 2012 18:42:21 +0200 Subject: [flashrom] Inspiron 1420 Flashrom report In-Reply-To: <693292150.602.1335886716155.JavaMail.woody@woody-laptop> References: <201204271338.q3RDcSh3015892@mail2.student.tuwien.ac.at> <693292150.602.1335886716155.JavaMail.woody@woody-laptop> Message-ID: <201205011642.q41GgL5U012617@mail2.student.tuwien.ac.at> On Tue, 1 May 2012 16:38:39 +0100 (BST) Pawe? Drewniak wrote: > Reading old flash chip contents... 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 > Erase/write done. > Verifying flash... VERIFIED. hello again, the :S following the address ranges above indicate that the image file was equivalent to the content of the flash chip. this is of course expected if one tries to redo a previous write without running -E in between. is that the reason in this case and are you sure that flashrom has really modified the content in a previous run? -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From czajernia at gmail.com Tue May 1 22:05:40 2012 From: czajernia at gmail.com (=?utf-8?Q?Pawe=C5=82?= Drewniak) Date: Tue, 1 May 2012 21:05:40 +0100 (BST) Subject: [flashrom] Inspiron 1420 Flashrom report In-Reply-To: <201205011642.q41GgL5U012617@mail2.student.tuwien.ac.at> Message-ID: <1739546912.623.1335902739906.JavaMail.woody@woody-laptop> Hi Stefan, I suspected that this might be the case and actually ran -E in between the second time. Apologies, I should have stated that an included the log - I had no idea about :S. Full log below. Cheers, Pawe? wielmoza-laptop flashrom-0.9.5.2 # ./flashrom -p internal:laptop=force_I_want_a_brick -V -E flashrom v0.9.5.2-r1515 on Linux 3.2.1-gentoo-r2-woody (x86_64), built with libpci 3.1.7, 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 2 usecs, 1853M loops per second, 10 myus = 11 us, 100 myus = 94 us, 1000 myus = 1131 us, 10000 myus = 9815 us, 8 myus = 8 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Dell Inc." DMI string system-product-name: "Inspiron 1420 " DMI string system-version: "Not Specified" DMI string baseboard-manufacturer: "Dell Inc." DMI string baseboard-product-name: "0JX269" DMI string baseboard-version: " " DMI string chassis-type: "Portable" Laptop detected via DMI. ======================================================================== WARNING! You seem to be running flashrom on an unsupported laptop. Laptops, notebooks and netbooks are difficult to support and we recommend to use the vendor flashing utility. The embedded controller (EC) in these machines often interacts badly with flashing. See http://www.flashrom.org/Laptops for details. If flash is shared with the EC, erase is guaranteed to brick your laptop and write may brick your laptop. Read and probe may irritate your EC and cause fan failure, backlight failure and sudden poweroff. You have been warned. ======================================================================== Proceeding anyway because user forced us to. Found chipset "Intel ICH8M" with PCI ID 8086:2815. Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x0 0xffe00000/0xffa00000 FWH IDSEL: 0x0 0xffd80000/0xff980000 FWH IDSEL: 0x0 0xffd00000/0xff900000 FWH IDSEL: 0x0 0xffc80000/0xff880000 FWH IDSEL: 0x0 0xffc00000/0xff800000 FWH IDSEL: 0x0 0xff700000/0xff300000 FWH IDSEL: 0x0 0xff600000/0xff200000 FWH IDSEL: 0x0 0xff500000/0xff100000 FWH IDSEL: 0x0 0xff400000/0xff000000 FWH IDSEL: 0x0 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 = 0xfed18000 GCS = 0x460: BIOS Interface Lock-Down: disabled, Boot BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfed18000 + 0x3020 0x04: 0x0000 (HSFS) HSFS: FDONE=0, FCERR=0, AEL=0, BERASE=0, SCIP=0, FDOPSS=0, FDV=0, FLOCKDN=0 Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done 0x08: 0x000fffc0 (FADDR) 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) BBAR offset is unknown on ICH8! SPI Read Configuration: prefetching enabled, caching enabled, OK. The following protocols are supported: FWH, SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Chip status register is 00 Found Spansion flash chip "S25FL008A" (1024 kB, SPI) at physical address 0xfff00000. Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 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 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 0xff, id2 0xff Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 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 0x01, id2 0x213 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x53, id2 0x00, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xe0, id2 0x10, 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 0x53, id2 0x00, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xe0, id2 0x10, 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 0x53, id2 0x00, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0x5d, id2 0x42, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xe0, id2 0x10, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xe0, id2 0x10, 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 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 0xe0, id2 0x10, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xe0, id2 0x10, 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 0x53, id2 0x00, 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 0xe0, id2 0x10, 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 0xe0, id2 0x10, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xe0, id2 0x10, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xe0, id2 0x10, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x53, id2 0x00, 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 0xe0, id2 0x10, id1 is normal flash content, id2 is normal flash content Found Spansion flash chip "S25FL008A" (1024 kB, SPI). === This flash part has status UNTESTED for operations: 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! Erasing and writing flash chip... Trying erase function 0... 0x000000-0x00ffff:E program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 on-the-fly OPCODE (0xD8) re-programmed, op-pos=2 , 0x010000-0x01ffff:E, 0x020000-0x02ffff:E, 0x030000-0x03ffff:E, 0x040000-0x04ffff:E, 0x050000-0x05ffff:E, 0x060000-0x06ffff:E, 0x070000-0x07ffff:E, 0x080000-0x08ffff:E, 0x090000-0x09ffff:E, 0x0a0000-0x0affff:E, 0x0b0000-0x0bffff:E, 0x0c0000-0x0cffff:E, 0x0d0000-0x0dffff:E, 0x0e0000-0x0effff:E, 0x0f0000-0x0fffff:E Erase/write done. Restoring MMIO space at 0x7f61bef100bc Restoring MMIO space at 0x7f61bef100b8 Restoring MMIO space at 0x7f61bef100b6 Restoring MMIO space at 0x7f61bef100b4 Restoring PCI config space for 00:1f:0 reg 0xdc ----- wielmoza-laptop flashrom-0.9.5.2 # ./flashrom -p internal:laptop=force_I_want_a_brick -V -r /tmp/zero.bin flashrom v0.9.5.2-r1515 on Linux 3.2.1-gentoo-r2-woody (x86_64), built with libpci 3.1.7, 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 2 usecs, 1928M loops per second, 10 myus = 11 us, 100 myus = 98 us, 1000 myus = 982 us, 10000 myus = 10171 us, 8 myus = 9 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Dell Inc." DMI string system-product-name: "Inspiron 1420 " DMI string system-version: "Not Specified" DMI string baseboard-manufacturer: "Dell Inc." DMI string baseboard-product-name: "0JX269" DMI string baseboard-version: " " DMI string chassis-type: "Portable" Laptop detected via DMI. ======================================================================== WARNING! You seem to be running flashrom on an unsupported laptop. Laptops, notebooks and netbooks are difficult to support and we recommend to use the vendor flashing utility. The embedded controller (EC) in these machines often interacts badly with flashing. See http://www.flashrom.org/Laptops for details. If flash is shared with the EC, erase is guaranteed to brick your laptop and write may brick your laptop. Read and probe may irritate your EC and cause fan failure, backlight failure and sudden poweroff. You have been warned. ======================================================================== Proceeding anyway because user forced us to. Found chipset "Intel ICH8M" with PCI ID 8086:2815. Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x0 0xffe00000/0xffa00000 FWH IDSEL: 0x0 0xffd80000/0xff980000 FWH IDSEL: 0x0 0xffd00000/0xff900000 FWH IDSEL: 0x0 0xffc80000/0xff880000 FWH IDSEL: 0x0 0xffc00000/0xff800000 FWH IDSEL: 0x0 0xff700000/0xff300000 FWH IDSEL: 0x0 0xff600000/0xff200000 FWH IDSEL: 0x0 0xff500000/0xff100000 FWH IDSEL: 0x0 0xff400000/0xff000000 FWH IDSEL: 0x0 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 = 0xfed18000 GCS = 0x460: BIOS Interface Lock-Down: disabled, Boot BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfed18000 + 0x3020 0x04: 0x0000 (HSFS) HSFS: FDONE=0, FCERR=0, AEL=0, BERASE=0, SCIP=0, FDOPSS=0, FDV=0, FLOCKDN=0 Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done 0x08: 0x000fffc0 (FADDR) 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) BBAR offset is unknown on ICH8! SPI Read Configuration: prefetching enabled, caching enabled, OK. The following protocols are supported: FWH, SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Chip status register is 00 Found Spansion flash chip "S25FL008A" (1024 kB, SPI) at physical address 0xfff00000. Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 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 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 0xff, id2 0xff Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 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 0x01, id2 0x213 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xff, id2 0xff 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 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 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 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 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 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: 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 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 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 Found Spansion flash chip "S25FL008A" (1024 kB, SPI). === This flash part has status UNTESTED for operations: 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! Reading flash... done. Restoring MMIO space at 0x7fe60d9be0bc Restoring MMIO space at 0x7fe60d9be0b8 Restoring MMIO space at 0x7fe60d9be0b6 Restoring MMIO space at 0x7fe60d9be0b4 Restoring PCI config space for 00:1f:0 reg 0xdc ---- wielmoza-laptop flashrom-0.9.5.2 # hexdump /tmp/zero.bin 0000000 ffff ffff ffff ffff ffff ffff ffff ffff * 0100000 --- wielmoza-laptop flashrom-0.9.5.2 # ./flashrom -p internal:laptop=force_I_want_a_brick -V -w /tmp/1420a10.bin flashrom v0.9.5.2-r1515 on Linux 3.2.1-gentoo-r2-woody (x86_64), built with libpci 3.1.7, 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, 1884M loops per second, 10 myus = 10 us, 100 myus = 95 us, 1000 myus = 959 us, 10000 myus = 9845 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Dell Inc." DMI string system-product-name: "Inspiron 1420 " DMI string system-version: "Not Specified" DMI string baseboard-manufacturer: "Dell Inc." DMI string baseboard-product-name: "0JX269" DMI string baseboard-version: " " DMI string chassis-type: "Portable" Laptop detected via DMI. ======================================================================== WARNING! You seem to be running flashrom on an unsupported laptop. Laptops, notebooks and netbooks are difficult to support and we recommend to use the vendor flashing utility. The embedded controller (EC) in these machines often interacts badly with flashing. See http://www.flashrom.org/Laptops for details. If flash is shared with the EC, erase is guaranteed to brick your laptop and write may brick your laptop. Read and probe may irritate your EC and cause fan failure, backlight failure and sudden poweroff. You have been warned. ======================================================================== Proceeding anyway because user forced us to. Found chipset "Intel ICH8M" with PCI ID 8086:2815. Enabling flash write... 0xfff80000/0xffb80000 FWH IDSEL: 0x0 0xfff00000/0xffb00000 FWH IDSEL: 0x0 0xffe80000/0xffa80000 FWH IDSEL: 0x0 0xffe00000/0xffa00000 FWH IDSEL: 0x0 0xffd80000/0xff980000 FWH IDSEL: 0x0 0xffd00000/0xff900000 FWH IDSEL: 0x0 0xffc80000/0xff880000 FWH IDSEL: 0x0 0xffc00000/0xff800000 FWH IDSEL: 0x0 0xff700000/0xff300000 FWH IDSEL: 0x0 0xff600000/0xff200000 FWH IDSEL: 0x0 0xff500000/0xff100000 FWH IDSEL: 0x0 0xff400000/0xff000000 FWH IDSEL: 0x0 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 = 0xfed18000 GCS = 0x460: BIOS Interface Lock-Down: disabled, Boot BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfed18000 + 0x3020 0x04: 0x0000 (HSFS) HSFS: FDONE=0, FCERR=0, AEL=0, BERASE=0, SCIP=0, FDOPSS=0, FDV=0, FLOCKDN=0 Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done 0x08: 0x000fffc0 (FADDR) 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) BBAR offset is unknown on ICH8! SPI Read Configuration: prefetching enabled, caching enabled, OK. The following protocols are supported: FWH, SPI. Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Chip status register is 00 Found Spansion flash chip "S25FL008A" (1024 kB, SPI) at physical address 0xfff00000. Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 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 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 0xff, id2 0xff Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P05, 64 kB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P10, 128 kB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 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 0x01, id2 0x213 Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0x01, id2 0x213 Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xff, id2 0xff 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 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 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 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 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 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: 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 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 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 Found Spansion flash chip "S25FL008A" (1024 kB, SPI). === This flash part has status UNTESTED for operations: 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:S, 0x010000-0x01ffff:W, 0x020000-0x02ffff:W, 0x030000-0x03ffff:W, 0x040000-0x04ffff:W, 0x050000-0x05ffff:W, 0x060000-0x06ffff:W, 0x070000-0x07ffff:W, 0x080000-0x08ffff:W, 0x090000-0x09ffff:W, 0x0a0000-0x0affff:W, 0x0b0000-0x0bffff:W, 0x0c0000-0x0cffff:W, 0x0d0000-0x0dffff:W, 0x0e0000-0x0effff:W, 0x0f0000-0x0fffff:W Erase/write done. Verifying flash... VERIFIED. Restoring MMIO space at 0x7fad9a3900bc Restoring MMIO space at 0x7fad9a3900b8 Restoring MMIO space at 0x7fad9a3900b6 Restoring MMIO space at 0x7fad9a3900b4 Restoring PCI config space for 00:1f:0 reg 0xdc ----- Original Message ----- From: "Stefan Tauner" To: "Pawe? Drewniak" Cc: flashrom at flashrom.org Sent: Tuesday, 1 May, 2012 5:42:21 PM Subject: Re: [flashrom] Inspiron 1420 Flashrom report On Tue, 1 May 2012 16:38:39 +0100 (BST) Pawe? Drewniak wrote: > Reading old flash chip contents... 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 > Erase/write done. > Verifying flash... VERIFIED. hello again, the :S following the address ranges above indicate that the image file was equivalent to the content of the flash chip. this is of course expected if one tries to redo a previous write without running -E in between. is that the reason in this case and are you sure that flashrom has really modified the content in a previous run? -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From czajernia at gmail.com Tue May 1 22:51:18 2012 From: czajernia at gmail.com (=?utf-8?Q?Pawe=C5=82?= Drewniak) Date: Tue, 1 May 2012 21:51:18 +0100 (BST) Subject: [flashrom] Dell Vostro 3700 - flashrom report Message-ID: <1582170655.626.1335905473815.JavaMail.woody@woody-laptop> Hi, similar error to Thinkpad X1 - fails on reading. Cheers, Pawe? --- jadwiga-laptop flashrom-0.9.5.2 # ./flashrom -V -p internal:laptop=force_I_want_a_brick -r /tmp/bios.bin flashrom v0.9.5.2-r1515 on Linux 3.0.6-gentoo (x86_64), built with libpci 3.1.7, 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, 1192M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 998 us, 10000 myus = 10098 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Dell Inc." DMI string system-product-name: "Vostro 3700" DMI string system-version: "Not Specified" DMI string baseboard-manufacturer: "Dell Inc." DMI string baseboard-product-name: "07VWR8" DMI string baseboard-version: "A00 " DMI string chassis-type: "Portable" Laptop detected via DMI. ======================================================================== WARNING! You seem to be running flashrom on an unsupported laptop. Laptops, notebooks and netbooks are difficult to support and we recommend to use the vendor flashing utility. The embedded controller (EC) in these machines often interacts badly with flashing. See http://www.flashrom.org/Laptops for details. If flash is shared with the EC, erase is guaranteed to brick your laptop and write may brick your laptop. Read and probe may irritate your EC and cause fan failure, backlight failure and sudden poweroff. You have been warned. ======================================================================== Proceeding anyway because user forced us to. Found chipset "Intel HM57" with PCI ID 8086:3b0b. 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 0x8 Root Complex Register Block address = 0xfed1c000 GCS = 0xc60: 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: 0x00001000 (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: 0x03ff0180 FREG1: BIOS region (0x00180000-0x003fffff) is read-write. 0x5C: 0x017f0001 FREG2: WARNING: Management Engine region (0x00001000-0x0017ffff) 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: 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: 0x00000000 (LVSCC) LVSCC: BES=0x0, WG=0, WSR=0, WEWS=0, EO=0x0, 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 enabled, caching enabled, OK. The following protocols are supported: FWH, SPI. 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(A), 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 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 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 Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2016 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 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 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 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 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 Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0xb4, id2 0x57, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0xea, id2 0xd0, 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 0xb4, id2 0x57, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xea, id2 0xd0, 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 0xb4, id2 0x57, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xc4, id2 0x10, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xea, id2 0xd0, 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 0xe6, id2 0xb8, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xea, id2 0xd0, 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 0xb4, id2 0x57, 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 0xe6, id2 0xb8, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xea, id2 0xd0, 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 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0xb4, id2 0x57, 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 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Found Macronix flash chip "MX25L3205" (4096 kB, SPI). Reading flash... Transaction error! 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 0x001000 (payload length was 64). Read operation failed! FAILED. Restoring MMIO space at 0x7f45ec7778a0 Restoring MMIO space at 0x7f45ec77789c Restoring MMIO space at 0x7f45ec777898 Restoring MMIO space at 0x7f45ec777896 Restoring MMIO space at 0x7f45ec777894 Restoring PCI config space for 00:1f:0 reg 0xdc From darkstarlinux at gmail.com Wed May 2 10:26:22 2012 From: darkstarlinux at gmail.com (Virgil-Adrian Teaca) Date: Wed, 2 May 2012 10:26:22 +0200 Subject: [flashrom] [PATCH 1/1] Add manpage entry for pony_spi Message-ID: Hello, First of all, I want to note that the properly name of the native Ponyprog2000 hardware programmer is "SI-Prog" and not "SI_Prog". Also, talking about: "Please note that while USB-to-serial adapters work under certain circumstances, this slows down operation considerably." Well, I for one, I understand by "considerably" that the operation will do hours, instead of minutes. The sadly truth is that operation will be epic slow. If I remember right, that EEEPC's W25X40, which I flashed, is not a huge flash, just 4M. Still, it was flashed in cca 27 hours. Then, yes, PONY_SPI works fine over an PL2303 USB/serial adapter, under Linux, but its job is epically slow... So, I believe that is right to warn the user that he have to wait a very very long time. All the best, Virgil. -------------- next part -------------- An HTML attachment was scrubbed... URL: From tacredips at gmail.com Wed May 2 17:11:40 2012 From: tacredips at gmail.com (Antoine Chassagnard) Date: Wed, 2 May 2012 17:11:40 +0200 Subject: [flashrom] GA-M720-US3: flashrom -V Message-ID: flashrom v0.9.5.2-r1515 on Linux 3.2.12-1-ARCH (x86_64), built with libpci 3.1.9, 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, 767M loops per second, 10 myus = 11 us, 100 myus = 103 us, 1000 myus = 1000 us, 10000 myus = 10010 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Gigabyte Technology Co., Ltd." DMI string system-product-name: "M720-US3" DMI string system-version: " " DMI string baseboard-manufacturer: "Gigabyte Technology Co., Ltd." DMI string baseboard-product-name: "M720-US3" DMI string baseboard-version: "x.x" DMI string chassis-type: "Desktop" Found ITE Super I/O, ID 0x8720 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: 0x00, bit 6 is 0, bit 5 is 0 Flash bus type is LPC Found SMBus device 10de:0752 at 00:01:1 MCP SPI BAR is at 0x00000000 MCP SPI is not used. 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. 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 87 Serial flash port 0x0820 The following protocols are supported: LPC, SPI. 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 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: 4 byte RDID not supported on this SPI controller 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 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 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 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 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 0xc3, 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 0x24, id2 0xc3, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0x24, id2 0xc3, 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 W39V080A, 1024 kB: probe_jedec_common: id1 0x24, id2 0xc3, id1 parity violation, id1 is normal flash content, id2 is normal flash content 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 Found Macronix flash chip "MX25L8005" (1024 kB, SPI). No operations were specified. Restoring PCI config space for 00:01:0 reg 0x6d Restoring PCI config space for 00:01:0 reg 0x90 Restoring PCI config space for 00:01:0 reg 0x8c Restoring PCI config space for 00:01:0 reg 0x88 From stefan.tauner at student.tuwien.ac.at Wed May 2 20:24:17 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Wed, 2 May 2012 20:24:17 +0200 Subject: [flashrom] M5A78L-M LX Message-ID: <201205021824.q42IOIqW003311@mail2.student.tuwien.ac.at> hi we had a report on IRC today regarding the asus M5A78L-M LX. writing works, but the mac address is lost and the LOM defunct. flashrom -V http://paste.flashrom.org/view.php?id=1184 binary as read by flashrom: http://paste.flashrom.org/uploads/1188.bin the mac address in that image is C8:60:00:57:42:FF and is replaced with ed:0b:00:00:e0:00 on writing the vendor image. the mac address can be found at multiple offsets and formats in the backup image: binary: 0x13bd6a ascii: 0x13bd80 binary: 0x1dc07a ascii: 0x1dc015 user did just restore the backup image, so we have no idea if leaving those offsets alone would be successful. i have added the board to our list. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From svn at flashrom.org Wed May 2 21:48:22 2012 From: svn at flashrom.org (repository service) Date: Wed, 02 May 2012 21:48:22 +0200 Subject: [flashrom] [commit] r1526 - trunk Message-ID: Author: stefanct Date: Wed May 2 21:48:21 2012 New Revision: 1526 URL: http://flashrom.org/trac/flashrom/changeset/1526 Log: Add board enable for ASUS P5BV-R. These are used in ASUS RS120-E5/PA2 servers. GPIO pin discovered, patch prepared and Tested-by: Geoffrey McRae Signed-off-by: Stefan Tauner Acked-by: Stefan Tauner Modified: trunk/board_enable.c trunk/print.c Modified: trunk/board_enable.c ============================================================================== --- trunk/board_enable.c Tue May 1 01:11:06 2012 (r1525) +++ trunk/board_enable.c Wed May 2 21:48:21 2012 (r1526) @@ -1520,6 +1520,15 @@ /* * Suited for: + * - ASUS P5BV-R: LGA775 + 3200 + ICH7 + */ +static int intel_ich_gpio20_raise(void) +{ + return intel_ich_gpio_set(20, 1); +} + +/* + * Suited for: * - ASUS P4B266LM (Sony Vaio PCV-RX650): socket478 + 845D + ICH2 * - ASUS P4C800-E Deluxe: socket478 + 875P + ICH5 * - ASUS P4P800: Intel socket478 + 865PE + ICH5R @@ -2160,6 +2169,7 @@ {0x8086, 0x2570, 0x1043, 0x80A5, 0x105A, 0x24D3, 0x1043, 0x80A6, NULL, NULL, NULL, P3, "ASUS", "P4SD-LA", 0, NT, intel_ich_gpio32_raise}, {0x1039, 0x0661, 0x1043, 0x8113, 0x1039, 0x5513, 0x1043, 0x8087, NULL, NULL, NULL, P3, "ASUS", "P4S800-MX", 512, OK, w836xx_memw_enable_2e}, {0x10B9, 0x1541, 0, 0, 0x10B9, 0x1533, 0, 0, "^P5A$", "asus", "p5a", P3, "ASUS", "P5A", 0, OK, board_asus_p5a}, + {0x8086, 0x27b8, 0x1043, 0x819e, 0x8086, 0x29f0, 0x1043, 0x82a5, "^P5BV-R$", NULL, NULL, P3, "ASUS", "P5BV-R", 0, OK, intel_ich_gpio20_raise}, {0x8086, 0x266a, 0x1043, 0x80a6, 0x8086, 0x2668, 0x1043, 0x814e, "^P5GD1 PRO$", NULL, NULL, P3, "ASUS", "P5GD1 Pro", 0, OK, intel_ich_gpio21_raise}, {0x8086, 0x266a, 0x1043, 0x80a6, 0x8086, 0x2668, 0x1043, 0x814e, "^P5GD1-VM$", NULL, NULL, P3, "ASUS", "P5GD1-VM/S", 0, OK, intel_ich_gpio21_raise}, {0x8086, 0x266a, 0x1043, 0x80a6, 0x8086, 0x2668, 0x1043, 0x814e, NULL, NULL, NULL, P3, "ASUS", "P5GD1(-VM)", 0, NT, intel_ich_gpio21_raise}, Modified: trunk/print.c ============================================================================== --- trunk/print.c Tue May 1 01:11:06 2012 (r1525) +++ trunk/print.c Wed May 2 21:48:21 2012 (r1526) @@ -676,6 +676,7 @@ 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", "P5BV-R", 1, "http://www.asus.com/Server_Workstation/Servers/RS120E5PA2/", "Used in RS120-E5/PA2 servers."), 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."), From stefan.tauner at student.tuwien.ac.at Wed May 2 21:49:37 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Wed, 2 May 2012 21:49:37 +0200 Subject: [flashrom] [PATCH] board enable for ASUS P5BV-R In-Reply-To: <4F992561.70906@spacevs.com> References: <4F992561.70906@spacevs.com> Message-ID: <201205021949.q42JnbDj001251@mail2.student.tuwien.ac.at> On Thu, 26 Apr 2012 20:37:21 +1000 Geoffrey McRae wrote: > Please see attached patch to enable write on ASUS P5BV-R boards used in > ASUS RS120-E5/PA2 servers. thanks a lot for your findings. i have committed the resulting patch in r1526. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From tzihad at gmail.com Wed May 2 13:32:23 2012 From: tzihad at gmail.com (=?ISO-8859-1?Q?V=E4in=F6_Kareinen?=) Date: Wed, 2 May 2012 14:32:23 +0300 Subject: [flashrom] Found chipset "NVIDIA MCP65" with PCI ID 10de:0441. Message-ID: Hi, I send This verbose output from flashing my bios as requested in flashrom's output. # flashrom -V -v biosv2.2 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 1 usecs, 699M loops per second, 10 myus = 11 us, 100 myus = 101 us, 1000 myus = 999 us, 10000 myus = 10017 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "MSI" DMI string system-product-name: "MS-7369" DMI string system-version: "1.1" DMI string baseboard-manufacturer: "MSI" DMI string baseboard-product-name: "MS-7369" DMI string baseboard-version: "1.1" DMI string chassis-type: "Desktop" Found chipset "NVIDIA MCP65" with PCI ID 10de:0441. 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:0446 at 00:01:1 MCP SPI BAR is at 0xfec80000 Mapping NVIDIA MCP6x SPI at 0xfec80000, unaligned size 0x544. SPI control is 0x0115, req=1, gnt=1 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. 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 Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... done. Verifying flash... VERIFIED. flashrom -V -w A7369NMS.290 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 1 usecs, 699M loops per second, 10 myus = 11 us, 100 myus = 100 us, 1000 myus = 1006 us, 10000 myus = 9998 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "MSI" DMI string system-product-name: "MS-7369" DMI string system-version: "1.1" DMI string baseboard-manufacturer: "MSI" DMI string baseboard-product-name: "MS-7369" DMI string baseboard-version: "1.1" DMI string chassis-type: "Desktop" Found chipset "NVIDIA MCP65" with PCI ID 10de:0441. 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:0446 at 00:01:1 MCP SPI BAR is at 0xfec80000 Mapping NVIDIA MCP6x SPI at 0xfec80000, unaligned size 0x544. 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. This chipset supports the following protocols: 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, 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 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:S, 0x001000-0x001fff:S, 0x002000-0x002fff:S, 0x003000-0x003fff:S, 0x004000-0x004fff:S, 0x005000-0x005fff:S, 0x006000-0x006fff:S, 0x007000-0x007fff:S, 0x008000-0x008fff:S, 0x009000-0x009fff:S, 0x00a000-0x00afff:S, 0x00b000-0x00bfff:S, 0x00c000-0x00cfff:S, 0x00d000-0x00dfff:S, 0x00e000-0x00efff:S, 0x00f000-0x00ffff:S, 0x010000-0x010fff:S, 0x011000-0x011fff:S, 0x012000-0x012fff:S, 0x013000-0x013fff:S, 0x014000-0x014fff:S, 0x015000-0x015fff:S, 0x016000-0x016fff:S, 0x017000-0x017fff:S, 0x018000-0x018fff:S, 0x019000-0x019fff:S, 0x01a000-0x01afff:S, 0x01b000-0x01bfff:S, 0x01c000-0x01cfff:S, 0x01d000-0x01dfff:S, 0x01e000-0x01efff:S, 0x01f000-0x01ffff:S, 0x020000-0x020fff:S, 0x021000-0x021fff:S, 0x022000-0x022fff:S, 0x023000-0x023fff:S, 0x024000-0x024fff:S, 0x025000-0x025fff:S, 0x026000-0x026fff:S, 0x027000-0x027fff:S, 0x028000-0x028fff:S, 0x029000-0x029fff:S, 0x02a000-0x02afff:S, 0x02b000-0x02bfff:S, 0x02c000-0x02cfff:S, 0x02d000-0x02dfff:S, 0x02e000-0x02efff:S, 0x02f000-0x02ffff:S, 0x030000-0x030fff:S, 0x031000-0x031fff:S, 0x032000-0x032fff:S, 0x033000-0x033fff:S, 0x034000-0x034fff:S, 0x035000-0x035fff:S, 0x036000-0x036fff:S, 0x037000-0x037fff:S, 0x038000-0x038fff:S, 0x039000-0x039fff:S, 0x03a000-0x03afff:S, 0x03b000-0x03bfff:S, 0x03c000-0x03cfff:S, 0x03d000-0x03dfff:S, 0x03e000-0x03efff:S, 0x03f000-0x03ffff:S, 0x040000-0x040fff:S, 0x041000-0x041fff:S, 0x042000-0x042fff:S, 0x043000-0x043fff:S, 0x044000-0x044fff:S, 0x045000-0x045fff:S, 0x046000-0x046fff:S, 0x047000-0x047fff:S, 0x048000-0x048fff:S, 0x049000-0x049fff:S, 0x04a000-0x04afff:S, 0x04b000-0x04bfff:S, 0x04c000-0x04cfff:S, 0x04d000-0x04dfff:S, 0x04e000-0x04efff:S, 0x04f000-0x04ffff:S, 0x050000-0x050fff:S, 0x051000-0x051fff:S, 0x052000-0x052fff:S, 0x053000-0x053fff:S, 0x054000-0x054fff:S, 0x055000-0x055fff:S, 0x056000-0x056fff:S, 0x057000-0x057fff:S, 0x058000-0x058fff:S, 0x059000-0x059fff:S, 0x05a000-0x05afff:S, 0x05b000-0x05bfff:S, 0x05c000-0x05cfff:S, 0x05d000-0x05dfff:S, 0x05e000-0x05efff:S, 0x05f000-0x05ffff:S, 0x060000-0x060fff:S, 0x061000-0x061fff:S, 0x062000-0x062fff:S, 0x063000-0x063fff:S, 0x064000-0x064fff:S, 0x065000-0x065fff:S, 0x066000-0x066fff:S, 0x067000-0x067fff:S, 0x068000-0x068fff:S, 0x069000-0x069fff:S, 0x06a000-0x06afff:S, 0x06b000-0x06bfff:S, 0x06c000-0x06cfff:S, 0x06d000-0x06dfff:S, 0x06e000-0x06efff:S, 0x06f000-0x06ffff:S, 0x070000-0x070fff:S, 0x071000-0x071fff:S, 0x072000-0x072fff:S, 0x073000-0x073fff:S, 0x074000-0x074fff:S, 0x075000-0x075fff:S, 0x076000-0x076fff:S, 0x077000-0x077fff:S, 0x078000-0x078fff:S, 0x079000-0x079fff:S, 0x07a000-0x07afff:S, 0x07b000-0x07bfff:S, 0x07c000-0x07cfff:S, 0x07d000-0x07dfff:S, 0x07e000-0x07efff:S, 0x07f000-0x07ffff:S, 0x080000-0x080fff:S, 0x081000-0x081fff:S, 0x082000-0x082fff:S, 0x083000-0x083fff:S, 0x084000-0x084fff:S, 0x085000-0x085fff:S, 0x086000-0x086fff:S, 0x087000-0x087fff:S, 0x088000-0x088fff:S, 0x089000-0x089fff:S, 0x08a000-0x08afff:S, 0x08b000-0x08bfff:S, 0x08c000-0x08cfff:S, 0x08d000-0x08dfff:S, 0x08e000-0x08efff:S, 0x08f000-0x08ffff:S, 0x090000-0x090fff:S, 0x091000-0x091fff:E, 0x092000-0x092fff:EW, 0x093000-0x093fff:EW, 0x094000-0x094fff:EW, 0x095000-0x095fff:EW, 0x096000-0x096fff:EW, 0x097000-0x097fff:EW, 0x098000-0x098fff:EW, 0x099000-0x099fff:EW, 0x09a000-0x09afff:EW, 0x09b000-0x09bfff:EW, 0x09c000-0x09cfff:EW, 0x09d000-0x09dfff:EW, 0x09e000-0x09efff:EW, 0x09f000-0x09ffff:EW, 0x0a0000-0x0a0fff:EW, 0x0a1000-0x0a1fff:EW, 0x0a2000-0x0a2fff:EW, 0x0a3000-0x0a3fff:EW, 0x0a4000-0x0a4fff:EW, 0x0a5000-0x0a5fff:EW, 0x0a6000-0x0a6fff:EW, 0x0a7000-0x0a7fff:EW, 0x0a8000-0x0a8fff:EW, 0x0a9000-0x0a9fff:EW, 0x0aa000-0x0aafff:EW, 0x0ab000-0x0abfff:EW, 0x0ac000-0x0acfff:EW, 0x0ad000-0x0adfff:EW, 0x0ae000-0x0aefff:EW, 0x0af000-0x0affff:EW, 0x0b0000-0x0b0fff:EW, 0x0b1000-0x0b1fff:EW, 0x0b2000-0x0b2fff:EW, 0x0b3000-0x0b3fff:EW, 0x0b4000-0x0b4fff:EW, 0x0b5000-0x0b5fff:EW, 0x0b6000-0x0b6fff:EW, 0x0b7000-0x0b7fff:EW, 0x0b8000-0x0b8fff:EW, 0x0b9000-0x0b9fff:EW, 0x0ba000-0x0bafff:EW, 0x0bb000-0x0bbfff:EW, 0x0bc000-0x0bcfff:EW, 0x0bd000-0x0bdfff:EW, 0x0be000-0x0befff:EW, 0x0bf000-0x0bffff:EW, 0x0c0000-0x0c0fff:EW, 0x0c1000-0x0c1fff:EW, 0x0c2000-0x0c2fff:EW, 0x0c3000-0x0c3fff:EW, 0x0c4000-0x0c4fff:EW, 0x0c5000-0x0c5fff:EW, 0x0c6000-0x0c6fff:EW, 0x0c7000-0x0c7fff:EW, 0x0c8000-0x0c8fff:EW, 0x0c9000-0x0c9fff:EW, 0x0ca000-0x0cafff:EW, 0x0cb000-0x0cbfff:EW, 0x0cc000-0x0ccfff:EW, 0x0cd000-0x0cdfff:EW, 0x0ce000-0x0cefff:EW, 0x0cf000-0x0cffff:EW, 0x0d0000-0x0d0fff:EW, 0x0d1000-0x0d1fff:EW, 0x0d2000-0x0d2fff:S, 0x0d3000-0x0d3fff:S, 0x0d4000-0x0d4fff:S, 0x0d5000-0x0d5fff:S, 0x0d6000-0x0d6fff:S, 0x0d7000-0x0d7fff:S, 0x0d8000-0x0d8fff:S, 0x0d9000-0x0d9fff:S, 0x0da000-0x0dafff:S, 0x0db000-0x0dbfff:S, 0x0dc000-0x0dcfff:S, 0x0dd000-0x0ddfff:S, 0x0de000-0x0defff:S, 0x0df000-0x0dffff:EW, 0x0e0000-0x0e0fff:S, 0x0e1000-0x0e1fff:S, 0x0e2000-0x0e2fff:S, 0x0e3000-0x0e3fff:S, 0x0e4000-0x0e4fff:S, 0x0e5000-0x0e5fff:S, 0x0e6000-0x0e6fff:S, 0x0e7000-0x0e7fff:S, 0x0e8000-0x0e8fff:S, 0x0e9000-0x0e9fff:S, 0x0ea000-0x0eafff:S, 0x0eb000-0x0ebfff:S, 0x0ec000-0x0ecfff:E, 0x0ed000-0x0edfff:E, 0x0ee000-0x0eefff:E, 0x0ef000-0x0effff:S, 0x0f0000-0x0f0fff:EW, 0x0f1000-0x0f1fff:EW, 0x0f2000-0x0f2fff:EW, 0x0f3000-0x0f3fff:EW, 0x0f4000-0x0f4fff:EW, 0x0f5000-0x0f5fff:EW, 0x0f6000-0x0f6fff:EW, 0x0f7000-0x0f7fff:EW, 0x0f8000-0x0f8fff:EW, 0x0f9000-0x0f9fff:EW, 0x0fa000-0x0fafff:EW, 0x0fb000-0x0fbfff:EW, 0x0fc000-0x0fcfff:EW, 0x0fd000-0x0fdfff:EW, 0x0fe000-0x0fefff:S, 0x0ff000-0x0fffff:EW Erase/write done. Verifying flash... VERIFIED. flashrom -V -v A7369NMS.290 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 1 usecs, 699M loops per second, 10 myus = 11 us, 100 myus = 101 us, 1000 myus = 1000 us, 10000 myus = 10235 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "MSI" DMI string system-product-name: "MS-7369" DMI string system-version: "1.1" DMI string baseboard-manufacturer: "MSI" DMI string baseboard-product-name: "MS-7369" DMI string baseboard-version: "1.1" DMI string chassis-type: "Desktop" Found chipset "NVIDIA MCP65" with PCI ID 10de:0441. 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:0446 at 00:01:1 MCP SPI BAR is at 0xfec80000 Mapping NVIDIA MCP6x SPI at 0xfec80000, unaligned size 0x544. 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. This chipset supports the following protocols: 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, 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 Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... done. Verifying flash... VERIFIED. -- -V?in?- -------------- next part -------------- An HTML attachment was scrubbed... URL: From ecammit at gmail.com Wed May 2 16:32:46 2012 From: ecammit at gmail.com (Timothy Ace) Date: Wed, 2 May 2012 10:32:46 -0400 Subject: [flashrom] SiS 748 on a Foxconn 748K7AA-ERS works Message-ID: <5AB55AEA-B598-4B4F-90CB-0C7C8AA46F83@gmail.com> SiS 748 on a Foxconn 748K7AA-ERS flashes properly. -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 4879 bytes Desc: not available URL: From svn at flashrom.org Wed May 2 22:07:57 2012 From: svn at flashrom.org (repository service) Date: Wed, 02 May 2012 22:07:57 +0200 Subject: [flashrom] [commit] r1527 - trunk Message-ID: Author: stefanct Date: Wed May 2 22:07:57 2012 New Revision: 1527 URL: http://flashrom.org/trac/flashrom/changeset/1527 Log: Tag all EWSR chips correctly. All SPI chips without a WRSR feature bit set were evaluated except the Sanyo LF25FW203A for which no datasheet is available. The following list includes all SPI-capable chips that still have no WRSR feature bit set: - AT26DF041 - AT45CS1282 - AT45DB011D - AT45DB021D - AT45DB041D - AT45DB081D - AT45DB161D - AT45DB321C - AT45DB321D - AT45DB642D All of them have no write function set and can be therefore ignored for now. Apart from those the generic chips are also not tagged. The opaque flash interface should not be affected. The SFDP dummy chip is changed to explicitly set EWSR if it can't deduce it dynamically. The vendor detecting generic chips can't write anyway. Signed-off-by: Steven Zakulec Acked-by: Stefan Tauner Modified: trunk/flashchips.c trunk/sfdp.c Modified: trunk/flashchips.c ============================================================================== --- trunk/flashchips.c Wed May 2 21:48:21 2012 (r1526) +++ trunk/flashchips.c Wed May 2 22:07:57 2012 (r1527) @@ -545,6 +545,7 @@ .model_id = AMIC_A25L05PT, .total_size = 64, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid4, .probe_timing = TIMING_ZERO, @@ -578,6 +579,7 @@ .model_id = AMIC_A25L05PU, .total_size = 64, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid4, .probe_timing = TIMING_ZERO, @@ -611,6 +613,7 @@ .model_id = AMIC_A25L10PT, .total_size = 128, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid4, .probe_timing = TIMING_ZERO, @@ -645,6 +648,7 @@ .model_id = AMIC_A25L10PU, .total_size = 128, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid4, .probe_timing = TIMING_ZERO, @@ -679,6 +683,7 @@ .model_id = AMIC_A25L20PT, .total_size = 256, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid4, .probe_timing = TIMING_ZERO, @@ -713,6 +718,7 @@ .model_id = AMIC_A25L20PU, .total_size = 256, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid4, .probe_timing = TIMING_ZERO, @@ -752,6 +758,7 @@ .model_id = AMIC_A25L40PT, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PR, .probe = probe_spi_rdid4, .probe_timing = TIMING_ZERO, @@ -786,6 +793,7 @@ .model_id = AMIC_A25L40PU, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PR, .probe = probe_spi_rdid4, .probe_timing = TIMING_ZERO, @@ -820,6 +828,7 @@ .model_id = AMIC_A25L80P, .total_size = 1024, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PRE, .probe = probe_spi_rdid4, .probe_timing = TIMING_ZERO, @@ -854,6 +863,7 @@ .model_id = AMIC_A25L16PT, .total_size = 2048, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid4, .probe_timing = TIMING_ZERO, @@ -891,6 +901,7 @@ .model_id = AMIC_A25L16PU, .total_size = 2048, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PR, .probe = probe_spi_rdid4, .probe_timing = TIMING_ZERO, @@ -1701,6 +1712,7 @@ .model_id = ATMEL_AT25FS010, .total_size = 128, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -1741,6 +1753,7 @@ .model_id = ATMEL_AT25FS040, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -1778,6 +1791,7 @@ .model_id = ATMEL_AT26DF041, .total_size = 512, .page_size = 256, + /* does not support EWSR nor WREN and has no writable status register bits whatsoever */ .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -1839,6 +1853,7 @@ .model_id = ATMEL_AT26DF161, .total_size = 2048, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -1876,6 +1891,7 @@ .model_id = ATMEL_AT26DF161A, .total_size = 2048, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -1914,6 +1930,7 @@ .model_id = ATMEL_AT26DF321, .total_size = 4096, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -1932,6 +1949,7 @@ .total_size = 512, .page_size = 256, .tested = TEST_UNTESTED, + .feature_bits = FEATURE_WRSR_WREN, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, .block_erasers = @@ -2062,6 +2080,7 @@ .model_id = ATMEL_AT45CS1282, .total_size = 16896 /* No power of two sizes */, .page_size = 1056 /* No power of two sizes */, + /* does not support EWSR nor WREN and has no writable status register bits whatsoever */ .tested = TEST_BAD_READ, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2078,6 +2097,7 @@ .model_id = ATMEL_AT45DB011D, .total_size = 128 /* Size can only be determined from status register */, .page_size = 256 /* Size can only be determined from status register */, + /* does not support EWSR nor WREN and has no writable status register bits whatsoever */ .tested = TEST_BAD_READ, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2094,6 +2114,7 @@ .model_id = ATMEL_AT45DB021D, .total_size = 256 /* Size can only be determined from status register */, .page_size = 256 /* Size can only be determined from status register */, + /* does not support EWSR nor WREN and has no writable status register bits whatsoever */ .tested = TEST_BAD_READ, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2110,6 +2131,7 @@ .model_id = ATMEL_AT45DB041D, .total_size = 512 /* Size can only be determined from status register */, .page_size = 256 /* Size can only be determined from status register */, + /* does not support EWSR nor WREN and has no writable status register bits whatsoever */ .tested = TEST_BAD_READ, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2126,6 +2148,7 @@ .model_id = ATMEL_AT45DB081D, .total_size = 1024 /* Size can only be determined from status register */, .page_size = 256 /* Size can only be determined from status register */, + /* does not support EWSR nor WREN and has no writable status register bits whatsoever */ .tested = TEST_BAD_READ, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2142,6 +2165,7 @@ .model_id = ATMEL_AT45DB161D, .total_size = 2048 /* Size can only be determined from status register */, .page_size = 512 /* Size can only be determined from status register */, + /* does not support EWSR nor WREN and has no writable status register bits whatsoever */ .tested = TEST_BAD_READ, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2158,6 +2182,7 @@ .model_id = ATMEL_AT45DB321C, .total_size = 4224 /* No power of two sizes */, .page_size = 528 /* No power of two sizes */, + /* does not support EWSR nor WREN and has no writable status register bits whatsoever */ .tested = TEST_BAD_READ, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2175,6 +2200,7 @@ .total_size = 4096 /* Size can only be determined from status register */, .page_size = 512 /* Size can only be determined from status register */, /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ + /* does not support EWSR nor WREN and has no writable status register bits whatsoever */ .feature_bits = FEATURE_OTP, .tested = TEST_BAD_READ, .probe = probe_spi_rdid, @@ -2192,6 +2218,7 @@ .model_id = ATMEL_AT45DB642D, .total_size = 8192 /* Size can only be determined from status register */, .page_size = 1024 /* Size can only be determined from status register */, + /* does not support EWSR nor WREN and has no writable status register bits whatsoever */ .tested = TEST_BAD_READ, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2477,6 +2504,7 @@ .model_id = EMST_F25L008A, .total_size = 1024, .page_size = 256, + .feature_bits = FEATURE_WRSR_EITHER, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2510,6 +2538,7 @@ .model_id = EON_EN25B05, .total_size = 64, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2542,6 +2571,7 @@ .model_id = EON_EN25B05, .total_size = 64, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2574,6 +2604,7 @@ .model_id = EON_EN25B10, .total_size = 128, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2606,6 +2637,7 @@ .model_id = EON_EN25B10, .total_size = 128, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2638,6 +2670,7 @@ .model_id = EON_EN25B20, .total_size = 256, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2671,6 +2704,7 @@ .model_id = EON_EN25B20, .total_size = 256, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2704,6 +2738,7 @@ .model_id = EON_EN25B40, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2737,6 +2772,7 @@ .model_id = EON_EN25B40, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2770,6 +2806,7 @@ .model_id = EON_EN25B80, .total_size = 1024, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2803,6 +2840,7 @@ .model_id = EON_EN25B80, .total_size = 1024, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2836,6 +2874,7 @@ .model_id = EON_EN25B16, .total_size = 2048, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2869,6 +2908,7 @@ .model_id = EON_EN25B16, .total_size = 2048, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2902,6 +2942,7 @@ .model_id = EON_EN25B32, .total_size = 4096, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -2935,6 +2976,7 @@ .model_id = EON_EN25B32, .total_size = 4096, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -3002,6 +3044,7 @@ .model_id = EON_EN25B64, .total_size = 8192, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5197,6 +5240,7 @@ .model_id = ST_M25PE10, .total_size = 128, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5227,6 +5271,7 @@ .model_id = ST_M25PE20, .total_size = 256, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5257,6 +5302,7 @@ .model_id = ST_M25PE40, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5287,6 +5333,7 @@ .model_id = ST_M25PE80, .total_size = 1024, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5317,6 +5364,7 @@ .model_id = ST_M25PE16, .total_size = 2048, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5376,6 +5424,7 @@ .model_id = PMC_PM25LV010, .total_size = 128, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5406,6 +5455,7 @@ .model_id = PMC_PM25LV016B, .total_size = 2048, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5442,6 +5492,7 @@ .model_id = PMC_PM25LV020, .total_size = 256, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5472,6 +5523,7 @@ .model_id = PMC_PM25LV040, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5502,6 +5554,7 @@ .model_id = PMC_PM25LV080B, .total_size = 1024, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5538,6 +5591,7 @@ .model_id = PMC_PM25LV512, .total_size = 64, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5873,6 +5927,7 @@ .model_id = SPANSION_S25FL004A, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5900,6 +5955,7 @@ .model_id = SPANSION_S25FL008A, .total_size = 1024, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PRE, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5927,6 +5983,7 @@ .model_id = SPANSION_S25FL016A, .total_size = 2048, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PR, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5954,6 +6011,7 @@ .model_id = SPANSION_S25FL032A, .total_size = 4096, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PR, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -5981,6 +6039,7 @@ .model_id = SPANSION_S25FL064A, .total_size = 8192, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -6008,6 +6067,7 @@ .model_id = SST_SST25VF040_REMS, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, .probe = probe_spi_res2, .probe_timing = TIMING_ZERO, @@ -6038,6 +6098,7 @@ .model_id = SST_SST25VF080_REMS, .total_size = 1024, .page_size = 256, + .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_UNTESTED, .probe = probe_spi_res2, .probe_timing = TIMING_ZERO, @@ -6068,6 +6129,7 @@ .model_id = SST_SST25VF010_REMS, .total_size = 128, .page_size = 256, + .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, .probe = probe_spi_rems, .probe_timing = TIMING_ZERO, @@ -6098,6 +6160,7 @@ .model_id = SST_SST25VF016B, .total_size = 2048, .page_size = 256, + .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -6134,6 +6197,7 @@ .model_id = SST_SST25VF032B, .total_size = 4096, .page_size = 256, + .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -6170,6 +6234,7 @@ .model_id = SST_SST25VF064C, .total_size = 8192, .page_size = 256, + .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -6206,6 +6271,7 @@ .model_id = SST_SST25VF040_REMS, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PR, .probe = probe_spi_rems, .probe_timing = TIMING_ZERO, @@ -6236,6 +6302,7 @@ .model_id = SST_SST25VF040B, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -6272,6 +6339,7 @@ .model_id = SST_SST25VF040B_REMS, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PR, .probe = probe_spi_rems, .probe_timing = TIMING_ZERO, @@ -6308,6 +6376,7 @@ .model_id = SST_SST25VF080B, .total_size = 1024, .page_size = 256, + .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -7128,6 +7197,7 @@ .model_id = ST_M25P05A, .total_size = 64, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -7160,6 +7230,7 @@ .model_id = ST_M25P05_RES, .total_size = 64, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_res1, .probe_timing = TIMING_ZERO, @@ -7187,6 +7258,7 @@ .model_id = ST_M25P10A, .total_size = 128, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PRE, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -7215,6 +7287,7 @@ .model_id = ST_M25P10_RES, .total_size = 128, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_res1, .probe_timing = TIMING_ZERO, @@ -7242,6 +7315,7 @@ .model_id = ST_M25P20, .total_size = 256, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -7269,6 +7343,7 @@ .model_id = ST_M25P40, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -7296,6 +7371,7 @@ .model_id = ST_M25P40_RES, .total_size = 512, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_res1, .probe_timing = TIMING_ZERO, @@ -7322,6 +7398,7 @@ .model_id = ST_M25P80, .total_size = 1024, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -7349,6 +7426,7 @@ .model_id = ST_M25P16, .total_size = 2048, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PR, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -7376,6 +7454,7 @@ .model_id = ST_M25P32, .total_size = 4096, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -7403,6 +7482,7 @@ .model_id = ST_M25P64, .total_size = 8192, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -7430,6 +7510,7 @@ .model_id = ST_M25P128, .total_size = 16384, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -7458,7 +7539,7 @@ .total_size = 2048, .page_size = 256, /* OTP: 64B total; read 0x4B; write 0x42 */ - .feature_bits = FEATURE_OTP, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -7488,6 +7569,7 @@ .model_id = ST_M25PX32, .total_size = 4096, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PRE, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, @@ -7518,6 +7600,7 @@ .model_id = ST_M25PX64, .total_size = 8192, .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PRE, .probe = probe_spi_rdid, .probe_timing = TIMING_ZERO, Modified: trunk/sfdp.c ============================================================================== --- trunk/sfdp.c Wed May 2 21:48:21 2012 (r1526) +++ trunk/sfdp.c Wed May 2 22:07:57 2012 (r1527) @@ -176,10 +176,12 @@ flash->feature_bits = FEATURE_WRSR_EWSR; msg_cdbg2("EWSR (0x50).\n"); } - } else + } else { msg_cdbg2("non-volatile and the standard does not allow " "vendors to tell us whether EWSR/WREN is needed for " "status register writes - assuming EWSR.\n"); + flash->feature_bits = FEATURE_WRSR_EWSR; + } msg_cdbg2(" Write chunk size is "); if (tmp32 & (1 << 2)) { From svn at flashrom.org Wed May 2 22:08:01 2012 From: svn at flashrom.org (repository service) Date: Wed, 02 May 2012 22:08:01 +0200 Subject: [flashrom] [commit] r1528 - trunk Message-ID: Author: stefanct Date: Wed May 2 22:08:01 2012 New Revision: 1528 URL: http://flashrom.org/trac/flashrom/changeset/1528 Log: spi25.c: Refactor spi_write_status_register helpers. In r1115 "Write protection handling for Atmel AT25*" the old spi_write_status_register function was duplicated to send WREN and EWSR commands respectively controlled by a new common wrapper function spi_write_status_register without a reason. Both functions' resulting code is equal apart from the opcode used. The code itself does also differ in the macros used, but their value (apart from the opcode) is equal. This patch adds a new parameter for the opcode to the helper function which allows removal of the other one. This relies on the fact that EWSR and WREN have the same INSIZE and OUTSIZE though. If that is really seen as an issue, the sizes could be made parameters too. This patch also changes the wrapper so that it no longer sets the feature bits of the struct flash(ctx) argument. This may result in changed output, because it no longer implicitly disables the debug message in following executions. Since almost all chips had their feature bits fixed in the previous commit, this is a minor problem. Also, spi_write_status_enable has been dead code since r658 or so. Remove it. Signed-off-by: Stefan Tauner Acked-by: Carl-Daniel Hailfinger Modified: trunk/spi25.c Modified: trunk/spi25.c ============================================================================== --- trunk/spi25.c Wed May 2 22:07:57 2012 (r1527) +++ trunk/spi25.c Wed May 2 22:08:01 2012 (r1528) @@ -764,63 +764,19 @@ * This is according the SST25VF016 datasheet, who knows it is more * generic that this... */ -static int spi_write_status_register_ewsr(struct flashctx *flash, int status) +static int spi_write_status_register_flag(struct flashctx *flash, int status, const unsigned char enable_opcode) { int result; int i = 0; - struct spi_command cmds[] = { - { - /* WRSR requires either EWSR or WREN depending on chip type. */ - .writecnt = JEDEC_EWSR_OUTSIZE, - .writearr = (const unsigned char[]){ JEDEC_EWSR }, - .readcnt = 0, - .readarr = NULL, - }, { - .writecnt = JEDEC_WRSR_OUTSIZE, - .writearr = (const unsigned char[]){ JEDEC_WRSR, (unsigned char) status }, - .readcnt = 0, - .readarr = NULL, - }, { - .writecnt = 0, - .writearr = NULL, - .readcnt = 0, - .readarr = NULL, - }}; - - result = spi_send_multicommand(flash, cmds); - if (result) { - msg_cerr("%s failed during command execution\n", - __func__); - /* No point in waiting for the command to complete if execution - * failed. - */ - return result; - } - /* WRSR performs a self-timed erase before the changes take effect. - * This may take 50-85 ms in most cases, and some chips apparently - * allow running RDSR only once. Therefore pick an initial delay of - * 100 ms, then wait in 10 ms steps until a total of 5 s have elapsed. + /* + * WRSR requires either EWSR or WREN depending on chip type. + * The code below relies on the fact hat EWSR and WREN have the same + * INSIZE and OUTSIZE. */ - programmer_delay(100 * 1000); - while (spi_read_status_register(flash) & JEDEC_RDSR_BIT_WIP) { - if (++i > 490) { - msg_cerr("Error: WIP bit after WRSR never cleared\n"); - return TIMEOUT_ERROR; - } - programmer_delay(10 * 1000); - } - return 0; -} - -static int spi_write_status_register_wren(struct flashctx *flash, int status) -{ - int result; - int i = 0; struct spi_command cmds[] = { { - /* WRSR requires either EWSR or WREN depending on chip type. */ .writecnt = JEDEC_WREN_OUTSIZE, - .writearr = (const unsigned char[]){ JEDEC_WREN }, + .writearr = (const unsigned char[]){ enable_opcode }, .readcnt = 0, .readarr = NULL, }, { @@ -837,8 +793,7 @@ result = spi_send_multicommand(flash, cmds); if (result) { - msg_cerr("%s failed during command execution\n", - __func__); + msg_cerr("%s failed during command execution\n", __func__); /* No point in waiting for the command to complete if execution * failed. */ @@ -862,17 +817,18 @@ int spi_write_status_register(struct flashctx *flash, int status) { + int feature_bits = flash->feature_bits; int ret = 1; - if (!(flash->feature_bits & (FEATURE_WRSR_WREN | FEATURE_WRSR_EWSR))) { + if (!(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; + feature_bits |= FEATURE_WRSR_EWSR; } - if (flash->feature_bits & FEATURE_WRSR_WREN) - ret = spi_write_status_register_wren(flash, status); - if (ret && (flash->feature_bits & FEATURE_WRSR_EWSR)) - ret = spi_write_status_register_ewsr(flash, status); + if (feature_bits & FEATURE_WRSR_WREN) + ret = spi_write_status_register_flag(flash, status, JEDEC_WREN); + if (ret && (feature_bits & FEATURE_WRSR_EWSR)) + ret = spi_write_status_register_flag(flash, status, JEDEC_EWSR); return ret; } From stefan.tauner at student.tuwien.ac.at Wed May 2 22:10:19 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Wed, 2 May 2012 22:10:19 +0200 Subject: [flashrom] EWSR fixes + spi25.c spi_write_status_register cleanup In-Reply-To: <1335657046-15573-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <1335657046-15573-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <201205022010.q42KAJle024471@mail2.student.tuwien.ac.at> On Sun, 29 Apr 2012 01:50:44 +0200 Stefan Tauner wrote: > will commit both patches as is if no one vetos in the next days. > > [PATCH 1/2] Tag all EWSR chips correctly. > [PATCH 2/2] spi25.c: Refactor spi_write_status_register helpers. done in r1527 and r1528, thanks steven for the datasheet digging! -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Thu May 3 00:38:09 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 03 May 2012 00:38:09 +0200 Subject: [flashrom] EWSR fixes + spi25.c spi_write_status_register cleanup In-Reply-To: <201205022010.q42KAJle024471@mail2.student.tuwien.ac.at> References: <1335657046-15573-1-git-send-email-stefan.tauner@student.tuwien.ac.at> <201205022010.q42KAJle024471@mail2.student.tuwien.ac.at> Message-ID: <4FA1B751.4040809@gmx.net> Am 02.05.2012 22:10 schrieb Stefan Tauner: > On Sun, 29 Apr 2012 01:50:44 +0200 > Stefan Tauner wrote: > >> will commit both patches as is if no one vetos in the next days. >> >> [PATCH 1/2] Tag all EWSR chips correctly. >> [PATCH 2/2] spi25.c: Refactor spi_write_status_register helpers. > done in r1527 and r1528, thanks steven for the datasheet digging! Excellent, thanks! Regards, Carl-Daniel -- http://www.hailfinger.org/ From c-d.hailfinger.devel.2006 at gmx.net Thu May 3 01:36:02 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 03 May 2012 01:36:02 +0200 Subject: [flashrom] [PATCH] Add logfile support to flashrom In-Reply-To: <201202092013.q19KDFpe031614@mail2.student.tuwien.ac.at> References: <4DF12DDE.9000401@gmx.net> <20110611142151.GE6443@greenwood> <4DF38206.20903@home.nl> <4DF53AAF.6000700@gmx.net> <4DF53D2B.7090006@home.nl> <4DF69FA1.6070705@gmx.net> <201106171328.p5HDSU4l017284@mail2.student.tuwien.ac.at> <201106191244.p5JCiSbM005768@mail2.student.tuwien.ac.at> <4E3092B5.9020307@gmx.net> <4F03A676.1040006@gmx.net> <201202092013.q19KDFpe031614@mail2.student.tuwien.ac.at> Message-ID: <4FA1C4E2.5040500@gmx.net> I have decided to discard most of the logging code and rewrite it to be more readable. It even worked in preliminary tests. TODO: - Should "-o -" be a no-op which just redirects stderr to stdout? Right now "-" is treated as regular file name, but most Unix utilities are unable to handle a file with that name (try "less -" for amusement). - Add man page entry - Is the log level difference for screen/logfile a good thing, and should we default the logfile level to dbg2 instead of dbg? Add log file support to flashrom. If you use cli_classic, the log file will always contain messages at a level which is one higher than the one specified. That way we get all verbose messages in the log even if the user doesn't specify -V. Convert all printf() after start of logging to msg_*(). Allow separate control of log level for screen and logfile in case other frontends (e.g. GUI, cli_mfg) want that. Signed-off-by: Carl-Daniel Hailfinger Index: flashrom-logfile/flash.h =================================================================== --- flashrom-logfile/flash.h (Revision 1528) +++ flashrom-logfile/flash.h (Arbeitskopie) @@ -228,7 +228,8 @@ write_gran_1byte, write_gran_256bytes, }; -extern int verbose; +extern int verbose_screen; +extern int verbose_logfile; extern const char flashrom_version[]; extern char *chip_to_probe; void map_flash_registers(struct flashctx *flash); @@ -268,13 +269,20 @@ #define ERROR_FLASHROM_LIMIT -201 /* cli_output.c */ +#ifndef STANDALONE +int open_logfile(const char * const filename); +int close_logfile(void); +void start_logging(void); +#endif /* Let gcc and clang check for correct printf-style format strings. */ -int print(int type, const char *fmt, ...) __attribute__((format(printf, 2, 3))); -#define MSG_ERROR 0 -#define MSG_INFO 1 -#define MSG_DEBUG 2 -#define MSG_DEBUG2 3 -#define MSG_BARF 4 +enum msglevel { + MSG_ERROR = 0, + MSG_INFO = 1, + MSG_DEBUG = 2, + MSG_DEBUG2 = 3, + MSG_BARF = 4, +}; +int print(enum msglevel level, const char *fmt, ...) __attribute__((format(printf, 2, 3))); #define msg_gerr(...) print(MSG_ERROR, __VA_ARGS__) /* general errors */ #define msg_perr(...) print(MSG_ERROR, __VA_ARGS__) /* programmer errors */ #define msg_cerr(...) print(MSG_ERROR, __VA_ARGS__) /* chip errors */ Index: flashrom-logfile/cli_output.c =================================================================== --- flashrom-logfile/cli_output.c (Revision 1528) +++ flashrom-logfile/cli_output.c (Arbeitskopie) @@ -2,6 +2,7 @@ * This file is part of the flashrom project. * * Copyright (C) 2009 Sean Nelson + * Copyright (C) 2011 Carl-Daniel Hailfinger * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,36 +21,80 @@ #include #include +#include +#include #include "flash.h" -int print(int type, const char *fmt, ...) +static FILE *logfile = NULL; + +#ifndef STANDALONE +int close_logfile(void) { + if (logfile && fclose(logfile)) { + /* fclose returned an error. Stop writing to be safe. */ + logfile = NULL; + msg_perr("Closing the log file returned error %s\n", + strerror(errno)); + return 1; + } + logfile = NULL; + return 0; +} + +int open_logfile(const char * const filename) +{ + if (!filename) { + msg_gerr("No filename specified.\n"); + return 1; + } + if ((logfile = fopen(filename, "w")) == NULL) { + perror(filename); + return 1; + } + return 0; +} + +void start_logging(void) +{ + enum msglevel oldverbose_screen = verbose_screen; + enum msglevel oldverbose_logfile = verbose_logfile; + + /* Shut up the console. */ + verbose_screen = MSG_ERROR; + verbose_logfile = MSG_DEBUG; + print_version(); + verbose_screen = oldverbose_screen; + verbose_logfile = oldverbose_logfile; +} +#endif /* STANDALONE */ + +/* Please note that level is the verbosity, not the importance of the message. + */ +int print(enum msglevel level, const char *fmt, ...) +{ va_list ap; - int ret; - FILE *output_type; + int ret = 0; + FILE *output_level = stdout; - switch (type) { - case MSG_ERROR: - output_type = stderr; - break; - case MSG_BARF: - if (verbose < 3) - return 0; - case MSG_DEBUG2: - if (verbose < 2) - return 0; - case MSG_DEBUG: - if (verbose < 1) - return 0; - case MSG_INFO: - default: - output_type = stdout; - break; + if (level == MSG_ERROR) + output_level = stderr; + + if (level <= verbose_screen) { + va_start(ap, fmt); + ret = vfprintf(output_level, fmt, ap); + va_end(ap); + /* msg_*spew usually happens inside chip accessors in possibly + * time-critical operations. Don't slow them down by flushing. + */ + if (level != MSG_BARF) + fflush(output_level); } - - va_start(ap, fmt); - ret = vfprintf(output_type, fmt, ap); - va_end(ap); - fflush(output_type); + if ((level <= verbose_logfile) && logfile) { + va_start(ap, fmt); + ret = vfprintf(logfile, fmt, ap); + va_end(ap); + if (level != MSG_BARF) + fflush(logfile); + } return ret; } Index: flashrom-logfile/cli_classic.c =================================================================== --- flashrom-logfile/cli_classic.c (Revision 1528) +++ flashrom-logfile/cli_classic.c (Arbeitskopie) @@ -106,7 +106,7 @@ "-z|" #endif "-E|-r |-w |-v ]\n" - " [-c ] [-l ]\n" + " [-c ] [-l ] [-o ]\n" " [-i ] [-p [:]]\n\n"); printf("Please note that the command line interface for flashrom has " @@ -135,6 +135,7 @@ "\n" " -i | --image only flash image " "from flash layout\n" + " -o | --output log to file \n" " -L | --list-supported print supported devices\n" #if CONFIG_PRINT_WIKI == 1 " -z | --list-supported-wiki print supported devices " @@ -177,7 +178,7 @@ enum programmer prog = PROGRAMMER_INVALID; int ret = 0; - static const char optstring[] = "r:Rw:v:nVEfc:l:i:p:Lzh"; + static const char optstring[] = "r:Rw:v:nVEfc:l:i:p:Lzho:"; static const struct option long_options[] = { {"read", 1, NULL, 'r'}, {"write", 1, NULL, 'w'}, @@ -194,11 +195,13 @@ {"programmer", 1, NULL, 'p'}, {"help", 0, NULL, 'h'}, {"version", 0, NULL, 'R'}, + {"output", 1, NULL, 'o'}, {NULL, 0, NULL, 0}, }; char *filename = NULL; char *layoutfile = NULL; + char *log_name = NULL; char *tempstr = NULL; char *pparam = NULL; @@ -260,7 +263,8 @@ chip_to_probe = strdup(optarg); break; case 'V': - verbose++; + verbose_screen++; + verbose_logfile++; break; case 'E': if (++operation_specified > 1) { @@ -366,6 +370,19 @@ cli_classic_usage(argv[0]); exit(0); break; + case 'o': +#ifdef STANDALONE + fprintf(stderr, "Log file not supported in standalone " + "mode. Aborting.\n"); + cli_classic_abort_usage(); +#else /* STANDALONE */ + log_name = strdup(optarg); + if (log_name[0] == '\0') { + fprintf(stderr, "No log filename specified.\n"); + cli_classic_abort_usage(); + } +#endif /* STANDALONE */ + break; default: cli_classic_abort_usage(); break; @@ -377,20 +394,40 @@ cli_classic_abort_usage(); } - /* FIXME: Print the actions flashrom will take. */ - - if (list_supported) { - print_supported(); - exit(0); + if ((read_it | write_it | verify_it) && !filename) { + fprintf(stderr, "Error: No filename specified.\n"); + cli_classic_abort_usage(); } + if (filename && (filename[0] == '\0')) { + fprintf(stderr, "Error: No filename specified.\n"); + cli_classic_abort_usage(); + } + if (filename && (filename[0] == '-')) + fprintf(stderr, "Warning: Supplied file name starts with -\n"); +#ifndef STANDALONE + if (log_name && (log_name[0] == '-')) + fprintf(stderr, "Warning: Supplied file name starts with -\n"); + if (log_name && open_logfile(log_name)) + return 1; +#endif /* !STANDALONE */ + #if CONFIG_PRINT_WIKI == 1 if (list_supported_wiki) { print_supported_wiki(); - exit(0); + ret = 0; + goto out; } #endif + if (list_supported) { + print_supported(); + ret = 0; + goto out; + } + + // FIXME: cli_classic_abort_usage() does exit(1) and we rely on the OS + // to flush log file buffers. Is that behaviour guaranteed? if (layoutfile && read_romlayout(layoutfile)) cli_classic_abort_usage(); if (process_include_args()) @@ -415,11 +452,22 @@ if (prog == PROGRAMMER_INVALID) prog = default_programmer; +#ifndef STANDALONE + start_logging(); +#endif /* STANDALONE */ + + msg_gdbg("Command line:"); + for (i = 0; i < argc; i++) { + msg_gdbg(" %s", argv[i]); + } + msg_gdbg("\n"); + + /* FIXME: Delay calibration should happen in programmer code. */ myusec_calibrate_delay(); if (programmer_init(prog, pparam)) { - fprintf(stderr, "Error: Programmer initialization failed.\n"); + msg_perr("Error: Programmer initialization failed.\n"); ret = 1; goto out_shutdown; } @@ -442,25 +490,25 @@ } if (chipcount > 1) { - printf("Multiple flash chips were detected: \"%s\"", - flashes[0].name); + msg_cinfo("Multiple flash chips were detected: \"%s\"", + flashes[0].name); for (i = 1; i < chipcount; i++) - printf(", \"%s\"", flashes[i].name); - printf("\nPlease specify which chip to use with the " - "-c option.\n"); + msg_cinfo(", \"%s\"", flashes[i].name); + msg_cinfo("\nPlease specify which chip to use with the -c " + " option.\n"); ret = 1; goto out_shutdown; } else if (!chipcount) { - printf("No EEPROM/flash device found.\n"); + msg_cinfo("No EEPROM/flash device found.\n"); if (!force || !chip_to_probe) { - printf("Note: flashrom can never write if the flash " - "chip isn't found automatically.\n"); + msg_cinfo("Note: flashrom can never write if the flash " + "chip isn't found automatically.\n"); } if (force && read_it && chip_to_probe) { struct registered_programmer *pgm; int compatible_programmers = 0; - printf("Force read (-f -r -c) requested, pretending " - "the chip is there:\n"); + msg_cinfo("Force read (-f -r -c) requested, pretending " + "the chip is there:\n"); /* This loop just counts compatible controllers. */ for (j = 0; j < registered_programmer_count; j++) { pgm = ®istered_programmers[j]; @@ -468,9 +516,9 @@ compatible_programmers++; } if (compatible_programmers > 1) - printf("More than one compatible controller " - "found for the requested flash chip, " - "using the first one.\n"); + msg_cinfo("More than one compatible controller " + "found for the requested flash chip, " + "using the first one.\n"); for (j = 0; j < registered_programmer_count; j++) { pgm = ®istered_programmers[j]; startchip = probe_flash(pgm, 0, &flashes[0], 1); @@ -478,14 +526,15 @@ break; } if (startchip == -1) { - printf("Probing for flash chip '%s' failed.\n", - chip_to_probe); + msg_cinfo("Probing for flash chip '%s' failed." + "\n", chip_to_probe); ret = 1; goto out_shutdown; } - printf("Please note that forced reads most likely " - "contain garbage.\n"); - return read_flash_to_file(&flashes[0], filename); + msg_cinfo("Please note that forced reads most likely " + "contain garbage.\n"); + ret = read_flash_to_file(&flashes[0], filename); + goto out_shutdown; } ret = 1; goto out_shutdown; @@ -505,23 +554,17 @@ size = fill_flash->total_size * 1024; if (check_max_decode(fill_flash->pgm->buses_supported & fill_flash->bustype, size) && (!force)) { - fprintf(stderr, "Chip is too big for this programmer " - "(-V gives details). Use --force to override.\n"); + msg_cerr("Chip is too big for this programmer " + "(-V gives details). Use --force to override.\n"); ret = 1; goto out_shutdown; } if (!(read_it | write_it | verify_it | erase_it)) { - printf("No operations were specified.\n"); + msg_ginfo("No operations were specified.\n"); goto out_shutdown; } - if (!filename && !erase_it) { - printf("Error: No filename specified.\n"); - ret = 1; - goto out_shutdown; - } - /* Always verify write operations unless -n is used. */ if (write_it && !dont_verify_it) verify_it = 1; @@ -531,9 +574,13 @@ * Give the chip time to settle. */ programmer_delay(100000); - return doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); + ret |= doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); out_shutdown: programmer_shutdown(); +out: +#ifndef STANDALONE + ret |= close_logfile(); +#endif return ret; } Index: flashrom-logfile/flashrom.c =================================================================== --- flashrom-logfile/flashrom.c (Revision 1528) +++ flashrom-logfile/flashrom.c (Arbeitskopie) @@ -40,7 +40,8 @@ const char flashrom_version[] = FLASHROM_VERSION; char *chip_to_probe = NULL; -int verbose = 0; +int verbose_screen = MSG_INFO; +int verbose_logfile = MSG_DEBUG; static enum programmer programmer = PROGRAMMER_INVALID; @@ -1457,27 +1458,27 @@ if (firstline) firstline = 0; else - printf("\n"); + msg_ginfo("\n"); for (i = 0; i < startcol; i++) - printf(" "); + msg_ginfo(" "); remaining = cols - startcol; } else { - printf(" "); + msg_ginfo(" "); remaining--; } if (paren && (p == 0)) { - printf("("); + msg_ginfo("("); remaining--; } - printf("%s", pname); + msg_ginfo("%s", pname); remaining -= pnamelen; if (p < PROGRAMMER_INVALID - 1) { - printf(","); + msg_ginfo(","); remaining--; } else { if (paren) - printf(")"); - printf("\n"); + msg_ginfo(")"); + msg_ginfo("\n"); } } } @@ -1493,35 +1494,35 @@ #else msg_ginfo(" on unknown machine"); #endif - msg_ginfo(", built with"); + msg_gdbg(", built with"); #if NEED_PCI == 1 #ifdef PCILIB_VERSION - msg_ginfo(" libpci %s,", PCILIB_VERSION); + msg_gdbg(" libpci %s,", PCILIB_VERSION); #else - msg_ginfo(" unknown PCI library,"); + msg_gdbg(" unknown PCI library,"); #endif #endif #ifdef __clang__ - msg_ginfo(" LLVM Clang"); + msg_gdbg(" LLVM Clang"); #ifdef __clang_version__ - msg_ginfo(" %s,", __clang_version__); + msg_gdbg(" %s,", __clang_version__); #else - msg_ginfo(" unknown version (before r102686),"); + msg_gdbg(" unknown version (before r102686),"); #endif #elif defined(__GNUC__) - msg_ginfo(" GCC"); + msg_gdbg(" GCC"); #ifdef __VERSION__ - msg_ginfo(" %s,", __VERSION__); + msg_gdbg(" %s,", __VERSION__); #else - msg_ginfo(" unknown version,"); + msg_gdbg(" unknown version,"); #endif #else - msg_ginfo(" unknown compiler,"); + msg_gdbg(" unknown compiler,"); #endif #if defined (__FLASHROM_LITTLE_ENDIAN__) - msg_ginfo(" little endian"); + msg_gdbg(" little endian"); #else - msg_ginfo(" big endian"); + msg_gdbg(" big endian"); #endif msg_ginfo("\n"); } @@ -1534,7 +1535,7 @@ void print_banner(void) { - msg_ginfo("flashrom is free software, get the source code at " + msg_ginfo("flashrom is free software. Get the source code at " "http://www.flashrom.org\n"); msg_ginfo("\n"); } @@ -1840,6 +1841,5 @@ free(oldcontents); free(newcontents); out_nofree: - programmer_shutdown(); return ret; } -- http://www.hailfinger.org/ From c-d.hailfinger.devel.2006 at gmx.net Fri May 4 00:16:26 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Fri, 04 May 2012 00:16:26 +0200 Subject: [flashrom] [coreboot] Flashing capability in coreboot Message-ID: <4FA303BA.3040206@gmx.net> Hi, coreboot has a requirement to store some data in flash to get some chipsets to work well. There are multiple ways to achieve this: 1. Write flashing code from scratch. Pointless. 2. Use parts of the flashrom codebase or libflashrom. Advantages: coreboot and flashrom developers often work on both projects, enabling better cooperation. flashrom has the best chipset/flash support out there. 3. Use parts of the U-Boot codebase (which has drivers derived from flashrom). Advantages: The codebase is designed with firmware constraints in mind. http://review.coreboot.org/997 seems to implement this. As a flashrom developer, I would like to see flashrom code used in coreboot, and I'm very interested in finding and fixing any obstacles to that goal. Patrick, I think you worked on the coreboot patch mentioned above. Could you tell us about your reasons for choosing option 3, and how we can make option 2 viable? Regards, Carl-Daniel -- http://www.hailfinger.org/ From stefan.reinauer at coreboot.org Fri May 4 00:46:20 2012 From: stefan.reinauer at coreboot.org (Stefan Reinauer) Date: Fri, 4 May 2012 00:46:20 +0200 Subject: [flashrom] [coreboot] Flashing capability in coreboot In-Reply-To: <4FA303BA.3040206@gmx.net> References: <4FA303BA.3040206@gmx.net> Message-ID: <20120503224619.GA8641@coreboot.org> Hi Carl-Daniel, thanks a lot for bringing this up.. * Carl-Daniel Hailfinger [120504 00:16]: > coreboot has a requirement to store some data in flash to get some > chipsets to work well. There are multiple ways to achieve this: > > 1. Write flashing code from scratch. Pointless. That's what has been done for the AMD SB800... See src/southbridge/amd/cimx/sb800/spi.c for more information. That driver is very small, but will also only work for one known good combination of chipset + flashchip. http://review.coreboot.org/997 was done with more flexibility in mind; also regarding certain flash usage constraints. For example on the Samsung ChromeBook coreboot's CBFS lives completely in the read-only section of the flash chip for security reasons. > 2. Use parts of the flashrom codebase or libflashrom. Advantages: > coreboot and flashrom developers often work on both projects, enabling > better cooperation. flashrom has the best chipset/flash support out there. There is no doubt that flashrom is the most flexible and universal implementation out there. It's also almost 40k lines of code, whereas the current implementation covering many flash chips and ICH support fits in only 3000 lines. It may be hard (or not?) to keep the goals of flashrom (flexibility) and coreboot (small, simple) under one hood. > 3. Use parts of the U-Boot codebase (which has drivers derived from > flashrom). Advantages: The codebase is designed with firmware > constraints in mind. http://review.coreboot.org/997 seems to implement this. > > As a flashrom developer, I would like to see flashrom code used in > coreboot, and I'm very interested in finding and fixing any obstacles to > that goal. You might be happy to know that portions of the u-boot driver actually came from flashrom. > Patrick, I think you worked on the coreboot patch mentioned above. Could > you tell us about your reasons for choosing option 3, and how we can > make option 2 viable? Here's my take on this (which should not discourage Patrick from telling the full story and additional details that I might have missed) The background of this is that with coreboot in it's current state you will only be able to resume from suspend when using the ChromiumOS version of u-boot as a payload on Sandybridge systems. When we started looking into these issues initially there was no SPI driver in coreboot while u-boot came readily equipped. So we passed the memory training data from coreboot to u-boot in CBMEM and let u-boot write it. Reworking this to be independent from a certain payload (and getting features like resume from suspend to work with e.g. SeaBIOS) it was the simplest approach to move that portion of the code that already existed from u-boot to coreboot, which is what is working today. This is, as every software project, work in progress and open to iterations. Each of those two before mentioned steps were what could be done with reasonable effort at the time, leading to the current situation of a working implementation. Personally, I would appreciate if we can get this code in as it is for now, and replace it with a better solution as soon as somebody is able to come up with one. Thanks, Stefan From allfer at rambler.ru Fri May 4 20:56:56 2012 From: allfer at rambler.ru (user) Date: Fri, 04 May 2012 22:56:56 +0400 Subject: [flashrom] Log for palit n61s v2.0 on a MCP61 for read and write operations Message-ID: <1336157816.10196.4.camel@localhost> Log for palit n61s v2.0 on a MCP61 for read and write operations -------------- next part -------------- A non-text attachment was scrubbed... Name: palit-n61s-v2.0.zip Type: application/zip Size: 4800 bytes Desc: not available URL: From c-d.hailfinger.devel.2006 at gmx.net Fri May 4 21:45:15 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Fri, 04 May 2012 21:45:15 +0200 Subject: [flashrom] [PATCH] dummyflasher: Add a status register to SPI chips. In-Reply-To: <1329268402-26554-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <4F2BBE83.8040200@gmx.net> <1329268402-26554-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <4FA431CB.7090002@gmx.net> Am 15.02.2012 02:13 schrieb Stefan Tauner: > TODO: man page Yes, that would be nice. > Signed-off-by: Stefan Tauner Acked-by: Carl-Daniel Hailfinger even without the man page. It's a helpful feature, and maybe someone else has time to write a man page entry for it. If you want to write the man page entry, more power to you! Regards, Carl-Daniel -- http://www.hailfinger.org/ From c-d.hailfinger.devel.2006 at gmx.net Sat May 5 01:22:12 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sat, 05 May 2012 01:22:12 +0200 Subject: [flashrom] [PATCH] ichspi reprogram_opcode_on_the_fly return code fix Message-ID: <4FA464A4.5020903@gmx.net> Fix ICH SPI reprogram_opcode_on_the_fly return code. Helpful for SFDP debugging. Signed-off-by: Carl-Daniel Hailfinger Index: flashrom-sfdp_read_dummy_reduce_param_chunksize/ichspi.c =================================================================== --- flashrom-ichspi_invalid_length_consistent/ichspi.c (Revision 1528) +++ flashrom-ichspi_invalid_length_consistent/ichspi.c (Arbeitskopie) @@ -416,7 +416,10 @@ msg_pdbg ("on-the-fly OPCODE (0x%02X) re-programmed, op-pos=%d\n", opcode, oppos); return oppos; } - return -1; + /* This case only happens if the writecnt/readcnt combination is + * impossible to achieve on ICH SPI. + */ + return SPI_INVALID_LENGTH; } static int find_opcode(OPCODES *op, uint8_t opcode) @@ -1001,7 +1004,11 @@ if (opcode_index == -1) { if (!ichspi_lock) opcode_index = reprogram_opcode_on_the_fly(cmd, writecnt, readcnt); - if (opcode_index == -1) { + if (opcode_index == SPI_INVALID_LENGTH) { + msg_pdbg("OPCODE 0x%02x has unsupported length, will " + "not execute.\n", cmd); + return SPI_INVALID_LENGTH; + } else if (opcode_index == -1) { msg_pdbg("Invalid OPCODE 0x%02x, will not execute.\n", cmd); return SPI_INVALID_OPCODE; -- http://www.hailfinger.org/ From jmayer at loplof.de Sat May 5 02:27:20 2012 From: jmayer at loplof.de (Joerg Mayer) Date: Sat, 5 May 2012 02:27:20 +0200 Subject: [flashrom] Support for IBM/Lenovo Thinkpad T60 Flash Message-ID: <20120505002719.GA27135@rhrk.uni-kl.de> Hello, some time (> 1 year?) ago I asked on flashrom about support for the T60 and the attached patch was sent as part of the answer. The other part of the answer was that whoever sent this patch was not happy with it. Unfortunately I didn't keep the mail(s) and have forgotten the reason for this. Google also didn't really help. What I found was a similar but not identical mail on coreboot: http://www.coreboot.org/pipermail/coreboot/2010-December/062303.html As the T60 is one of the few Laptop models that are supported by coreboot and I'd like to update to it I have two requests: 1) would someone be willing to update the patch to the current flashrom codebase (I tried this and was able to read, but I don't trust it as the change was done without understanding what the changes did). 2) if possible integrate this into flashrom to make using coreboot easier. 3) (of 2) would it be useful to integrate bucts into flashrom or move it to coreboot/utils/? Thanks J?rg -- Joerg Mayer We are stuck with technology when what we really want is just stuff that works. Some say that should read Microsoft instead of technology. -------------- next part -------------- A non-text attachment was scrubbed... Name: t60-support-try-1.diff Type: text/x-diff Size: 1181 bytes Desc: not available URL: From c-d.hailfinger.devel.2006 at gmx.net Sat May 5 21:13:21 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sat, 05 May 2012 21:13:21 +0200 Subject: [flashrom] [PATCH] dummyflasher.c: add support for SFDP by adding a new emulator chip: MX25L6436 In-Reply-To: <1329960364-11155-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <4F4295C2.6070909@gmx.net> <1329960364-11155-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <4FA57BD1.4020002@gmx.net> Am 23.02.2012 02:26 schrieb Stefan Tauner: > The chip features a complete 1.0 SFDP JEDEC flash parameter table and also a > vendor-specific extension table (defining voltages, lock bits etc). > NB: the MX25L6436 uses the same RDID as the MX25L6405. > > Signed-off-by: Stefan Tauner Acked-by: Carl-Daniel Hailfinger with the changes below. > On Mon, 20 Feb 2012 19:49:38 +0100 Carl-Daniel Hailfinger wrote: > >> Am 20.02.2012 17:07 schrieb Stefan Tauner: >>> TODO: >>> - how should the SFDP data be supplied/selected by the user? >>> - option A (suggested one): add a default table with a legit complete table >> Good idea. >> >>> and a programmer option to use a binary file instead. >> I think having the file+builtin combination is overkill. Builtin should >> be sufficient, unless you plan to focus more on making flashrom a >> verification tool for flash vendors. > some of them would need it. *cough* ;) Right. I'd leave that as a possible future option, not something we should change in the patch right now. >>> [?] >>> + case JEDEC_SFDP: >>> + if (emu_chip != EMULATE_WINBOND_W25Q64CV) >>> + break; >>> + offs = writearr[1] << 16 | writearr[2] << 8 | writearr[3]; >>> + /* >>> + * FIXME: There is one dummy byte (i.e. 8 clock cycles) to be >>> + * transferred after the address. Since we can not observe the >>> + * clock, we would need to check for appropriate writecnt and/or >>> + * readcnt and recalculate the parameters below. >>> + */ >>> + /* FIXME: this could be more sophisticated. */ >>> + memcpy(readarr, sfdp_table + offs, >>> + min(sizeof(sfdp_table) - offs, readcnt)); >> That memcpy will segfault if offs>sizeof(sfdp_table). Suggestion: >> Replace the whole case statement with this (some 80 col reformatting may >> be needed): >> >> case JEDEC_SFDP: >> int toread; >> if (emu_chip != EMULATE_WINBOND_W25Q64CV) >> break; >> if (writecnt < 4) >> break; >> offs = writearr[1] << 16 | writearr[2] << 8 | writearr[3]; >> /* The response is shifted if more than 4 bytes are written. */ >> offs += writecnt - 4; > first of all... this breaks the implementation atm, because it uses > a writecnt of 5 to include the dummy byte > > secondly i am not sure i understand your intention about the > shifting. i guess the following: flashrom cant cope with concurrent > write and read bytes... so you are specifying that if we write more > bytes than needed we miss the bytes read in the beginning.. which > seems fair enough. > > therefor i have changed 4 to 5 in the writecnt-related lines.. Not what I meant. The big issue with SFDP and FAST READ and other commands is that the dummy byte after command+address can be either a written or read byte (the chip does not care). Our emulation should be able to handle both. This means a writecnt of 4 is completely legal, but in that case we have to set the copy destination to &readarr[1] instead of &readarr[0]. My logic tried to address that, but it was not completely correct. I have annotated your patch with my suggested changes at the end of this mail. They seem to work in my tests. > you are trying to support wrapping around for continous reads here > (at least for the first wrap around afaics) while the specs say that > this is not allowed at all (whatever that actually means...). so i > would rather just read up to the boundary and reply 0xFF after that. > makes that patch simpler too :) We have a differing opinion about how to interpret the spec, but I'm happy with your interpretation, especially if it simplifies the code. >>> @@ -657,6 +730,7 @@ static int dummy_spi_send_command(struct flashctx *flash, unsigned int writecnt, >>> case EMULATE_ST_M25P10_RES: >>> case EMULATE_SST_SST25VF040_REMS: >>> case EMULATE_SST_SST25VF032B: >>> + case EMULATE_WINBOND_W25Q64CV: >>> if (emulate_spi_chip_response(writecnt, readcnt, writearr, >>> readarr)) { >>> msg_pdbg("Invalid command sent to flash chip!\n"); > beside that i have also changed the emulated chip to the macronix chip, > because it features a second table (that we might want to parse if it is > used by other vendors too... one can at least hope :) > it helps testing another execution path too... Good. > diff --git a/dummyflasher.c b/dummyflasher.c > index afe0518..794a2f6 100644 > --- a/dummyflasher.c > +++ b/dummyflasher.c > @@ -629,7 +681,33 @@ static int emulate_spi_chip_response(unsigned int writecnt, > /* emu_jedec_ce_c7_size is emu_chip_size. */ > memset(flashchip_contents, 0xff, emu_jedec_ce_c7_size); > break; > - default: > + case JEDEC_SFDP: { > + unsigned int toread; > + if (emu_chip != EMULATE_MACRONIX_MX25L6436) > + break; > + if (writecnt < 5) Replace with if (writecnt < 4) > + break; > + offs = writearr[1] << 16 | writearr[2] << 8 | writearr[3]; Insert + /* SFDP expects one dummy byte after the address. */ + if (writecnt < 5) { + /* The dummy byte was not written, make sure it is read + * instead. Shifting and shortening the read array does + * achieve the goal. + */ + readarr += 5 - writecnt; + readcnt -= 5 - writecnt; + writecnt = 5; + } > + /* The response is shifted if more than 4 bytes are written. */ > + offs += writecnt - 5; > + /* The SFDP spec suggests wraparound is allowed as long as it > + * does not happen in a single continuous read. */ > + if (offs >= sizeof(sfdp_table)) { > + msg_pdbg("Wrapping the start address around the SFDP " > + "table boundary (using 0x%x instead of 0x%x)." > + "\n", > + (unsigned int)(offs % sizeof(sfdp_table)), > + offs); > + offs %= sizeof(sfdp_table); > + } > + toread = min(sizeof(sfdp_table) - offs, readcnt); > + memcpy(readarr, sfdp_table + offs, toread); > + if (toread < readcnt) > + msg_pdbg("Crossing the SFDP table boundary in a single " > + "continuous chunk produces undefined results " > + "after that point.\n"); > + break; > + } default: > /* No special response. */ > break; > } Regards, Carl-Daniel -- http://www.hailfinger.org/ From c-d.hailfinger.devel.2006 at gmx.net Sat May 5 21:15:01 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sat, 05 May 2012 21:15:01 +0200 Subject: [flashrom] [PATCH 1/1] Add manpage entry for pony_spi In-Reply-To: <1335828511-23079-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> References: <1335828511-23079-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> Message-ID: <4FA57C35.3000808@gmx.net> Am 01.05.2012 01:28 schrieb Michael Karcher: > Signed-off-by: Michael Karcher Thanks for the documentation patch. Acked-by: Carl-Daniel Hailfinger Regards, Carl-Daniel -- http://www.hailfinger.org/ From svn at flashrom.org Sat May 5 22:43:42 2012 From: svn at flashrom.org (repository service) Date: Sat, 05 May 2012 22:43:42 +0200 Subject: [flashrom] [commit] r1529 - trunk Message-ID: Author: hailfinger Date: Sat May 5 22:43:42 2012 New Revision: 1529 URL: http://flashrom.org/trac/flashrom/changeset/1529 Log: Function to enable the flash interface on w83697 family SuperIO chips. Not hooked up to the superio detection framework yet. Signed-off-by: David Borg Acked-by: Carl-Daniel Hailfinger Modified: trunk/board_enable.c Modified: trunk/board_enable.c ============================================================================== --- trunk/board_enable.c Wed May 2 22:08:01 2012 (r1528) +++ trunk/board_enable.c Sat May 5 22:43:42 2012 (r1529) @@ -380,6 +380,39 @@ w836xx_ext_leave(port); } +/** + * Enable MEMW# and set ROM size to max. + * Supported chips: + * W83697HF/F/HG, W83697SF/UF/UG + */ +void w83697xx_memw_enable(uint16_t port) +{ + w836xx_ext_enter(port); + if (!(sio_read(port, 0x24) & 0x02)) { /* Flash ROM enabled? */ + if((sio_read(port, 0x2A) & 0xF0) == 0xF0) { + + /* CR24 Bits 7 & 2 must be set to 0 enable the flash ROM */ + /* address segments 000E0000h ~ 000FFFFFh on W83697SF/UF/UG */ + /* These bits are reserved on W83697HF/F/HG */ + /* Shouldn't be needed though. */ + + /* CR28 Bit3 must be set to 1 to enable flash access to */ + /* FFE80000h ~ FFEFFFFFh on W83697SF/UF/UG. */ + /* This bit is reserved on W83697HF/F/HG which default to 0 */ + sio_mask(port, 0x28, 0x08, 0x08); + + /* Enable MEMW# and set ROM size select to max. (4M)*/ + sio_mask(port, 0x24, 0x28, 0x38); + + } else { + msg_perr("WARNING: Flash interface in use by GPIO!\n"); + } + } else { + msg_pinfo("BIOS ROM is disabled\n"); + } + w836xx_ext_leave(port); +} + /* * Suited for: * - EPoX EP-8K5A2: VIA KT333 + VT8235 From c-d.hailfinger.devel.2006 at gmx.net Sat May 5 22:44:43 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sat, 05 May 2012 22:44:43 +0200 Subject: [flashrom] [PATCH] W83697xx superio flash enable In-Reply-To: References: Message-ID: <4FA5913B.90109@gmx.net> Am 14.09.2010 00:53 schrieb David Borg: > Adds a function to enable the flash interface on w83697xx superio's. > Still needs to be hooked up to the superio detection framework though. > > > Signed-off-by: David Borg Acked-by: Carl-Daniel Hailfinger and committed in r1529. Sorry it took us so long to merge this. Regards, Carl-Daniel -- http://www.hailfinger.org/ From svn at flashrom.org Sat May 5 22:54:00 2012 From: svn at flashrom.org (repository service) Date: Sat, 05 May 2012 22:54:00 +0200 Subject: [flashrom] [commit] r1530 - trunk Message-ID: Author: mkarcher Date: Sat May 5 22:53:59 2012 New Revision: 1530 URL: http://flashrom.org/trac/flashrom/changeset/1530 Log: Add manpage entry for pony_spi Signed-off-by: Michael Karcher Acked-by: Carl-Daniel Hailfinger Modified: trunk/flashrom.8 Modified: trunk/flashrom.8 ============================================================================== --- trunk/flashrom.8 Sat May 5 22:43:42 2012 (r1529) +++ trunk/flashrom.8 Sat May 5 22:53:59 2012 (r1530) @@ -201,6 +201,9 @@ .BR "* rayer_spi" " (for SPI flash ROMs attached to a RayeR parport " or Xilinx DLC5 compatible cable) .sp +.BR "* pony_spi" " (for SPI flash ROMs attached to a SI-Prog serial port " +bitbanging adapter) +.sp .BR "* nicintel_spi" " (for SPI flash ROMs on Intel Gigabit network cards)" .sp .BR "* ogp_spi" " (for SPI flash ROMs on Open Graphics Project graphics card)" @@ -614,6 +617,26 @@ The schematic of the Xilinx DLC 5 was published at .BR "http://www.xilinx.com/itp/xilinx4/data/docs/pac/appendixb.html " . .SS +.BR "pony_spi " programmer +The serial port (like /dev/ttyS0, /dev/ttyUSB0 on Linux or COM3 on windows) is +specified using the mandatory +.B dev +parameter. The adapter type is selectable between SI-Prog (used for +SPI devices with PonyProg 2000) or a custom made serial bitbanging programmer +named "serbang". The optional +.B type +parameter accepts the values "si_prog" (default) or "serbang". +.sp +Information about the SI-Prog adapter can be found at +.BR "http://www.lancos.com/siprogsch.html " . +.sp +An example call to flashrom is +.sp +.B " flashrom \-p pony_spi:dev=/dev/ttyS0,type=serbang" +.sp +Please note that while USB-to-serial adapters work under certain circumstances, +this slows down operation considerably. +.SS .BR "ogp_spi " programmer The flash ROM chip to access must be specified with the .B rom From flashrom at mkarcher.dialup.fu-berlin.de Sat May 5 22:55:15 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Sat, 05 May 2012 22:55:15 +0200 Subject: [flashrom] [PATCH 1/1] Add manpage entry for pony_spi In-Reply-To: <4FA57C35.3000808@gmx.net> References: <1335828511-23079-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> <4FA57C35.3000808@gmx.net> Message-ID: <1336251315.5227.0.camel@localhost> On Sat, 2012-05-05 at 21:15 +0200, Carl-Daniel Hailfinger wrote: > Am 01.05.2012 01:28 schrieb Michael Karcher: > > Signed-off-by: Michael Karcher > > Thanks for the documentation patch. > Acked-by: Carl-Daniel Hailfinger Thanks for looking over it and acknowleding the patch. This is r1530 Regards, Michael Karcher From ailomaa at warpmail.net Fri May 4 08:10:01 2012 From: ailomaa at warpmail.net (Kaj Ailomaa) Date: Fri, 04 May 2012 08:10:01 +0200 Subject: [flashrom] ASRock N68C-S Message-ID: <4FA372B9.8000006@warpmail.net> http://www.asrock.com/mb/overview.asp?model=n68c-s%20ucc sudo flashrom -V flashrom v0.9.5.2-r1517 on Linux 3.2.15-lowlatency (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, 957M loops per second, 10 myus = 10 us, 100 myus = 98 us, 1000 myus = 1222 us, 10000 myus = 9878 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: "N68C-S" DMI string baseboard-version: " " DMI string chassis-type: "Desktop" Found chipset "NVIDIA MCP61" with PCI ID 10de:03e1. 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 Mapping NVIDIA MCP6x SPI at 0xfec80000, unaligned size 0x544. 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. WARNING: unexpected second chipset match: "NVIDIA MCP61" ignoring, please report lspci and board URL to flashrom at flashrom.org with 'CHIPSET: your board name' in the subject line. 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. lspci 00:00.0 RAM memory: NVIDIA Corporation MCP61 Host Bridge (rev a1) 00:01.0 ISA bridge: NVIDIA Corporation MCP61 LPC Bridge (rev a2) 00:01.1 SMBus: NVIDIA Corporation MCP61 SMBus (rev a2) 00:01.2 RAM memory: NVIDIA Corporation MCP61 Memory Controller (rev a2) 00:02.0 USB controller: NVIDIA Corporation MCP61 USB 1.1 Controller (rev a3) 00:02.1 USB controller: NVIDIA Corporation MCP61 USB 2.0 Controller (rev a3) 00:04.0 PCI bridge: NVIDIA Corporation MCP61 PCI bridge (rev a1) 00:05.0 Audio device: NVIDIA Corporation MCP61 High Definition Audio (rev a2) 00:06.0 IDE interface: NVIDIA Corporation MCP61 IDE (rev a2) 00:07.0 Bridge: NVIDIA Corporation MCP61 Ethernet (rev a2) 00:08.0 IDE interface: NVIDIA Corporation MCP61 SATA Controller (rev a2) 00:08.1 IDE interface: NVIDIA Corporation MCP61 SATA Controller (rev a2) 00:09.0 PCI bridge: NVIDIA Corporation MCP61 PCI Express bridge (rev a2) 00:0b.0 PCI bridge: NVIDIA Corporation MCP61 PCI Express bridge (rev a2) 00:0c.0 PCI bridge: NVIDIA Corporation MCP61 PCI Express bridge (rev a2) 00:18.0 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor HyperTransport Configuration 00:18.1 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Address Map 00:18.2 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor DRAM Controller 00:18.3 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Miscellaneous Control 00:18.4 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Link Control 01:0a.0 Network controller: Ralink corp. RT2561/RT61 rev B 802.11g 02:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2) 02:00.1 Audio device: NVIDIA Corporation High Definition Audio Controller (rev a1) 03:00.0 PCI bridge: Texas Instruments XIO2000(A)/XIO2200A PCI Express-to-PCI Bridge (rev 03) 04:00.0 FireWire (IEEE 1394): Texas Instruments XIO2200A IEEE-1394a-2000 Controller (PHY/Link) (rev 01) From wroberts at spamcop.net Sun May 6 00:12:31 2012 From: wroberts at spamcop.net (William Roberts) Date: Sat, 05 May 2012 15:12:31 -0700 Subject: [flashrom] flashrom -V Message-ID: <4FA5A5CF.1070102@spamcop.net> MSI K9N2 SLI Platinum NVIDIA nForce 750a Chipset AMD Phenom flashrom v0.9.5.2-r1517 on Linux 3.2.0-24-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, 751M loops per second, 10 myus = 10 us, 100 myus = 98 us, 1000 myus = 979 us, 10000 myus = 9809 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "MSI" DMI string system-product-name: "MS-7374" DMI string system-version: "1.0" DMI string baseboard-manufacturer: "MSI" DMI string baseboard-product-name: "MS-7374" DMI string baseboard-version: "1.0" DMI string chassis-type: "Desktop" Found chipset "NVIDIA MCP78S" with PCI ID 10de:075d. 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 0xf8d80000 Mapping NVIDIA MCP6x SPI at 0xf8d80000, 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 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 arne_woerner at yahoo.com Sun May 6 12:08:25 2012 From: arne_woerner at yahoo.com (AW) Date: Sun, 6 May 2012 03:08:25 -0700 (PDT) Subject: [flashrom] unsupported main board? Message-ID: <1336298905.48810.YahooMailNeo@web160202.mail.bf1.yahoo.com> Hi! I tried to write something fancy into those DMI lines (they currently say "to be filled by O.E.M.")... but flashrom doesnt seem to support my main board (verbose output is attached)... is there a trick to change those lines? thx. Bye Arne -------------- next part -------------- A non-text attachment was scrubbed... Name: flashrom.log Type: application/octet-stream Size: 22010 bytes Desc: not available URL: From c-d.hailfinger.devel.2006 at gmx.net Sun May 6 14:12:32 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sun, 06 May 2012 14:12:32 +0200 Subject: [flashrom] 80/100/132 column line width policy In-Reply-To: <4F60E119.8030808@gmx.net> References: <4F5CC9EC.9030500@gmx.net> <201203112200.q2BM0gZh011716@mail2.student.tuwien.ac.at> <1331587419.4591.36.camel@localhost> <4F60E119.8030808@gmx.net> Message-ID: <4FA66AB0.5070409@gmx.net> Unless someone protests, I'd say 112 columns are the new absolute hard limit, and there is no exception for anything except tables. Table compression (i.e. having a few rows with unaligned elements following a super-long element) is good as long as the majority of elements in each column are aligned. Those limits only affect new code for the next 2 months starting today, and if we're still happy with the limit after 2 months, the rest of the code will be changed gradually where it helps readability. Should we encounter code within the next 2 months where 112 columns are way worse than 120, the limit will be increased to 120 with no additional evaluation time period. Regards, Carl-Daniel -- http://www.hailfinger.org/ From stefan.tauner at student.tuwien.ac.at Sun May 6 14:18:32 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 14:18:32 +0200 Subject: [flashrom] [PATCH] ichspi reprogram_opcode_on_the_fly return code fix In-Reply-To: <4FA464A4.5020903@gmx.net> References: <4FA464A4.5020903@gmx.net> Message-ID: <201205061218.q46CIWOu013801@mail2.student.tuwien.ac.at> On Sat, 05 May 2012 01:22:12 +0200 Carl-Daniel Hailfinger wrote: > Fix ICH SPI reprogram_opcode_on_the_fly return code. i wouldnt call this a fix. > Helpful for SFDP debugging. > > Signed-off-by: Carl-Daniel Hailfinger > > Index: flashrom-sfdp_read_dummy_reduce_param_chunksize/ichspi.c > =================================================================== > --- flashrom-ichspi_invalid_length_consistent/ichspi.c (Revision 1528) > +++ flashrom-ichspi_invalid_length_consistent/ichspi.c (Arbeitskopie) > @@ -416,7 +416,10 @@ > msg_pdbg ("on-the-fly OPCODE (0x%02X) re-programmed, op-pos=%d\n", opcode, oppos); > return oppos; > } > - return -1; > + /* This case only happens if the writecnt/readcnt combination is > + * impossible to achieve on ICH SPI. > + */ > + return SPI_INVALID_LENGTH; > } imho it would make more sense to have less comments + a cleaner code flow instead ;) see attached patch. > static int find_opcode(OPCODES *op, uint8_t opcode) > @@ -1001,7 +1004,11 @@ > if (opcode_index == -1) { > if (!ichspi_lock) > opcode_index = reprogram_opcode_on_the_fly(cmd, writecnt, readcnt); > - if (opcode_index == -1) { > + if (opcode_index == SPI_INVALID_LENGTH) { > + msg_pdbg("OPCODE 0x%02x has unsupported length, will " > + "not execute.\n", cmd); > + return SPI_INVALID_LENGTH; > + } else if (opcode_index == -1) { > msg_pdbg("Invalid OPCODE 0x%02x, will not execute.\n", > cmd); > return SPI_INVALID_OPCODE; > > -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Refine-reprogram_opcode_on_the_fly-to-indicate-wrong.patch Type: text/x-patch Size: 2241 bytes Desc: not available URL: From stefan.tauner at student.tuwien.ac.at Sun May 6 14:41:42 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 14:41:42 +0200 Subject: [flashrom] unsupported main board? In-Reply-To: <1336298905.48810.YahooMailNeo@web160202.mail.bf1.yahoo.com> References: <1336298905.48810.YahooMailNeo@web160202.mail.bf1.yahoo.com> Message-ID: <201205061241.q46CfgIw003538@mail2.student.tuwien.ac.at> On Sun, 6 May 2012 03:08:25 -0700 (PDT) AW wrote: > I tried to write something fancy into those DMI lines (they currently say "to be filled by O.E.M.")... > but flashrom doesnt seem to support my main board (verbose output is attached)... > > is there a trick to change those lines? Hello AW, thanks for your report! We had a similar question a few days ago on IRC. I am quoting patrick georgi's answer: "[the string] very likely is generated programmatically at least to some degree - it's also likely that this piece of code is stored compressed (surrounded by other stuff)". you can of course try to search for the string in the plain binary dump of the firmware, but even if you are able to find it, you would probably have to write a corrected checksum too etc. Apart from that your log shows that the ME region is locked, which flashrom does not handle correctly yet. Hence i have added the board to our list of (un)supported boards (with an appropriate note) and will commit that later together with other small changes. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Sun May 6 15:33:30 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sun, 06 May 2012 15:33:30 +0200 Subject: [flashrom] [PATCH] ichspi reprogram_opcode_on_the_fly return code fix In-Reply-To: <201205061218.q46CIWOu013801@mail2.student.tuwien.ac.at> References: <4FA464A4.5020903@gmx.net> <201205061218.q46CIWOu013801@mail2.student.tuwien.ac.at> Message-ID: <4FA67DAA.8010105@gmx.net> Am 06.05.2012 14:18 schrieb Stefan Tauner: > imho it would make more sense to have less comments + a cleaner code > flow instead ;) see attached patch. > > Signed-off-by: Stefan Tauner Indeed. Acked-by: Carl-Daniel Hailfinger Regards, Carl-Daniel -- http://www.hailfinger.org/ From stefan.tauner at student.tuwien.ac.at Sun May 6 15:49:51 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 15:49:51 +0200 Subject: [flashrom] Log for palit n61s v2.0 on a MCP61 for read and write operations In-Reply-To: <1336157816.10196.4.camel@localhost> References: <1336157816.10196.4.camel@localhost> Message-ID: <201205061349.q46Dnpru004086@mail2.student.tuwien.ac.at> On Fri, 04 May 2012 22:56:56 +0400 user wrote: > Log for palit n61s v2.0 on a MCP61 for read and write operations Hello, thanks for your report! I have marked the board as tested and will commit that later together with other small changes. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sun May 6 16:00:03 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 16:00:03 +0200 Subject: [flashrom] SiS 748 on a Foxconn 748K7AA-ERS works In-Reply-To: <5AB55AEA-B598-4B4F-90CB-0C7C8AA46F83@gmail.com> References: <5AB55AEA-B598-4B4F-90CB-0C7C8AA46F83@gmail.com> Message-ID: <201205061400.q46E03Wp013521@mail2.student.tuwien.ac.at> On Wed, 2 May 2012 10:32:46 -0400 Timothy Ace wrote: > SiS 748 on a Foxconn 748K7AA-ERS flashes properly. Hello Timothy and thanks for your report. Could you please also send the output of flashrom -V on that machine? -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sun May 6 16:05:32 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 16:05:32 +0200 Subject: [flashrom] Found chipset "NVIDIA MCP65" with PCI ID 10de:0441. In-Reply-To: References: Message-ID: <201205061405.q46E5Ws8019400@mail2.student.tuwien.ac.at> On Wed, 2 May 2012 14:32:23 +0300 V?in? Kareinen wrote: > Hi, > > I send This verbose output from flashing my bios as requested in flashrom's > output. Hello and thanks for the verbose logs. Unfortunately the board (K9N Neo V2) has already been tested by someone else as noted on http://flashrom.org/Supported_hardware -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From uwe at hermann-uwe.de Sun May 6 16:07:03 2012 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Sun, 6 May 2012 16:07:03 +0200 Subject: [flashrom] 80/100/132 column line width policy In-Reply-To: <4FA66AB0.5070409@gmx.net> References: <4F5CC9EC.9030500@gmx.net> <201203112200.q2BM0gZh011716@mail2.student.tuwien.ac.at> <1331587419.4591.36.camel@localhost> <4F60E119.8030808@gmx.net> <4FA66AB0.5070409@gmx.net> Message-ID: <20120506140703.GJ5583@greenwood> On Sun, May 06, 2012 at 02:12:32PM +0200, Carl-Daniel Hailfinger wrote: > Unless someone protests, I'd say 112 columns are the new absolute hard > limit, and there is no exception for anything except tables. > Table compression (i.e. having a few rows with unaligned elements > following a super-long element) is good as long as the majority of > elements in each column are aligned. > > Those limits only affect new code for the next 2 months starting today, > and if we're still happy with the limit after 2 months, the rest of the > code will be changed gradually where it helps readability. > Should we encounter code within the next 2 months where 112 columns are > way worse than 120, the limit will be increased to 120 with no > additional evaluation time period. I for one would very much prefer the 79/80 character (soft) limit per default. No objections about breaking the rule for exception cases where this makes sense (large tables, long lines which cannot be split nicely for whatever reasons), but as a general guideline sticking to 79 char/line is a very good thing IMHO. Uwe. -- http://hermann-uwe.de | http://sigrok.org http://randomprojects.org | http://unmaintained-free-software.org From stefan.tauner at student.tuwien.ac.at Sun May 6 16:18:10 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 16:18:10 +0200 Subject: [flashrom] Inspiron 1420 Flashrom report In-Reply-To: <1739546912.623.1335902739906.JavaMail.woody@woody-laptop> References: <201205011642.q41GgL5U012617@mail2.student.tuwien.ac.at> <1739546912.623.1335902739906.JavaMail.woody@woody-laptop> Message-ID: <201205061418.q46EIAnP030825@mail2.student.tuwien.ac.at> On Tue, 1 May 2012 21:05:40 +0100 (BST) Pawe? Drewniak wrote: > I suspected that this might be the case and actually ran -E in between the second time. Apologies, I should have stated that an included the log - I had no idea about :S. > > Full log below. thanks for the clarification! i have added the laptop locally to our list and will commit it later. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sun May 6 16:47:49 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 16:47:49 +0200 Subject: [flashrom] Confirmed working motherboard In-Reply-To: <1335808480.12734.7.camel@garypc> References: <1335808480.12734.7.camel@garypc> Message-ID: <201205061447.q46ElnVB028056@mail2.student.tuwien.ac.at> On Mon, 30 Apr 2012 12:54:40 -0500 Gary wrote: > FYI > > The Asus P8P67 Pro B3 Rev. flashes properly. It's not on your list so I > thought I would let you know. I recently updated my BIOS to 3207 which > really sucked and messed up a lot of uefi features. I mean bad. No way > to downgrade via Asus. Downgrading 3207 back to 2303 worked without any > problems. Your software is a life saver! > > Some info: > flashrom v0.9.5.1-r1508 on Linux 3.4.0-rc5-ger (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... OK. > Found chipset "Intel P67". Enabling flash write... OK. > Found Macronix flash chip "MX25L3205" (4096 kB, SPI) at physical address > 0xffc00000. Hello Gary, thanks for your report! I have marked the mainboard as working and will commit that later together with other small changes. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sun May 6 16:52:11 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 16:52:11 +0200 Subject: [flashrom] Test report Biostar M7VIQ - Chip now detected, reading works In-Reply-To: References: Message-ID: <201205061452.q46EqBAc000625@mail2.student.tuwien.ac.at> On Mon, 30 Apr 2012 14:15:49 +0200 Gurken Papst wrote: > On Sat, Apr 28, 2012 at 01:24, Stefan Tauner > wrote: > > i have hacked it into something that might work for your board; the > > generalization can happen later. i will reply to this mail with two > > patches. please apply them to SVN HEAD and try to probe and read, but > > not erase/write yet please. > > Nice job, detection and reading are working. Dumps from UniFlash and > Flashrom are equal. > > Output of flashrom -V -r m7viq_flashrom.img: > > [?] > Do you need any additional information? carl-daniel is working on a generic patch that detects the winbond automatically and should then enable all similar boards (like your medion board). imho writing should work on your board too, so if there is a reason to upgrade the bios, feel free to test it. else please wait for carl-daniel's generic patch that he will send soonish (dont hold your breath ;) -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sun May 6 16:54:30 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 16:54:30 +0200 Subject: [flashrom] Test report Medion MD5000 V1.2 (MSI MS-6701) - Chip not detected In-Reply-To: References: Message-ID: <201205061454.q46EsUhC003023@mail2.student.tuwien.ac.at> On Mon, 30 Apr 2012 19:16:41 +0200 Gurken Papst wrote: > Winbond W49F002UP12B is not detected on MSI MS-6701 (Branded as Medion > MD5000 V1.2) with SiS 648/Winbond W83697HF. > > [?] Thanks! As written in the other thread this will hopefully be supported by a generic winbond patch, so i would rather just ignore the issue until then. if you *need* to update earlier i can create a separate patch that enables just this board. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sun May 6 16:56:54 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 16:56:54 +0200 Subject: [flashrom] Dell Vostro 3700 - flashrom report In-Reply-To: <1582170655.626.1335905473815.JavaMail.woody@woody-laptop> References: <1582170655.626.1335905473815.JavaMail.woody@woody-laptop> Message-ID: <201205061456.q46Euskr005081@mail2.student.tuwien.ac.at> On Tue, 1 May 2012 21:51:18 +0100 (BST) Pawe? Drewniak wrote: > Hi, > similar error to Thinkpad X1 - fails on reading. > thanks, i have added it to our list locally. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From svn at flashrom.org Sun May 6 17:11:26 2012 From: svn at flashrom.org (repository service) Date: Sun, 06 May 2012 17:11:26 +0200 Subject: [flashrom] [commit] r1531 - trunk Message-ID: Author: stefanct Date: Sun May 6 17:11:26 2012 New Revision: 1531 URL: http://flashrom.org/trac/flashrom/changeset/1531 Log: Refine reprogram_opcode_on_the_fly to indicate wrong readcnt/writecnt combinations. Signed-off-by: Stefan Tauner Acked-by: Carl-Daniel Hailfinger Modified: trunk/ichspi.c Modified: trunk/ichspi.c ============================================================================== --- trunk/ichspi.c Sat May 5 22:53:59 2012 (r1530) +++ trunk/ichspi.c Sun May 6 17:11:26 2012 (r1531) @@ -405,18 +405,16 @@ spi_type = SPI_OPCODE_TYPE_READ_NO_ADDRESS; else if (writecnt == 4) // and readcnt is > 0 spi_type = SPI_OPCODE_TYPE_READ_WITH_ADDRESS; - // else we have an invalid case, will be handled below + else // we have an invalid case + return SPI_INVALID_LENGTH; } - if (spi_type <= 3) { - int oppos=2; // use original JEDEC_BE_D8 offset - curopcodes->opcode[oppos].opcode = opcode; - curopcodes->opcode[oppos].spi_type = spi_type; - program_opcodes(curopcodes, 0); - oppos = find_opcode(curopcodes, opcode); - msg_pdbg ("on-the-fly OPCODE (0x%02X) re-programmed, op-pos=%d\n", opcode, oppos); - return oppos; - } - return -1; + int oppos = 2; // use original JEDEC_BE_D8 offset + curopcodes->opcode[oppos].opcode = opcode; + curopcodes->opcode[oppos].spi_type = spi_type; + program_opcodes(curopcodes, 0); + oppos = find_opcode(curopcodes, opcode); + msg_pdbg ("on-the-fly OPCODE (0x%02X) re-programmed, op-pos=%d\n", opcode, oppos); + return oppos; } static int find_opcode(OPCODES *op, uint8_t opcode) @@ -1001,7 +999,10 @@ if (opcode_index == -1) { if (!ichspi_lock) opcode_index = reprogram_opcode_on_the_fly(cmd, writecnt, readcnt); - if (opcode_index == -1) { + if (opcode_index == SPI_INVALID_LENGTH) { + msg_pdbg("OPCODE 0x%02x has unsupported length, will not execute.\n", cmd); + return SPI_INVALID_LENGTH; + } else if (opcode_index == -1) { msg_pdbg("Invalid OPCODE 0x%02x, will not execute.\n", cmd); return SPI_INVALID_OPCODE; From gurken.papst at gmail.com Sun May 6 17:16:30 2012 From: gurken.papst at gmail.com (Gurken Papst) Date: Sun, 6 May 2012 17:16:30 +0200 Subject: [flashrom] Test report Medion MD5000 V1.2 (MSI MS-6701) - Chip not detected In-Reply-To: <201205061454.q46EsUhC003023@mail2.student.tuwien.ac.at> References: <201205061454.q46EsUhC003023@mail2.student.tuwien.ac.at> Message-ID: On Sun, May 6, 2012 at 4:54 PM, Stefan Tauner wrote: > As written in the other thread this will hopefully be supported by a > generic winbond patch, so i would rather just ignore the issue until > then. if you *need* to update earlier i can create a separate patch that > enables just this board. Thanks, but I was just experimenting with flashrom after your patch for my other board worked and thought, I could also try it on this board, which also was not listed in your compatibility table. There is no real need for me to get it working here, just wanted to give feedback as requested in flashrom's output. Feel free to handle this issue with any priority you consider as appropriate. From stefan.tauner at student.tuwien.ac.at Sun May 6 17:19:08 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 17:19:08 +0200 Subject: [flashrom] Winbond W39V040A seems working In-Reply-To: References: <4F8A1102.50907@gmail.com> <201204271441.q3REfHwZ012217@mail2.student.tuwien.ac.at> Message-ID: <201205061519.q46FJ8Yu026402@mail2.student.tuwien.ac.at> On Sat, 28 Apr 2012 08:00:02 -0700 Svetoslav Trochev wrote: > Hi > > > Abit has been bankrupt for quite some time and they eventually shut > > down their FTP server. I have backed it up, but apparently the > > directories for the NF7 are empty, sorry. :/ > > Excuse me for interrupting the thread with unrelated info, but because > Istv?n problem and Abit shutting down their FTP I thing my info could > be useful to someone in the future. > > I scavenged a FWH chip 82802AB from ABIT SE6 board. I am not 100% > sure, but I believe this board worked just fine before I replaced it > long time ago. Never the less I made backup copy of the BIOS: ABIT SE6 > - Award 6.00PG - ABIT SoftMenu II.bin > If Stefan don't have better copy I will be happy to "donate" mine. you cant just exchange any remotely similar firmware binary with another one (well... you can but the machine wont boot). -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sun May 6 17:27:24 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 17:27:24 +0200 Subject: [flashrom] Winbond W39V040A seems working In-Reply-To: <4F9BD70A.3010208@gmail.com> References: <4F8A1102.50907@gmail.com> <201204271441.q3REfHwZ012217@mail2.student.tuwien.ac.at> <4F9ACE0E.9000702@gmail.com> <201204271904.q3RJ3x93007083@mail2.student.tuwien.ac.at> <4F9BD70A.3010208@gmail.com> Message-ID: <201205061527.q46FRObB003128@mail2.student.tuwien.ac.at> On Sat, 28 Apr 2012 13:39:54 +0200 Istv?n R?tall?r wrote: > > > 2012-04-27 21:03 keltez?ssel, Stefan Tauner ?rta: hello again! so basically flashrom works as intended on the abit nf7? you have used the wrong file the first time, but were able to recover it with hot flashing. which file did you use then? the backup, the content of the flash chip of the second board or some other file? do you know the exact revision of the board? there should be a sticker near the pci slots with that information on it. Hi, > yes, flashrom works correctly. My problem was caused due to my misinterpretation: I supposed the file named nf7_28.bin providing users to flash motherboard BIOS is a simple binary dump. However its structure didn't match my actual BIOS i have read back, I still suppused it must be good. This wrong idea was supported by two facts: > 1.? I found from 3 different sources with the same binary content (nf7_28.bin) > 2.? On my computer I found an old and forgotten file named Nf72_15.bin - int was kept in a directory named bios. > > Examining these files I found at 0x7E000 in both file a string: Award BootBlock BIOS and what is strange, my actual bios - read back from the chip - also consisted this string at the same address. So against of the different page0, I said myself it must be a good BIOS. > But it was a killer.... > > Then we recovered my computer as follows: > - from another NF7 motherboard inserted a BIOS chip into my motherboard and booted. > - usind flashrom, saved the BIOS content into a file called abit.bin > - Without shitching power off, removed the good BIOS chip and inserted mine. > - usind flashrom again, wrote the chip with the abit.bin file > - verifyed - it was ok > - after rebooting my motherboard was operating > > It means flasrom was verified for correct reading, writing and even verify was proven. To let you to examine my theory I have attached 3 files: > Nf72_15.bin is an old bios, found on my computer. Probably it was even used in the old times, but on classic way, i.e. booting from floppy and using the suggested exe file to download this binary dump. > nf7_28.bin is probably an appropriate BIOS, but you MUST use the suggested exe file for fresh up the chip. > If I am right, it means the *.bin files are NOT a straighforward binary dumps, bot are somehow mixed up to be coded. Meanwhile, the suggested exe file acts not only a programmer but it even decodes the scrambled file. > The attached abit.bin is my actual bios, which was read by flasrom from another chip and was written back to my chip. > > So my conclusion is: users should be careful downloading *.bin files found on the internet, because they seem to be coded and your innocent flashrom will be suspected if somebody kills his motherboard - as I did. Flashrom is correct, but if it fed by stupidity, it writes stupidity - so simple. > > The revision code is NF7-S v2.0 > Cheers, Istvan > > Non-text attachments have been stripped: > nf7_28.bin at http://paste.flashrom.org/view.php?id=1177 > Nf72_15.bin at http://paste.flashrom.org/view.php?id=1178 > abit.bin at http://paste.flashrom.org/view.php?id=1179 ok, everything's clear now. it is very important to use the correct binary for any mainboard respectively. i have archived the files for the nf7-s 2.0. the last published revision "NF7D_27.BIN" is contained in a file named "nf7d27.exe" and has a md5sum of 55b29d54d8095c3ac94c8d25fa1772fe. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Sun May 6 17:28:37 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 17:28:37 +0200 Subject: [flashrom] [PATCH] ichspi reprogram_opcode_on_the_fly return code fix In-Reply-To: <4FA67DAA.8010105@gmx.net> References: <4FA464A4.5020903@gmx.net> <201205061218.q46CIWOu013801@mail2.student.tuwien.ac.at> <4FA67DAA.8010105@gmx.net> Message-ID: <201205061528.q46FSbh9004195@mail2.student.tuwien.ac.at> On Sun, 06 May 2012 15:33:30 +0200 Carl-Daniel Hailfinger wrote: > Am 06.05.2012 14:18 schrieb Stefan Tauner: > > imho it would make more sense to have less comments + a cleaner code > > flow instead ;) see attached patch. > > > > Signed-off-by: Stefan Tauner > > Indeed. > Acked-by: Carl-Daniel Hailfinger :) thank you. committed in r1531 -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From svn at flashrom.org Sun May 6 19:03:40 2012 From: svn at flashrom.org (repository service) Date: Sun, 06 May 2012 19:03:40 +0200 Subject: [flashrom] [commit] r1532 - trunk Message-ID: Author: stefanct Date: Sun May 6 19:03:40 2012 New Revision: 1532 URL: http://flashrom.org/trac/flashrom/changeset/1532 Log: dummyflasher: Add a status register to SPI chips. Signed-off-by: Stefan Tauner Acked-by: Carl-Daniel Hailfinger Modified: trunk/dummyflasher.c trunk/flashrom.8 trunk/it87spi.c trunk/spi.h trunk/spi25.c Modified: trunk/dummyflasher.c ============================================================================== --- trunk/dummyflasher.c Sun May 6 17:11:26 2012 (r1531) +++ trunk/dummyflasher.c Sun May 6 19:03:40 2012 (r1532) @@ -21,6 +21,7 @@ #include #include #include +#include #include "flash.h" #include "chipdrivers.h" #include "programmer.h" @@ -61,6 +62,7 @@ unsigned char spi_ignorelist[256]; int spi_blacklist_size = 0; int spi_ignorelist_size = 0; +static uint8_t emu_status = 0; #endif #endif @@ -133,6 +135,9 @@ char *bustext = NULL; char *tmp = NULL; int i; +#if EMULATE_SPI_CHIP + char *status = NULL; +#endif #if EMULATE_CHIP struct stat image_stat; #endif @@ -309,6 +314,23 @@ return 1; } +#ifdef EMULATE_SPI_CHIP + status = extract_programmer_param("spi_status"); + if (status) { + char *endptr; + errno = 0; + emu_status = strtoul(status, &endptr, 0); + free(status); + if (errno != 0 || status == endptr) { + msg_perr("Error: initial status register specified, " + "but the value could not be converted.\n"); + return 1; + } + msg_pdbg("Initial status register is set to 0x%02x.\n", + emu_status); + } +#endif + msg_pdbg("Filling fake flash chip with 0xff, size %i\n", emu_chip_size); memset(flashchip_contents, 0xff, emu_chip_size); @@ -429,7 +451,6 @@ { unsigned int offs, i; static int unsigned aai_offs; - static int aai_active = 0; if (writecnt == 0) { msg_perr("No command sent to the chip!\n"); @@ -453,6 +474,17 @@ return 0; } } + + if (emu_max_aai_size && (emu_status & SPI_SR_AAI)) { + if (writearr[0] != JEDEC_AAI_WORD_PROGRAM && + writearr[0] != JEDEC_WRDI && + writearr[0] != JEDEC_RDSR) { + msg_perr("Forbidden opcode (0x%02x) attempted during " + "AAI sequence!\n", writearr[0]); + return 0; + } + } + switch (writearr[0]) { case JEDEC_RES: if (emu_chip != EMULATE_ST_M25P10_RES) @@ -481,10 +513,23 @@ if (readcnt > 2) readarr[2] = 0x4a; break; - case JEDEC_RDSR: - memset(readarr, 0, readcnt); - if (aai_active) - memset(readarr, 1 << 6, readcnt); + case JEDEC_RDSR: { + memset(readarr, emu_status, readcnt); + break; + } + /* FIXME: this should be chip-specific. */ + case JEDEC_EWSR: + case JEDEC_WREN: + emu_status |= SPI_SR_WEL; + break; + case JEDEC_WRSR: + if (!(emu_status & SPI_SR_WEL)) { + msg_perr("WRSR attempted, but WEL is 0!\n"); + break; + } + /* FIXME: add some reasonable simulation of the busy flag */ + emu_status = writearr[1] & ~SPI_SR_WIP; + msg_pdbg2("WRSR wrote 0x%02x.\n", emu_status); break; case JEDEC_READ: offs = writearr[1] << 16 | writearr[2] << 8 | writearr[3]; @@ -510,7 +555,7 @@ case JEDEC_AAI_WORD_PROGRAM: if (!emu_max_aai_size) break; - if (!aai_active) { + if (!(emu_status & SPI_SR_AAI)) { if (writecnt < JEDEC_AAI_WORD_PROGRAM_OUTSIZE) { msg_perr("Initial AAI WORD PROGRAM size too " "short!\n"); @@ -521,7 +566,7 @@ "long!\n"); return 1; } - aai_active = 1; + emu_status |= SPI_SR_AAI; aai_offs = writearr[1] << 16 | writearr[2] << 8 | writearr[3]; /* Truncate to emu_chip_size. */ @@ -544,9 +589,8 @@ } break; case JEDEC_WRDI: - if (!emu_max_aai_size) - break; - aai_active = 0; + if (emu_max_aai_size) + emu_status &= ~SPI_SR_AAI; break; case JEDEC_SE: if (!emu_jedec_se_size) @@ -633,6 +677,8 @@ /* No special response. */ break; } + if (writearr[0] != JEDEC_WREN && writearr[0] != JEDEC_EWSR) + emu_status &= ~SPI_SR_WEL; return 0; } #endif Modified: trunk/flashrom.8 ============================================================================== --- trunk/flashrom.8 Sun May 6 17:11:26 2012 (r1531) +++ trunk/flashrom.8 Sun May 6 19:03:40 2012 (r1532) @@ -495,6 +495,15 @@ command 0x03 (READ) and command 0x02 (WRITE). commandlist may be up to 512 characters (256 commands) long. Implementation note: flashrom won't detect an error during command execution. +.sp +.TP +.B SPI status register +.sp +You can specify the initial content of the chip's status register with the +.sp +.B " flashrom -p dummy:spi_status=content" +.sp +syntax where content is an 8-bit hexadecimal value. .SS .BR "nic3com" , " nicrealtek" , " nicsmc1211" , " nicnatsemi" , " nicintel\ " , " nicintel_spi" , " gfxnvidia" , " ogp_spi" , " drkaiser" , " satasii\ Modified: trunk/it87spi.c ============================================================================== --- trunk/it87spi.c Sun May 6 17:11:26 2012 (r1531) +++ trunk/it87spi.c Sun May 6 19:03:40 2012 (r1532) @@ -335,7 +335,7 @@ /* Wait until the Write-In-Progress bit is cleared. * This usually takes 1-10 ms, so wait in 1 ms steps. */ - while (spi_read_status_register(flash) & JEDEC_RDSR_BIT_WIP) + while (spi_read_status_register(flash) & SPI_SR_WIP) programmer_delay(1000); return 0; } Modified: trunk/spi.h ============================================================================== --- trunk/spi.h Sun May 6 17:11:26 2012 (r1531) +++ trunk/spi.h Sun May 6 19:03:40 2012 (r1532) @@ -95,7 +95,11 @@ #define JEDEC_RDSR 0x05 #define JEDEC_RDSR_OUTSIZE 0x01 #define JEDEC_RDSR_INSIZE 0x01 -#define JEDEC_RDSR_BIT_WIP (0x01 << 0) + +/* Status Register Bits */ +#define SPI_SR_WIP (0x01 << 0) +#define SPI_SR_WEL (0x01 << 1) +#define SPI_SR_AAI (0x01 << 6) /* Write Status Enable */ #define JEDEC_EWSR 0x50 Modified: trunk/spi25.c ============================================================================== --- trunk/spi25.c Sun May 6 17:11:26 2012 (r1531) +++ trunk/spi25.c Sun May 6 19:03:40 2012 (r1532) @@ -479,7 +479,7 @@ * This usually takes 1-85 s, so wait in 1 s steps. */ /* FIXME: We assume spi_read_status_register will never fail. */ - while (spi_read_status_register(flash) & JEDEC_RDSR_BIT_WIP) + while (spi_read_status_register(flash) & SPI_SR_WIP) programmer_delay(1000 * 1000); /* FIXME: Check the status register for errors. */ return 0; @@ -515,7 +515,7 @@ * This usually takes 1-85 s, so wait in 1 s steps. */ /* FIXME: We assume spi_read_status_register will never fail. */ - while (spi_read_status_register(flash) & JEDEC_RDSR_BIT_WIP) + while (spi_read_status_register(flash) & SPI_SR_WIP) programmer_delay(1000 * 1000); /* FIXME: Check the status register for errors. */ return 0; @@ -557,7 +557,7 @@ /* Wait until the Write-In-Progress bit is cleared. * This usually takes 100-4000 ms, so wait in 100 ms steps. */ - while (spi_read_status_register(flash) & JEDEC_RDSR_BIT_WIP) + while (spi_read_status_register(flash) & SPI_SR_WIP) programmer_delay(100 * 1000); /* FIXME: Check the status register for errors. */ return 0; @@ -604,7 +604,7 @@ /* Wait until the Write-In-Progress bit is cleared. * This usually takes 100-4000 ms, so wait in 100 ms steps. */ - while (spi_read_status_register(flash) & JEDEC_RDSR_BIT_WIP) + while (spi_read_status_register(flash) & SPI_SR_WIP) programmer_delay(100 * 1000); /* FIXME: Check the status register for errors. */ return 0; @@ -649,7 +649,7 @@ /* Wait until the Write-In-Progress bit is cleared. * This usually takes 100-4000 ms, so wait in 100 ms steps. */ - while (spi_read_status_register(flash) & JEDEC_RDSR_BIT_WIP) + while (spi_read_status_register(flash) & SPI_SR_WIP) programmer_delay(100 * 1000); /* FIXME: Check the status register for errors. */ return 0; @@ -692,7 +692,7 @@ /* Wait until the Write-In-Progress bit is cleared. * This usually takes 15-800 ms, so wait in 10 ms steps. */ - while (spi_read_status_register(flash) & JEDEC_RDSR_BIT_WIP) + while (spi_read_status_register(flash) & SPI_SR_WIP) programmer_delay(10 * 1000); /* FIXME: Check the status register for errors. */ return 0; @@ -805,7 +805,7 @@ * 100 ms, then wait in 10 ms steps until a total of 5 s have elapsed. */ programmer_delay(100 * 1000); - while (spi_read_status_register(flash) & JEDEC_RDSR_BIT_WIP) { + while (spi_read_status_register(flash) & SPI_SR_WIP) { if (++i > 490) { msg_cerr("Error: WIP bit after WRSR never cleared\n"); return TIMEOUT_ERROR; @@ -1035,7 +1035,7 @@ rc = spi_nbyte_program(flash, starthere + j, buf + starthere - start + j, towrite); if (rc) break; - while (spi_read_status_register(flash) & JEDEC_RDSR_BIT_WIP) + while (spi_read_status_register(flash) & SPI_SR_WIP) programmer_delay(10); } if (rc) @@ -1062,7 +1062,7 @@ result = spi_byte_program(flash, i, buf[i - start]); if (result) return 1; - while (spi_read_status_register(flash) & JEDEC_RDSR_BIT_WIP) + while (spi_read_status_register(flash) & SPI_SR_WIP) programmer_delay(10); } @@ -1157,7 +1157,7 @@ */ return result; } - while (spi_read_status_register(flash) & JEDEC_RDSR_BIT_WIP) + while (spi_read_status_register(flash) & SPI_SR_WIP) programmer_delay(10); /* We already wrote 2 bytes in the multicommand step. */ @@ -1169,7 +1169,7 @@ cmd[2] = buf[pos++ - start]; spi_send_command(flash, JEDEC_AAI_WORD_PROGRAM_CONT_OUTSIZE, 0, cmd, NULL); - while (spi_read_status_register(flash) & JEDEC_RDSR_BIT_WIP) + while (spi_read_status_register(flash) & SPI_SR_WIP) programmer_delay(10); } From stefan.tauner at student.tuwien.ac.at Sun May 6 19:05:23 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sun, 6 May 2012 19:05:23 +0200 Subject: [flashrom] [PATCH] dummyflasher: Add a status register to SPI chips. In-Reply-To: <4FA431CB.7090002@gmx.net> References: <4F2BBE83.8040200@gmx.net> <1329268402-26554-1-git-send-email-stefan.tauner@student.tuwien.ac.at> <4FA431CB.7090002@gmx.net> Message-ID: <201205061705.q46H5Nsc005237@mail2.student.tuwien.ac.at> On Fri, 04 May 2012 21:45:15 +0200 Carl-Daniel Hailfinger wrote: > Am 15.02.2012 02:13 schrieb Stefan Tauner: > > TODO: man page > > Yes, that would be nice. *is* nice (and hopefully correct too ;) > > > Signed-off-by: Stefan Tauner > > Acked-by: Carl-Daniel Hailfinger > even without the man page. It's a helpful feature, and maybe someone > else has time to write a man page entry for it. If you want to write the > man page entry, more power to you! i have changed the parameter name to spi_status as discussed on irc to better match the existent spi parameters and committed in r1532, thanks for the review. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Sun May 6 20:59:53 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sun, 06 May 2012 20:59:53 +0200 Subject: [flashrom] [PATCH 1/2] W83697xx superio flash enable In-Reply-To: <1335569453-19086-1-git-send-email-stefan.tauner@student.tuwien.ac.at> References: <201204272324.q3RNOgif008474@mail2.student.tuwien.ac.at> <1335569453-19086-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Message-ID: <4FA6CA29.5070800@gmx.net> Am 28.04.2012 01:30 schrieb Stefan Tauner: > From: David Borg > > Adds a function to enable the flash interface on w83697xx superio's. > Still needs to be hooked up to the superio detection framework though. > > Signed-off-by: David Borg > Signed-off-by: Stefan Tauner committed in r1529. Regards, Carl-Daniel -- http://www.hailfinger.org/ From c-d.hailfinger.devel.2006 at gmx.net Sun May 6 21:13:29 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sun, 06 May 2012 21:13:29 +0200 Subject: [flashrom] [PATCH] Add Winbond SuperI/O detection In-Reply-To: <4C2B5A9F.20302@gmx.net> References: <4C2B34BD.8040505@gmx.net> <1277902132.6294.4.camel@aquila> <4C2B5A9F.20302@gmx.net> Message-ID: <4FA6CD59.3020800@gmx.net> New version, this time with extremely paranoid checks. Please note that this is only SuperI/O detection, we don't call any write enable functions. Signed-off-by: Carl-Daniel Hailfinger Index: flashrom-winbond_superio_detect/internal.c =================================================================== --- flashrom-winbond_superio_detect/internal.c (Revision 1530) +++ flashrom-winbond_superio_detect/internal.c (Arbeitskopie) @@ -101,12 +101,14 @@ #if defined(__i386__) || defined(__x86_64__) void probe_superio(void) { + probe_superio_winbond(); + /* ITE probe causes SMSC LPC47N217 to power off the serial UART. + * Always probe for SMSC first, and if a SMSC Super I/O is detected + * at a given I/O port, do _not_ probe that port with the ITE probe. + * This means SMSC probing must be done before ITE probing. + */ + //probe_superio_smsc(); probe_superio_ite(); -#if 0 - /* Winbond Super I/O code is not yet available. */ - if (superio.vendor == SUPERIO_VENDOR_NONE) - superio = probe_superio_winbond(); -#endif } int superio_count = 0; Index: flashrom-winbond_superio_detect/programmer.h =================================================================== --- flashrom-winbond_superio_detect/programmer.h (Revision 1530) +++ flashrom-winbond_superio_detect/programmer.h (Arbeitskopie) @@ -246,6 +246,7 @@ /* board_enable.c */ void w836xx_ext_enter(uint16_t port); void w836xx_ext_leave(uint16_t port); +void probe_superio_winbond(void); int it8705f_write_enable(uint8_t port); uint8_t sio_read(uint16_t port, uint8_t reg); void sio_write(uint16_t port, uint8_t reg, uint8_t data); @@ -290,6 +291,7 @@ extern int superio_count; #define SUPERIO_VENDOR_NONE 0x0 #define SUPERIO_VENDOR_ITE 0x1 +#define SUPERIO_VENDOR_WINBOND 0x2 #endif #if NEED_PCI == 1 struct pci_dev *pci_dev_find_filter(struct pci_filter filter); Index: flashrom-winbond_superio_detect/board_enable.c =================================================================== --- flashrom-winbond_superio_detect/board_enable.c (Revision 1530) +++ flashrom-winbond_superio_detect/board_enable.c (Arbeitskopie) @@ -67,6 +67,17 @@ OUTB(tmp | (data & mask), port + 1); } +/* Winbond W83697 documentation indicates that the index register has to be written for each access. */ +void sio_mask_alzheimer(uint16_t port, uint8_t reg, uint8_t data, uint8_t mask) +{ + uint8_t tmp; + + OUTB(reg, port); + tmp = INB(port + 1) & ~mask; + OUTB(reg, port); + OUTB(tmp | (data & mask), port + 1); +} + /* Not used yet. */ #if 0 static int enable_flash_decode_superio(void) @@ -163,6 +174,7 @@ WINBOND_W83627HF_ID = 0x52, WINBOND_W83627EHF_ID = 0x88, WINBOND_W83627THF_ID = 0x82, + WINBOND_W83697HF_ID = 0x60, }; static const struct winbond_mux w83627hf_port2_mux[8] = { @@ -227,28 +239,117 @@ {WINBOND_W83627THF_ID, ARRAY_SIZE(w83627thf), w83627thf}, }; -/* - * Detects which Winbond Super I/O is responding at the given base address, - * but takes no effort to make sure the chip is really a Winbond Super I/O. +#define WINBOND_SUPERIO_PORT1 0x2e +#define WINBOND_SUPERIO_PORT2 0x4e + +/* We don't really care about the hardware monitor, but it offers better (more specific) device ID info than + * the simple device ID in the normal configuration registers. + * Note: This function expects to be called while the Super I/O is in config mode. */ -static const struct winbond_chip *winbond_superio_detect(uint16_t base) +static uint8_t w836xx_deviceid_hwmon(uint16_t sio_port) { - uint8_t chipid; - const struct winbond_chip *chip = NULL; - int i; + uint16_t hwmport; + uint16_t hwm_vendorid; + uint8_t hwm_deviceid; - w836xx_ext_enter(base); - chipid = sio_read(base, 0x20); + sio_write(sio_port, 0x07, 0x0b); /* Select LDN 0xb (HWM). */ + if ((sio_read(sio_port, 0x30) & (1 << 0)) != (1 << 0)) { + msg_pinfo("W836xx hardware monitor disabled or does not exist.\n"); + return 0; + } + /* Get HWM base address (stored in LDN 0xb, index 0x60/0x61). */ + hwmport = sio_read(sio_port, 0x60) << 8; + hwmport |= sio_read(sio_port, 0x61); + /* HWM address register = HWM base address + 5. */ + hwmport += 5; + msg_pdbg2("W836xx Hardware Monitor at port %04x\n", hwmport); + /* FIXME: This busy check should happen before each HWM access. */ + if (INB(hwmport) & 0x80) { + msg_pinfo("W836xx hardware monitor busy, ignoring it.\n"); + return 0; + } + /* Set HBACS=1. */ + sio_mask_alzheimer(hwmport, 0x4e, 0x80, 0x80); + /* Read upper byte of vendor ID. */ + OUTB(0x4f, hwmport); + hwm_vendorid = INB(hwmport + 1) << 8; + /* Set HBACS=0. */ + sio_mask_alzheimer(hwmport, 0x4e, 0x00, 0x80); + /* Read lower byte of vendor ID. */ + OUTB(0x4f, hwmport); + hwm_vendorid |= INB(hwmport + 1); + if (hwm_vendorid != 0x5ca3) { + msg_pinfo("W836xx hardware monitor vendor ID weirdness: expected 0x5ca3, got %04x\n", + hwm_vendorid); + return 0; + } + /* Set Bank=0. */ + sio_mask_alzheimer(hwmport, 0x4e, 0x00, 0x07); + /* Read "chip" ID. We call this one the device ID. */ + OUTB(0x58, hwmport); + hwm_deviceid = INB(hwmport + 1); + return hwm_deviceid; +} - for (i = 0; i < ARRAY_SIZE(winbond_chips); i++) { - if (winbond_chips[i].device_id == chipid) { - chip = &winbond_chips[i]; +void probe_superio_winbond(void) +{ + struct superio s = {}; + uint16_t winbond_ports[] = {WINBOND_SUPERIO_PORT1, WINBOND_SUPERIO_PORT2, 0}; + uint16_t *i = winbond_ports; + uint8_t tmp; + + s.vendor = SUPERIO_VENDOR_WINBOND; + for (; *i; i++) { + s.port = *i; + w836xx_ext_enter(s.port); + s.model = sio_read(s.port, 0x20); + switch (s.model) { + case WINBOND_W83627HF_ID: + case WINBOND_W83627EHF_ID: + case WINBOND_W83627THF_ID: + msg_pdbg("Found Winbond Super I/O, id %02hx\n", s.model); + register_superio(s); break; + case WINBOND_W83697HF_ID: + /* This code is extremely paranoid. */ + tmp = sio_read(s.port, 0x26) & 0x40; + if (((tmp == 0x00) && (s.port != WINBOND_SUPERIO_PORT1)) || + ((tmp == 0x40) && (s.port != WINBOND_SUPERIO_PORT2))) { + msg_pdbg("Winbond Super I/O probe weirdness: Port mismatch for ID " + "%02x at port %04x\n", s.model, s.port); + break; + } + tmp = w836xx_deviceid_hwmon(s.port); + if (!tmp) { + msg_pdbg("Probably not a Winbond Super I/O\n"); + break; + } + if (tmp != s.model) { + msg_pinfo("W83 series hardware monitor device ID weirdness: expected %02x, " + "got %02x\n", WINBOND_W83697HF_ID, tmp); + break; + } + msg_pinfo("Found Winbond Super I/O, id %02hx\n", s.model); + register_superio(s); + break; } + w836xx_ext_leave(s.port); } + return; +} - w836xx_ext_leave(base); - return chip; +static const struct winbond_chip *winbond_superio_chipdef(void) +{ + int i, j; + + for (i = 0; i < superio_count; i++) { + if (superios[i].vendor != SUPERIO_VENDOR_WINBOND) + continue; + for (j = 0; j < ARRAY_SIZE(winbond_chips); j++) + if (winbond_chips[j].device_id == superios[i].model) + return &winbond_chips[j]; + } + return NULL; } /* @@ -264,7 +365,7 @@ int port = pin / 10; int bit = pin % 10; - chip = winbond_superio_detect(base); + chip = winbond_superio_chipdef(); if (!chip) { msg_perr("\nERROR: No supported Winbond Super I/O found\n"); return -1; -- http://www.hailfinger.org/ From c-d.hailfinger.devel.2006 at gmx.net Sun May 6 23:51:21 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sun, 06 May 2012 23:51:21 +0200 Subject: [flashrom] [PATCH] Add Winbond SuperI/O detection In-Reply-To: <4FA6CD59.3020800@gmx.net> References: <4C2B34BD.8040505@gmx.net> <1277902132.6294.4.camel@aquila> <4C2B5A9F.20302@gmx.net> <4FA6CD59.3020800@gmx.net> Message-ID: <4FA6F259.6050403@gmx.net> Am 06.05.2012 21:13 schrieb Carl-Daniel Hailfinger: > New version, this time with extremely paranoid checks. Even more paranoid checks... and we now handle IT8707F and IT8710F in the Winbond detection routine. > Please note that this is only SuperI/O detection, we don't call any > write enable functions. IT8707F and IT8710F write enable needs to be hooked up in it87spi.c, the W836xx write enable functions need to be hooked up somewhere. Signed-off-by: Carl-Daniel Hailfinger Index: flashrom-winbond_superio_detect/internal.c =================================================================== --- flashrom-winbond_superio_detect/internal.c (Revision 1530) +++ flashrom-winbond_superio_detect/internal.c (Arbeitskopie) @@ -101,12 +101,14 @@ #if defined(__i386__) || defined(__x86_64__) void probe_superio(void) { + probe_superio_winbond(); + /* ITE probe causes SMSC LPC47N217 to power off the serial UART. + * Always probe for SMSC first, and if a SMSC Super I/O is detected + * at a given I/O port, do _not_ probe that port with the ITE probe. + * This means SMSC probing must be done before ITE probing. + */ + //probe_superio_smsc(); probe_superio_ite(); -#if 0 - /* Winbond Super I/O code is not yet available. */ - if (superio.vendor == SUPERIO_VENDOR_NONE) - superio = probe_superio_winbond(); -#endif } int superio_count = 0; Index: flashrom-winbond_superio_detect/programmer.h =================================================================== --- flashrom-winbond_superio_detect/programmer.h (Revision 1530) +++ flashrom-winbond_superio_detect/programmer.h (Arbeitskopie) @@ -246,6 +246,7 @@ /* board_enable.c */ void w836xx_ext_enter(uint16_t port); void w836xx_ext_leave(uint16_t port); +void probe_superio_winbond(void); int it8705f_write_enable(uint8_t port); uint8_t sio_read(uint16_t port, uint8_t reg); void sio_write(uint16_t port, uint8_t reg, uint8_t data); @@ -290,6 +291,7 @@ extern int superio_count; #define SUPERIO_VENDOR_NONE 0x0 #define SUPERIO_VENDOR_ITE 0x1 +#define SUPERIO_VENDOR_WINBOND 0x2 #endif #if NEED_PCI == 1 struct pci_dev *pci_dev_find_filter(struct pci_filter filter); Index: flashrom-winbond_superio_detect/board_enable.c =================================================================== --- flashrom-winbond_superio_detect/board_enable.c (Revision 1530) +++ flashrom-winbond_superio_detect/board_enable.c (Arbeitskopie) @@ -67,6 +67,17 @@ OUTB(tmp | (data & mask), port + 1); } +/* Winbond W83697 documentation indicates that the index register has to be written for each access. */ +void sio_mask_alzheimer(uint16_t port, uint8_t reg, uint8_t data, uint8_t mask) +{ + uint8_t tmp; + + OUTB(reg, port); + tmp = INB(port + 1) & ~mask; + OUTB(reg, port); + OUTB(tmp | (data & mask), port + 1); +} + /* Not used yet. */ #if 0 static int enable_flash_decode_superio(void) @@ -163,6 +174,7 @@ WINBOND_W83627HF_ID = 0x52, WINBOND_W83627EHF_ID = 0x88, WINBOND_W83627THF_ID = 0x82, + WINBOND_W83697HF_ID = 0x60, }; static const struct winbond_mux w83627hf_port2_mux[8] = { @@ -227,28 +239,157 @@ {WINBOND_W83627THF_ID, ARRAY_SIZE(w83627thf), w83627thf}, }; -/* - * Detects which Winbond Super I/O is responding at the given base address, - * but takes no effort to make sure the chip is really a Winbond Super I/O. +#define WINBOND_SUPERIO_PORT1 0x2e +#define WINBOND_SUPERIO_PORT2 0x4e + +/* We don't really care about the hardware monitor, but it offers better (more specific) device ID info than + * the simple device ID in the normal configuration registers. + * Note: This function expects to be called while the Super I/O is in config mode. */ -static const struct winbond_chip *winbond_superio_detect(uint16_t base) +static uint8_t w836xx_deviceid_hwmon(uint16_t sio_port) { - uint8_t chipid; - const struct winbond_chip *chip = NULL; - int i; + uint16_t hwmport; + uint16_t hwm_vendorid; + uint8_t hwm_deviceid; - w836xx_ext_enter(base); - chipid = sio_read(base, 0x20); + sio_write(sio_port, 0x07, 0x0b); /* Select LDN 0xb (HWM). */ + if ((sio_read(sio_port, 0x30) & (1 << 0)) != (1 << 0)) { + msg_pinfo("W836xx hardware monitor disabled or does not exist.\n"); + return 0; + } + /* Get HWM base address (stored in LDN 0xb, index 0x60/0x61). */ + hwmport = sio_read(sio_port, 0x60) << 8; + hwmport |= sio_read(sio_port, 0x61); + /* HWM address register = HWM base address + 5. */ + hwmport += 5; + msg_pdbg2("W836xx Hardware Monitor at port %04x\n", hwmport); + /* FIXME: This busy check should happen before each HWM access. */ + if (INB(hwmport) & 0x80) { + msg_pinfo("W836xx hardware monitor busy, ignoring it.\n"); + return 0; + } + /* Set HBACS=1. */ + sio_mask_alzheimer(hwmport, 0x4e, 0x80, 0x80); + /* Read upper byte of vendor ID. */ + OUTB(0x4f, hwmport); + hwm_vendorid = INB(hwmport + 1) << 8; + /* Set HBACS=0. */ + sio_mask_alzheimer(hwmport, 0x4e, 0x00, 0x80); + /* Read lower byte of vendor ID. */ + OUTB(0x4f, hwmport); + hwm_vendorid |= INB(hwmport + 1); + if (hwm_vendorid != 0x5ca3) { + msg_pinfo("W836xx hardware monitor vendor ID weirdness: expected 0x5ca3, got %04x\n", + hwm_vendorid); + return 0; + } + /* Set Bank=0. */ + sio_mask_alzheimer(hwmport, 0x4e, 0x00, 0x07); + /* Read "chip" ID. We call this one the device ID. */ + OUTB(0x58, hwmport); + hwm_deviceid = INB(hwmport + 1); + return hwm_deviceid; +} - for (i = 0; i < ARRAY_SIZE(winbond_chips); i++) { - if (winbond_chips[i].device_id == chipid) { - chip = &winbond_chips[i]; +void probe_superio_winbond(void) +{ + struct superio s = {}; + uint16_t winbond_ports[] = {WINBOND_SUPERIO_PORT1, WINBOND_SUPERIO_PORT2, 0}; + uint16_t *i = winbond_ports; + uint8_t model; + uint8_t tmp; + + s.vendor = SUPERIO_VENDOR_WINBOND; + for (; *i; i++) { + s.port = *i; + /* If we're already in Super I/O config more, the W836xx enter sequence won't hurt. */ + w836xx_ext_enter(s.port); + model = sio_read(s.port, 0x20); + /* No response, no point leaving the config mode. */ + if (model == 0xff) + continue; + /* Try to leave config mode. If the ID register is still readable, it's not a Winbond chip. */ + w836xx_ext_leave(s.port); + if (model == sio_read(s.port, 0x20)) { + msg_pdbg("W836xx enter config mode worked or we were already in config mode. W836xx " + "leave config mode had no effect.\n"); + if (model == 0x87) { + /* ITE IT8707F and IT8710F are special: They need the W837xx enter sequence, + * but they want the ITE exit sequence. Handle them here. + */ + tmp = sio_read(s.port, 0x21); + switch (tmp) { + case 0x07: + case 0x10: + s.vendor = SUPERIO_VENDOR_ITE; + s.model = (0x87 << 8) | tmp ; + msg_pdbg("Found ITE Super I/O, ID 0x%04hx on port " + "0x%x\n", s.model, s.port); + register_superio(s); + /* Exit ITE config mode. */ + exit_conf_mode_ite(s.port); + /* Restore vendor for next loop iteration. */ + s.vendor = SUPERIO_VENDOR_WINBOND; + continue; + } + } + msg_pinfo("Active config mode, unknown reg 0x20 ID: %02x.\n", model); + msg_pinfo("Please send the output of \"flashrom -V\" to \n" + "flashrom at flashrom.org with W836xx: your board name: flashrom -V\n" + "as the subject to help us finish support for your Super I/O. Thanks.\n"); + continue; + } + /* The Super I/O reacts to W836xx enter and exit config mode, it's probably Winbond. */ + w836xx_ext_enter(s.port); + s.model = sio_read(s.port, 0x20); + switch (s.model) { + case WINBOND_W83627HF_ID: + case WINBOND_W83627EHF_ID: + case WINBOND_W83627THF_ID: + msg_pdbg("Found Winbond Super I/O, id %02hx\n", s.model); + register_superio(s); break; + case WINBOND_W83697HF_ID: + /* This code is extremely paranoid. */ + tmp = sio_read(s.port, 0x26) & 0x40; + if (((tmp == 0x00) && (s.port != WINBOND_SUPERIO_PORT1)) || + ((tmp == 0x40) && (s.port != WINBOND_SUPERIO_PORT2))) { + msg_pdbg("Winbond Super I/O probe weirdness: Port mismatch for ID " + "%02x at port %04x\n", s.model, s.port); + break; + } + tmp = w836xx_deviceid_hwmon(s.port); + /* FIXME: This might be too paranoid... */ + if (!tmp) { + msg_pdbg("Probably not a Winbond Super I/O\n"); + break; + } + if (tmp != s.model) { + msg_pinfo("W83 series hardware monitor device ID weirdness: expected %02x, " + "got %02x\n", WINBOND_W83697HF_ID, tmp); + break; + } + msg_pinfo("Found Winbond Super I/O, id %02hx\n", s.model); + register_superio(s); + break; } + w836xx_ext_leave(s.port); } + return; +} - w836xx_ext_leave(base); - return chip; +static const struct winbond_chip *winbond_superio_chipdef(void) +{ + int i, j; + + for (i = 0; i < superio_count; i++) { + if (superios[i].vendor != SUPERIO_VENDOR_WINBOND) + continue; + for (j = 0; j < ARRAY_SIZE(winbond_chips); j++) + if (winbond_chips[j].device_id == superios[i].model) + return &winbond_chips[j]; + } + return NULL; } /* @@ -264,7 +405,7 @@ int port = pin / 10; int bit = pin % 10; - chip = winbond_superio_detect(base); + chip = winbond_superio_chipdef(); if (!chip) { msg_perr("\nERROR: No supported Winbond Super I/O found\n"); return -1; -- http://www.hailfinger.org/ From flashrom at mkarcher.dialup.fu-berlin.de Mon May 7 00:08:52 2012 From: flashrom at mkarcher.dialup.fu-berlin.de (Michael Karcher) Date: Mon, 07 May 2012 00:08:52 +0200 Subject: [flashrom] [PATCH] Add Winbond SuperI/O detection In-Reply-To: <4FA6F259.6050403@gmx.net> References: <4C2B34BD.8040505@gmx.net> <1277902132.6294.4.camel@aquila> <4C2B5A9F.20302@gmx.net> <4FA6CD59.3020800@gmx.net> <4FA6F259.6050403@gmx.net> Message-ID: <1336342132.5227.36.camel@localhost> On Sun, 2012-05-06 at 23:51 +0200, Carl-Daniel Hailfinger wrote: > Am 06.05.2012 21:13 schrieb Carl-Daniel Hailfinger: > > New version, this time with extremely paranoid checks. > Even more paranoid checks... and we now handle IT8707F and IT8710F in > the Winbond detection routine. As these chips share the config mode init sequence, this makes sense. > > Please note that this is only SuperI/O detection, we don't call any > > write enable functions. > IT8707F and IT8710F write enable needs to be hooked up in it87spi.c, the > W836xx write enable functions need to be hooked up somewhere. > + /* Set HBACS=1. */ > + sio_mask_alzheimer(hwmport, 0x4e, 0x80, 0x80); > + /* Read upper byte of vendor ID. */ > + OUTB(0x4f, hwmport); > + hwm_vendorid = INB(hwmport + 1) << 8; Why don't you use sio_read to read from the hardware monitor? (three times) > + tmp = w836xx_deviceid_hwmon(s.port); > + /* FIXME: This might be too paranoid... */ > + if (!tmp) { > + msg_pdbg("Probably not a Winbond Super I/O\n"); > + break; > + } I think this *is* to paranoid, but maybe you are right being paranoid. Acked-by: Michael Karcher Thanks for working through the mess of detecting chip generically that were never meant for that. Best regards, Michael Karcher From c-d.hailfinger.devel.2006 at gmx.net Mon May 7 00:44:12 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Mon, 07 May 2012 00:44:12 +0200 Subject: [flashrom] [PATCH] Add Winbond SuperI/O detection In-Reply-To: <1336342132.5227.36.camel@localhost> References: <4C2B34BD.8040505@gmx.net> <1277902132.6294.4.camel@aquila> <4C2B5A9F.20302@gmx.net> <4FA6CD59.3020800@gmx.net> <4FA6F259.6050403@gmx.net> <1336342132.5227.36.camel@localhost> Message-ID: <4FA6FEBC.10307@gmx.net> Am 07.05.2012 00:08 schrieb Michael Karcher: > On Sun, 2012-05-06 at 23:51 +0200, Carl-Daniel Hailfinger wrote: >> Am 06.05.2012 21:13 schrieb Carl-Daniel Hailfinger: >>> New version, this time with extremely paranoid checks. >> Even more paranoid checks... and we now handle IT8707F and IT8710F in >> the Winbond detection routine. > As these chips share the config mode init sequence, this makes sense. > >>> Please note that this is only SuperI/O detection, we don't call any >>> write enable functions. >> IT8707F and IT8710F write enable needs to be hooked up in it87spi.c, the >> W836xx write enable functions need to be hooked up somewhere. >> + /* Set HBACS=1. */ >> + sio_mask_alzheimer(hwmport, 0x4e, 0x80, 0x80); >> + /* Read upper byte of vendor ID. */ >> + OUTB(0x4f, hwmport); >> + hwm_vendorid = INB(hwmport + 1) << 8; > Why don't you use sio_read to read from the hardware monitor? (three > times) Good point. Fixed. >> + tmp = w836xx_deviceid_hwmon(s.port); >> + /* FIXME: This might be too paranoid... */ >> + if (!tmp) { >> + msg_pdbg("Probably not a Winbond Super I/O\n"); >> + break; >> + } > I think this *is* too paranoid, but maybe you are right being paranoid. I also think this is too paranoid, but hey... we can still disable it later. > Acked-by: Michael Karcher Thanks, I have attached the new version with sio_read for hwm accesses. > Thanks for working through the mess of detecting chip generically that > were never meant for that. Thanks. New patch, changed to use sio_read in w836xx_deviceid_hwmon(). Signed-off-by: Carl-Daniel Hailfinger Acked-by: Michael Karcher Index: flashrom-winbond_superio_detect/internal.c =================================================================== --- flashrom-winbond_superio_detect/internal.c (Revision 1530) +++ flashrom-winbond_superio_detect/internal.c (Arbeitskopie) @@ -101,12 +101,14 @@ #if defined(__i386__) || defined(__x86_64__) void probe_superio(void) { + probe_superio_winbond(); + /* ITE probe causes SMSC LPC47N217 to power off the serial UART. + * Always probe for SMSC first, and if a SMSC Super I/O is detected + * at a given I/O port, do _not_ probe that port with the ITE probe. + * This means SMSC probing must be done before ITE probing. + */ + //probe_superio_smsc(); probe_superio_ite(); -#if 0 - /* Winbond Super I/O code is not yet available. */ - if (superio.vendor == SUPERIO_VENDOR_NONE) - superio = probe_superio_winbond(); -#endif } int superio_count = 0; Index: flashrom-winbond_superio_detect/programmer.h =================================================================== --- flashrom-winbond_superio_detect/programmer.h (Revision 1530) +++ flashrom-winbond_superio_detect/programmer.h (Arbeitskopie) @@ -246,6 +246,7 @@ /* board_enable.c */ void w836xx_ext_enter(uint16_t port); void w836xx_ext_leave(uint16_t port); +void probe_superio_winbond(void); int it8705f_write_enable(uint8_t port); uint8_t sio_read(uint16_t port, uint8_t reg); void sio_write(uint16_t port, uint8_t reg, uint8_t data); @@ -290,6 +291,7 @@ extern int superio_count; #define SUPERIO_VENDOR_NONE 0x0 #define SUPERIO_VENDOR_ITE 0x1 +#define SUPERIO_VENDOR_WINBOND 0x2 #endif #if NEED_PCI == 1 struct pci_dev *pci_dev_find_filter(struct pci_filter filter); Index: flashrom-winbond_superio_detect/board_enable.c =================================================================== --- flashrom-winbond_superio_detect/board_enable.c (Revision 1530) +++ flashrom-winbond_superio_detect/board_enable.c (Arbeitskopie) @@ -67,6 +67,17 @@ OUTB(tmp | (data & mask), port + 1); } +/* Winbond W83697 documentation indicates that the index register has to be written for each access. */ +void sio_mask_alzheimer(uint16_t port, uint8_t reg, uint8_t data, uint8_t mask) +{ + uint8_t tmp; + + OUTB(reg, port); + tmp = INB(port + 1) & ~mask; + OUTB(reg, port); + OUTB(tmp | (data & mask), port + 1); +} + /* Not used yet. */ #if 0 static int enable_flash_decode_superio(void) @@ -163,6 +174,7 @@ WINBOND_W83627HF_ID = 0x52, WINBOND_W83627EHF_ID = 0x88, WINBOND_W83627THF_ID = 0x82, + WINBOND_W83697HF_ID = 0x60, }; static const struct winbond_mux w83627hf_port2_mux[8] = { @@ -227,28 +239,154 @@ {WINBOND_W83627THF_ID, ARRAY_SIZE(w83627thf), w83627thf}, }; -/* - * Detects which Winbond Super I/O is responding at the given base address, - * but takes no effort to make sure the chip is really a Winbond Super I/O. +#define WINBOND_SUPERIO_PORT1 0x2e +#define WINBOND_SUPERIO_PORT2 0x4e + +/* We don't really care about the hardware monitor, but it offers better (more specific) device ID info than + * the simple device ID in the normal configuration registers. + * Note: This function expects to be called while the Super I/O is in config mode. */ -static const struct winbond_chip *winbond_superio_detect(uint16_t base) +static uint8_t w836xx_deviceid_hwmon(uint16_t sio_port) { - uint8_t chipid; - const struct winbond_chip *chip = NULL; - int i; + uint16_t hwmport; + uint16_t hwm_vendorid; + uint8_t hwm_deviceid; - w836xx_ext_enter(base); - chipid = sio_read(base, 0x20); + sio_write(sio_port, 0x07, 0x0b); /* Select LDN 0xb (HWM). */ + if ((sio_read(sio_port, 0x30) & (1 << 0)) != (1 << 0)) { + msg_pinfo("W836xx hardware monitor disabled or does not exist.\n"); + return 0; + } + /* Get HWM base address (stored in LDN 0xb, index 0x60/0x61). */ + hwmport = sio_read(sio_port, 0x60) << 8; + hwmport |= sio_read(sio_port, 0x61); + /* HWM address register = HWM base address + 5. */ + hwmport += 5; + msg_pdbg2("W836xx Hardware Monitor at port %04x\n", hwmport); + /* FIXME: This busy check should happen before each HWM access. */ + if (INB(hwmport) & 0x80) { + msg_pinfo("W836xx hardware monitor busy, ignoring it.\n"); + return 0; + } + /* Set HBACS=1. */ + sio_mask_alzheimer(hwmport, 0x4e, 0x80, 0x80); + /* Read upper byte of vendor ID. */ + hwm_vendorid = sio_read(hwmport, 0x4f) << 8; + /* Set HBACS=0. */ + sio_mask_alzheimer(hwmport, 0x4e, 0x00, 0x80); + /* Read lower byte of vendor ID. */ + hwm_vendorid |= sio_read(hwmport, 0x4f); + if (hwm_vendorid != 0x5ca3) { + msg_pinfo("W836xx hardware monitor vendor ID weirdness: expected 0x5ca3, got %04x\n", + hwm_vendorid); + return 0; + } + /* Set Bank=0. */ + sio_mask_alzheimer(hwmport, 0x4e, 0x00, 0x07); + /* Read "chip" ID. We call this one the device ID. */ + hwm_deviceid = sio_read(hwmport, 0x58); + return hwm_deviceid; +} - for (i = 0; i < ARRAY_SIZE(winbond_chips); i++) { - if (winbond_chips[i].device_id == chipid) { - chip = &winbond_chips[i]; +void probe_superio_winbond(void) +{ + struct superio s = {}; + uint16_t winbond_ports[] = {WINBOND_SUPERIO_PORT1, WINBOND_SUPERIO_PORT2, 0}; + uint16_t *i = winbond_ports; + uint8_t model; + uint8_t tmp; + + s.vendor = SUPERIO_VENDOR_WINBOND; + for (; *i; i++) { + s.port = *i; + /* If we're already in Super I/O config more, the W836xx enter sequence won't hurt. */ + w836xx_ext_enter(s.port); + model = sio_read(s.port, 0x20); + /* No response, no point leaving the config mode. */ + if (model == 0xff) + continue; + /* Try to leave config mode. If the ID register is still readable, it's not a Winbond chip. */ + w836xx_ext_leave(s.port); + if (model == sio_read(s.port, 0x20)) { + msg_pdbg("W836xx enter config mode worked or we were already in config mode. W836xx " + "leave config mode had no effect.\n"); + if (model == 0x87) { + /* ITE IT8707F and IT8710F are special: They need the W837xx enter sequence, + * but they want the ITE exit sequence. Handle them here. + */ + tmp = sio_read(s.port, 0x21); + switch (tmp) { + case 0x07: + case 0x10: + s.vendor = SUPERIO_VENDOR_ITE; + s.model = (0x87 << 8) | tmp ; + msg_pdbg("Found ITE Super I/O, ID 0x%04hx on port " + "0x%x\n", s.model, s.port); + register_superio(s); + /* Exit ITE config mode. */ + exit_conf_mode_ite(s.port); + /* Restore vendor for next loop iteration. */ + s.vendor = SUPERIO_VENDOR_WINBOND; + continue; + } + } + msg_pinfo("Active config mode, unknown reg 0x20 ID: %02x.\n", model); + msg_pinfo("Please send the output of \"flashrom -V\" to \n" + "flashrom at flashrom.org with W836xx: your board name: flashrom -V\n" + "as the subject to help us finish support for your Super I/O. Thanks.\n"); + continue; + } + /* The Super I/O reacts to W836xx enter and exit config mode, it's probably Winbond. */ + w836xx_ext_enter(s.port); + s.model = sio_read(s.port, 0x20); + switch (s.model) { + case WINBOND_W83627HF_ID: + case WINBOND_W83627EHF_ID: + case WINBOND_W83627THF_ID: + msg_pdbg("Found Winbond Super I/O, id %02hx\n", s.model); + register_superio(s); break; + case WINBOND_W83697HF_ID: + /* This code is extremely paranoid. */ + tmp = sio_read(s.port, 0x26) & 0x40; + if (((tmp == 0x00) && (s.port != WINBOND_SUPERIO_PORT1)) || + ((tmp == 0x40) && (s.port != WINBOND_SUPERIO_PORT2))) { + msg_pdbg("Winbond Super I/O probe weirdness: Port mismatch for ID " + "%02x at port %04x\n", s.model, s.port); + break; + } + tmp = w836xx_deviceid_hwmon(s.port); + /* FIXME: This might be too paranoid... */ + if (!tmp) { + msg_pdbg("Probably not a Winbond Super I/O\n"); + break; + } + if (tmp != s.model) { + msg_pinfo("W83 series hardware monitor device ID weirdness: expected %02x, " + "got %02x\n", WINBOND_W83697HF_ID, tmp); + break; + } + msg_pinfo("Found Winbond Super I/O, id %02hx\n", s.model); + register_superio(s); + break; } + w836xx_ext_leave(s.port); } + return; +} - w836xx_ext_leave(base); - return chip; +static const struct winbond_chip *winbond_superio_chipdef(void) +{ + int i, j; + + for (i = 0; i < superio_count; i++) { + if (superios[i].vendor != SUPERIO_VENDOR_WINBOND) + continue; + for (j = 0; j < ARRAY_SIZE(winbond_chips); j++) + if (winbond_chips[j].device_id == superios[i].model) + return &winbond_chips[j]; + } + return NULL; } /* @@ -264,7 +402,7 @@ int port = pin / 10; int bit = pin % 10; - chip = winbond_superio_detect(base); + chip = winbond_superio_chipdef(); if (!chip) { msg_perr("\nERROR: No supported Winbond Super I/O found\n"); return -1; -- http://www.hailfinger.org/ From svn at flashrom.org Mon May 7 00:48:01 2012 From: svn at flashrom.org (repository service) Date: Mon, 07 May 2012 00:48:01 +0200 Subject: [flashrom] [commit] r1533 - trunk Message-ID: Author: hailfinger Date: Mon May 7 00:48:01 2012 New Revision: 1533 URL: http://flashrom.org/trac/flashrom/changeset/1533 Log: Add Winbond W836xx SuperI/O detection. Add ITE IT8707F/IT8710F detection. Note that we autodetect those chips, but we don't handle their flash translation features automatically yet. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Michael Karcher Modified: trunk/board_enable.c trunk/internal.c trunk/programmer.h Modified: trunk/board_enable.c ============================================================================== --- trunk/board_enable.c Sun May 6 19:03:40 2012 (r1532) +++ trunk/board_enable.c Mon May 7 00:48:01 2012 (r1533) @@ -67,6 +67,17 @@ OUTB(tmp | (data & mask), port + 1); } +/* Winbond W83697 documentation indicates that the index register has to be written for each access. */ +void sio_mask_alzheimer(uint16_t port, uint8_t reg, uint8_t data, uint8_t mask) +{ + uint8_t tmp; + + OUTB(reg, port); + tmp = INB(port + 1) & ~mask; + OUTB(reg, port); + OUTB(tmp | (data & mask), port + 1); +} + /* Not used yet. */ #if 0 static int enable_flash_decode_superio(void) @@ -163,6 +174,7 @@ WINBOND_W83627HF_ID = 0x52, WINBOND_W83627EHF_ID = 0x88, WINBOND_W83627THF_ID = 0x82, + WINBOND_W83697HF_ID = 0x60, }; static const struct winbond_mux w83627hf_port2_mux[8] = { @@ -227,28 +239,154 @@ {WINBOND_W83627THF_ID, ARRAY_SIZE(w83627thf), w83627thf}, }; -/* - * Detects which Winbond Super I/O is responding at the given base address, - * but takes no effort to make sure the chip is really a Winbond Super I/O. +#define WINBOND_SUPERIO_PORT1 0x2e +#define WINBOND_SUPERIO_PORT2 0x4e + +/* We don't really care about the hardware monitor, but it offers better (more specific) device ID info than + * the simple device ID in the normal configuration registers. + * Note: This function expects to be called while the Super I/O is in config mode. */ -static const struct winbond_chip *winbond_superio_detect(uint16_t base) +static uint8_t w836xx_deviceid_hwmon(uint16_t sio_port) { - uint8_t chipid; - const struct winbond_chip *chip = NULL; - int i; + uint16_t hwmport; + uint16_t hwm_vendorid; + uint8_t hwm_deviceid; + + sio_write(sio_port, 0x07, 0x0b); /* Select LDN 0xb (HWM). */ + if ((sio_read(sio_port, 0x30) & (1 << 0)) != (1 << 0)) { + msg_pinfo("W836xx hardware monitor disabled or does not exist.\n"); + return 0; + } + /* Get HWM base address (stored in LDN 0xb, index 0x60/0x61). */ + hwmport = sio_read(sio_port, 0x60) << 8; + hwmport |= sio_read(sio_port, 0x61); + /* HWM address register = HWM base address + 5. */ + hwmport += 5; + msg_pdbg2("W836xx Hardware Monitor at port %04x\n", hwmport); + /* FIXME: This busy check should happen before each HWM access. */ + if (INB(hwmport) & 0x80) { + msg_pinfo("W836xx hardware monitor busy, ignoring it.\n"); + return 0; + } + /* Set HBACS=1. */ + sio_mask_alzheimer(hwmport, 0x4e, 0x80, 0x80); + /* Read upper byte of vendor ID. */ + hwm_vendorid = sio_read(hwmport, 0x4f) << 8; + /* Set HBACS=0. */ + sio_mask_alzheimer(hwmport, 0x4e, 0x00, 0x80); + /* Read lower byte of vendor ID. */ + hwm_vendorid |= sio_read(hwmport, 0x4f); + if (hwm_vendorid != 0x5ca3) { + msg_pinfo("W836xx hardware monitor vendor ID weirdness: expected 0x5ca3, got %04x\n", + hwm_vendorid); + return 0; + } + /* Set Bank=0. */ + sio_mask_alzheimer(hwmport, 0x4e, 0x00, 0x07); + /* Read "chip" ID. We call this one the device ID. */ + hwm_deviceid = sio_read(hwmport, 0x58); + return hwm_deviceid; +} - w836xx_ext_enter(base); - chipid = sio_read(base, 0x20); +void probe_superio_winbond(void) +{ + struct superio s = {}; + uint16_t winbond_ports[] = {WINBOND_SUPERIO_PORT1, WINBOND_SUPERIO_PORT2, 0}; + uint16_t *i = winbond_ports; + uint8_t model; + uint8_t tmp; - for (i = 0; i < ARRAY_SIZE(winbond_chips); i++) { - if (winbond_chips[i].device_id == chipid) { - chip = &winbond_chips[i]; + s.vendor = SUPERIO_VENDOR_WINBOND; + for (; *i; i++) { + s.port = *i; + /* If we're already in Super I/O config more, the W836xx enter sequence won't hurt. */ + w836xx_ext_enter(s.port); + model = sio_read(s.port, 0x20); + /* No response, no point leaving the config mode. */ + if (model == 0xff) + continue; + /* Try to leave config mode. If the ID register is still readable, it's not a Winbond chip. */ + w836xx_ext_leave(s.port); + if (model == sio_read(s.port, 0x20)) { + msg_pdbg("W836xx enter config mode worked or we were already in config mode. W836xx " + "leave config mode had no effect.\n"); + if (model == 0x87) { + /* ITE IT8707F and IT8710F are special: They need the W837xx enter sequence, + * but they want the ITE exit sequence. Handle them here. + */ + tmp = sio_read(s.port, 0x21); + switch (tmp) { + case 0x07: + case 0x10: + s.vendor = SUPERIO_VENDOR_ITE; + s.model = (0x87 << 8) | tmp ; + msg_pdbg("Found ITE Super I/O, ID 0x%04hx on port " + "0x%x\n", s.model, s.port); + register_superio(s); + /* Exit ITE config mode. */ + exit_conf_mode_ite(s.port); + /* Restore vendor for next loop iteration. */ + s.vendor = SUPERIO_VENDOR_WINBOND; + continue; + } + } + msg_pinfo("Active config mode, unknown reg 0x20 ID: %02x.\n", model); + msg_pinfo("Please send the output of \"flashrom -V\" to \n" + "flashrom at flashrom.org with W836xx: your board name: flashrom -V\n" + "as the subject to help us finish support for your Super I/O. Thanks.\n"); + continue; + } + /* The Super I/O reacts to W836xx enter and exit config mode, it's probably Winbond. */ + w836xx_ext_enter(s.port); + s.model = sio_read(s.port, 0x20); + switch (s.model) { + case WINBOND_W83627HF_ID: + case WINBOND_W83627EHF_ID: + case WINBOND_W83627THF_ID: + msg_pdbg("Found Winbond Super I/O, id %02hx\n", s.model); + register_superio(s); + break; + case WINBOND_W83697HF_ID: + /* This code is extremely paranoid. */ + tmp = sio_read(s.port, 0x26) & 0x40; + if (((tmp == 0x00) && (s.port != WINBOND_SUPERIO_PORT1)) || + ((tmp == 0x40) && (s.port != WINBOND_SUPERIO_PORT2))) { + msg_pdbg("Winbond Super I/O probe weirdness: Port mismatch for ID " + "%02x at port %04x\n", s.model, s.port); + break; + } + tmp = w836xx_deviceid_hwmon(s.port); + /* FIXME: This might be too paranoid... */ + if (!tmp) { + msg_pdbg("Probably not a Winbond Super I/O\n"); + break; + } + if (tmp != s.model) { + msg_pinfo("W83 series hardware monitor device ID weirdness: expected %02x, " + "got %02x\n", WINBOND_W83697HF_ID, tmp); + break; + } + msg_pinfo("Found Winbond Super I/O, id %02hx\n", s.model); + register_superio(s); break; } + w836xx_ext_leave(s.port); } + return; +} - w836xx_ext_leave(base); - return chip; +static const struct winbond_chip *winbond_superio_chipdef(void) +{ + int i, j; + + for (i = 0; i < superio_count; i++) { + if (superios[i].vendor != SUPERIO_VENDOR_WINBOND) + continue; + for (j = 0; j < ARRAY_SIZE(winbond_chips); j++) + if (winbond_chips[j].device_id == superios[i].model) + return &winbond_chips[j]; + } + return NULL; } /* @@ -264,7 +402,7 @@ int port = pin / 10; int bit = pin % 10; - chip = winbond_superio_detect(base); + chip = winbond_superio_chipdef(); if (!chip) { msg_perr("\nERROR: No supported Winbond Super I/O found\n"); return -1; Modified: trunk/internal.c ============================================================================== --- trunk/internal.c Sun May 6 19:03:40 2012 (r1532) +++ trunk/internal.c Mon May 7 00:48:01 2012 (r1533) @@ -101,12 +101,14 @@ #if defined(__i386__) || defined(__x86_64__) void probe_superio(void) { + probe_superio_winbond(); + /* ITE probe causes SMSC LPC47N217 to power off the serial UART. + * Always probe for SMSC first, and if a SMSC Super I/O is detected + * at a given I/O port, do _not_ probe that port with the ITE probe. + * This means SMSC probing must be done before ITE probing. + */ + //probe_superio_smsc(); probe_superio_ite(); -#if 0 - /* Winbond Super I/O code is not yet available. */ - if (superio.vendor == SUPERIO_VENDOR_NONE) - superio = probe_superio_winbond(); -#endif } int superio_count = 0; Modified: trunk/programmer.h ============================================================================== --- trunk/programmer.h Sun May 6 19:03:40 2012 (r1532) +++ trunk/programmer.h Mon May 7 00:48:01 2012 (r1533) @@ -246,6 +246,7 @@ /* board_enable.c */ void w836xx_ext_enter(uint16_t port); void w836xx_ext_leave(uint16_t port); +void probe_superio_winbond(void); int it8705f_write_enable(uint8_t port); uint8_t sio_read(uint16_t port, uint8_t reg); void sio_write(uint16_t port, uint8_t reg, uint8_t data); @@ -290,6 +291,7 @@ extern int superio_count; #define SUPERIO_VENDOR_NONE 0x0 #define SUPERIO_VENDOR_ITE 0x1 +#define SUPERIO_VENDOR_WINBOND 0x2 #endif #if NEED_PCI == 1 struct pci_dev *pci_dev_find_filter(struct pci_filter filter); From c-d.hailfinger.devel.2006 at gmx.net Mon May 7 00:52:08 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Mon, 07 May 2012 00:52:08 +0200 Subject: [flashrom] [PATCH] Add Winbond SuperI/O detection In-Reply-To: <4FA6FEBC.10307@gmx.net> References: <4C2B34BD.8040505@gmx.net> <1277902132.6294.4.camel@aquila> <4C2B5A9F.20302@gmx.net> <4FA6CD59.3020800@gmx.net> <4FA6F259.6050403@gmx.net> <1336342132.5227.36.camel@localhost> <4FA6FEBC.10307@gmx.net> Message-ID: <4FA70098.6090508@gmx.net> Am 07.05.2012 00:44 schrieb Carl-Daniel Hailfinger: > Am 07.05.2012 00:08 schrieb Michael Karcher: >> Thanks for working through the mess of detecting chip generically that >> were never meant for that. > Thanks. > > New patch, changed to use sio_read in w836xx_deviceid_hwmon(). > > Signed-off-by: Carl-Daniel Hailfinger > Acked-by: Michael Karcher Thanks for the review, committed in r1533. Regards, Carl-Daniel -- http://www.hailfinger.org/ From svetoslav.trochev at gmail.com Mon May 7 01:39:18 2012 From: svetoslav.trochev at gmail.com (Svetoslav Trochev) Date: Sun, 6 May 2012 16:39:18 -0700 Subject: [flashrom] Winbond W39V040A seems working In-Reply-To: <201205061519.q46FJ8Yu026402@mail2.student.tuwien.ac.at> References: <4F8A1102.50907@gmail.com> <201204271441.q3REfHwZ012217@mail2.student.tuwien.ac.at> <201205061519.q46FJ8Yu026402@mail2.student.tuwien.ac.at> Message-ID: >> I scavenged a FWH chip 82802AB from ABIT SE6 board. I am not 100% >> sure, but I believe this board worked just fine before I replaced it >> long time ago. Never the less I made backup copy of the BIOS: ABIT SE6 >> - Award 6.00PG - ABIT SoftMenu II.bin >> If Stefan don't have better copy I will be happy to "donate" mine. > > you cant just exchange any remotely similar firmware binary with > another one (well... you can but the machine wont boot). > I'm sorry. Looks like I cause more confusion here. My goal was to notify everyone that I have good BIOS copy for Abit SE6 board. Because Abit is out of business and someone could run into similar problem I believe it was important for me speak up. Stefan, could you please check your backup copy of Abit's FTP and if you don't have BIOS dump for SE6 board I can send you mine BIOS dump. From stefan.tauner at student.tuwien.ac.at Mon May 7 02:02:18 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 7 May 2012 02:02:18 +0200 Subject: [flashrom] Winbond W39V040A seems working In-Reply-To: References: <4F8A1102.50907@gmail.com> <201204271441.q3REfHwZ012217@mail2.student.tuwien.ac.at> <201205061519.q46FJ8Yu026402@mail2.student.tuwien.ac.at> Message-ID: <201205070002.q4702Ik5004778@mail2.student.tuwien.ac.at> On Sun, 6 May 2012 16:39:18 -0700 Svetoslav Trochev wrote: > >> I scavenged a FWH chip 82802AB from ABIT SE6 board. I am not 100% > >> sure, but I believe this board worked just fine before I replaced it > >> long time ago. Never the less I made backup copy of the BIOS: ABIT SE6 > >> - Award 6.00PG - ABIT SoftMenu II.bin > >> If Stefan don't have better copy I will be happy to "donate" mine. > > > > you cant just exchange any remotely similar firmware binary with > > another one (well... you can but the machine wont boot). > > > I'm sorry. Looks like I cause more confusion here. My goal was to > notify everyone that I have good BIOS copy for Abit SE6 board. Because > Abit is out of business and someone could run into similar problem I > believe it was important for me speak up. Stefan, could you please > check your backup copy of Abit's FTP and if you don't have BIOS dump > for SE6 board I can send you mine BIOS dump. ic. i have SE6 backups, thanks for the offer. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Mon May 7 02:44:09 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 7 May 2012 02:44:09 +0200 Subject: [flashrom] [PATCH] dummyflasher.c: add support for SFDP by adding a new emulator chip: MX25L6436 In-Reply-To: <4FA57BD1.4020002@gmx.net> References: <4F4295C2.6070909@gmx.net> <1329960364-11155-1-git-send-email-stefan.tauner@student.tuwien.ac.at> <4FA57BD1.4020002@gmx.net> Message-ID: <201205070044.q470i9t7019229@mail2.student.tuwien.ac.at> On Sat, 05 May 2012 21:13:21 +0200 Carl-Daniel Hailfinger wrote: > Am 23.02.2012 02:26 schrieb Stefan Tauner: > > > On Mon, 20 Feb 2012 19:49:38 +0100 Carl-Daniel Hailfinger wrote: > > Not what I meant. > The big issue with SFDP and FAST READ and other commands is that the > dummy byte after command+address can be either a written or read byte > (the chip does not care). Our emulation should be able to handle both. > This means a writecnt of 4 is completely legal, but in that case we have > to set the copy destination to &readarr[1] instead of &readarr[0]. My > logic tried to address that, but it was not completely correct. > I have annotated your patch with my suggested changes at the end of this > mail. They seem to work in my tests. ah! :) please re-review that part of this iteration, sorry. NB: we have changed the SFDP code to use a dummy read instead of the write in the meantime. i have tested with both dummy reads and writes and all looks find. if there is no response for a week, ill commit it anyway. > > diff --git a/dummyflasher.c b/dummyflasher.c > > index afe0518..794a2f6 100644 > > --- a/dummyflasher.c > > +++ b/dummyflasher.c > > @@ -629,7 +681,33 @@ static int emulate_spi_chip_response(unsigned int writecnt, > > /* emu_jedec_ce_c7_size is emu_chip_size. */ > > memset(flashchip_contents, 0xff, emu_jedec_ce_c7_size); > > break; > > - default: > > + case JEDEC_SFDP: { > > + unsigned int toread; > > + if (emu_chip != EMULATE_MACRONIX_MX25L6436) > > + break; > > + if (writecnt < 5) > > Replace with > if (writecnt < 4) > > > + break; > > + offs = writearr[1] << 16 | writearr[2] << 8 | writearr[3]; > > Insert > > + /* SFDP expects one dummy byte after the address. */ > + if (writecnt < 5) { this can be simplified then... see patch. > + /* The dummy byte was not written, make sure it is read > + * instead. Shifting and shortening the read array does > + * achieve the goal. > + */ > + readarr += 5 - writecnt; > + readcnt -= 5 - writecnt; > + writecnt = 5; > + } -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-dummyflasher.c-add-support-for-SFDP-by-adding-a-new-.patch Type: text/x-patch Size: 6376 bytes Desc: not available URL: From stefan.tauner at student.tuwien.ac.at Mon May 7 02:52:49 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 7 May 2012 02:52:49 +0200 Subject: [flashrom] Test report Biostar M7VIQ - Chip now detected, reading works In-Reply-To: <201205061452.q46EqBAc000625@mail2.student.tuwien.ac.at> References: <201205061452.q46EqBAc000625@mail2.student.tuwien.ac.at> Message-ID: <201205070052.q470qnF1021612@mail2.student.tuwien.ac.at> On Sun, 6 May 2012 16:52:11 +0200 Stefan Tauner wrote: > On Mon, 30 Apr 2012 14:15:49 +0200 > Gurken Papst wrote: > > > On Sat, Apr 28, 2012 at 01:24, Stefan Tauner > > wrote: > > > i have hacked it into something that might work for your board; the > > > generalization can happen later. i will reply to this mail with two > > > patches. please apply them to SVN HEAD and try to probe and read, but > > > not erase/write yet please. > > > > Nice job, detection and reading are working. Dumps from UniFlash and > > Flashrom are equal. > > > > Output of flashrom -V -r m7viq_flashrom.img: > > > > [?] > > Do you need any additional information? > > carl-daniel is working on a generic patch that detects the winbond > automatically and should then enable all similar boards (like your > medion board). imho writing should work on your board too, so if there > is a reason to upgrade the bios, feel free to test it. else please wait > for carl-daniel's generic patch that he will send soonish (dont hold > your breath ;) ok that was way quicker than usual (yay! :). if you like please test the current svn HEAD flashrom on all boards with a winbond superio and send us the usual flashrom -V output, thanks! NB: it contains the following patch that should detect (*not* enable) the superios. it is the first step to integrate the generic enable. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From denilsonsa at gmail.com Mon May 7 02:46:07 2012 From: denilsonsa at gmail.com (=?UTF-8?Q?Denilson_Figueiredo_de_S=C3=A1?=) Date: Sun, 6 May 2012 21:46:07 -0300 Subject: [flashrom] Using flashrom with EliteGroup ECS GF8200A motherboard Message-ID: Today I updated the BIOS of my EliteGroup ECS GF8200A motherboard. The vendor tool did not work on FreeDOS for me, and I don't have Windows, so I had to try updating it from Linux. This motherboard was not officially supported by flashrom, and the -V output is attached. Then I tried updating the ROM, running: flashrom 78NAA512.ROM (but, before that, I did a backup of the old firmware) However, at the verification stage, it failed. The error message is also attached. (sorry, but I didn't run it with -V) Following help from carldani and twice11, I tried flashing again the new firmware. This time it worked and gave me no errors. The output is also attached. I know there is very little information in the attached files, but I still hope they can be helpful for the project. Thank you, carldani and twice11 for helping me on IRC, and thank you for this project! -- Denilson Figueiredo de S? Rio de Janeiro - Brasil -------------- next part -------------- flashrom v0.9.5.2-r1515 on Linux 2.6.38-gentoo-r6 (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, 1650M loops per second, 10 myus = 11 us, 100 myus = 100 us, 1000 myus = 1000 us, 10000 myus = 10010 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "ECS" DMI string system-product-name: "GeForce 8000 series" DMI string system-version: "1.0 " DMI string baseboard-manufacturer: "ECS" DMI string baseboard-product-name: "GeForce 8000 series" DMI string baseboard-version: "1.0 " 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 0xfce80000 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 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. -------------- next part -------------- Calibrating delay loop... OK. Found chipset "NVIDIA MCP78S". 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... SPI on this chipset is WIP. Please report any success or failure by mailing us the verbose output to flashrom at flashrom.org, thanks! Mapping NVIDIA MCP6x SPI at 0xfce80000, unaligned size 0x544. 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. Found Winbond flash chip "W25X80" (1024 kB, SPI) at physical address 0xfff00000.Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... done. Erasing and writing flash chip... Erase/write done. Verifying flash... VERIFY FAILED at 0x00048a00! Expected=0xa8, Read=0xff, failed byte count from 0x00000000-0x000fffff: 0x1fb Your flash chip is in an unknown state. Get help on IRC at irc.freenode.net (channel #flashrom) or mail flashrom at flashrom.org with FAILED: your board name in the subject line! ------------------------------------------------------------------------------- DO NOT REBOOT OR POWEROFF! -------------- next part -------------- flashrom v0.9.5.2-r1515 on Linux 2.6.38-gentoo-r6 (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... OK. Found chipset "NVIDIA MCP78S". 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... SPI on this chipset is WIP. Please report any success or failure by mailing us the verbose output to flashrom at flashrom.org, thanks! 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. Found Winbond flash chip "W25X80" (1024 kB, SPI) at physical address 0xfff00000. Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... done. Erasing and writing flash chip... Erase/write done. Verifying flash... VERIFIED. From c-d.hailfinger.devel.2006 at gmx.net Mon May 7 23:28:28 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Mon, 07 May 2012 23:28:28 +0200 Subject: [flashrom] [PATCH] dummyflasher.c: add support for SFDP by adding a new emulator chip: MX25L6436 In-Reply-To: <201205070044.q470i9t7019229@mail2.student.tuwien.ac.at> References: <4F4295C2.6070909@gmx.net> <1329960364-11155-1-git-send-email-stefan.tauner@student.tuwien.ac.at> <4FA57BD1.4020002@gmx.net> <201205070044.q470i9t7019229@mail2.student.tuwien.ac.at> Message-ID: <4FA83E7C.4070407@gmx.net> Am 07.05.2012 02:44 schrieb Stefan Tauner: > On Sat, 05 May 2012 21:13:21 +0200 Carl-Daniel Hailfinger wrote: >> Not what I meant. >> The big issue with SFDP and FAST READ and other commands is that the >> dummy byte after command+address can be either a written or read byte >> (the chip does not care). Our emulation should be able to handle both. >> This means a writecnt of 4 is completely legal, but in that case we have >> to set the copy destination to &readarr[1] instead of &readarr[0]. My >> logic tried to address that, but it was not completely correct. >> I have annotated your patch with my suggested changes at the end of this >> mail. They seem to work in my tests. > ah! :) > please re-review that part of this iteration, sorry. Looks good. The logic is different from mine, but the effect is the same and your version is arguably more readable. My ack still stands, but with two small comments: > @@ -673,7 +725,42 @@ static int emulate_spi_chip_response(unsigned int writecnt, > /* emu_jedec_ce_c7_size is emu_chip_size. */ > memset(flashchip_contents, 0xff, emu_jedec_ce_c7_size); > break; > - default: > + case JEDEC_SFDP: { > + unsigned int toread; Please move toread to the start of the function to get rid of that ugly brace. > [...] > + /* The SFDP spec does not explicitly forbid wraparound of the start address and > + * it seems like a reasonable thing to do - for a flash chip. */ Suggested alternative comment: The SFDP spec implies that the start address of a SFDP read may be truncated to fit in the SFDP table address space, i.e. the start address may be wrapped around at SFDP table size. This is a reasonable implementation choice in hardware because it saves a few logic elements. > + if (offs >= sizeof(sfdp_table)) { > + msg_pdbg("Wrapping the start address around the SFDP table boundary (using 0x%x " > + "instead of 0x%x).\n", (unsigned int)(offs % sizeof(sfdp_table)), offs); > + offs %= sizeof(sfdp_table); Regards, Carl-Daniel -- http://www.hailfinger.org/ From svn at flashrom.org Tue May 8 00:12:17 2012 From: svn at flashrom.org (repository service) Date: Tue, 08 May 2012 00:12:17 +0200 Subject: [flashrom] [commit] r1534 - trunk Message-ID: Author: stefanct Date: Tue May 8 00:12:16 2012 New Revision: 1534 URL: http://flashrom.org/trac/flashrom/changeset/1534 Log: dummyflasher.c: add support for SFDP by adding a new emulator chip: MX25L6436 The chip features a complete 1.0 SFDP JEDEC flash parameter table and also a vendor-specific extension table (defining voltages, lock bits etc). NB: the MX25L6436 uses the same RDID as the MX25L6405. Signed-off-by: Stefan Tauner Acked-by: Carl-Daniel Hailfinger Modified: trunk/dummyflasher.c trunk/flashrom.8 Modified: trunk/dummyflasher.c ============================================================================== --- trunk/dummyflasher.c Mon May 7 00:48:01 2012 (r1533) +++ trunk/dummyflasher.c Tue May 8 00:12:16 2012 (r1534) @@ -46,6 +46,7 @@ EMULATE_ST_M25P10_RES, EMULATE_SST_SST25VF040_REMS, EMULATE_SST_SST25VF032B, + EMULATE_MACRONIX_MX25L6436, }; static enum emu_chip emu_chip = EMULATE_NONE; static char *emu_persistent_image = NULL; @@ -63,6 +64,33 @@ int spi_blacklist_size = 0; int spi_ignorelist_size = 0; static uint8_t emu_status = 0; + +/* A legit complete SFDP table based on the MX25L6436E (rev. 1.8) datasheet. */ +static const uint8_t const sfdp_table[] = { + 0x53, 0x46, 0x44, 0x50, // @0x00: SFDP signature + 0x00, 0x01, 0x01, 0xFF, // @0x04: revision 1.0, 2 headers + 0x00, 0x00, 0x01, 0x09, // @0x08: JEDEC SFDP header rev. 1.0, 9 DW long + 0x1C, 0x00, 0x00, 0xFF, // @0x0C: PTP0 = 0x1C (instead of 0x30) + 0xC2, 0x00, 0x01, 0x04, // @0x10: Macronix header rev. 1.0, 4 DW long + 0x48, 0x00, 0x00, 0xFF, // @0x14: PTP1 = 0x48 (instead of 0x60) + 0xFF, 0xFF, 0xFF, 0xFF, // @0x18: hole. + 0xE5, 0x20, 0xC9, 0xFF, // @0x1C: SFDP parameter table start + 0xFF, 0xFF, 0xFF, 0x03, // @0x20 + 0x00, 0xFF, 0x08, 0x6B, // @0x24 + 0x08, 0x3B, 0x00, 0xFF, // @0x28 + 0xEE, 0xFF, 0xFF, 0xFF, // @0x2C + 0xFF, 0xFF, 0x00, 0x00, // @0x30 + 0xFF, 0xFF, 0x00, 0xFF, // @0x34 + 0x0C, 0x20, 0x0F, 0x52, // @0x38 + 0x10, 0xD8, 0x00, 0xFF, // @0x3C: SFDP parameter table end + 0xFF, 0xFF, 0xFF, 0xFF, // @0x40: hole. + 0xFF, 0xFF, 0xFF, 0xFF, // @0x44: hole. + 0x00, 0x36, 0x00, 0x27, // @0x48: Macronix parameter table start + 0xF4, 0x4F, 0xFF, 0xFF, // @0x4C + 0xD9, 0xC8, 0xFF, 0xFF, // @0x50 + 0xFF, 0xFF, 0xFF, 0xFF, // @0x54: Macronix parameter table end +}; + #endif #endif @@ -301,6 +329,19 @@ msg_pdbg("Emulating SST SST25VF032B SPI flash chip (RDID, AAI " "write)\n"); } + if (!strcmp(tmp, "MX25L6436")) { + emu_chip = EMULATE_MACRONIX_MX25L6436; + emu_chip_size = 8 * 1024 * 1024; + emu_max_byteprogram_size = 256; + emu_max_aai_size = 0; + emu_jedec_se_size = 4 * 1024; + emu_jedec_be_52_size = 32 * 1024; + emu_jedec_be_d8_size = 64 * 1024; + emu_jedec_ce_60_size = emu_chip_size; + emu_jedec_ce_c7_size = emu_chip_size; + msg_pdbg("Emulating Macronix MX25L6436 SPI flash chip (RDID, " + "SFDP)\n"); + } #endif if (emu_chip == EMULATE_NONE) { msg_perr("Invalid chip specified for emulation: %s\n", tmp); @@ -449,7 +490,7 @@ const unsigned char *writearr, unsigned char *readarr) { - unsigned int offs, i; + unsigned int offs, i, toread; static int unsigned aai_offs; if (writecnt == 0) { @@ -503,20 +544,30 @@ readarr[1] = 0x44; break; case JEDEC_RDID: - if (emu_chip != EMULATE_SST_SST25VF032B) + switch (emu_chip) { + case EMULATE_SST_SST25VF032B: + if (readcnt > 0) + readarr[0] = 0xbf; + if (readcnt > 1) + readarr[1] = 0x25; + if (readcnt > 2) + readarr[2] = 0x4a; break; - /* Respond with SST_SST25VF032B. */ - if (readcnt > 0) - readarr[0] = 0xbf; - if (readcnt > 1) - readarr[1] = 0x25; - if (readcnt > 2) - readarr[2] = 0x4a; + case EMULATE_MACRONIX_MX25L6436: + if (readcnt > 0) + readarr[0] = 0xc2; + if (readcnt > 1) + readarr[1] = 0x20; + if (readcnt > 2) + readarr[2] = 0x17; + break; + default: /* ignore */ + break; + } break; - case JEDEC_RDSR: { + case JEDEC_RDSR: memset(readarr, emu_status, readcnt); break; - } /* FIXME: this should be chip-specific. */ case JEDEC_EWSR: case JEDEC_WREN: @@ -673,6 +724,41 @@ /* emu_jedec_ce_c7_size is emu_chip_size. */ memset(flashchip_contents, 0xff, emu_jedec_ce_c7_size); break; + case JEDEC_SFDP: + if (emu_chip != EMULATE_MACRONIX_MX25L6436) + break; + if (writecnt < 4) + break; + offs = writearr[1] << 16 | writearr[2] << 8 | writearr[3]; + + /* SFDP expects one dummy byte after the address. */ + if (writecnt == 4) { + /* The dummy byte was not written, make sure it is read instead. + * Shifting and shortening the read array does achieve this goal. + */ + readarr++; + readcnt--; + } else { + /* The response is shifted if more than 5 bytes are written, because SFDP data is + * already shifted out by the chip while those superfluous bytes are written. */ + offs += writecnt - 5; + } + + /* The SFDP spec implies that the start address of an SFDP read may be truncated to fit in the + * SFDP table address space, i.e. the start address may be wrapped around at SFDP table size. + * This is a reasonable implementation choice in hardware because it saves a few gates. */ + if (offs >= sizeof(sfdp_table)) { + msg_pdbg("Wrapping the start address around the SFDP table boundary (using 0x%x " + "instead of 0x%x).\n", (unsigned int)(offs % sizeof(sfdp_table)), offs); + offs %= sizeof(sfdp_table); + } + toread = min(sizeof(sfdp_table) - offs, readcnt); + memcpy(readarr, sfdp_table + offs, toread); + if (toread < readcnt) + msg_pdbg("Crossing the SFDP table boundary in a single " + "continuous chunk produces undefined results " + "after that point.\n"); + break; default: /* No special response. */ break; @@ -703,6 +789,7 @@ case EMULATE_ST_M25P10_RES: case EMULATE_SST_SST25VF040_REMS: case EMULATE_SST_SST25VF032B: + case EMULATE_MACRONIX_MX25L6436: if (emulate_spi_chip_response(writecnt, readcnt, writearr, readarr)) { msg_pdbg("Invalid command sent to flash chip!\n"); Modified: trunk/flashrom.8 ============================================================================== --- trunk/flashrom.8 Mon May 7 00:48:01 2012 (r1533) +++ trunk/flashrom.8 Tue May 8 00:12:16 2012 (r1534) @@ -435,6 +435,8 @@ .sp .RB "* SST " SST25VF032B " SPI flash chip (RDID, AAI write)" .sp +.RB "* Macronix " MX25L6436 " SPI flash chip (RDID, SFDP)" +.sp Example: .B "flashrom -p dummy:emulate=SST25VF040.REMS" .TP From stefan.tauner at student.tuwien.ac.at Tue May 8 00:12:54 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 8 May 2012 00:12:54 +0200 Subject: [flashrom] [PATCH] dummyflasher.c: add support for SFDP by adding a new emulator chip: MX25L6436 In-Reply-To: <4FA83E7C.4070407@gmx.net> References: <4F4295C2.6070909@gmx.net> <1329960364-11155-1-git-send-email-stefan.tauner@student.tuwien.ac.at> <4FA57BD1.4020002@gmx.net> <201205070044.q470i9t7019229@mail2.student.tuwien.ac.at> <4FA83E7C.4070407@gmx.net> Message-ID: <201205072212.q47MCs9q008886@mail2.student.tuwien.ac.at> On Mon, 07 May 2012 23:28:28 +0200 Carl-Daniel Hailfinger wrote: > Looks good. The logic is different from mine, but the effect is the same > and your version is arguably more readable. > My ack still stands, but with two small comments: > [?] thanks, committed in r1534. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Tue May 8 00:59:36 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Tue, 08 May 2012 00:59:36 +0200 Subject: [flashrom] [PATCH] SMSC SuperI/O detection Message-ID: <4FA853D8.8090409@gmx.net> Add SMSC SuperI/O detection. Avoid probing for SuperI/O at a port where we already know the SuperI/O. Signed-off-by: Carl-Daniel Hailfinger Index: flashrom-smsc_superio_detect/it87spi.c =================================================================== --- flashrom-smsc_superio_detect/it87spi.c (Revision 1533) +++ flashrom-smsc_superio_detect/it87spi.c (Arbeitskopie) @@ -80,6 +80,9 @@ s.vendor = SUPERIO_VENDOR_ITE; for (; *i; i++) { s.port = *i; + /* Skip if we already know the Super I/O on this port. */ + if (superio_port_detected(s.port)) + continue; s.model = probe_id_ite(s.port); switch (s.model >> 8) { case 0x82: Index: flashrom-smsc_superio_detect/internal.c =================================================================== --- flashrom-smsc_superio_detect/internal.c (Revision 1533) +++ flashrom-smsc_superio_detect/internal.c (Arbeitskopie) @@ -107,7 +107,7 @@ * at a given I/O port, do _not_ probe that port with the ITE probe. * This means SMSC probing must be done before ITE probing. */ - //probe_superio_smsc(); + probe_superio_smsc(); probe_superio_ite(); } @@ -116,6 +116,17 @@ struct superio superios[SUPERIO_MAX_COUNT]; +/* Check if a Super I/O chip has already been detected on this port. */ +int superio_port_detected(uint16_t port) +{ + int i; + + for (i = 0; i < superio_count; i++) + if (superios[i].port == port) + return 1; + return 0; +} + int register_superio(struct superio s) { if (superio_count == SUPERIO_MAX_COUNT) Index: flashrom-smsc_superio_detect/programmer.h =================================================================== --- flashrom-smsc_superio_detect/programmer.h (Revision 1533) +++ flashrom-smsc_superio_detect/programmer.h (Arbeitskopie) @@ -247,6 +247,7 @@ void w836xx_ext_enter(uint16_t port); void w836xx_ext_leave(uint16_t port); void probe_superio_winbond(void); +void probe_superio_smsc(void); int it8705f_write_enable(uint8_t port); uint8_t sio_read(uint16_t port, uint8_t reg); void sio_write(uint16_t port, uint8_t reg, uint8_t data); @@ -292,6 +293,7 @@ #define SUPERIO_VENDOR_NONE 0x0 #define SUPERIO_VENDOR_ITE 0x1 #define SUPERIO_VENDOR_WINBOND 0x2 +#define SUPERIO_VENDOR_SMSC 0x3 #endif #if NEED_PCI == 1 struct pci_dev *pci_dev_find_filter(struct pci_filter filter); @@ -308,6 +310,7 @@ extern int force_boardenable; extern int force_boardmismatch; void probe_superio(void); +int superio_port_detected(uint16_t port); int register_superio(struct superio s); extern enum chipbustype internal_buses_supported; int internal_init(void); Index: flashrom-smsc_superio_detect/board_enable.c =================================================================== --- flashrom-smsc_superio_detect/board_enable.c (Revision 1533) +++ flashrom-smsc_superio_detect/board_enable.c (Arbeitskopie) @@ -45,6 +45,13 @@ OUTB(0xAA, port); } +void smsc_enter_conf_mode(uint16_t port) +{ + /* Most SMSC Super I/Os require only one 0x55, but the second one does not hurt. */ + OUTB(0x55, port); + OUTB(0x55, port); +} + /* Generic Super I/O helper functions */ uint8_t sio_read(uint16_t port, uint8_t reg) { @@ -299,7 +306,10 @@ s.vendor = SUPERIO_VENDOR_WINBOND; for (; *i; i++) { s.port = *i; - /* If we're already in Super I/O config more, the W836xx enter sequence won't hurt. */ + /* Skip if we already know the Super I/O on this port. */ + if (superio_port_detected(s.port)) + continue; + /* If we're already in Super I/O config mode, the W836xx enter sequence won't hurt. */ w836xx_ext_enter(s.port); model = sio_read(s.port, 0x20); /* No response, no point leaving the config mode. */ @@ -582,6 +592,63 @@ return 0; } +#define SMSC_SUPERIO_PORT1 0x2e +#define SMSC_SUPERIO_PORT2 0x4e + +enum smsc_id { + SMSC_LPC47N217_ID = 0x7a, + SMSC_LPC47N227_ID = 0x5a, + SMSC_LPC47N237_ID = 0x13, +}; + +void probe_superio_smsc(void) +{ + struct superio s = {}; + uint16_t smsc_ports[] = {SMSC_SUPERIO_PORT1, SMSC_SUPERIO_PORT2, 0}; + uint16_t *i = smsc_ports; + uint8_t model1; + uint8_t model2; + + s.vendor = SUPERIO_VENDOR_SMSC; + for (; *i; i++) { + s.port = *i; + /* Skip if we already know the Super I/O on this port. */ + if (superio_port_detected(s.port)) + continue; + /* If we're already in Super I/O config mode, the SMSC enter sequence won't hurt. */ + smsc_enter_conf_mode(s.port); + /* Older SMSC chips have their ID in register 0x0d. */ + model1 = sio_read(s.port, 0x0d); + /* Newer SMSC chips have their ID in register 0x20. */ + model2 = sio_read(s.port, 0x20); + /* No response, no point leaving the config mode. */ + if ((model1 == 0xff) && (model2 == 0xff)) + continue; + /* Try to leave config mode. If the ID register is still readable, it's not a SMSC chip. */ + w836xx_ext_leave(s.port); + if ((model1 == sio_read(s.port, 0x0d)) && (model2 == sio_read(s.port, 0x20))) { + msg_pdbg("SMSC enter config mode worked or we were already in config mode. SMSC " + "leave config mode had no effect.\n"); + continue; + } + switch (model1) { + case SMSC_LPC47N217_ID: + case SMSC_LPC47N227_ID: + case SMSC_LPC47N237_ID: + /* Encode ID register location in the model. */ + s.model = (0x0d << 8) | model1 ; + msg_pdbg("Found SMSC Super I/O, ID 0x%02x (reg %02x) on port 0x%x\n", s.model & 0xff, + s.model >> 8, s.port); + register_superio(s); + continue; + break; + } + msg_pdbg("Found SMSC Super I/O, ID 0x%02x (reg 0x0d), ID 0x%02x (reg 0x20) on port 0x%x\n", + model1, model2, s.port); + msg_pdbg("Not registering.\n"); + } +} + /* * Suited for all boards with ITE IT8705F. * The SIS950 Super I/O probably requires a similar flash write enable. -- http://www.hailfinger.org/ From vidwer at gmail.com Tue May 8 19:48:24 2012 From: vidwer at gmail.com (Idwer Vollering) Date: Tue, 8 May 2012 19:48:24 +0200 Subject: [flashrom] [PATCH] Add logfile support to flashrom In-Reply-To: <4FA1C4E2.5040500@gmx.net> References: <4DF12DDE.9000401@gmx.net> <20110611142151.GE6443@greenwood> <4DF38206.20903@home.nl> <4DF53AAF.6000700@gmx.net> <4DF53D2B.7090006@home.nl> <4DF69FA1.6070705@gmx.net> <201106171328.p5HDSU4l017284@mail2.student.tuwien.ac.at> <201106191244.p5JCiSbM005768@mail2.student.tuwien.ac.at> <4E3092B5.9020307@gmx.net> <4F03A676.1040006@gmx.net> <201202092013.q19KDFpe031614@mail2.student.tuwien.ac.at> <4FA1C4E2.5040500@gmx.net> Message-ID: 2012/5/3 Carl-Daniel Hailfinger : > I have decided to discard most of the logging code and rewrite it to be > more readable. It even worked in preliminary tests. > TODO: > - Should "-o -" be a no-op which just redirects stderr to stdout? Right > now "-" is treated as regular file name, but most Unix utilities are > unable to handle a file with that name (try "less -" for amusement). Is this a part of your long-term plan? > - Add man page entry > - Is the log level difference for screen/logfile a good thing, and > should we default the logfile level to dbg2 instead of dbg? > > Add log file support to flashrom. > > If you use cli_classic, the log file will always contain messages at > a level which is one higher than the one specified. That way we get > all verbose messages in the log even if the user doesn't specify -V. This handles -VV and -VVV too, correct? > > Convert all printf() after start of logging to msg_*(). > > Allow separate control of log level for screen and logfile in case > other frontends (e.g. GUI, cli_mfg) want that. > > Signed-off-by: Carl-Daniel Hailfinger > > Index: flashrom-logfile/flash.h > =================================================================== > --- flashrom-logfile/flash.h ? ?(Revision 1528) > +++ flashrom-logfile/flash.h ? ?(Arbeitskopie) > @@ -228,7 +228,8 @@ > ? ? ? ?write_gran_1byte, > ? ? ? ?write_gran_256bytes, > ?}; > -extern int verbose; > +extern int verbose_screen; > +extern int verbose_logfile; > ?extern const char flashrom_version[]; > ?extern char *chip_to_probe; > ?void map_flash_registers(struct flashctx *flash); > @@ -268,13 +269,20 @@ > ?#define ERROR_FLASHROM_LIMIT -201 > > ?/* cli_output.c */ > +#ifndef STANDALONE > +int open_logfile(const char * const filename); > +int close_logfile(void); > +void start_logging(void); > +#endif > ?/* Let gcc and clang check for correct printf-style format strings. */ > -int print(int type, const char *fmt, ...) __attribute__((format(printf, 2, 3))); > -#define MSG_ERROR ? ? ?0 > -#define MSG_INFO ? ? ? 1 > -#define MSG_DEBUG ? ? ?2 > -#define MSG_DEBUG2 ? ? 3 http://review.coreboot.org/gitweb?p=coreboot.git;a=blob;f=src/include/console/loglevel.h;h=290cd891eb994b34a5060a469bde9589e1419f90;hb=HEAD #define MSG_NOTICE 2 #define MSG_DEBUG 3 > -#define MSG_BARF ? ? ? 4 #define MSG_SPEW 4 > +enum msglevel { > + ? ? ? MSG_ERROR ? ? ? = 0, > + ? ? ? MSG_INFO ? ? ? ?= 1, > + ? ? ? MSG_DEBUG ? ? ? = 2, > + ? ? ? MSG_DEBUG2 ? ? ?= 3, > + ? ? ? MSG_BARF ? ? ? ?= 4, > +}; > +int print(enum msglevel level, const char *fmt, ...) __attribute__((format(printf, 2, 3))); > ?#define msg_gerr(...) ?print(MSG_ERROR, __VA_ARGS__) ? /* general errors */ > ?#define msg_perr(...) ?print(MSG_ERROR, __VA_ARGS__) ? /* programmer errors */ > ?#define msg_cerr(...) ?print(MSG_ERROR, __VA_ARGS__) ? /* chip errors */ > Index: flashrom-logfile/cli_output.c > =================================================================== > --- flashrom-logfile/cli_output.c ? ? ? (Revision 1528) > +++ flashrom-logfile/cli_output.c ? ? ? (Arbeitskopie) > @@ -2,6 +2,7 @@ > ?* This file is part of the flashrom project. > ?* > ?* Copyright (C) 2009 Sean Nelson > + * Copyright (C) 2011 Carl-Daniel Hailfinger > ?* > ?* This program is free software; you can redistribute it and/or modify > ?* it under the terms of the GNU General Public License as published by > @@ -20,36 +21,80 @@ > > ?#include > ?#include > +#include > +#include > ?#include "flash.h" > > -int print(int type, const char *fmt, ...) > +static FILE *logfile = NULL; > + > +#ifndef STANDALONE > +int close_logfile(void) > ?{ > + ? ? ? if (logfile && fclose(logfile)) { No sync() / fsync() ? From http://linux.die.net/man/3/fclose "Note that fclose() only flushes the user space buffers provided by the C library. To ensure that the data is physically stored on disk the kernel buffers must be flushed too, for example, with sync(2) or fsync(2)." > + ? ? ? ? ? ? ? /* fclose returned an error. Stop writing to be safe. */ > + ? ? ? ? ? ? ? logfile = NULL; > + ? ? ? ? ? ? ? msg_perr("Closing the log file returned error %s\n", > + ? ? ? ? ? ? ? ? ? ? ? ?strerror(errno)); > + ? ? ? ? ? ? ? return 1; > + ? ? ? } > + ? ? ? logfile = NULL; > + ? ? ? return 0; > +} > + > +int open_logfile(const char * const filename) > +{ > + ? ? ? if (!filename) { > + ? ? ? ? ? ? ? msg_gerr("No filename specified.\n"); > + ? ? ? ? ? ? ? return 1; > + ? ? ? } > + ? ? ? if ((logfile = fopen(filename, "w")) == NULL) { > + ? ? ? ? ? ? ? perror(filename); > + ? ? ? ? ? ? ? return 1; > + ? ? ? } > + ? ? ? return 0; > +} > + > +void start_logging(void) > +{ > + ? ? ? enum msglevel oldverbose_screen = verbose_screen; > + ? ? ? enum msglevel oldverbose_logfile = verbose_logfile; > + > + ? ? ? /* Shut up the console. */ > + ? ? ? verbose_screen = MSG_ERROR; > + ? ? ? verbose_logfile = MSG_DEBUG; > + ? ? ? print_version(); > + ? ? ? verbose_screen = oldverbose_screen; > + ? ? ? verbose_logfile = oldverbose_logfile; > +} > +#endif /* STANDALONE */ > + > +/* Please note that level is the verbosity, not the importance of the message. > + */ > +int print(enum msglevel level, const char *fmt, ...) > +{ > ? ? ? ?va_list ap; > - ? ? ? int ret; > - ? ? ? FILE *output_type; > + ? ? ? int ret = 0; > + ? ? ? FILE *output_level = stdout; > > - ? ? ? switch (type) { > - ? ? ? case MSG_ERROR: > - ? ? ? ? ? ? ? output_type = stderr; > - ? ? ? ? ? ? ? break; > - ? ? ? case MSG_BARF: > - ? ? ? ? ? ? ? if (verbose < 3) > - ? ? ? ? ? ? ? ? ? ? ? return 0; > - ? ? ? case MSG_DEBUG2: > - ? ? ? ? ? ? ? if (verbose < 2) > - ? ? ? ? ? ? ? ? ? ? ? return 0; > - ? ? ? case MSG_DEBUG: > - ? ? ? ? ? ? ? if (verbose < 1) > - ? ? ? ? ? ? ? ? ? ? ? return 0; > - ? ? ? case MSG_INFO: > - ? ? ? default: > - ? ? ? ? ? ? ? output_type = stdout; > - ? ? ? ? ? ? ? break; > + ? ? ? if (level == MSG_ERROR) > + ? ? ? ? ? ? ? output_level = stderr; > + > + ? ? ? if (level <= verbose_screen) { > + ? ? ? ? ? ? ? va_start(ap, fmt); > + ? ? ? ? ? ? ? ret = vfprintf(output_level, fmt, ap); > + ? ? ? ? ? ? ? va_end(ap); > + ? ? ? ? ? ? ? /* msg_*spew usually happens inside chip accessors in possibly > + ? ? ? ? ? ? ? ?* time-critical operations. Don't slow them down by flushing. > + ? ? ? ? ? ? ? ?*/ > + ? ? ? ? ? ? ? if (level != MSG_BARF) > + ? ? ? ? ? ? ? ? ? ? ? fflush(output_level); > ? ? ? ?} > - > - ? ? ? va_start(ap, fmt); > - ? ? ? ret = vfprintf(output_type, fmt, ap); > - ? ? ? va_end(ap); > - ? ? ? fflush(output_type); > + ? ? ? if ((level <= verbose_logfile) && logfile) { > + ? ? ? ? ? ? ? va_start(ap, fmt); > + ? ? ? ? ? ? ? ret = vfprintf(logfile, fmt, ap); > + ? ? ? ? ? ? ? va_end(ap); > + ? ? ? ? ? ? ? if (level != MSG_BARF) > + ? ? ? ? ? ? ? ? ? ? ? fflush(logfile); > + ? ? ? } > ? ? ? ?return ret; > ?} > Index: flashrom-logfile/cli_classic.c > =================================================================== > --- flashrom-logfile/cli_classic.c ? ? ?(Revision 1528) > +++ flashrom-logfile/cli_classic.c ? ? ?(Arbeitskopie) > @@ -106,7 +106,7 @@ > ? ? ? ? ? ? ? ? "-z|" > ?#endif > ? ? ? ? ? ? ? ? "-E|-r |-w |-v ]\n" > - ? ? ? ? ? ? ?" ? ? ? [-c ] [-l ]\n" > + ? ? ? ? ? ? ?" ? ? ? [-c ] [-l ] [-o ]\n" > ? ? ? ? ? ? ? " ? ? ? [-i ] [-p [:]]\n\n"); > > ? ? ? ?printf("Please note that the command line interface for flashrom has " > @@ -135,6 +135,7 @@ > ? ? ? ? ? ? ? ? "\n" > ? ? ? ? ? ? ? " ? -i | --image ? ? ? ? ? ? ? only flash image " > ? ? ? ? ? ? ? ? "from flash layout\n" > + ? ? ? ? ? ? ?" ? -o | --output ? ? ? ? ? ? ?log to file \n" > ? ? ? ? ? ? ? " ? -L | --list-supported ? ? ? ? ? ? print supported devices\n" > ?#if CONFIG_PRINT_WIKI == 1 > ? ? ? ? ? ? ? " ? -z | --list-supported-wiki ? ? ? ?print supported devices " > @@ -177,7 +178,7 @@ > ? ? ? ?enum programmer prog = PROGRAMMER_INVALID; > ? ? ? ?int ret = 0; > > - ? ? ? static const char optstring[] = "r:Rw:v:nVEfc:l:i:p:Lzh"; > + ? ? ? static const char optstring[] = "r:Rw:v:nVEfc:l:i:p:Lzho:"; > ? ? ? ?static const struct option long_options[] = { > ? ? ? ? ? ? ? ?{"read", ? ? ? ? ? ? ? ?1, NULL, 'r'}, > ? ? ? ? ? ? ? ?{"write", ? ? ? ? ? ? ? 1, NULL, 'w'}, > @@ -194,11 +195,13 @@ > ? ? ? ? ? ? ? ?{"programmer", ? ? ? ? ?1, NULL, 'p'}, > ? ? ? ? ? ? ? ?{"help", ? ? ? ? ? ? ? ?0, NULL, 'h'}, > ? ? ? ? ? ? ? ?{"version", ? ? ? ? ? ? 0, NULL, 'R'}, > + ? ? ? ? ? ? ? {"output", ? ? ? ? ? ? ?1, NULL, 'o'}, > ? ? ? ? ? ? ? ?{NULL, ? ? ? ? ? ? ? ? ?0, NULL, 0}, > ? ? ? ?}; > > ? ? ? ?char *filename = NULL; > ? ? ? ?char *layoutfile = NULL; > + ? ? ? char *log_name = NULL; > ? ? ? ?char *tempstr = NULL; > ? ? ? ?char *pparam = NULL; > > @@ -260,7 +263,8 @@ > ? ? ? ? ? ? ? ? ? ? ? ?chip_to_probe = strdup(optarg); > ? ? ? ? ? ? ? ? ? ? ? ?break; > ? ? ? ? ? ? ? ?case 'V': > - ? ? ? ? ? ? ? ? ? ? ? verbose++; > + ? ? ? ? ? ? ? ? ? ? ? verbose_screen++; > + ? ? ? ? ? ? ? ? ? ? ? verbose_logfile++; > ? ? ? ? ? ? ? ? ? ? ? ?break; > ? ? ? ? ? ? ? ?case 'E': > ? ? ? ? ? ? ? ? ? ? ? ?if (++operation_specified > 1) { > @@ -366,6 +370,19 @@ > ? ? ? ? ? ? ? ? ? ? ? ?cli_classic_usage(argv[0]); > ? ? ? ? ? ? ? ? ? ? ? ?exit(0); > ? ? ? ? ? ? ? ? ? ? ? ?break; > + ? ? ? ? ? ? ? case 'o': > +#ifdef STANDALONE > + ? ? ? ? ? ? ? ? ? ? ? fprintf(stderr, "Log file not supported in standalone " > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "mode. Aborting.\n"); > + ? ? ? ? ? ? ? ? ? ? ? cli_classic_abort_usage(); > +#else /* STANDALONE */ > + ? ? ? ? ? ? ? ? ? ? ? log_name = strdup(optarg); > + ? ? ? ? ? ? ? ? ? ? ? if (log_name[0] == '\0') { > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fprintf(stderr, "No log filename specified.\n"); > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cli_classic_abort_usage(); > + ? ? ? ? ? ? ? ? ? ? ? } > +#endif /* STANDALONE */ > + ? ? ? ? ? ? ? ? ? ? ? break; > ? ? ? ? ? ? ? ?default: > ? ? ? ? ? ? ? ? ? ? ? ?cli_classic_abort_usage(); > ? ? ? ? ? ? ? ? ? ? ? ?break; > @@ -377,20 +394,40 @@ > ? ? ? ? ? ? ? ?cli_classic_abort_usage(); > ? ? ? ?} > > - ? ? ? /* FIXME: Print the actions flashrom will take. */ > - > - ? ? ? if (list_supported) { > - ? ? ? ? ? ? ? print_supported(); > - ? ? ? ? ? ? ? exit(0); > + ? ? ? if ((read_it | write_it | verify_it) && !filename) { > + ? ? ? ? ? ? ? fprintf(stderr, "Error: No filename specified.\n"); "No log filename specified.\n" ? > + ? ? ? ? ? ? ? cli_classic_abort_usage(); > ? ? ? ?} > + ? ? ? if (filename && (filename[0] == '\0')) { > + ? ? ? ? ? ? ? fprintf(stderr, "Error: No filename specified.\n"); dito > + ? ? ? ? ? ? ? cli_classic_abort_usage(); > + ? ? ? } > + ? ? ? if (filename && (filename[0] == '-')) > + ? ? ? ? ? ? ? fprintf(stderr, "Warning: Supplied file name starts with -\n"); > > +#ifndef STANDALONE > + ? ? ? if (log_name && (log_name[0] == '-')) > + ? ? ? ? ? ? ? fprintf(stderr, "Warning: Supplied file name starts with -\n"); > + ? ? ? if (log_name && open_logfile(log_name)) WARNING or Warning? Maybe add a line that says that this will change in the future? > + ? ? ? ? ? ? ? return 1; > +#endif /* !STANDALONE */ > + > ?#if CONFIG_PRINT_WIKI == 1 > ? ? ? ?if (list_supported_wiki) { > ? ? ? ? ? ? ? ?print_supported_wiki(); > - ? ? ? ? ? ? ? exit(0); > + ? ? ? ? ? ? ? ret = 0; > + ? ? ? ? ? ? ? goto out; > ? ? ? ?} > ?#endif > > + ? ? ? if (list_supported) { > + ? ? ? ? ? ? ? print_supported(); > + ? ? ? ? ? ? ? ret = 0; > + ? ? ? ? ? ? ? goto out; > + ? ? ? } > + > + ? ? ? // FIXME: cli_classic_abort_usage() does exit(1) and we rely on the OS > + ? ? ? // to flush log file buffers. Is that behaviour guaranteed? > ? ? ? ?if (layoutfile && read_romlayout(layoutfile)) > ? ? ? ? ? ? ? ?cli_classic_abort_usage(); > ? ? ? ?if (process_include_args()) > @@ -415,11 +452,22 @@ > ? ? ? ?if (prog == PROGRAMMER_INVALID) > ? ? ? ? ? ? ? ?prog = default_programmer; > > +#ifndef STANDALONE > + ? ? ? start_logging(); > +#endif /* STANDALONE */ > + > + ? ? ? msg_gdbg("Command line:"); > + ? ? ? for (i = 0; i < argc; i++) { > + ? ? ? ? ? ? ? msg_gdbg(" %s", argv[i]); > + ? ? ? } > + ? ? ? msg_gdbg("\n"); > + > + > ? ? ? ?/* FIXME: Delay calibration should happen in programmer code. */ > ? ? ? ?myusec_calibrate_delay(); > > ? ? ? ?if (programmer_init(prog, pparam)) { > - ? ? ? ? ? ? ? fprintf(stderr, "Error: Programmer initialization failed.\n"); > + ? ? ? ? ? ? ? msg_perr("Error: Programmer initialization failed.\n"); > ? ? ? ? ? ? ? ?ret = 1; > ? ? ? ? ? ? ? ?goto out_shutdown; > ? ? ? ?} > @@ -442,25 +490,25 @@ > ? ? ? ?} > > ? ? ? ?if (chipcount > 1) { > - ? ? ? ? ? ? ? printf("Multiple flash chips were detected: \"%s\"", > - ? ? ? ? ? ? ? ? ? ? ? flashes[0].name); > + ? ? ? ? ? ? ? msg_cinfo("Multiple flash chips were detected: \"%s\"", > + ? ? ? ? ? ? ? ? ? ? ? ? flashes[0].name); > ? ? ? ? ? ? ? ?for (i = 1; i < chipcount; i++) > - ? ? ? ? ? ? ? ? ? ? ? printf(", \"%s\"", flashes[i].name); > - ? ? ? ? ? ? ? printf("\nPlease specify which chip to use with the " > - ? ? ? ? ? ? ? ? ? ? ?"-c option.\n"); > + ? ? ? ? ? ? ? ? ? ? ? msg_cinfo(", \"%s\"", flashes[i].name); > + ? ? ? ? ? ? ? msg_cinfo("\nPlease specify which chip to use with the -c " > + ? ? ? ? ? ? ? ? ? ? ? ? " option.\n"); > ? ? ? ? ? ? ? ?ret = 1; > ? ? ? ? ? ? ? ?goto out_shutdown; > ? ? ? ?} else if (!chipcount) { > - ? ? ? ? ? ? ? printf("No EEPROM/flash device found.\n"); > + ? ? ? ? ? ? ? msg_cinfo("No EEPROM/flash device found.\n"); > ? ? ? ? ? ? ? ?if (!force || !chip_to_probe) { > - ? ? ? ? ? ? ? ? ? ? ? printf("Note: flashrom can never write if the flash " > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"chip isn't found automatically.\n"); > + ? ? ? ? ? ? ? ? ? ? ? msg_cinfo("Note: flashrom can never write if the flash " > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "chip isn't found automatically.\n"); > ? ? ? ? ? ? ? ?} > ? ? ? ? ? ? ? ?if (force && read_it && chip_to_probe) { > ? ? ? ? ? ? ? ? ? ? ? ?struct registered_programmer *pgm; > ? ? ? ? ? ? ? ? ? ? ? ?int compatible_programmers = 0; > - ? ? ? ? ? ? ? ? ? ? ? printf("Force read (-f -r -c) requested, pretending " > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"the chip is there:\n"); > + ? ? ? ? ? ? ? ? ? ? ? msg_cinfo("Force read (-f -r -c) requested, pretending " > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "the chip is there:\n"); > ? ? ? ? ? ? ? ? ? ? ? ?/* This loop just counts compatible controllers. */ > ? ? ? ? ? ? ? ? ? ? ? ?for (j = 0; j < registered_programmer_count; j++) { > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?pgm = ®istered_programmers[j]; > @@ -468,9 +516,9 @@ > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?compatible_programmers++; > ? ? ? ? ? ? ? ? ? ? ? ?} > ? ? ? ? ? ? ? ? ? ? ? ?if (compatible_programmers > 1) > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("More than one compatible controller " > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"found for the requested flash chip, " > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"using the first one.\n"); > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? msg_cinfo("More than one compatible controller " > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "found for the requested flash chip, " > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "using the first one.\n"); > ? ? ? ? ? ? ? ? ? ? ? ?for (j = 0; j < registered_programmer_count; j++) { > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?pgm = ®istered_programmers[j]; > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?startchip = probe_flash(pgm, 0, &flashes[0], 1); > @@ -478,14 +526,15 @@ > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?break; > ? ? ? ? ? ? ? ? ? ? ? ?} > ? ? ? ? ? ? ? ? ? ? ? ?if (startchip == -1) { > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("Probing for flash chip '%s' failed.\n", > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?chip_to_probe); > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? msg_cinfo("Probing for flash chip '%s' failed." > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "\n", chip_to_probe); > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ret = 1; > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?goto out_shutdown; > ? ? ? ? ? ? ? ? ? ? ? ?} > - ? ? ? ? ? ? ? ? ? ? ? printf("Please note that forced reads most likely " > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"contain garbage.\n"); > - ? ? ? ? ? ? ? ? ? ? ? return read_flash_to_file(&flashes[0], filename); > + ? ? ? ? ? ? ? ? ? ? ? msg_cinfo("Please note that forced reads most likely " > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "contain garbage.\n"); > + ? ? ? ? ? ? ? ? ? ? ? ret = read_flash_to_file(&flashes[0], filename); > + ? ? ? ? ? ? ? ? ? ? ? goto out_shutdown; > ? ? ? ? ? ? ? ?} > ? ? ? ? ? ? ? ?ret = 1; > ? ? ? ? ? ? ? ?goto out_shutdown; > @@ -505,23 +554,17 @@ > ? ? ? ?size = fill_flash->total_size * 1024; > ? ? ? ?if (check_max_decode(fill_flash->pgm->buses_supported & fill_flash->bustype, size) && > ? ? ? ? ? ?(!force)) { > - ? ? ? ? ? ? ? fprintf(stderr, "Chip is too big for this programmer " > - ? ? ? ? ? ? ? ? ? ? ? "(-V gives details). Use --force to override.\n"); > + ? ? ? ? ? ? ? msg_cerr("Chip is too big for this programmer " > + ? ? ? ? ? ? ? ? ? ? ? ?"(-V gives details). Use --force to override.\n"); > ? ? ? ? ? ? ? ?ret = 1; > ? ? ? ? ? ? ? ?goto out_shutdown; > ? ? ? ?} > > ? ? ? ?if (!(read_it | write_it | verify_it | erase_it)) { > - ? ? ? ? ? ? ? printf("No operations were specified.\n"); > + ? ? ? ? ? ? ? msg_ginfo("No operations were specified.\n"); > ? ? ? ? ? ? ? ?goto out_shutdown; > ? ? ? ?} > > - ? ? ? if (!filename && !erase_it) { > - ? ? ? ? ? ? ? printf("Error: No filename specified.\n"); > - ? ? ? ? ? ? ? ret = 1; > - ? ? ? ? ? ? ? goto out_shutdown; > - ? ? ? } > - > ? ? ? ?/* Always verify write operations unless -n is used. */ > ? ? ? ?if (write_it && !dont_verify_it) > ? ? ? ? ? ? ? ?verify_it = 1; > @@ -531,9 +574,13 @@ > ? ? ? ? * Give the chip time to settle. > ? ? ? ? */ > ? ? ? ?programmer_delay(100000); > - ? ? ? return doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); > + ? ? ? ret |= doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); > > ?out_shutdown: > ? ? ? ?programmer_shutdown(); > +out: > +#ifndef STANDALONE > + ? ? ? ret |= close_logfile(); > +#endif > ? ? ? ?return ret; > ?} > Index: flashrom-logfile/flashrom.c > =================================================================== > --- flashrom-logfile/flashrom.c (Revision 1528) > +++ flashrom-logfile/flashrom.c (Arbeitskopie) > @@ -40,7 +40,8 @@ > > ?const char flashrom_version[] = FLASHROM_VERSION; > ?char *chip_to_probe = NULL; > -int verbose = 0; > +int verbose_screen = MSG_INFO; > +int verbose_logfile = MSG_DEBUG; > > ?static enum programmer programmer = PROGRAMMER_INVALID; > > @@ -1457,27 +1458,27 @@ > ? ? ? ? ? ? ? ? ? ? ? ?if (firstline) > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?firstline = 0; > ? ? ? ? ? ? ? ? ? ? ? ?else > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("\n"); > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? msg_ginfo("\n"); > ? ? ? ? ? ? ? ? ? ? ? ?for (i = 0; i < startcol; i++) > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf(" "); > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? msg_ginfo(" "); > ? ? ? ? ? ? ? ? ? ? ? ?remaining = cols - startcol; > ? ? ? ? ? ? ? ?} else { > - ? ? ? ? ? ? ? ? ? ? ? printf(" "); > + ? ? ? ? ? ? ? ? ? ? ? msg_ginfo(" "); > ? ? ? ? ? ? ? ? ? ? ? ?remaining--; > ? ? ? ? ? ? ? ?} > ? ? ? ? ? ? ? ?if (paren && (p == 0)) { > - ? ? ? ? ? ? ? ? ? ? ? printf("("); > + ? ? ? ? ? ? ? ? ? ? ? msg_ginfo("("); > ? ? ? ? ? ? ? ? ? ? ? ?remaining--; > ? ? ? ? ? ? ? ?} > - ? ? ? ? ? ? ? printf("%s", pname); > + ? ? ? ? ? ? ? msg_ginfo("%s", pname); > ? ? ? ? ? ? ? ?remaining -= pnamelen; > ? ? ? ? ? ? ? ?if (p < PROGRAMMER_INVALID - 1) { > - ? ? ? ? ? ? ? ? ? ? ? printf(","); > + ? ? ? ? ? ? ? ? ? ? ? msg_ginfo(","); > ? ? ? ? ? ? ? ? ? ? ? ?remaining--; > ? ? ? ? ? ? ? ?} else { > ? ? ? ? ? ? ? ? ? ? ? ?if (paren) > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf(")"); > - ? ? ? ? ? ? ? ? ? ? ? printf("\n"); > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? msg_ginfo(")"); > + ? ? ? ? ? ? ? ? ? ? ? msg_ginfo("\n"); > ? ? ? ? ? ? ? ?} > ? ? ? ?} > ?} > @@ -1493,35 +1494,35 @@ > ?#else > ? ? ? ?msg_ginfo(" on unknown machine"); > ?#endif > - ? ? ? msg_ginfo(", built with"); > + ? ? ? msg_gdbg(", built with"); > ?#if NEED_PCI == 1 > ?#ifdef PCILIB_VERSION > - ? ? ? msg_ginfo(" libpci %s,", PCILIB_VERSION); > + ? ? ? msg_gdbg(" libpci %s,", PCILIB_VERSION); > ?#else > - ? ? ? msg_ginfo(" unknown PCI library,"); > + ? ? ? msg_gdbg(" unknown PCI library,"); > ?#endif > ?#endif > ?#ifdef __clang__ > - ? ? ? msg_ginfo(" LLVM Clang"); > + ? ? ? msg_gdbg(" LLVM Clang"); > ?#ifdef __clang_version__ > - ? ? ? msg_ginfo(" %s,", __clang_version__); > + ? ? ? msg_gdbg(" %s,", __clang_version__); > ?#else > - ? ? ? msg_ginfo(" unknown version (before r102686),"); > + ? ? ? msg_gdbg(" unknown version (before r102686),"); > ?#endif > ?#elif defined(__GNUC__) > - ? ? ? msg_ginfo(" GCC"); > + ? ? ? msg_gdbg(" GCC"); > ?#ifdef __VERSION__ > - ? ? ? msg_ginfo(" %s,", __VERSION__); > + ? ? ? msg_gdbg(" %s,", __VERSION__); > ?#else > - ? ? ? msg_ginfo(" unknown version,"); > + ? ? ? msg_gdbg(" unknown version,"); > ?#endif > ?#else > - ? ? ? msg_ginfo(" unknown compiler,"); > + ? ? ? msg_gdbg(" unknown compiler,"); > ?#endif > ?#if defined (__FLASHROM_LITTLE_ENDIAN__) > - ? ? ? msg_ginfo(" little endian"); > + ? ? ? msg_gdbg(" little endian"); > ?#else > - ? ? ? msg_ginfo(" big endian"); > + ? ? ? msg_gdbg(" big endian"); > ?#endif > ? ? ? ?msg_ginfo("\n"); > ?} > @@ -1534,7 +1535,7 @@ > > ?void print_banner(void) > ?{ > - ? ? ? msg_ginfo("flashrom is free software, get the source code at " > + ? ? ? msg_ginfo("flashrom is free software. Get the source code at " > ? ? ? ? ? ? ? ? ?"http://www.flashrom.org\n"); > ? ? ? ?msg_ginfo("\n"); > ?} > @@ -1840,6 +1841,5 @@ > ? ? ? ?free(oldcontents); > ? ? ? ?free(newcontents); > ?out_nofree: > - ? ? ? programmer_shutdown(); > ? ? ? ?return ret; > ?} > > > -- > http://www.hailfinger.org/ > > > _______________________________________________ > flashrom mailing list > flashrom at flashrom.org > http://www.flashrom.org/mailman/listinfo/flashrom From gurken.papst at gmail.com Tue May 8 21:20:51 2012 From: gurken.papst at gmail.com (Gurken Papst) Date: Tue, 8 May 2012 21:20:51 +0200 Subject: [flashrom] Test Report - EPoX EP-8KTA3 Pro - chip not detected Message-ID: Eon EN29F002NT is not detected on an EPoX EP-8KTA3 Pro with VIA VT82C686B. It might be of interest, that this board looks like it has an option for a second flash chip on the PCB, but there is no socket soldered in that place. Again, I do not need support on this board. Just wanted to report hoping it might help you in any way. Output of flashrom -V, superiotool -deV and lspci -nnvvxxx follows: flashrom v0.9.5.2-r1517 on Linux 3.2.0-23-generic-pae (i686), 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, 723M loops per second, 10 myus = 11 us, 100 myus = 100 us, 1000 myus = 987 us, 10000 myus = 10450 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "VIA Technologies, Inc." DMI string system-product-name: "VT8363" DMI string system-version: " " DMI string baseboard-manufacturer: " " DMI string baseboard-product-name: "8363A-686B" DMI string baseboard-version: " " DMI string chassis-type: "Desktop" Found chipset "VIA VT82C686A/B" with PCI ID 1106:0686. Enabling flash write... OK. The following protocols are supported: Non-SPI. Probing for AMD Am29F010A/B, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F002(N)BB, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F002(N)BT, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, 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 0x25, id2 0x0f, 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 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV001BT, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV002BB, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV002BT, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV004BB, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV004BT, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, 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 0x25, id2 0x0f, 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 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for AMIC A29002T, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for AMIC A29040B, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for AMIC A49LF040A, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT29C512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT29C010A, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT29C020, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT29C040A, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49BV512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49F020, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49F002(N), 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49F002(N)T, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Catalyst CAT28F512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Bright BM29F040, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for EMST F49B002UA, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29F010, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29F002(A)(N)B, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29F002(A)(N)T, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Fujitsu MBM29F004BC, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Fujitsu MBM29F004TC, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Fujitsu MBM29F400BC, 512 kB: probe_m29f400bt: id1 0x25, id2 0x2d Probing for Fujitsu MBM29F400TC, 512 kB: probe_m29f400bt: id1 0x25, id2 0x2d Probing for Hyundai HY29F002T, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Hyundai HY29F002B, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Hyundai HY29F040A, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F001BN/BX-B, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F001BN/BX-T, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F002BC/BL/BV/BX-T, 256 kB: probe_82802ab: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F008S3/S5/SC, 512 kB: probe_82802ab: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F004B5/BE/BV/BX-B, 512 kB: probe_82802ab: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F004B5/BE/BV/BX-T, 512 kB: probe_82802ab: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F400BV/BX/CE/CV-B, 512 kB: probe_82802ab: id1 0x25, id2 0x2d, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F400BV/BX/CE/CV-T, 512 kB: probe_82802ab: id1 0x25, id2 0x2d, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0x25, id2 0x0f, 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 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F001T, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F002(N)B, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F002(N)T, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F040, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29LV040, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29C51000B, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29C51000T, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29C51400B, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29C51400T, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29LC51000, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29LC51001, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29LC51002, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm29F002T, 256 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0x25, id2 0x0f, 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 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm39LV010, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm39LV020, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm39LV040, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content 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 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SST SST29EE010, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for SST SST29LE010, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for SST SST29EE020A, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SST SST29LE020, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SST SST39SF512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST39SF010A, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for SST SST39SF020A, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SST SST39SF040, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SST SST39VF512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST39VF010, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for SST SST39VF020, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SST SST39VF040, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content 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 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0x25, id2 0x0f, 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 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF020A, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF040, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF040B, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, 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 M29F002B, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for ST M29F002T/NT, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for ST M29F040B, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for ST M29F400BB, 512 kB: probe_m29f400bt: id1 0x25, id2 0x2d Probing for ST M29F400BT, 512 kB: probe_m29f400bt: id1 0x25, id2 0x2d Probing for ST M29W010B, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for ST M29W040B, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, 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 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0x25, id2 0x0f, 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 0x0f, 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 0x0f, 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 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51001T, 128 kB: probe_jedec_common: id1 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51002B, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51002T, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51004B, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51004T, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {S,V}29C31004B, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {S,V}29C31004T, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for TI TMS29F002RB, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for TI TMS29F002RT, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, 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 0x97, id2 0x4d, id1 is normal flash content, id2 is normal flash content Probing for Winbond W29C020(C)/W29C022, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Winbond W29C040/P, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39L040, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040A, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040B, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040C, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0x25, id2 0x0f, 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 W49F002U/N, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49F020, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002A, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x25, id2 0x0f, 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 0x25, id2 0x0f, 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:07:0 reg 0x40 Restoring PCI config space for 00:07:0 reg 0x43 superiotool r5050 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... Failed. Returned data: vid=0xffff, id=0xffff Probing for ITE Super I/O (init=standard) 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=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=0xffff, rev=0xf 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 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=0xff/0x0f, rev=0xff 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... Super I/O enabled, Super I/O configuration disabled Found VIA VT82C686A/VT82C686B (id=0x003c, rev=0x00) at 0x3f0 00:00.0 Host bridge [0600]: VIA Technologies, Inc. VT8363/8365 [KT133/KM133] [1106:0305] (rev 03) 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: [80] 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 modules: shpchp 00: 06 11 05 83 07 00 30 22 00 00 04 06 00 00 01 00 10: 00 00 00 00 00 00 00 00 00 01 01 00 f0 00 00 00 20: 00 e0 f0 e1 00 d8 f0 df 00 00 00 00 00 00 00 00 30: 00 00 00 00 80 00 00 00 00 00 00 00 00 00 0c 00 40: cb cd 08 44 25 72 05 83 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 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: 01 00 02 02 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 00 00 00 00 00 00 00 00 00:07.0 ISA bridge [0601]: VIA Technologies, Inc. VT82C686 [Apollo Super South] [1106:0686] (rev 40) Subsystem: VIA Technologies, Inc. VT82C686/A PCI to ISA Bridge [1106:0000] 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- LinkedIn ------------ A? dori s? v? adaug ?n re?eaua mea profesional? de pe LinkedIn. - Elena Gusanu Elena Gusanu Student la ASE Rom?nia Confirma?i c? Elena Gusanu se num?r? printre cuno?tin?ele dvs. https://www.linkedin.com/e/-yf7b9m-h1zbxtjj-4j/isd/7019067280/K5atI-Zv/?hs=false&tok=3-VhVbezDVURc1 -- Primi?i mesaje e-mail de Invita?ie de conectare. Ca s? v? dezabona?i, face?i clic pe: http://www.linkedin.com/e/-yf7b9m-h1zbxtjj-4j/vWW97c3yYCaKBxukbp1rTeei6TZJNeq5l3/goo/flashrom%40flashrom%2Eorg/20061/I2402309677_1/?hs=false&tok=0R1xJ0OXTVURc1 (c) 2012 LinkedIn Corporation. 2029 Stierlin Ct., Mountain View, CA 94043 USA -------------- next part -------------- An HTML attachment was scrubbed... URL: From gurken.papst at gmail.com Tue May 8 21:02:59 2012 From: gurken.papst at gmail.com (Gurken Papst) Date: Tue, 8 May 2012 21:02:59 +0200 Subject: [flashrom] Test Report - Asus P4G8X - reading works Message-ID: Writing untested since I currently have no possibility to flash the chip somewhere else if it should fail. flashrom v0.9.5.2-r1517 on Linux 3.2.0-23-generic-pae (i686), 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, 2026M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 992 us, 10000 myus = 10170 us, 4 myus = 8 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "System Manufacturer" DMI string system-product-name: "System Name" DMI string system-version: "System Version" DMI string baseboard-manufacturer: "ASUSTeK Computer INC." DMI string baseboard-product-name: "P4G8X " DMI string baseboard-version: "REV 1.xx" DMI string chassis-type: "Tower" Found chipset "Intel ICH4/ICH4-L" with PCI ID 8086:24c0. 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 0xd4, id2 0x54, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0x00, id2 0xf8, 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 0xbf, id2 0x60 Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xbf, id2 0x60 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 0xbf, id2 0x60 Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xbf, id2 0x60 Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xbf, id2 0x60 Found SST flash chip "SST49LF004A/B" (512 kB, FWH) at physical address 0xfff80000. Lock status for 0x000000 (size 0x010000) is 00, full access Lock status for 0x010000 (size 0x010000) is 00, full access Lock status for 0x020000 (size 0x010000) is 00, full access Lock status for 0x030000 (size 0x010000) is 00, full access Lock status for 0x040000 (size 0x010000) is 00, full access Lock status for 0x050000 (size 0x010000) is 00, full access Lock status for 0x060000 (size 0x010000) is 00, full access Lock status for 0x070000 (size 0x010000) is 00, full access Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0x00, id2 0xf8, 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 ST M50FLW040A, 512 kB: probe_82802ab: id1 0x00, id2 0xf8, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0x00, id2 0xf8, 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 0xd4, id2 0x54, 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 0x00, id2 0xf8, 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 0xbf, id2 0x60 Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xbf, id2 0x60 Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xbf, id2 0x60 Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0xbf, id2 0x60 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 0x60 Found SST flash chip "SST49LF004A/B" (512 kB, FWH). Lock status for 0x000000 (size 0x010000) is 00, full access Lock status for 0x010000 (size 0x010000) is 00, full access Lock status for 0x020000 (size 0x010000) is 00, full access Lock status for 0x030000 (size 0x010000) is 00, full access Lock status for 0x040000 (size 0x010000) is 00, full access Lock status for 0x050000 (size 0x010000) is 00, full access Lock status for 0x060000 (size 0x010000) is 00, full access Lock status for 0x070000 (size 0x010000) is 00, full access Reading flash... done. Restoring PCI config space for 00:1f:0 reg 0x4e From c-d.hailfinger.devel.2006 at gmx.net Wed May 9 12:28:31 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 09 May 2012 12:28:31 +0200 Subject: [flashrom] [PATCH] Clean up msg_* Message-ID: <4FAA46CF.7010801@gmx.net> Convert printf to msg_* where appropriate. Clean up cli_output.c to be more readable. Use enum instead of #define for message levels. Kill a few exit(0) calls. Print the command line arguments in verbose mode. Move actions (--list-supported etc.) after argument sanity checks. Reduce the number of code paths which have their own programmer_shutdown(). Note: This patch was formerly part of the logfile patch, but that made review harder. Signed-off-by: Carl-Daniel Hailfinger Index: flashrom-message_reorg/flash.h =================================================================== --- flashrom-message_reorg/flash.h (Revision 1534) +++ flashrom-message_reorg/flash.h (Arbeitskopie) @@ -269,12 +269,14 @@ /* cli_output.c */ /* Let gcc and clang check for correct printf-style format strings. */ -int print(int type, const char *fmt, ...) __attribute__((format(printf, 2, 3))); -#define MSG_ERROR 0 -#define MSG_INFO 1 -#define MSG_DEBUG 2 -#define MSG_DEBUG2 3 -#define MSG_BARF 4 +enum msglevel { + MSG_ERROR = 0, + MSG_INFO = 1, + MSG_DEBUG = 2, + MSG_DEBUG2 = 3, + MSG_BARF = 4, +}; +int print(enum msglevel level, const char *fmt, ...) __attribute__((format(printf, 2, 3))); #define msg_gerr(...) print(MSG_ERROR, __VA_ARGS__) /* general errors */ #define msg_perr(...) print(MSG_ERROR, __VA_ARGS__) /* programmer errors */ #define msg_cerr(...) print(MSG_ERROR, __VA_ARGS__) /* chip errors */ Index: flashrom-message_reorg/cli_output.c =================================================================== --- flashrom-message_reorg/cli_output.c (Revision 1534) +++ flashrom-message_reorg/cli_output.c (Arbeitskopie) @@ -22,34 +22,25 @@ #include #include "flash.h" -int print(int type, const char *fmt, ...) +/* Please note that level is the verbosity, not the importance of the message. */ +int print(enum msglevel level, const char *fmt, ...) { va_list ap; - int ret; - FILE *output_type; + int ret = 0; + FILE *output_type = stdout; - switch (type) { - case MSG_ERROR: + if (level == MSG_ERROR) output_type = stderr; - break; - case MSG_BARF: - if (verbose < 3) - return 0; - case MSG_DEBUG2: - if (verbose < 2) - return 0; - case MSG_DEBUG: - if (verbose < 1) - return 0; - case MSG_INFO: - default: - output_type = stdout; - break; - } - va_start(ap, fmt); - ret = vfprintf(output_type, fmt, ap); - va_end(ap); - fflush(output_type); + if (level <= verbose) { + va_start(ap, fmt); + ret = vfprintf(output_type, fmt, ap); + va_end(ap); + /* msg_*spew usually happens inside chip accessors in possibly + * time-critical operations. Don't slow them down by flushing. + */ + if (level != MSG_BARF) + fflush(output_type); + } return ret; } Index: flashrom-message_reorg/cli_classic.c =================================================================== --- flashrom-message_reorg/cli_classic.c (Revision 1534) +++ flashrom-message_reorg/cli_classic.c (Arbeitskopie) @@ -377,20 +377,31 @@ cli_classic_abort_usage(); } - /* FIXME: Print the actions flashrom will take. */ - - if (list_supported) { - print_supported(); - exit(0); + if ((read_it | write_it | verify_it) && !filename) { + fprintf(stderr, "Error: No filename specified.\n"); + cli_classic_abort_usage(); } + if (filename && (filename[0] == '\0')) { + fprintf(stderr, "Error: No filename specified.\n"); + cli_classic_abort_usage(); + } + if (filename && (filename[0] == '-')) + fprintf(stderr, "Warning: Supplied file name starts with -\n"); #if CONFIG_PRINT_WIKI == 1 if (list_supported_wiki) { print_supported_wiki(); - exit(0); + ret = 0; + goto out; } #endif + if (list_supported) { + print_supported(); + ret = 0; + goto out; + } + if (layoutfile && read_romlayout(layoutfile)) cli_classic_abort_usage(); if (process_include_args()) @@ -415,11 +426,17 @@ if (prog == PROGRAMMER_INVALID) prog = default_programmer; + msg_gdbg("Command line:"); + for (i = 0; i < argc; i++) { + msg_gdbg(" %s", argv[i]); + } + msg_gdbg("\n"); + /* FIXME: Delay calibration should happen in programmer code. */ myusec_calibrate_delay(); if (programmer_init(prog, pparam)) { - fprintf(stderr, "Error: Programmer initialization failed.\n"); + msg_perr("Error: Programmer initialization failed.\n"); ret = 1; goto out_shutdown; } @@ -442,25 +459,25 @@ } if (chipcount > 1) { - printf("Multiple flash chips were detected: \"%s\"", - flashes[0].name); + msg_cinfo("Multiple flash chips were detected: \"%s\"", + flashes[0].name); for (i = 1; i < chipcount; i++) - printf(", \"%s\"", flashes[i].name); - printf("\nPlease specify which chip to use with the " - "-c option.\n"); + msg_cinfo(", \"%s\"", flashes[i].name); + msg_cinfo("\nPlease specify which chip to use with the -c " + " option.\n"); ret = 1; goto out_shutdown; } else if (!chipcount) { - printf("No EEPROM/flash device found.\n"); + msg_cinfo("No EEPROM/flash device found.\n"); if (!force || !chip_to_probe) { - printf("Note: flashrom can never write if the flash " - "chip isn't found automatically.\n"); + msg_cinfo("Note: flashrom can never write if the flash " + "chip isn't found automatically.\n"); } if (force && read_it && chip_to_probe) { struct registered_programmer *pgm; int compatible_programmers = 0; - printf("Force read (-f -r -c) requested, pretending " - "the chip is there:\n"); + msg_cinfo("Force read (-f -r -c) requested, pretending " + "the chip is there:\n"); /* This loop just counts compatible controllers. */ for (j = 0; j < registered_programmer_count; j++) { pgm = ®istered_programmers[j]; @@ -468,9 +485,9 @@ compatible_programmers++; } if (compatible_programmers > 1) - printf("More than one compatible controller " - "found for the requested flash chip, " - "using the first one.\n"); + msg_cinfo("More than one compatible controller " + "found for the requested flash chip, " + "using the first one.\n"); for (j = 0; j < registered_programmer_count; j++) { pgm = ®istered_programmers[j]; startchip = probe_flash(pgm, 0, &flashes[0], 1); @@ -478,14 +495,15 @@ break; } if (startchip == -1) { - printf("Probing for flash chip '%s' failed.\n", - chip_to_probe); + msg_cinfo("Probing for flash chip '%s' failed." + "\n", chip_to_probe); ret = 1; goto out_shutdown; } - printf("Please note that forced reads most likely " - "contain garbage.\n"); - return read_flash_to_file(&flashes[0], filename); + msg_cinfo("Please note that forced reads most likely " + "contain garbage.\n"); + ret = read_flash_to_file(&flashes[0], filename); + goto out_shutdown; } ret = 1; goto out_shutdown; @@ -505,23 +523,17 @@ size = fill_flash->total_size * 1024; if (check_max_decode(fill_flash->pgm->buses_supported & fill_flash->bustype, size) && (!force)) { - fprintf(stderr, "Chip is too big for this programmer " - "(-V gives details). Use --force to override.\n"); + msg_cerr("Chip is too big for this programmer " + "(-V gives details). Use --force to override.\n"); ret = 1; goto out_shutdown; } if (!(read_it | write_it | verify_it | erase_it)) { - printf("No operations were specified.\n"); + msg_ginfo("No operations were specified.\n"); goto out_shutdown; } - if (!filename && !erase_it) { - printf("Error: No filename specified.\n"); - ret = 1; - goto out_shutdown; - } - /* Always verify write operations unless -n is used. */ if (write_it && !dont_verify_it) verify_it = 1; @@ -531,9 +543,10 @@ * Give the chip time to settle. */ programmer_delay(100000); - return doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); + ret |= doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); out_shutdown: programmer_shutdown(); +out: return ret; } Index: flashrom-message_reorg/flashrom.c =================================================================== --- flashrom-message_reorg/flashrom.c (Revision 1534) +++ flashrom-message_reorg/flashrom.c (Arbeitskopie) @@ -40,7 +40,7 @@ const char flashrom_version[] = FLASHROM_VERSION; char *chip_to_probe = NULL; -int verbose = 0; +int verbose = MSG_INFO; static enum programmer programmer = PROGRAMMER_INVALID; @@ -1457,27 +1457,27 @@ if (firstline) firstline = 0; else - printf("\n"); + msg_ginfo("\n"); for (i = 0; i < startcol; i++) - printf(" "); + msg_ginfo(" "); remaining = cols - startcol; } else { - printf(" "); + msg_ginfo(" "); remaining--; } if (paren && (p == 0)) { - printf("("); + msg_ginfo("("); remaining--; } - printf("%s", pname); + msg_ginfo("%s", pname); remaining -= pnamelen; if (p < PROGRAMMER_INVALID - 1) { - printf(","); + msg_ginfo(","); remaining--; } else { if (paren) - printf(")"); - printf("\n"); + msg_ginfo(")"); + msg_ginfo("\n"); } } } @@ -1534,7 +1534,7 @@ void print_banner(void) { - msg_ginfo("flashrom is free software, get the source code at " + msg_ginfo("flashrom is free software. Get the source code at " "http://www.flashrom.org\n"); msg_ginfo("\n"); } @@ -1840,6 +1840,5 @@ free(oldcontents); free(newcontents); out_nofree: - programmer_shutdown(); return ret; } -- http://www.hailfinger.org/ From c-d.hailfinger.devel.2006 at gmx.net Wed May 9 15:16:04 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 09 May 2012 15:16:04 +0200 Subject: [flashrom] [PATCH] Add logfile support to flashrom In-Reply-To: References: <4DF12DDE.9000401@gmx.net> <20110611142151.GE6443@greenwood> <4DF38206.20903@home.nl> <4DF53AAF.6000700@gmx.net> <4DF53D2B.7090006@home.nl> <4DF69FA1.6070705@gmx.net> <201106171328.p5HDSU4l017284@mail2.student.tuwien.ac.at> <201106191244.p5JCiSbM005768@mail2.student.tuwien.ac.at> <4E3092B5.9020307@gmx.net> <4F03A676.1040006@gmx.net> <201202092013.q19KDFpe031614@mail2.student.tuwien.ac.at> <4FA1C4E2.5040500@gmx.net> Message-ID: <4FAA6E14.8010901@gmx.net> Am 08.05.2012 19:48 schrieb Idwer Vollering: > 2012/5/3 Carl-Daniel Hailfinger : >> I have decided to discard most of the logging code and rewrite it to be >> more readable. It even worked in preliminary tests. >> TODO: >> - Should "-o -" be a no-op which just redirects stderr to stdout? Right >> now "-" is treated as regular file name, but most Unix utilities are >> unable to handle a file with that name (try "less -" for amusement). > Is this a part of your long-term plan? Some people might want all messages (even error messages) to end up on stdout, but the more I think about it, the less I believe supporting - as placeholder for stdout makes sense. One of the biggest problems with that idea is that most messages would appear twice on screen, and that's just stupid. Unless someone objects, I'll remove this point from the TODO list. >> - Add man page entry >> - Is the log level difference for screen/logfile a good thing, and >> should we default the logfile level to dbg2 instead of dbg? >> >> Add log file support to flashrom. >> >> If you use cli_classic, the log file will always contain messages at >> a level which is one higher than the one specified. That way we get >> all verbose messages in the log even if the user doesn't specify -V. > This handles -VV and -VVV too, correct? Yes. If a user specifies -VV, the log file will get -VVV output, but the on-screen info will stay manageable. Not sure how we should handle it when the user specifies -VVV... for now, that would set msglevel to 5 (outside the defined range of the enum, but handled implicitly by the code like msglevel 4). We could make the log file always store logs at least at level -VV (to get all dbg2 output) regardless of whether -V was specified or not, and only if -VV or greater was specified, add 1 to the loglevel. What do you think? >> Convert all printf() after start of logging to msg_*(). >> >> Allow separate control of log level for screen and logfile in case >> other frontends (e.g. GUI, cli_mfg) want that. >> >> Signed-off-by: Carl-Daniel Hailfinger >> >> Index: flashrom-logfile/flash.h >> =================================================================== >> --- flashrom-logfile/flash.h (Revision 1528) >> +++ flashrom-logfile/flash.h (Arbeitskopie) >> @@ -268,13 +269,20 @@ >> #define ERROR_FLASHROM_LIMIT -201 >> >> /* cli_output.c */ >> +#ifndef STANDALONE >> +int open_logfile(const char * const filename); >> +int close_logfile(void); >> +void start_logging(void); >> +#endif >> /* Let gcc and clang check for correct printf-style format strings. */ >> -int print(int type, const char *fmt, ...) __attribute__((format(printf, 2, 3))); >> -#define MSG_ERROR 0 >> -#define MSG_INFO 1 >> -#define MSG_DEBUG 2 >> -#define MSG_DEBUG2 3 > http://review.coreboot.org/gitweb?p=coreboot.git;a=blob;f=src/include/console/loglevel.h;h=290cd891eb994b34a5060a469bde9589e1419f90;hb=HEAD I think the coreboot loglevels have nice names, but coreboot has too many loglevels for an application like flashrom. > #define MSG_NOTICE 2 > #define MSG_DEBUG 3 > >> -#define MSG_BARF 4 > #define MSG_SPEW 4 BARF->SPEW changed everywhere. >> +enum msglevel { >> + MSG_ERROR = 0, >> + MSG_INFO = 1, >> + MSG_DEBUG = 2, >> + MSG_DEBUG2 = 3, >> + MSG_BARF = 4, >> +}; >> +int print(enum msglevel level, const char *fmt, ...) __attribute__((format(printf, 2, 3))); >> #define msg_gerr(...) print(MSG_ERROR, __VA_ARGS__) /* general errors */ >> #define msg_perr(...) print(MSG_ERROR, __VA_ARGS__) /* programmer errors */ >> #define msg_cerr(...) print(MSG_ERROR, __VA_ARGS__) /* chip errors */ >> Index: flashrom-logfile/cli_output.c >> =================================================================== >> --- flashrom-logfile/cli_output.c (Revision 1528) >> +++ flashrom-logfile/cli_output.c (Arbeitskopie) >> @@ -20,36 +21,80 @@ >> >> #include >> #include >> +#include >> +#include >> #include "flash.h" >> >> -int print(int type, const char *fmt, ...) >> +static FILE *logfile = NULL; >> + >> +#ifndef STANDALONE >> +int close_logfile(void) >> { >> + if (logfile && fclose(logfile)) { > No sync() / fsync() ? > From http://linux.die.net/man/3/fclose "Note that fclose() only > flushes the user space buffers provided by the C library. To ensure > that the data is physically stored on disk the kernel buffers must be > flushed too, for example, with sync(2) or fsync(2)." Good point, will do. I'll probably have to change the file open mode as well... Uwe mentioned that "wb" is needed for Windows to behave sanely. >> + /* fclose returned an error. Stop writing to be safe. */ >> + logfile = NULL; >> + msg_perr("Closing the log file returned error %s\n", >> + strerror(errno)); >> + return 1; >> + } >> + logfile = NULL; >> + return 0; >> +} >> + >> Index: flashrom-logfile/cli_classic.c >> =================================================================== >> --- flashrom-logfile/cli_classic.c (Revision 1528) >> +++ flashrom-logfile/cli_classic.c (Arbeitskopie) >> @@ -377,20 +394,40 @@ >> cli_classic_abort_usage(); >> } >> >> - /* FIXME: Print the actions flashrom will take. */ >> - >> - if (list_supported) { >> - print_supported(); >> - exit(0); >> + if ((read_it | write_it | verify_it) && !filename) { >> + fprintf(stderr, "Error: No filename specified.\n"); > "No log filename specified.\n" ? No, if anything, it should be "No image filename specified". Thoughts? >> + cli_classic_abort_usage(); >> } >> + if (filename && (filename[0] == '\0')) { >> + fprintf(stderr, "Error: No filename specified.\n"); > dito dito. >> + cli_classic_abort_usage(); >> + } >> + if (filename && (filename[0] == '-')) >> + fprintf(stderr, "Warning: Supplied file name starts with -\n"); >> >> +#ifndef STANDALONE >> + if (log_name && (log_name[0] == '-')) >> + fprintf(stderr, "Warning: Supplied file name starts with -\n"); >> + if (log_name && open_logfile(log_name)) > WARNING or Warning? Maybe add a line that says that this will change > in the future? I'd say "Warning" it totally OK... it's an indicator that the user did something unintended, but it's not an error per se. >> + return 1; >> +#endif /* !STANDALONE */ >> + >> Regards, Carl-Daniel -- http://www.hailfinger.org/ From stefan.tauner at student.tuwien.ac.at Wed May 9 15:54:41 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Wed, 9 May 2012 15:54:41 +0200 Subject: [flashrom] [PATCH] Add logfile support to flashrom In-Reply-To: <4FAA6E14.8010901@gmx.net> References: <4DF12DDE.9000401@gmx.net> <20110611142151.GE6443@greenwood> <4DF38206.20903@home.nl> <4DF53AAF.6000700@gmx.net> <4DF53D2B.7090006@home.nl> <4DF69FA1.6070705@gmx.net> <201106171328.p5HDSU4l017284@mail2.student.tuwien.ac.at> <201106191244.p5JCiSbM005768@mail2.student.tuwien.ac.at> <4E3092B5.9020307@gmx.net> <4F03A676.1040006@gmx.net> <201202092013.q19KDFpe031614@mail2.student.tuwien.ac.at> <4FA1C4E2.5040500@gmx.net> <4FAA6E14.8010901@gmx.net> Message-ID: <201205091354.q49DsfCB026816@mail2.student.tuwien.ac.at> On Wed, 09 May 2012 15:16:04 +0200 Carl-Daniel Hailfinger wrote: > Am 08.05.2012 19:48 schrieb Idwer Vollering: > > 2012/5/3 Carl-Daniel Hailfinger : > >> I have decided to discard most of the logging code and rewrite it to be > >> more readable. It even worked in preliminary tests. > >> TODO: > >> - Should "-o -" be a no-op which just redirects stderr to stdout? Right > >> now "-" is treated as regular file name, but most Unix utilities are > >> unable to handle a file with that name (try "less -" for amusement). > > Is this a part of your long-term plan? > > Some people might want all messages (even error messages) to end up on > stdout, but the more I think about it, the less I believe supporting - > as placeholder for stdout makes sense. One of the biggest problems with > that idea is that most messages would appear twice on screen, and that's > just stupid. > Unless someone objects, I'll remove this point from the TODO list. useless imho. what's a plausible use case? as long as we log the same stuff (minus verbosity) to stdout and the log, this does not make sense. stderr -> stdout redirecting is something the underlying shell should support not every app on top. also this is mostly used for log file generation anyway... imho ;) NB: although i dont like to obstruct users by introducing unneeded hurdles in general i want to mention the possibility of rejecting "-" (and other similar stuff on !unix) as a filename. iirc we dont do that in other cases where we write files so i would not introduce it with this patch for log files only anyway... > >> - Add man page entry > >> - Is the log level difference for screen/logfile a good thing, and > >> should we default the logfile level to dbg2 instead of dbg? > >> > >> Add log file support to flashrom. > >> > >> If you use cli_classic, the log file will always contain messages at > >> a level which is one higher than the one specified. That way we get > >> all verbose messages in the log even if the user doesn't specify -V. > > This handles -VV and -VVV too, correct? > > Yes. If a user specifies -VV, the log file will get -VVV output, but the > on-screen info will stay manageable. Not sure how we should handle it > when the user specifies -VVV... for now, that would set msglevel to 5 > (outside the defined range of the enum, but handled implicitly by the > code like msglevel 4). > > We could make the log file always store logs at least at level -VV (to > get all dbg2 output) regardless of whether -V was specified or not, and > only if -VV or greater was specified, add 1 to the loglevel. > What do you think? i dont like that implicit "+1" verbosity in the current implementation. while non-verbose output is almost useless in the logfile, -VV and especially -VVV hides the interesting parts in most cases and should only be logged if the user really wants that much detail. i guess it might also create quite large log files in some cases. i think the best solution would be a minimum verbosity of MSG_DEBUG in the log file, but without any other escalations. an alternative would be a mandatory log file verbosity switch. carl-daniel once told me that he would like to see a UI to change the verbosity of the different log types (programmer, general, chip etc). so a switch for the log file itself does not seem to be that much out of proportion (although it makes the previously mentioned UI problem harder). > [?] > > >> + /* fclose returned an error. Stop writing to be safe. */ > >> + logfile = NULL; > >> + msg_perr("Closing the log file returned error %s\n", > >> + strerror(errno)); > >> + return 1; > >> + } > >> + logfile = NULL; > >> + return 0; > >> +} > >> + > >> Index: flashrom-logfile/cli_classic.c > >> =================================================================== > >> --- flashrom-logfile/cli_classic.c (Revision 1528) > >> +++ flashrom-logfile/cli_classic.c (Arbeitskopie) > >> @@ -377,20 +394,40 @@ > >> cli_classic_abort_usage(); > >> } > >> > >> - /* FIXME: Print the actions flashrom will take. */ > >> - > >> - if (list_supported) { > >> - print_supported(); > >> - exit(0); > >> + if ((read_it | write_it | verify_it) && !filename) { > >> + fprintf(stderr, "Error: No filename specified.\n"); > > "No log filename specified.\n" ? > > No, if anything, it should be "No image filename specified". > Thoughts? if we ever merge the "per layout range image" patch we should differentiate between the "master" image here and the range images. adding "image" here now makes sense imho. > >> + cli_classic_abort_usage(); > >> + } > >> + if (filename && (filename[0] == '-')) > >> + fprintf(stderr, "Warning: Supplied file name starts with -\n"); > >> > >> +#ifndef STANDALONE > >> + if (log_name && (log_name[0] == '-')) > >> + fprintf(stderr, "Warning: Supplied file name starts with -\n"); > >> + if (log_name && open_logfile(log_name)) > > WARNING or Warning? Maybe add a line that says that this will change > > in the future? > > I'd say "Warning" it totally OK... it's an indicator that the user did > something unintended, but it's not an error per se. we use both - WARNING and Warning - throughout the code. is that intended? if so what's the policy? if not then we should fix it. i think (without looking at any specific case) that WARNING is warranted because it sticks out more (especially in verbose outputs). as long as we dont want to play with bold or colored text... :) -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Thu May 10 00:48:39 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 10 May 2012 00:48:39 +0200 Subject: [flashrom] [PATCH] Add logfile support to flashrom In-Reply-To: <201205091354.q49DsfCB026816@mail2.student.tuwien.ac.at> References: <4DF12DDE.9000401@gmx.net> <20110611142151.GE6443@greenwood> <4DF38206.20903@home.nl> <4DF53AAF.6000700@gmx.net> <4DF53D2B.7090006@home.nl> <4DF69FA1.6070705@gmx.net> <201106171328.p5HDSU4l017284@mail2.student.tuwien.ac.at> <201106191244.p5JCiSbM005768@mail2.student.tuwien.ac.at> <4E3092B5.9020307@gmx.net> <4F03A676.1040006@gmx.net> <201202092013.q19KDFpe031614@mail2.student.tuwien.ac.at> <4FA1C4E2.5040500@gmx.net> <4FAA6E14.8010901@gmx.net> <201205091354.q49DsfCB026816@mail2.student.tuwien.ac.at> Message-ID: <4FAAF447.80807@gmx.net> Am 09.05.2012 15:54 schrieb Stefan Tauner: > On Wed, 09 May 2012 15:16:04 +0200 > Carl-Daniel Hailfinger wrote: > >> Am 08.05.2012 19:48 schrieb Idwer Vollering: >>> 2012/5/3 Carl-Daniel Hailfinger : >>>> I have decided to discard most of the logging code and rewrite it to be >>>> more readable. It even worked in preliminary tests. >>>> TODO: >>>> - Should "-o -" be a no-op which just redirects stderr to stdout? Right >>>> now "-" is treated as regular file name, but most Unix utilities are >>>> unable to handle a file with that name (try "less -" for amusement). >>> Is this a part of your long-term plan? >> Some people might want all messages (even error messages) to end up on >> stdout, but the more I think about it, the less I believe supporting - >> as placeholder for stdout makes sense. One of the biggest problems with >> that idea is that most messages would appear twice on screen, and that's >> just stupid. >> Unless someone objects, I'll remove this point from the TODO list. > useless imho. what's a plausible use case? as long as we log the same > stuff (minus verbosity) to stdout and the log, this does not make sense. > stderr -> stdout redirecting is something the underlying shell should > support not every app on top. also this is mostly used for log file > generation anyway... imho ;) Killed. > NB: although i dont like to obstruct users by introducing unneeded > hurdles in general i want to mention the possibility of rejecting > "-" (and other similar stuff on !unix) as a filename. iirc we dont do > that in other cases where we write files so i would not introduce it > with this patch for log files only anyway... The warning for file names starting with "-" is something I'd like to introduce for all files accessed by flashrom. >>>> - Add man page entry >>>> - Is the log level difference for screen/logfile a good thing, and >>>> should we default the logfile level to dbg2 instead of dbg? >>>> >>>> Add log file support to flashrom. >>>> >>>> If you use cli_classic, the log file will always contain messages at >>>> a level which is one higher than the one specified. That way we get >>>> all verbose messages in the log even if the user doesn't specify -V. >>> This handles -VV and -VVV too, correct? >> Yes. If a user specifies -VV, the log file will get -VVV output, but the >> on-screen info will stay manageable. Not sure how we should handle it >> when the user specifies -VVV... for now, that would set msglevel to 5 >> (outside the defined range of the enum, but handled implicitly by the >> code like msglevel 4). >> >> We could make the log file always store logs at least at level -VV (to >> get all dbg2 output) regardless of whether -V was specified or not, and >> only if -VV or greater was specified, add 1 to the loglevel. >> What do you think? > i dont like that implicit "+1" verbosity in the current implementation. > while non-verbose output is almost useless in the logfile, -VV and > especially -VVV hides the interesting parts in most cases and should > only be logged if the user really wants that much detail. i guess it > might also create quite large log files in some cases. > > i think the best solution would be a minimum verbosity of MSG_DEBUG in > the log file, but without any other escalations. Not DEBUG2? IIRC you once said that for ICHSPI debugging DEBUG2 produces better logs. And since we introduced DEBUG2, tha amount of msg_*dbg2 messages was kept pretty low. Of course SPEW is overkill for pretty much every log. I like your minimum verbosity proposal, but I'd pick DEBUG2 and provide SPEW both on-screen and in the log file only in case the user specifies -VVV. > an alternative would be a mandatory log file verbosity switch. > carl-daniel once told me that he would like to see a UI to change the > verbosity of the different log types (programmer, general, chip etc). > so a switch for the log file itself does not seem to be that much out > of proportion (although it makes the previously mentioned UI problem > harder). Log level control UI is an issue conceptually separate from log writing and I'd like to postpone this until the log writing review is pretty much done. >>>> Index: flashrom-logfile/cli_classic.c >>>> =================================================================== >>>> --- flashrom-logfile/cli_classic.c (Revision 1528) >>>> +++ flashrom-logfile/cli_classic.c (Arbeitskopie) >>>> @@ -377,20 +394,40 @@ >>>> cli_classic_abort_usage(); >>>> } >>>> >>>> - /* FIXME: Print the actions flashrom will take. */ >>>> - >>>> - if (list_supported) { >>>> - print_supported(); >>>> - exit(0); >>>> + if ((read_it | write_it | verify_it) && !filename) { >>>> + fprintf(stderr, "Error: No filename specified.\n"); >>> "No log filename specified.\n" ? >> No, if anything, it should be "No image filename specified". >> Thoughts? > if we ever merge the "per layout range image" patch we should > differentiate between the "master" image here and the range images. > adding "image" here now makes sense imho. Done. >>>> + cli_classic_abort_usage(); >>>> + } >>>> + if (filename && (filename[0] == '-')) >>>> + fprintf(stderr, "Warning: Supplied file name starts with -\n"); >>>> >>>> +#ifndef STANDALONE >>>> + if (log_name && (log_name[0] == '-')) >>>> + fprintf(stderr, "Warning: Supplied file name starts with -\n"); >>>> + if (log_name && open_logfile(log_name)) >>> WARNING or Warning? Maybe add a line that says that this will change >>> in the future? >> I'd say "Warning" it totally OK... it's an indicator that the user did >> something unintended, but it's not an error per se. > we use both - WARNING and Warning - throughout the code. is that > intended? if so what's the policy? if not then we should fix it. i > think (without looking at any specific case) that WARNING is warranted > because it sticks out more (especially in verbose outputs). as long as > we dont want to play with bold or colored text... :) WARNING The point about "Warning" vs. "WARNING" is intricately linked to whether you believe there should be one or two levels of warnings ("retrying a different erase command" vs "your EC is stuck, and we just erased its firmware"). Even a really serious warning is not an error because flashrom may be theoretically able to fix this while it is still running. That's largely nitpicking, though. I have no really strong feelings about this. Regards, Carl-Daniel -- http://www.hailfinger.org/ From horatiubota at gmail.com Wed May 9 15:41:33 2012 From: horatiubota at gmail.com (Horatiu Bota) Date: Wed, 9 May 2012 14:41:33 +0100 Subject: [flashrom] Lenovo Ideapad S205 Message-ID: flashrom v0.9.5.2-r1517 on Linux 3.2.0-20-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, 546M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 995 us, 10000 myus = 9973 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "LENOVO" DMI string system-product-name: "Brazos" DMI string system-version: "Ideapad S205" DMI string baseboard-manufacturer: "LENOVO" DMI string baseboard-product-name: "Inagua" DMI string baseboard-version: "109-B78210-00A" DMI string chassis-type: "Notebook" Laptop detected via DMI. ======================================================================== WARNING! You seem to be running flashrom on an unsupported laptop. Laptops, notebooks and netbooks are difficult to support and we recommend to use the vendor flashing utility. The embedded controller (EC) in these machines often interacts badly with flashing. See http://www.flashrom.org/Laptops for details. If flash is shared with the EC, erase is guaranteed to brick your laptop and write may brick your laptop. Read and probe may irritate your EC and cause fan failure, backlight failure and sudden poweroff. You have been warned. ======================================================================== Proceeding anyway because user forced us to. 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=1, SpiAccessMacRomEn=1, SpiHostAccessRomEn=1, ArbWaitCount=7, SpiBridgeDisable=1, DropOneClkOnRd=0 NormSpeed is 33 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. The following protocols are supported: LPC, FWH, SPI. Probing for AMIC A25L05PT, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L05PU, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L10PT, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L10PU, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L20PT, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L20PU, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L40PT, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L40PU, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L80P, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L16PT, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L16PU, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L020, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L080, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L016, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25L032, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for AMIC A25LQ032, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF021, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF041A, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF081, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF081A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF321, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF321A, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF641(A), 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DQ161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25F512B, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25FS010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25FS040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT26DF041, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT26DF081A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT26DF161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT26DF161A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT26F004, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT45CS1282, 16896 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT45DB011D, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT45DB021D, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT45DB041D, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT45DB081D, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT45DB161D, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT45DB321C, 4224 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT45DB321D, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT45DB642D, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for EMST F25L008A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B05, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B05T, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B10T, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B20T, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B40T, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B80T, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B16T, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B32T, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25B64T, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25F05, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25F10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25F20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25F40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25F80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25F16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25F32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25Q40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25Q80(A), 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25Q16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25Q32(A/B), 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25Q64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25Q128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon EN25QH16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Macronix MX25L512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Macronix MX25L1005, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Macronix MX25L2005, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Macronix MX25L4005, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Macronix MX25L8005, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Macronix MX25L1605, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Macronix MX25L1635D, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Macronix MX25L1635E, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Macronix MX25L3205, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Macronix MX25L3235D, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Macronix MX25L6405, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Macronix MX25L12805, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Numonyx M25PE10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Numonyx M25PE20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Numonyx M25PE40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Numonyx M25PE80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Numonyx M25PE16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for PMC Pm25LV010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for PMC Pm25LV016B, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for PMC Pm25LV020, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for PMC Pm25LV040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for PMC Pm25LV080B, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for PMC Pm25LV512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Sanyo LF25FW203A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Spansion S25FL004A, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Spansion S25FL008A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Spansion S25FL016A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Spansion S25FL032A, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Spansion S25FL064A, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for SST SST25LF040A, 512 kB: probe_spi_res2: id1 0x0, id2 0x0 Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0x0, id2 0x0 Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0x0, id2 0x0 Probing for SST SST25VF016B, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for SST SST25VF032B, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for SST SST25VF064C, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0x0, id2 0x0 Probing for SST SST25VF040B, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0x0, id2 0x0 Probing for SST SST25VF080B, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for ST M25P05-A, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for ST M25P05, 64 kB: probe_spi_res1: id 0x0 Probing for ST M25P10-A, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for ST M25P10, 128 kB: probe_spi_res1: id 0x0 Probing for ST M25P20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for ST M25P40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for ST M25P40-old, 512 kB: probe_spi_res1: id 0x0 Probing for ST M25P80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for ST M25P16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for ST M25P32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for ST M25P64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for ST M25P128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for ST M25PX16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for ST M25PX32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for ST M25PX64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Winbond W25Q80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Winbond W25Q16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Winbond W25Q32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Winbond W25Q64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Winbond W25Q128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Winbond W25X10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Winbond W25X20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Winbond W25X40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Winbond W25X80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Winbond W25X16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Winbond W25X32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Winbond W25X64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 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 0x00, id2 0x00 Probing for Atmel unknown Atmel SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Eon unknown Eon SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Macronix unknown Macronix SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for PMC unknown PMC SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for SST unknown SST SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for ST unknown ST SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Sanyo unknown Sanyo SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Generic unknown SPI chip (RDID), 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Found Generic flash chip "unknown SPI chip (RDID)" (0 kB, SPI) at physical address 0x0. Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0x0, id2 0x0 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 0x10, id2 0x08, 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 0x04, id2 0x23, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0x10, id2 0x08, 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 0x04, id2 0x23, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0x10, id2 0x08, 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 0x04, id2 0x23, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0x04, id2 0x23, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: probe_82802ab: id1 0x61, id2 0x87, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF020, 256 kB: probe_jedec_common: id1 0x10, id2 0x08, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF020A, 256 kB: probe_jedec_common: id1 0x10, id2 0x08, 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 0x04, id2 0x23, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF160C, 2048 kB: probe_82802ab: id1 0x61, id2 0x87, 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 0x04, id2 0x23, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0x04, id2 0x23, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x10, id2 0x08, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: probe_82802ab: id1 0x61, id2 0x87, 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 0x04, id2 0x23, id1 is normal flash content, id2 is normal flash content Probing for ST M50LPW116, 2048 kB: probe_82802ab: id1 0x61, id2 0x87, 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 0x04, id2 0x23, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002A, 256 kB: probe_jedec_common: id1 0x10, id2 0x08, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x10, id2 0x08, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0x04, id2 0x23, 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 Generic flash chip "unknown SPI chip (RDID)" (0 kB, SPI). === This flash part has status NOT WORKING 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! Read is not working on this chip. Aborting. -------------- next part -------------- An HTML attachment was scrubbed... URL: From laure.helene.bruneton at gmail.com Wed May 9 23:47:18 2012 From: laure.helene.bruneton at gmail.com (=?ISO-8859-1?Q?Laure=2DH=E9l=E8ne_Bruneton?=) Date: Wed, 9 May 2012 23:47:18 +0200 Subject: [flashrom] test Asus P8H61 B3 Message-ID: Hello! I would like to upgrade my BIOS, but when I run flashrom it says "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!" so here I am ^^ Could you tell me if it's okay to use flashrom to upgrade my BIOS please? Thanks LH -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- flashrom v0.9.4-r1394 on Linux 3.0.0-19-generic-pae (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, 3089M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 1031 us, 10000 myus = 9996 us, 4 myus = 4 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: "P8H61" DMI string baseboard-version: "Rev X.0x" DMI string chassis-type: "Desktop" 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 = 0xc04: BIOS Interface Lock-Down: disabled, BOOT BIOS Straps: 0x3 (LPC) 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: 0x00000000 (FADDR) 0x50: 0x0000ffff (FRAP) BMWAG 0x00, BMRAG 0x00, BRWA 0xff, BRRA 0xff 0x54: 0x00000000 (FREG0: Flash Descriptor) 0x00000000-0x00000fff is read-write 0x58: 0x03ff0180 (FREG1: BIOS) 0x00180000-0x003fffff is read-write 0x5C: 0x017f0001 (FREG2: Management Engine) 0x00001000-0x0017ffff is read-write 0x60: 0x00000fff (FREG3: Gigabit Ethernet) Gigabit Ethernet region is unused. 0x64: 0x00000fff (FREG4: Platform Data) Platform Data region is unused. 0x74: 0x00000000 (PR0) 0x78: 0x00000000 (PR1) 0x7C: 0x00000000 (PR2) 0x80: 0x00000000 (PR3) 0x84: 0x00000000 (PR4) 0x90: 0x84 (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: 0x0006 (PREOP) 0x96: 0x043b (OPTYPE) 0x98: 0x05200302 (OPMENU) 0x9C: 0x0000019f (OPMENU+4) 0xA0: 0x00000000 (BBAR) 0xD0: 0x00000000 (FPB) Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done preop0=0x06, preop1=0x50 op[0]=0x02, 3, 0 op[1]=0x03, 2, 0 op[2]=0xd8, 3, 0 op[3]=0x05, 0, 0 op[4]=0x90, 2, 0 op[5]=0x01, 1, 0 op[6]=0x9f, 0, 0 op[7]=0xc7, 1, 0 SPI Read Configuration: prefetching disabled, caching enabled, OK. This chipset supports the following protocols: FWH, SPI. 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 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 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0x68, id2 0xd8, 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 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xea, id2 0xd0, 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 0x68, id2 0xd8, 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 SST25VF010.REMS, 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.REMS, 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 SST25LF040A.RES, 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 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 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0x8b, id2 0x2c, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0x68, id2 0xd8, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0x68, id2 0xd8, 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 0xba, id2 0x15, 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.RES, 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.RES, 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 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0x68, id2 0xd8, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0x68, id2 0xd8, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0xea, id2 0xd0, 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 0xba, id2 0x15, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0x68, id2 0xd8, 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 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0x68, id2 0xd8, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xea, id2 0xd0, 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 No operations were specified. Restoring MMIO space at 0xb77cb8a0 Restoring MMIO space at 0xb77cb89c Restoring MMIO space at 0xb77cb898 Restoring MMIO space at 0xb77cb896 Restoring MMIO space at 0xb77cb894 Restoring PCI config space for 00:1f:0 reg 0xdc From jeanchristophe.charron at gmail.com Thu May 10 14:40:03 2012 From: jeanchristophe.charron at gmail.com (Jean-Christophe CHARRON) Date: Thu, 10 May 2012 14:40:03 +0200 Subject: [flashrom] Flashrom -V Report for motherboard Asustek M4N68T-V2 Message-ID: Hi, Please find attached the flashrom report. The program was not able to detect the bios. Regards, *Jean-Christophe CHARRON * 5 rue de Delincourt Le Poteau 60240 REILLY France *jeanchristophe.charron at gmail.com * -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- root at franck-desktop:/home/franck# flashrom -r -V flashrom v0.9.1-r946 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: "M4N68T V2" DMI string baseboard-version: "Rev X.0x" DMI string chassis-type: "Desktop" Found ITE Super I/O, id 8721 Found chipset "NVIDIA MCP61", 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 Guessed flash bus type is SPI Found SMBus device 10de:03eb at 00:01:1 SPI BAR is at 0xfec80000, after clearing low bits BAR is at 0xfec80000 Mapping MCP67 SPI at 0xfec80000, unaligned size 0x544. SPI control is 0x000a, enable=0, idle=0 Please send the output of "flashrom -V" to flashrom at flashrom.org to help us finish support for your chipset. Thanks. SPI on this chipset is not supported yet. OK. This chipset supports the following protocols: None. Calibrating delay loop... 586M loops per second, 100 myus = 166 us. OK. Probing for AMD Am29F010A/B, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for AMD Am29F002(N)BB, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for AMD Am29F002(N)BT, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for AMD Am29F016D, 2048 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for AMD Am29F040B, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for AMD Am29F080B, 1024 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for AMD Am29LV040B, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for AMD Am29LV081B, 1024 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for ASD AE49F2008, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Atmel AT25DF021, 256 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT25DF041A, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT25DF081, 1024 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT25DF161, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT25DF321, 4096 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT25DF321A, 4096 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT25DF641, 8192 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT25F512B, 64 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT25FS010, 128 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT25FS040, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT26DF041, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT26DF081A, 1024 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT26DF161, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT26DF161A, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT26F004, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT29C512, 64 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Atmel AT29C010A, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Atmel AT29C020, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Atmel AT29C040A, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Atmel AT45CS1282, 16896 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT45DB011D, 128 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT45DB021D, 256 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT45DB041D, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT45DB081D, 1024 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT45DB161D, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT45DB321C, 4224 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT45DB321D, 4096 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT45DB642D, 8192 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Atmel AT49BV512, 64 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Atmel AT49F002(N), 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Atmel AT49F002(N)T, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for AMIC A25L40PT, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for AMIC A25L40PU, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for AMIC A29002B, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for AMIC A29002T, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for AMIC A29040B, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for AMIC A49LF040A, 512 KB: skipped. Host bus type None and chip bus type LPC are incompatible. Probing for EMST F49B002UA, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Eon EN25B05, 64 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B05T, 64 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B10, 128 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B10T, 128 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B20, 256 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B20T, 256 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B40, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B40T, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B80, 1024 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B80T, 1024 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B16, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B16T, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B32, 4096 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B32T, 4096 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B64, 8192 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25B64T, 8192 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25D16, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25F05, 64 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25F10, 128 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25F20, 256 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25F40, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25F80, 1024 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25F16, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN25F32, 4096 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Eon EN29F010, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for EON EN29F002(A)(N)B, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for EON EN29F002(A)(N)T, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Fujitsu MBM29F004BC, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Fujitsu MBM29F004TC, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Fujitsu MBM29F400BC, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Fujitsu MBM29F400TC, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Intel 28F001BX-B, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Intel 28F001BX-T, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Intel 28F004S5, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Intel 82802AB, 512 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for Intel 82802AC, 1024 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for Macronix MX25L512, 64 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Macronix MX25L1005, 128 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Macronix MX25L2005, 256 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Macronix MX25L4005, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Macronix MX25L8005, 1024 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Macronix MX25L1605, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Macronix MX25L1635D, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Macronix MX25L3205, 4096 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Macronix MX25L3235D, 4096 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Macronix MX25L6405, 8192 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Macronix MX25L12805, 16384 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Macronix MX29F001B, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Macronix MX29F001T, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Macronix MX29F002B, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Macronix MX29F002T, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Macronix MX29LV040, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Numonyx M25PE10, 128 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Numonyx M25PE20, 256 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Numonyx M25PE40, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Numonyx M25PE80, 1024 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Numonyx M25PE16, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for PMC Pm25LV010, 128 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for PMC Pm25LV016B, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for PMC Pm25LV020, 256 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for PMC Pm25LV040, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for PMC Pm25LV080B, 1024 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for PMC Pm25LV512, 64 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for PMC Pm29F002T, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for PMC Pm29F002B, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for PMC Pm39LV010, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for PMC Pm49FL002, 256 KB: skipped. Host bus type None and chip bus type LPC,FWH are incompatible. Probing for PMC Pm49FL004, 512 KB: skipped. Host bus type None and chip bus type LPC,FWH are incompatible. Probing for Sanyo LF25FW203A, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Sharp LHF00L04, 1024 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for Spansion S25FL008A, 1024 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Spansion S25FL016A, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for SST SST25VF016B, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for SST SST25VF032B, 4096 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for SST SST25VF040.REMS, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for SST SST25VF040B, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for SST SST25VF040B.REMS, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for SST SST25VF080B, 1024 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for SST SST28SF040A, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST29EE010, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST29LE010, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST29EE020A, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST29LE020, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST39SF512, 64 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST39SF010A, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST39SF020A, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST39SF040, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST39VF512, 64 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST39VF010, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST39VF020, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST39VF040, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST39VF080, 1024 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SST SST49LF002A/B, 256 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for SST SST49LF003A/B, 384 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for SST SST49LF004A/B, 512 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for SST SST49LF004C, 512 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for SST SST49LF008A, 1024 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for SST SST49LF008C, 1024 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for SST SST49LF016C, 2048 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for SST SST49LF020, 256 KB: skipped. Host bus type None and chip bus type LPC are incompatible. Probing for SST SST49LF020A, 256 KB: skipped. Host bus type None and chip bus type LPC are incompatible. Probing for SST SST49LF040, 512 KB: skipped. Host bus type None and chip bus type LPC are incompatible. Probing for SST SST49LF040B, 512 KB: skipped. Host bus type None and chip bus type LPC are incompatible. Probing for SST SST49LF080A, 1024 KB: skipped. Host bus type None and chip bus type LPC are incompatible. Probing for SST SST49LF160C, 2048 KB: skipped. Host bus type None and chip bus type LPC are incompatible. Probing for ST M25P05-A, 64 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for ST M25P05.RES, 64 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for ST M25P10-A, 128 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for ST M25P10.RES, 128 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for ST M25P20, 256 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for ST M25P40, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for ST M25P40-old, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for ST M25P80, 1024 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for ST M25P16, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for ST M25P32, 4096 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for ST M25P64, 8192 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for ST M25P128, 16384 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for ST M29F002B, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for ST M29F002T/NT, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for ST M29F040B, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for ST M29F400BT, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for ST M29W010B, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for ST M29W040B, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for ST M29W512B, 64 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for ST M50FLW040A, 512 KB: skipped. Host bus type None and chip bus type LPC,FWH are incompatible. Probing for ST M50FLW040B, 512 KB: skipped. Host bus type None and chip bus type LPC,FWH are incompatible. Probing for ST M50FLW080A, 1024 KB: skipped. Host bus type None and chip bus type LPC,FWH are incompatible. Probing for ST M50FLW080B, 1024 KB: skipped. Host bus type None and chip bus type LPC,FWH are incompatible. Probing for ST M50FW002, 256 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for ST M50FW016, 2048 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for ST M50FW040, 512 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for ST M50FW080, 1024 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for ST M50LPW116, 2048 KB: skipped. Host bus type None and chip bus type LPC are incompatible. Probing for SyncMOS S29C31004T, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SyncMOS S29C51001T, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SyncMOS S29C51002T, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for SyncMOS S29C51004T, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for TI TMS29F002RB, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for TI TMS29F002RT, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Winbond W25x10, 128 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Winbond W25x20, 256 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Winbond W25x40, 512 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Winbond W25x80, 1024 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Winbond W25x16, 2048 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Winbond W25x32, 4096 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Winbond W25x64, 8192 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Winbond W29C011, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Winbond W29C020C, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Winbond W29C040P, 512 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Winbond W29EE011, 128 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Winbond W39V040A, 512 KB: skipped. Host bus type None and chip bus type LPC are incompatible. Probing for Winbond W39V040B, 512 KB: skipped. Host bus type None and chip bus type LPC are incompatible. Probing for Winbond W39V040C, 512 KB: skipped. Host bus type None and chip bus type LPC are incompatible. Probing for Winbond W39V040FA, 512 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for Winbond W39V080A, 1024 KB: skipped. Host bus type None and chip bus type LPC are incompatible. Probing for Winbond W49F002U, 256 KB: skipped. Host bus type None and chip bus type Parallel are incompatible. Probing for Winbond W49V002A, 256 KB: skipped. Host bus type None and chip bus type LPC are incompatible. Probing for Winbond W49V002FA, 256 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for Winbond W39V080FA, 1024 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for Winbond W39V080FA (dual mode), 512 KB: skipped. Host bus type None and chip bus type FWH are incompatible. Probing for Atmel unknown Atmel SPI chip, 0 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for EON unknown EON SPI chip, 0 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Macronix unknown Macronix SPI chip, 0 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for PMC unknown PMC SPI chip, 0 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for SST unknown SST SPI chip, 0 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for ST unknown ST SPI chip, 0 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Sanyo unknown Sanyo SPI chip, 0 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Generic unknown SPI chip (RDID), 0 KB: skipped. Host bus type None and chip bus type SPI are incompatible. Probing for Generic unknown SPI chip (REMS), 0 KB: skipped. Host bus type None and chip bus type SPI are incompatible. No EEPROM/flash device found. If you know which flash chip you have, and if this version of flashrom supports a similar flash chip, you can try to force read your chip. Run: flashrom -f -r -c similar_supported_flash_chip filename Note: flashrom can never write when the flash chip isn't found automatically. From stefan.tauner at student.tuwien.ac.at Thu May 10 15:47:31 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Thu, 10 May 2012 15:47:31 +0200 Subject: [flashrom] Flashrom -V Report for motherboard Asustek M4N68T-V2 In-Reply-To: References: Message-ID: <201205101347.q4ADlVb6018663@mail2.student.tuwien.ac.at> On Thu, 10 May 2012 14:40:03 +0200 Jean-Christophe CHARRON wrote: > flashrom v0.9.1-r946 hello, please try a newer version. 0.9.1 is ancient. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Fri May 11 07:10:08 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Fri, 11 May 2012 07:10:08 +0200 Subject: [flashrom] [PATCH] Clean up msg_* In-Reply-To: <4FAA46CF.7010801@gmx.net> References: <4FAA46CF.7010801@gmx.net> Message-ID: <4FAC9F30.3050903@gmx.net> Am 09.05.2012 12:28 schrieb Carl-Daniel Hailfinger: > Convert printf to msg_* where appropriate. > Clean up cli_output.c to be more readable. > Use enum instead of #define for message levels. > Kill a few exit(0) calls. > Print the command line arguments in verbose mode. > Move actions (--list-supported etc.) after argument sanity checks. > Reduce the number of code paths which have their own programmer_shutdown(). > > Note: This patch was formerly part of the logfile patch, but that made > review harder. New version. The only remaining issue mentioned in review is "WARNING" vs. "Warning" capitalization. We could postpone that decision, or decide now. Signed-off-by: Carl-Daniel Hailfinger Index: flashrom-message_reorg/flash.h =================================================================== --- flashrom-message_reorg/flash.h (Revision 1534) +++ flashrom-message_reorg/flash.h (Arbeitskopie) @@ -269,12 +269,14 @@ /* cli_output.c */ /* Let gcc and clang check for correct printf-style format strings. */ -int print(int type, const char *fmt, ...) __attribute__((format(printf, 2, 3))); -#define MSG_ERROR 0 -#define MSG_INFO 1 -#define MSG_DEBUG 2 -#define MSG_DEBUG2 3 -#define MSG_BARF 4 +enum msglevel { + MSG_ERROR = 0, + MSG_INFO = 1, + MSG_DEBUG = 2, + MSG_DEBUG2 = 3, + MSG_SPEW = 4, +}; +int print(enum msglevel level, const char *fmt, ...) __attribute__((format(printf, 2, 3))); #define msg_gerr(...) print(MSG_ERROR, __VA_ARGS__) /* general errors */ #define msg_perr(...) print(MSG_ERROR, __VA_ARGS__) /* programmer errors */ #define msg_cerr(...) print(MSG_ERROR, __VA_ARGS__) /* chip errors */ @@ -287,9 +289,9 @@ #define msg_gdbg2(...) print(MSG_DEBUG2, __VA_ARGS__) /* general debug2 */ #define msg_pdbg2(...) print(MSG_DEBUG2, __VA_ARGS__) /* programmer debug2 */ #define msg_cdbg2(...) print(MSG_DEBUG2, __VA_ARGS__) /* chip debug2 */ -#define msg_gspew(...) print(MSG_BARF, __VA_ARGS__) /* general debug barf */ -#define msg_pspew(...) print(MSG_BARF, __VA_ARGS__) /* programmer debug barf */ -#define msg_cspew(...) print(MSG_BARF, __VA_ARGS__) /* chip debug barf */ +#define msg_gspew(...) print(MSG_SPEW, __VA_ARGS__) /* general debug spew */ +#define msg_pspew(...) print(MSG_SPEW, __VA_ARGS__) /* programmer debug spew */ +#define msg_cspew(...) print(MSG_SPEW, __VA_ARGS__) /* chip debug spew */ /* layout.c */ int register_include_arg(char *name); Index: flashrom-message_reorg/cli_output.c =================================================================== --- flashrom-message_reorg/cli_output.c (Revision 1534) +++ flashrom-message_reorg/cli_output.c (Arbeitskopie) @@ -22,34 +22,25 @@ #include #include "flash.h" -int print(int type, const char *fmt, ...) +/* Please note that level is the verbosity, not the importance of the message. */ +int print(enum msglevel level, const char *fmt, ...) { va_list ap; - int ret; - FILE *output_type; + int ret = 0; + FILE *output_type = stdout; - switch (type) { - case MSG_ERROR: + if (level == MSG_ERROR) output_type = stderr; - break; - case MSG_BARF: - if (verbose < 3) - return 0; - case MSG_DEBUG2: - if (verbose < 2) - return 0; - case MSG_DEBUG: - if (verbose < 1) - return 0; - case MSG_INFO: - default: - output_type = stdout; - break; - } - va_start(ap, fmt); - ret = vfprintf(output_type, fmt, ap); - va_end(ap); - fflush(output_type); + if (level <= verbose) { + va_start(ap, fmt); + ret = vfprintf(output_type, fmt, ap); + va_end(ap); + /* msg_*spew usually happens inside chip accessors in possibly + * time-critical operations. Don't slow them down by flushing. + */ + if (level != MSG_SPEW) + fflush(output_type); + } return ret; } Index: flashrom-message_reorg/cli_classic.c =================================================================== --- flashrom-message_reorg/cli_classic.c (Revision 1534) +++ flashrom-message_reorg/cli_classic.c (Arbeitskopie) @@ -377,20 +377,31 @@ cli_classic_abort_usage(); } - /* FIXME: Print the actions flashrom will take. */ - - if (list_supported) { - print_supported(); - exit(0); + if ((read_it | write_it | verify_it) && !filename) { + fprintf(stderr, "Error: No image file specified.\n"); + cli_classic_abort_usage(); } + if (filename && (filename[0] == '\0')) { + fprintf(stderr, "Error: No image file specified.\n"); + cli_classic_abort_usage(); + } + if (filename && (filename[0] == '-')) + fprintf(stderr, "Warning: Supplied image file name starts with -\n"); #if CONFIG_PRINT_WIKI == 1 if (list_supported_wiki) { print_supported_wiki(); - exit(0); + ret = 0; + goto out; } #endif + if (list_supported) { + print_supported(); + ret = 0; + goto out; + } + if (layoutfile && read_romlayout(layoutfile)) cli_classic_abort_usage(); if (process_include_args()) @@ -415,11 +426,17 @@ if (prog == PROGRAMMER_INVALID) prog = default_programmer; + msg_gdbg("Command line:"); + for (i = 0; i < argc; i++) { + msg_gdbg(" %s", argv[i]); + } + msg_gdbg("\n"); + /* FIXME: Delay calibration should happen in programmer code. */ myusec_calibrate_delay(); if (programmer_init(prog, pparam)) { - fprintf(stderr, "Error: Programmer initialization failed.\n"); + msg_perr("Error: Programmer initialization failed.\n"); ret = 1; goto out_shutdown; } @@ -442,25 +459,25 @@ } if (chipcount > 1) { - printf("Multiple flash chips were detected: \"%s\"", - flashes[0].name); + msg_cinfo("Multiple flash chips were detected: \"%s\"", + flashes[0].name); for (i = 1; i < chipcount; i++) - printf(", \"%s\"", flashes[i].name); - printf("\nPlease specify which chip to use with the " - "-c option.\n"); + msg_cinfo(", \"%s\"", flashes[i].name); + msg_cinfo("\nPlease specify which chip to use with the -c " + " option.\n"); ret = 1; goto out_shutdown; } else if (!chipcount) { - printf("No EEPROM/flash device found.\n"); + msg_cinfo("No EEPROM/flash device found.\n"); if (!force || !chip_to_probe) { - printf("Note: flashrom can never write if the flash " - "chip isn't found automatically.\n"); + msg_cinfo("Note: flashrom can never write if the flash " + "chip isn't found automatically.\n"); } if (force && read_it && chip_to_probe) { struct registered_programmer *pgm; int compatible_programmers = 0; - printf("Force read (-f -r -c) requested, pretending " - "the chip is there:\n"); + msg_cinfo("Force read (-f -r -c) requested, pretending " + "the chip is there:\n"); /* This loop just counts compatible controllers. */ for (j = 0; j < registered_programmer_count; j++) { pgm = ®istered_programmers[j]; @@ -468,9 +485,9 @@ compatible_programmers++; } if (compatible_programmers > 1) - printf("More than one compatible controller " - "found for the requested flash chip, " - "using the first one.\n"); + msg_cinfo("More than one compatible controller " + "found for the requested flash chip, " + "using the first one.\n"); for (j = 0; j < registered_programmer_count; j++) { pgm = ®istered_programmers[j]; startchip = probe_flash(pgm, 0, &flashes[0], 1); @@ -478,14 +495,15 @@ break; } if (startchip == -1) { - printf("Probing for flash chip '%s' failed.\n", - chip_to_probe); + msg_cinfo("Probing for flash chip '%s' failed." + "\n", chip_to_probe); ret = 1; goto out_shutdown; } - printf("Please note that forced reads most likely " - "contain garbage.\n"); - return read_flash_to_file(&flashes[0], filename); + msg_cinfo("Please note that forced reads most likely " + "contain garbage.\n"); + ret = read_flash_to_file(&flashes[0], filename); + goto out_shutdown; } ret = 1; goto out_shutdown; @@ -505,23 +523,17 @@ size = fill_flash->total_size * 1024; if (check_max_decode(fill_flash->pgm->buses_supported & fill_flash->bustype, size) && (!force)) { - fprintf(stderr, "Chip is too big for this programmer " - "(-V gives details). Use --force to override.\n"); + msg_cerr("Chip is too big for this programmer " + "(-V gives details). Use --force to override.\n"); ret = 1; goto out_shutdown; } if (!(read_it | write_it | verify_it | erase_it)) { - printf("No operations were specified.\n"); + msg_ginfo("No operations were specified.\n"); goto out_shutdown; } - if (!filename && !erase_it) { - printf("Error: No filename specified.\n"); - ret = 1; - goto out_shutdown; - } - /* Always verify write operations unless -n is used. */ if (write_it && !dont_verify_it) verify_it = 1; @@ -531,9 +543,10 @@ * Give the chip time to settle. */ programmer_delay(100000); - return doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); + ret |= doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); out_shutdown: programmer_shutdown(); +out: return ret; } Index: flashrom-message_reorg/flashrom.c =================================================================== --- flashrom-message_reorg/flashrom.c (Revision 1534) +++ flashrom-message_reorg/flashrom.c (Arbeitskopie) @@ -40,7 +40,7 @@ const char flashrom_version[] = FLASHROM_VERSION; char *chip_to_probe = NULL; -int verbose = 0; +int verbose = MSG_INFO; static enum programmer programmer = PROGRAMMER_INVALID; @@ -1457,27 +1457,27 @@ if (firstline) firstline = 0; else - printf("\n"); + msg_ginfo("\n"); for (i = 0; i < startcol; i++) - printf(" "); + msg_ginfo(" "); remaining = cols - startcol; } else { - printf(" "); + msg_ginfo(" "); remaining--; } if (paren && (p == 0)) { - printf("("); + msg_ginfo("("); remaining--; } - printf("%s", pname); + msg_ginfo("%s", pname); remaining -= pnamelen; if (p < PROGRAMMER_INVALID - 1) { - printf(","); + msg_ginfo(","); remaining--; } else { if (paren) - printf(")"); - printf("\n"); + msg_ginfo(")"); + msg_ginfo("\n"); } } } @@ -1534,7 +1534,7 @@ void print_banner(void) { - msg_ginfo("flashrom is free software, get the source code at " + msg_ginfo("flashrom is free software. Get the source code at " "http://www.flashrom.org\n"); msg_ginfo("\n"); } @@ -1840,6 +1840,5 @@ free(oldcontents); free(newcontents); out_nofree: - programmer_shutdown(); return ret; } -- http://www.hailfinger.org/ From darkstarlinux at gmail.com Fri May 11 14:50:17 2012 From: darkstarlinux at gmail.com (Virgil-Adrian Teaca) Date: Fri, 11 May 2012 14:50:17 +0200 Subject: [flashrom] PONY_SPI, patch to support a new programmer (AJAWe) Message-ID: Hello, There is a new patch for pony_spi, to add support for a new serial programmer, produced by AJAWe. For another hardware details: http://www.ajawe.pl/ajawe0208.htm http://www.ajawe.pl/files/0208_R_DOK.pdf BTW, the site and documentation is in Polish language, I believe, but it is very easy to understand its schematics and what they sell... All the best, Virgil-Adrian. -------------- next part -------------- A non-text attachment was scrubbed... Name: flashrom-pony_spi.patch Type: application/octet-stream Size: 5903 bytes Desc: not available URL: From crashbit at gmail.com Fri May 11 16:33:05 2012 From: crashbit at gmail.com (Crashbit) Date: Fri, 11 May 2012 16:33:05 +0200 Subject: [flashrom] W836xx: Dell Inc. 0Y4RM9 : flashrom -V Message-ID: hi! crashbit at XPS-L321X:~/flashrom$ sudo dmidecode -s baseboard-product-name 0Y4RM9 crashbit at XPS-L321X:~/flashrom$ sudo dmidecode -s baseboard-manufacturer Dell Inc. crashbit at XPS-L321X:~/flashrom$ sudo ./flashrom -V flashrom v0.9.5.2-runknown on Linux 3.2.0-24-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, 2761M loops per second, 10 myus = 10 us, 100 myus = 122 us, 1000 myus = 1014 us, 10000 myus = 10120 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Dell Inc. " DMI string system-product-name: "Dell System XPS L321X" DMI string system-version: "Not Specified" DMI string baseboard-manufacturer: "Dell Inc. " DMI string baseboard-product-name: "0Y4RM9" DMI string baseboard-version: "A00" DMI string chassis-type: "Portable" Laptop detected via DMI. W836xx enter config mode worked or we were already in config mode. W836xx leave config mode had no effect. Active config mode, unknown reg 0x20 ID: 85. Please send the output of "flashrom -V" to flashrom at flashrom.org with W836xx: your board name: flashrom -V as the subject to help us finish support for your Super I/O. Thanks. Found ITE EC, ID 0x8519,Rev 0x02 on port 0x4e. ======================================================================== WARNING! You seem to be running flashrom on an unsupported laptop. Laptops, notebooks and netbooks are difficult to support and we recommend to use the vendor flashing utility. The embedded controller (EC) in these machines often interacts badly with flashing. See http://www.flashrom.org/Laptops for details. If flash is shared with the EC, erase is guaranteed to brick your laptop and write may brick your laptop. Read and probe may irritate your EC and cause fan failure, backlight failure and sudden poweroff. You have been warned. ======================================================================== Aborting. crashbit at XPS-L321X:~/flashrom$ -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan.tauner at student.tuwien.ac.at Sat May 12 01:48:31 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Sat, 12 May 2012 01:48:31 +0200 Subject: [flashrom] [PATCH] Clean up msg_* In-Reply-To: <4FAC9F30.3050903@gmx.net> References: <4FAA46CF.7010801@gmx.net> <4FAC9F30.3050903@gmx.net> Message-ID: <201205112348.q4BNmVJ5007427@mail2.student.tuwien.ac.at> On Fri, 11 May 2012 07:10:08 +0200 Carl-Daniel Hailfinger wrote: > Am 09.05.2012 12:28 schrieb Carl-Daniel Hailfinger: > > Convert printf to msg_* where appropriate. > > Clean up cli_output.c to be more readable. > > Use enum instead of #define for message levels. > > Kill a few exit(0) calls. > > Print the command line arguments in verbose mode. > > Move actions (--list-supported etc.) after argument sanity checks. > > Reduce the number of code paths which have their own programmer_shutdown(). > > > > Note: This patch was formerly part of the logfile patch, but that made > > review harder. > > New version. > The only remaining issue mentioned in review is "WARNING" vs. "Warning" > capitalization. We could postpone that decision, or decide now. > > Signed-off-by: Carl-Daniel Hailfinger comments starting with * are mandatory for the ack below. > > Index: flashrom-message_reorg/flash.h > =================================================================== > --- flashrom-message_reorg/flash.h (Revision 1534) > +++ flashrom-message_reorg/flash.h (Arbeitskopie) > @@ -269,12 +269,14 @@ > > /* cli_output.c */ > /* Let gcc and clang check for correct printf-style format strings. */ * that comment should move with int print(?) i guess > -int print(int type, const char *fmt, ...) __attribute__((format(printf, 2, 3))); > -#define MSG_ERROR 0 > -#define MSG_INFO 1 > -#define MSG_DEBUG 2 > -#define MSG_DEBUG2 3 > -#define MSG_BARF 4 > +enum msglevel { > + MSG_ERROR = 0, > + MSG_INFO = 1, > + MSG_DEBUG = 2, > + MSG_DEBUG2 = 3, > + MSG_SPEW = 4, > +}; > +int print(enum msglevel level, const char *fmt, ...) __attribute__((format(printf, 2, 3))); > #define msg_gerr(...) print(MSG_ERROR, __VA_ARGS__) /* general errors */ > #define msg_perr(...) print(MSG_ERROR, __VA_ARGS__) /* programmer errors */ > [?] > > /* layout.c */ > int register_include_arg(char *name); > Index: flashrom-message_reorg/cli_output.c > =================================================================== > --- flashrom-message_reorg/cli_output.c (Revision 1534) > +++ flashrom-message_reorg/cli_output.c (Arbeitskopie) > @@ -22,34 +22,25 @@ > #include > #include "flash.h" > > -int print(int type, const char *fmt, ...) > +/* Please note that level is the verbosity, not the importance of the message. */ > +int print(enum msglevel level, const char *fmt, ...) > { > va_list ap; > - int ret; > - FILE *output_type; > + int ret = 0; > + FILE *output_type = stdout; > > - switch (type) { > - case MSG_ERROR: > + if (level == MSG_ERROR) > output_type = stderr; > - break; > - case MSG_BARF: > - if (verbose < 3) > - return 0; > - case MSG_DEBUG2: > - if (verbose < 2) > - return 0; > - case MSG_DEBUG: > - if (verbose < 1) > - return 0; > - case MSG_INFO: > - default: > - output_type = stdout; > - break; > - } > > - va_start(ap, fmt); > - ret = vfprintf(output_type, fmt, ap); > - va_end(ap); > - fflush(output_type); > + if (level <= verbose) { > + va_start(ap, fmt); > + ret = vfprintf(output_type, fmt, ap); > + va_end(ap); > + /* msg_*spew usually happens inside chip accessors in possibly > + * time-critical operations. Don't slow them down by flushing. counter-proposal: + /* msg_*spew * * happens inside chip accessors in possibly + * time-critical operations *too*. Don't slow them down by flushing. is it really *usually*? hm most often in the resulting output, yes maybe... > + */ > + if (level != MSG_SPEW) > + fflush(output_type); > + } > return ret; > } > Index: flashrom-message_reorg/cli_classic.c > =================================================================== > --- flashrom-message_reorg/cli_classic.c (Revision 1534) > +++ flashrom-message_reorg/cli_classic.c (Arbeitskopie) > @@ -377,20 +377,31 @@ > cli_classic_abort_usage(); > } > > - /* FIXME: Print the actions flashrom will take. */ > - > - if (list_supported) { > - print_supported(); > - exit(0); > + if ((read_it | write_it | verify_it) && !filename) { > + fprintf(stderr, "Error: No image file specified.\n"); > + cli_classic_abort_usage(); > } > + if (filename && (filename[0] == '\0')) { > + fprintf(stderr, "Error: No image file specified.\n"); > + cli_classic_abort_usage(); > + } > + if (filename && (filename[0] == '-')) > + fprintf(stderr, "Warning: Supplied image file name starts with -\n"); you said you want to do this with other files written by flashrom in the future too. doing this kind of checks in an int check_filename(const char const *filename) would probably makes sense then... * if you agree please add at least a FIXME comment > > #if CONFIG_PRINT_WIKI == 1 > if (list_supported_wiki) { > print_supported_wiki(); > - exit(0); > + ret = 0; > + goto out; > } > #endif > > + if (list_supported) { > + print_supported(); > + ret = 0; > + goto out; > + } > + > if (layoutfile && read_romlayout(layoutfile)) > cli_classic_abort_usage(); > if (process_include_args()) > @@ -415,11 +426,17 @@ > if (prog == PROGRAMMER_INVALID) > prog = default_programmer; > > + msg_gdbg("Command line:"); > + for (i = 0; i < argc; i++) { > + msg_gdbg(" %s", argv[i]); additional \" \" would ease debugging really stupid shell problems, but would make it less readable in almost all circumstances. making them appear in -VVV output would be an option but waaaay too overkill... sorry that little prefectionist[1] crept out again ;) [1]: http://www.thinkgeek.com/tshirts-apparel/unisex/generic/894a/ hm that little guy just showed me this example though: ./flashrom -p dummy:emulate=MX25L6436,spi_status=0x1 -V -c "SFDP-capable chip" -w bla [?] Command line: ./flashrom -p dummy:emulate=MX25L6436,spi_status=0x1 -V -c SFDP-capable chip -w bla note the missing " on the -c option. > + } > + msg_gdbg("\n"); > + > /* FIXME: Delay calibration should happen in programmer code. */ > myusec_calibrate_delay(); > > if (programmer_init(prog, pparam)) { > - fprintf(stderr, "Error: Programmer initialization failed.\n"); > + msg_perr("Error: Programmer initialization failed.\n"); > ret = 1; > goto out_shutdown; > } > @@ -442,25 +459,25 @@ > } some of the changes below would look different with the new line length limit, but i guess you dont interpret this changes as "new code" (or was the mail from uwe being accepted as veto)? > if (chipcount > 1) { > - printf("Multiple flash chips were detected: \"%s\"", > - flashes[0].name); > + msg_cinfo("Multiple flash chips were detected: \"%s\"", > + flashes[0].name); > for (i = 1; i < chipcount; i++) > - printf(", \"%s\"", flashes[i].name); > - printf("\nPlease specify which chip to use with the " > - "-c option.\n"); > + msg_cinfo(", \"%s\"", flashes[i].name); > + msg_cinfo("\nPlease specify which chip to use with the -c " > + " option.\n"); > ret = 1; > goto out_shutdown; > } else if (!chipcount) { > - printf("No EEPROM/flash device found.\n"); > + msg_cinfo("No EEPROM/flash device found.\n"); > if (!force || !chip_to_probe) { > - printf("Note: flashrom can never write if the flash " > - "chip isn't found automatically.\n"); > + msg_cinfo("Note: flashrom can never write if the flash " > + "chip isn't found automatically.\n"); > } > if (force && read_it && chip_to_probe) { > struct registered_programmer *pgm; > int compatible_programmers = 0; > - printf("Force read (-f -r -c) requested, pretending " > - "the chip is there:\n"); > + msg_cinfo("Force read (-f -r -c) requested, pretending " > + "the chip is there:\n"); > /* This loop just counts compatible controllers. */ > for (j = 0; j < registered_programmer_count; j++) { > pgm = ®istered_programmers[j]; > @@ -468,9 +485,9 @@ > compatible_programmers++; > } > if (compatible_programmers > 1) > - printf("More than one compatible controller " > - "found for the requested flash chip, " > - "using the first one.\n"); > + msg_cinfo("More than one compatible controller " > + "found for the requested flash chip, " > + "using the first one.\n"); > for (j = 0; j < registered_programmer_count; j++) { > pgm = ®istered_programmers[j]; > startchip = probe_flash(pgm, 0, &flashes[0], 1); > @@ -478,14 +495,15 @@ > break; > } > if (startchip == -1) { > - printf("Probing for flash chip '%s' failed.\n", > - chip_to_probe); > + msg_cinfo("Probing for flash chip '%s' failed." > + "\n", chip_to_probe); *sigh* (it's not mandatory that you repeat this yorself for the ack ;) > ret = 1; > goto out_shutdown; > } > - printf("Please note that forced reads most likely " > - "contain garbage.\n"); > - return read_flash_to_file(&flashes[0], filename); > + msg_cinfo("Please note that forced reads most likely " > + "contain garbage.\n"); > + ret = read_flash_to_file(&flashes[0], filename); > + goto out_shutdown; hm... the programmer shutdown was never called in this code path before the patch? if so and you want to revert the shutdown change (see below), please add an explicit call here. > } > ret = 1; > goto out_shutdown; > @@ -505,23 +523,17 @@ > size = fill_flash->total_size * 1024; > if (check_max_decode(fill_flash->pgm->buses_supported & fill_flash->bustype, size) && > (!force)) { > - fprintf(stderr, "Chip is too big for this programmer " > - "(-V gives details). Use --force to override.\n"); > + msg_cerr("Chip is too big for this programmer " > + "(-V gives details). Use --force to override.\n"); > ret = 1; > goto out_shutdown; > } > > if (!(read_it | write_it | verify_it | erase_it)) { > - printf("No operations were specified.\n"); > + msg_ginfo("No operations were specified.\n"); > goto out_shutdown; > } > > - if (!filename && !erase_it) { > - printf("Error: No filename specified.\n"); > - ret = 1; > - goto out_shutdown; > - } > - > /* Always verify write operations unless -n is used. */ > if (write_it && !dont_verify_it) > verify_it = 1; > @@ -531,9 +543,10 @@ > * Give the chip time to settle. > */ > programmer_delay(100000); > - return doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); > + ret |= doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); > > out_shutdown: > programmer_shutdown(); > +out: > return ret; > } > Index: flashrom-message_reorg/flashrom.c > =================================================================== > --- flashrom-message_reorg/flashrom.c (Revision 1534) > +++ flashrom-message_reorg/flashrom.c (Arbeitskopie) > @@ -40,7 +40,7 @@ > [?] > void print_banner(void) > { > - msg_ginfo("flashrom is free software, get the source code at " > + msg_ginfo("flashrom is free software. Get the source code at " > "http://www.flashrom.org\n"); > msg_ginfo("\n"); > } i have never understood why flashrom prints that - even with a \n\n effectively, although the main developer argues about every other wasteful line printed ;) could be joined to a single loc (well or at least 2 if you want to leave the stray \n) due to our new line length limit... > @@ -1840,6 +1840,5 @@ > free(oldcontents); > free(newcontents); > out_nofree: > - programmer_shutdown(); i guess this breaks google's cli? i dont see why this part should actually move into the cli file(s). rather the stuff from cli_classic.c starting from the myusec_calibrate_delay call should move into flashrom.c (or somewhere else). yes there are some ui-related messages in there, but they are everywhere... and should be made ui-agnostic or ui-refering (i.e. printing messages depending on the current ui). * i think dropping this change and the related ones in cli_classic.c for now is the best option. your choice though, since i think it does not *break* stuff in the trunk and may ease later refactoring of that code to a proper location. > return ret; > } > > this was way harder to review than expected and although there is quite some place for nit-picking and further discussion i think it improves the code after all, hence this is Acked-by: Stefan Tauner if the notes starting with * are all thought through two or more times :) -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From jeanchristophe.charron at gmail.com Sat May 12 14:25:00 2012 From: jeanchristophe.charron at gmail.com (Jean-Christophe CHARRON) Date: Sat, 12 May 2012 14:25:00 +0200 Subject: [flashrom] Flashrom -V Report for motherboard Asustek M4N68T-V2 In-Reply-To: <201205101347.q4ADlVb6018663@mail2.student.tuwien.ac.at> References: <201205101347.q4ADlVb6018663@mail2.student.tuwien.ac.at> Message-ID: Thanks Stefan ,working well with 0.9.5 version. 2012/5/10 Stefan Tauner > On Thu, 10 May 2012 14:40:03 +0200 > Jean-Christophe CHARRON wrote: > > > flashrom v0.9.1-r946 > > hello, please try a newer version. 0.9.1 is ancient. > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner > -- *Jean-Christophe CHARRON * 5 rue de Delincourt Le Poteau 60240 REILLY *jeanchristophe.charron at gmail.com *Portable +33 (0)6 07 13 98 41 Domicile +33 (0)3 44 47 68 99 -------------- next part -------------- An HTML attachment was scrubbed... URL: From c-d.hailfinger.devel.2006 at gmx.net Sat May 12 19:48:43 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sat, 12 May 2012 19:48:43 +0200 Subject: [flashrom] [PATCH] Clean up msg_* In-Reply-To: <201205112348.q4BNmVJ5007427@mail2.student.tuwien.ac.at> References: <4FAA46CF.7010801@gmx.net> <4FAC9F30.3050903@gmx.net> <201205112348.q4BNmVJ5007427@mail2.student.tuwien.ac.at> Message-ID: <4FAEA27B.6060406@gmx.net> Am 12.05.2012 01:48 schrieb Stefan Tauner: > On Fri, 11 May 2012 07:10:08 +0200 > Carl-Daniel Hailfinger wrote: > >> Am 09.05.2012 12:28 schrieb Carl-Daniel Hailfinger: >>> Convert printf to msg_* where appropriate. >>> Clean up cli_output.c to be more readable. >>> Use enum instead of #define for message levels. >>> Kill a few exit(0) calls. >>> Print the command line arguments in verbose mode. >>> Move actions (--list-supported etc.) after argument sanity checks. >>> Reduce the number of code paths which have their own programmer_shutdown(). >>> >>> Note: This patch was formerly part of the logfile patch, but that made >>> review harder. >> New version. >> The only remaining issue mentioned in review is "WARNING" vs. "Warning" >> capitalization. We could postpone that decision, or decide now. >> >> Signed-off-by: Carl-Daniel Hailfinger > comments starting with * are mandatory for the ack below. Thanks for the review. >> Index: flashrom-message_reorg/cli_output.c >> =================================================================== >> --- flashrom-message_reorg/cli_output.c (Revision 1534) >> +++ flashrom-message_reorg/cli_output.c (Arbeitskopie) >> @@ -22,34 +22,25 @@ >> [..] >> - va_start(ap, fmt); >> - ret = vfprintf(output_type, fmt, ap); >> - va_end(ap); >> - fflush(output_type); >> + if (level <= verbose) { >> + va_start(ap, fmt); >> + ret = vfprintf(output_type, fmt, ap); >> + va_end(ap); >> + /* msg_*spew usually happens inside chip accessors in possibly >> + * time-critical operations. Don't slow them down by flushing. > counter-proposal: > + /* msg_*spew * * happens inside chip accessors in possibly > + * time-critical operations *too*. Don't slow them down by flushing. > > is it really *usually*? > hm most often in the resulting output, yes maybe... I'd even say "almost always", but that's probably a bit extreme. >> Index: flashrom-message_reorg/cli_classic.c >> =================================================================== >> --- flashrom-message_reorg/cli_classic.c (Revision 1534) >> +++ flashrom-message_reorg/cli_classic.c (Arbeitskopie) >> @@ -415,11 +426,17 @@ >> if (prog == PROGRAMMER_INVALID) >> prog = default_programmer; >> >> + msg_gdbg("Command line:"); >> + for (i = 0; i < argc; i++) { >> + msg_gdbg(" %s", argv[i]); > additional \" \" would ease debugging really stupid shell problems, but > would make it less readable in almost all circumstances. > making them appear in -VVV output would be an option but waaaay too > overkill... sorry that little prefectionist[1] crept out again ;) > > ./flashrom -p dummy:emulate=MX25L6436,spi_status=0x1 -V -c "SFDP-capable chip" -w bla > [...] > Command line: ./flashrom -p dummy:emulate=MX25L6436,spi_status=0x1 -V -c SFDP-capable chip -w bla > > note the missing " on the -c option. Can be debugged easily with the new argument count in the command line echo. >> ret = 1; >> goto out_shutdown; >> } >> - printf("Please note that forced reads most likely " >> - "contain garbage.\n"); >> - return read_flash_to_file(&flashes[0], filename); >> + msg_cinfo("Please note that forced reads most likely " >> + "contain garbage.\n"); >> + ret = read_flash_to_file(&flashes[0], filename); >> + goto out_shutdown; > hm... the programmer shutdown was never called in this code path before > the patch? Indeed, that was a bug. > if so and you want to revert the shutdown change (see below), please > add an explicit call here. The shutdown change was reverted, the goto was kept. Bug fixed. >> Index: flashrom-message_reorg/flashrom.c >> =================================================================== >> --- flashrom-message_reorg/flashrom.c (Revision 1534) >> +++ flashrom-message_reorg/flashrom.c (Arbeitskopie) >> @@ -40,7 +40,7 @@ >> [?] >> void print_banner(void) >> { >> - msg_ginfo("flashrom is free software, get the source code at " >> + msg_ginfo("flashrom is free software. Get the source code at " >> "http://www.flashrom.org\n"); >> msg_ginfo("\n"); >> } > i have never understood why flashrom prints that - even with a \n\n > effectively, although the main developer argues about every other > wasteful line printed ;) > > could be joined to a single loc (well or at least 2 if you want to > leave the stray \n) due to our new line length limit... Extra empty line will be killed, reformatting will be done in a followup patch. >> @@ -1840,6 +1840,5 @@ >> free(oldcontents); >> free(newcontents); >> out_nofree: >> - programmer_shutdown(); > i guess this breaks google's cli? It would, yes. Reverted for now. > i dont see why this part should actually move into the cli file(s). > rather the stuff from cli_classic.c starting from the > myusec_calibrate_delay call should move into flashrom.c (or somewhere else). Indeed. We would have to handle the additional functionality Google needs from flashrom, though. AFAIK that's status register access (read/write) and region unlocking/locking. We want that anyway sometime in the future. > yes there are some ui-related messages in there, but they are > everywhere... and should be made ui-agnostic or ui-refering > (i.e. printing messages depending on the current ui). > > * i think dropping this change and the related ones in cli_classic.c > for now is the best option. your choice though, since i think it does > not *break* stuff in the trunk and may ease later refactoring of that > code to a proper location. Reverted for now. > this was way harder to review than expected and although there is > quite some place for nit-picking and further discussion i think it > improves the code after all, hence this is > Acked-by: Stefan Tauner > if the notes starting with * are all thought through two or more times :) I changed some more stuff to make error handling more consistent. A nice bonus are more killed exit(...) calls. Signed-off-by: Carl-Daniel Hailfinger Index: flashrom-message_reorg/flash.h =================================================================== --- flashrom-message_reorg/flash.h (Revision 1534) +++ flashrom-message_reorg/flash.h (Arbeitskopie) @@ -268,13 +268,15 @@ #define ERROR_FLASHROM_LIMIT -201 /* cli_output.c */ +enum msglevel { + MSG_ERROR = 0, + MSG_INFO = 1, + MSG_DEBUG = 2, + MSG_DEBUG2 = 3, + MSG_SPEW = 4, +}; /* Let gcc and clang check for correct printf-style format strings. */ -int print(int type, const char *fmt, ...) __attribute__((format(printf, 2, 3))); -#define MSG_ERROR 0 -#define MSG_INFO 1 -#define MSG_DEBUG 2 -#define MSG_DEBUG2 3 -#define MSG_BARF 4 +int print(enum msglevel level, const char *fmt, ...) __attribute__((format(printf, 2, 3))); #define msg_gerr(...) print(MSG_ERROR, __VA_ARGS__) /* general errors */ #define msg_perr(...) print(MSG_ERROR, __VA_ARGS__) /* programmer errors */ #define msg_cerr(...) print(MSG_ERROR, __VA_ARGS__) /* chip errors */ @@ -287,9 +289,9 @@ #define msg_gdbg2(...) print(MSG_DEBUG2, __VA_ARGS__) /* general debug2 */ #define msg_pdbg2(...) print(MSG_DEBUG2, __VA_ARGS__) /* programmer debug2 */ #define msg_cdbg2(...) print(MSG_DEBUG2, __VA_ARGS__) /* chip debug2 */ -#define msg_gspew(...) print(MSG_BARF, __VA_ARGS__) /* general debug barf */ -#define msg_pspew(...) print(MSG_BARF, __VA_ARGS__) /* programmer debug barf */ -#define msg_cspew(...) print(MSG_BARF, __VA_ARGS__) /* chip debug barf */ +#define msg_gspew(...) print(MSG_SPEW, __VA_ARGS__) /* general debug spew */ +#define msg_pspew(...) print(MSG_SPEW, __VA_ARGS__) /* programmer debug spew */ +#define msg_cspew(...) print(MSG_SPEW, __VA_ARGS__) /* chip debug spew */ /* layout.c */ int register_include_arg(char *name); Index: flashrom-message_reorg/cli_output.c =================================================================== --- flashrom-message_reorg/cli_output.c (Revision 1534) +++ flashrom-message_reorg/cli_output.c (Arbeitskopie) @@ -22,34 +22,25 @@ #include #include "flash.h" -int print(int type, const char *fmt, ...) +/* Please note that level is the verbosity, not the importance of the message. */ +int print(enum msglevel level, const char *fmt, ...) { va_list ap; - int ret; - FILE *output_type; + int ret = 0; + FILE *output_type = stdout; - switch (type) { - case MSG_ERROR: + if (level == MSG_ERROR) output_type = stderr; - break; - case MSG_BARF: - if (verbose < 3) - return 0; - case MSG_DEBUG2: - if (verbose < 2) - return 0; - case MSG_DEBUG: - if (verbose < 1) - return 0; - case MSG_INFO: - default: - output_type = stdout; - break; - } - va_start(ap, fmt); - ret = vfprintf(output_type, fmt, ap); - va_end(ap); - fflush(output_type); + if (level <= verbose) { + va_start(ap, fmt); + ret = vfprintf(output_type, fmt, ap); + va_end(ap); + /* msg_*spew usually happens inside chip accessors in possibly + * time-critical operations. Don't slow them down by flushing. + */ + if (level != MSG_SPEW) + fflush(output_type); + } return ret; } Index: flashrom-message_reorg/cli_classic.c =================================================================== --- flashrom-message_reorg/cli_classic.c (Revision 1534) +++ flashrom-message_reorg/cli_classic.c (Arbeitskopie) @@ -159,6 +159,22 @@ exit(1); } +static int check_filename(char *filename, char *type) +{ + if (!filename) { + fprintf(stderr, "Error: No %s file specified.\n", type); + return 1; + } + if (filename[0] == '\0') { + fprintf(stderr, "Error: No %s file specified.\n", type); + return 1; + } + /* Not an error, but maybe the user intended to specify a CLI option instead of a file name. */ + if (filename[0] == '-') + fprintf(stderr, "Warning: Supplied %s file name starts with -\n", type); + return 0; +} + int main(int argc, char *argv[]) { unsigned long size; @@ -377,36 +393,51 @@ cli_classic_abort_usage(); } - /* FIXME: Print the actions flashrom will take. */ - - if (list_supported) { - print_supported(); - exit(0); + if ((read_it | write_it | verify_it) && check_filename(filename, "image")) { + cli_classic_abort_usage(); } + if (layoutfile && check_filename(layoutfile, "layout")) { + cli_classic_abort_usage(); + } #if CONFIG_PRINT_WIKI == 1 if (list_supported_wiki) { print_supported_wiki(); - exit(0); + ret = 0; + goto out; } #endif - if (layoutfile && read_romlayout(layoutfile)) - cli_classic_abort_usage(); - if (process_include_args()) - cli_classic_abort_usage(); + if (list_supported) { + print_supported(); + ret = 0; + goto out; + } + msg_gdbg("Command line (%i args):", argc - 1); + for (i = 0; i < argc; i++) { + msg_gdbg(" %s", argv[i]); + } + msg_gdbg("\n"); + + if (layoutfile && read_romlayout(layoutfile)) { + ret = 1; + goto out; + } + if (process_include_args()) { + ret = 1; + goto out; + } /* Does a chip with the requested name exist in the flashchips array? */ if (chip_to_probe) { for (flash = flashchips; flash && flash->name; flash++) if (!strcmp(flash->name, chip_to_probe)) break; if (!flash || !flash->name) { - fprintf(stderr, "Error: Unknown chip '%s' specified.\n", - chip_to_probe); - printf("Run flashrom -L to view the hardware supported " - "in this flashrom version.\n"); - exit(1); + msg_cerr("Error: Unknown chip '%s' specified.\n", chip_to_probe); + msg_gerr("Run flashrom -L to view the hardware supported in this flashrom version.\n"); + ret = 1; + goto out; } /* Clean up after the check. */ flash = NULL; @@ -419,7 +450,7 @@ myusec_calibrate_delay(); if (programmer_init(prog, pparam)) { - fprintf(stderr, "Error: Programmer initialization failed.\n"); + msg_perr("Error: Programmer initialization failed.\n"); ret = 1; goto out_shutdown; } @@ -442,25 +473,22 @@ } if (chipcount > 1) { - printf("Multiple flash chips were detected: \"%s\"", - flashes[0].name); + msg_cinfo("Multiple flash chips were detected: \"%s\"", flashes[0].name); for (i = 1; i < chipcount; i++) - printf(", \"%s\"", flashes[i].name); - printf("\nPlease specify which chip to use with the " - "-c option.\n"); + msg_cinfo(", \"%s\"", flashes[i].name); + msg_cinfo("\nPlease specify which chip to use with the -c option.\n"); ret = 1; goto out_shutdown; } else if (!chipcount) { - printf("No EEPROM/flash device found.\n"); + msg_cinfo("No EEPROM/flash device found.\n"); if (!force || !chip_to_probe) { - printf("Note: flashrom can never write if the flash " - "chip isn't found automatically.\n"); + msg_cinfo("Note: flashrom can never write if the flash chip isn't found " + "automatically.\n"); } if (force && read_it && chip_to_probe) { struct registered_programmer *pgm; int compatible_programmers = 0; - printf("Force read (-f -r -c) requested, pretending " - "the chip is there:\n"); + msg_cinfo("Force read (-f -r -c) requested, pretending the chip is there:\n"); /* This loop just counts compatible controllers. */ for (j = 0; j < registered_programmer_count; j++) { pgm = ®istered_programmers[j]; @@ -468,9 +496,8 @@ compatible_programmers++; } if (compatible_programmers > 1) - printf("More than one compatible controller " - "found for the requested flash chip, " - "using the first one.\n"); + msg_cinfo("More than one compatible controller found for the requested flash " + "chip, using the first one.\n"); for (j = 0; j < registered_programmer_count; j++) { pgm = ®istered_programmers[j]; startchip = probe_flash(pgm, 0, &flashes[0], 1); @@ -478,14 +505,13 @@ break; } if (startchip == -1) { - printf("Probing for flash chip '%s' failed.\n", - chip_to_probe); + msg_cinfo("Probing for flash chip '%s' failed.\n", chip_to_probe); ret = 1; goto out_shutdown; } - printf("Please note that forced reads most likely " - "contain garbage.\n"); - return read_flash_to_file(&flashes[0], filename); + msg_cinfo("Please note that forced reads most likely contain garbage.\n"); + ret = read_flash_to_file(&flashes[0], filename); + goto out_shutdown; } ret = 1; goto out_shutdown; @@ -503,25 +529,17 @@ check_chip_supported(fill_flash); size = fill_flash->total_size * 1024; - if (check_max_decode(fill_flash->pgm->buses_supported & fill_flash->bustype, size) && - (!force)) { - fprintf(stderr, "Chip is too big for this programmer " - "(-V gives details). Use --force to override.\n"); + if (check_max_decode(fill_flash->pgm->buses_supported & fill_flash->bustype, size) && (!force)) { + msg_cerr("Chip is too big for this programmer (-V gives details). Use --force to override.\n"); ret = 1; goto out_shutdown; } if (!(read_it | write_it | verify_it | erase_it)) { - printf("No operations were specified.\n"); + msg_ginfo("No operations were specified.\n"); goto out_shutdown; } - if (!filename && !erase_it) { - printf("Error: No filename specified.\n"); - ret = 1; - goto out_shutdown; - } - /* Always verify write operations unless -n is used. */ if (write_it && !dont_verify_it) verify_it = 1; @@ -531,9 +549,12 @@ * Give the chip time to settle. */ programmer_delay(100000); - return doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); + ret |= doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); + /* Note: doit() already calls programmer_shutdown(). */ + goto out; out_shutdown: programmer_shutdown(); +out: return ret; } Index: flashrom-message_reorg/flashrom.c =================================================================== --- flashrom-message_reorg/flashrom.c (Revision 1534) +++ flashrom-message_reorg/flashrom.c (Arbeitskopie) @@ -40,7 +40,7 @@ const char flashrom_version[] = FLASHROM_VERSION; char *chip_to_probe = NULL; -int verbose = 0; +int verbose = MSG_INFO; static enum programmer programmer = PROGRAMMER_INVALID; @@ -1457,27 +1457,27 @@ if (firstline) firstline = 0; else - printf("\n"); + msg_ginfo("\n"); for (i = 0; i < startcol; i++) - printf(" "); + msg_ginfo(" "); remaining = cols - startcol; } else { - printf(" "); + msg_ginfo(" "); remaining--; } if (paren && (p == 0)) { - printf("("); + msg_ginfo("("); remaining--; } - printf("%s", pname); + msg_ginfo("%s", pname); remaining -= pnamelen; if (p < PROGRAMMER_INVALID - 1) { - printf(","); + msg_ginfo(","); remaining--; } else { if (paren) - printf(")"); - printf("\n"); + msg_ginfo(")"); + msg_ginfo("\n"); } } } -- http://www.hailfinger.org/ From daimonmicha at web.de Sat May 12 17:14:54 2012 From: daimonmicha at web.de (Michael Seidel) Date: Sat, 12 May 2012 17:14:54 +0200 (CEST) Subject: [flashrom] M2N-MX: flashrom -V Message-ID: An HTML attachment was scrubbed... URL: From bonina_2001 at yahoo.com Sun May 13 15:00:09 2012 From: bonina_2001 at yahoo.com (Joao Bonina) Date: Sun, 13 May 2012 06:00:09 -0700 (PDT) Subject: [flashrom] Chipset A49LF040A : Alix 1D --- Warning report and lspci report Message-ID: <1336914009.12933.YahooMailNeo@web161705.mail.bf1.yahoo.com> Alix 1D Url: http://pcengines.ch/alix1d.htm root at nst100:/boot# flashrom -p internal:laptop=this_is_not_a_laptop flashrom v0.9.5.2-r1517 on Linux 2.6.38-bpo.2-486 (i586), built with libpci 3.1.9, GCC 4.6.3, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... delay loop is unreliable, trying to continue OK. ======================================================================== WARNING! You may be running flashrom on an unsupported laptop. We could not detect this for sure because your vendor has not setup the SMBIOS tables correctly. You can enforce execution by adding '-p internal:laptop=this_is_not_a_laptop' to the command line, but please read the following warning if you are not sure. Laptops, notebooks and netbooks are difficult to support and we recommend to use the vendor flashing utility. The embedded controller (EC) in these machines often interacts badly with flashing. See http://www.flashrom.org/Laptops for details. If flash is shared with the EC, erase is guaranteed to brick your laptop and write may brick your laptop. Read and probe may irritate your EC and cause fan failure, backlight failure and sudden poweroff. You have been warned. ======================================================================== Proceeding anyway because user forced us to. Found chipset "AMD CS5536". Enabling flash write... OK. WARNING: unexpected second chipset match: "AMD CS5536" ignoring, please report lspci and board URL to flashrom at flashrom.org with 'CHIPSET: your board name' in the subject line. Found AMIC flash chip "A49LF040A" (512 kB, LPC) at physical address 0xfff80000. No operations were specified. root at nst100:/boot# lspci 00:01.0 Host bridge: Advanced Micro Devices [AMD] CS5536 [Geode companion] Host Bridge (rev 33) 00:01.1 VGA compatible controller: Advanced Micro Devices [AMD] Geode LX Video 00:01.2 Entertainment encryption device: Advanced Micro Devices [AMD] Geode LX AES Security Block 00:0c.0 Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01) 00:0d.0 Ethernet controller: VIA Technologies, Inc. VT6105M [Rhine-III] (rev 96) 00:0f.0 ISA bridge: Advanced Micro Devices [AMD] CS5536 [Geode companion] ISA (rev 03) 00:0f.2 IDE interface: Advanced Micro Devices [AMD] CS5536 [Geode companion] IDE (rev 01) 00:0f.4 USB controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] OHC (rev 02) 00:0f.5 USB controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] EHC (rev 02) -------------- next part -------------- An HTML attachment was scrubbed... URL: From svn at flashrom.org Mon May 14 03:51:46 2012 From: svn at flashrom.org (repository service) Date: Mon, 14 May 2012 03:51:46 +0200 Subject: [flashrom] [commit] r1535 - trunk Message-ID: Author: stefanct Date: Mon May 14 03:51:46 2012 New Revision: 1535 URL: http://flashrom.org/trac/flashrom/changeset/1535 Log: Add support for Eon EN25QH32. Its ID was spotted in an descriptor region update by Jetway: http://paste.flashrom.org/view.php?id=1217 Signed-off-by: Stefan Tauner Acked-by: Stefan Tauner Modified: trunk/flashchips.c trunk/flashchips.h Modified: trunk/flashchips.c ============================================================================== --- trunk/flashchips.c Tue May 8 00:12:16 2012 (r1534) +++ trunk/flashchips.c Mon May 14 03:51:46 2012 (r1535) @@ -3565,7 +3565,43 @@ .unlock = spi_disable_blockprotect, .write = spi_chip_write_256, .read = spi_chip_read, - .voltage = {2700, 3600}, + .voltage = {2700, 3600}, + }, + + { + .vendor = "Eon", + .name = "EN25QH32", + .bustype = BUS_SPI, + .manufacture_id = EON_ID_NOPREFIX, + .model_id = EON_EN25QH32, + .total_size = 4096, + .page_size = 256, + /* supports SFDP */ + /* OTP: 512B total; enter 0x3A */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, + .tested = TEST_UNTESTED, + .probe = probe_spi_rdid, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 1024} }, + .block_erase = spi_block_erase_20, + }, { + .eraseblocks = { {64 * 1024, 64} }, + .block_erase = spi_block_erase_d8, + }, { + .eraseblocks = { {1024 * 4096, 1} }, + .block_erase = spi_block_erase_60, + }, { + .eraseblocks = { {1024 * 4096, 1} }, + .block_erase = spi_block_erase_c7, + } + }, + .unlock = spi_disable_blockprotect, + .write = spi_chip_write_256, + .read = spi_chip_read, + .voltage = {2700, 3600}, }, { Modified: trunk/flashchips.h ============================================================================== --- trunk/flashchips.h Tue May 8 00:12:16 2012 (r1534) +++ trunk/flashchips.h Mon May 14 03:51:46 2012 (r1535) @@ -252,6 +252,7 @@ #define EON_EN25Q64 0x3017 #define EON_EN25Q128 0x3018 #define EON_EN25QH16 0x7015 +#define EON_EN25QH32 0x7016 #define EON_EN29F512 0x7F21 #define EON_EN29F010 0x20 #define EON_EN29F040A 0x7F04 From stefan.tauner at student.tuwien.ac.at Mon May 14 04:08:07 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 14 May 2012 04:08:07 +0200 Subject: [flashrom] [PATCH] Add support for Eon EN25F64. Message-ID: <1336961287-11426-1-git-send-email-stefan.tauner@student.tuwien.ac.at> Its ID was spotted in an descriptor region update by Jetway: http://paste.flashrom.org/view.php?id=1217 No datasheet was found, so most values are just guessed from the EN25F32. Signed-off-by: Stefan Tauner --- what's our policy for such cases? i would guess that it will most probably just work... but i did not dare to just commit it (like my EN25QH32 patch a few mins ago). --- flashchips.c | 34 ++++++++++++++++++++++++++++++++++ flashchips.h | 1 + 2 files changed, 35 insertions(+) diff --git a/flashchips.c b/flashchips.c index 4736713..64f14d0 100644 --- a/flashchips.c +++ b/flashchips.c @@ -3319,6 +3319,40 @@ const struct flashchip flashchips[] = { { .vendor = "Eon", + .name = "EN25F64", + .bustype = BUS_SPI, + .manufacture_id = EON_ID_NOPREFIX, + .model_id = EON_EN25F32, + .total_size = 8192, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_UNTESTED, + .probe = probe_spi_rdid, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 2048} }, + .block_erase = spi_block_erase_20, + }, { + .eraseblocks = { {64 * 1024, 128} }, + .block_erase = spi_block_erase_d8, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = spi_block_erase_60, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = spi_block_erase_c7, + } + }, + .unlock = spi_disable_blockprotect, + .write = spi_chip_write_256, + .read = spi_chip_read, + .voltage = {2700, 3600}, + }, + + { + .vendor = "Eon", .name = "EN25Q40", .bustype = BUS_SPI, .manufacture_id = EON_ID_NOPREFIX, diff --git a/flashchips.h b/flashchips.h index 0ecb5f3..70d40df 100644 --- a/flashchips.h +++ b/flashchips.h @@ -245,6 +245,7 @@ #define EON_EN25F80 0x3114 #define EON_EN25F16 0x3115 #define EON_EN25F32 0x3116 +#define EON_EN25F64 0x3117 /* guessed */ #define EON_EN25Q40 0x3013 #define EON_EN25Q80 0x3014 #define EON_EN25Q16 0x3015 /* Same as EN25D16 */ -- Kind regards, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Mon May 14 21:30:09 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 14 May 2012 21:30:09 +0200 Subject: [flashrom] [PATCH] Clean up msg_* In-Reply-To: <4FAEA27B.6060406@gmx.net> References: <4FAA46CF.7010801@gmx.net> <4FAC9F30.3050903@gmx.net> <201205112348.q4BNmVJ5007427@mail2.student.tuwien.ac.at> <4FAEA27B.6060406@gmx.net> Message-ID: <201205141930.q4EJU9T1022637@mail2.student.tuwien.ac.at> On Sat, 12 May 2012 19:48:43 +0200 Carl-Daniel Hailfinger wrote: > Am 12.05.2012 01:48 schrieb Stefan Tauner: > > On Fri, 11 May 2012 07:10:08 +0200 > > Carl-Daniel Hailfinger wrote: > >> Index: flashrom-message_reorg/cli_classic.c > >> =================================================================== > >> --- flashrom-message_reorg/cli_classic.c (Revision 1534) > >> +++ flashrom-message_reorg/cli_classic.c (Arbeitskopie) > >> @@ -415,11 +426,17 @@ > >> if (prog == PROGRAMMER_INVALID) > >> prog = default_programmer; > >> > >> + msg_gdbg("Command line:"); > >> + for (i = 0; i < argc; i++) { > >> + msg_gdbg(" %s", argv[i]); > > additional \" \" would ease debugging really stupid shell problems, but > > would make it less readable in almost all circumstances. > > making them appear in -VVV output would be an option but waaaay too > > overkill... sorry that little prefectionist[1] crept out again ;) > > > > ./flashrom -p dummy:emulate=MX25L6436,spi_status=0x1 -V -c "SFDP-capable chip" -w bla > > [...] > > Command line: ./flashrom -p dummy:emulate=MX25L6436,spi_status=0x1 -V -c SFDP-capable chip -w bla > > > > note the missing " on the -c option. > > Can be debugged easily with the new argument count in the command line echo. i beg to differ (while the count adds some information, that's a quite cumbersome way to debug it :), but i dont think it is a big issue. together with the actual error or warning message it should be obvious enough. > Signed-off-by: Carl-Daniel Hailfinger > > [?] everything else seems undisputed now, so... still Acked-by: Stefan Tauner :) -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From svn at flashrom.org Tue May 15 00:54:58 2012 From: svn at flashrom.org (repository service) Date: Tue, 15 May 2012 00:54:58 +0200 Subject: [flashrom] [commit] r1536 - trunk Message-ID: Author: hailfinger Date: Tue May 15 00:54:58 2012 New Revision: 1536 URL: http://flashrom.org/trac/flashrom/changeset/1536 Log: Convert printf to msg_* where appropriate. Clean up cli_output.c to be more readable. Use enum instead of #define for message levels. Kill a few exit(0) calls. Print the command line arguments in verbose mode. Move actions (--list-supported etc.) after argument sanity checks. Reduce the number of code paths which have their own programmer_shutdown(). Signed-off-by: Carl-Daniel Hailfinger Acked-by: Stefan Tauner Modified: trunk/cli_classic.c trunk/cli_output.c trunk/flash.h trunk/flashrom.c Modified: trunk/cli_classic.c ============================================================================== --- trunk/cli_classic.c Mon May 14 03:51:46 2012 (r1535) +++ trunk/cli_classic.c Tue May 15 00:54:58 2012 (r1536) @@ -159,6 +159,18 @@ exit(1); } +static int check_filename(char *filename, char *type) +{ + if (!filename || (filename[0] == '\0')) { + fprintf(stderr, "Error: No %s file specified.\n", type); + return 1; + } + /* Not an error, but maybe the user intended to specify a CLI option instead of a file name. */ + if (filename[0] == '-') + fprintf(stderr, "Warning: Supplied %s file name starts with -\n", type); + return 0; +} + int main(int argc, char *argv[]) { unsigned long size; @@ -377,36 +389,51 @@ cli_classic_abort_usage(); } - /* FIXME: Print the actions flashrom will take. */ - - if (list_supported) { - print_supported(); - exit(0); + if ((read_it | write_it | verify_it) && check_filename(filename, "image")) { + cli_classic_abort_usage(); + } + if (layoutfile && check_filename(layoutfile, "layout")) { + cli_classic_abort_usage(); } #if CONFIG_PRINT_WIKI == 1 if (list_supported_wiki) { print_supported_wiki(); - exit(0); + ret = 0; + goto out; } #endif - if (layoutfile && read_romlayout(layoutfile)) - cli_classic_abort_usage(); - if (process_include_args()) - cli_classic_abort_usage(); + if (list_supported) { + print_supported(); + ret = 0; + goto out; + } + + msg_gdbg("Command line (%i args):", argc - 1); + for (i = 0; i < argc; i++) { + msg_gdbg(" %s", argv[i]); + } + msg_gdbg("\n"); + if (layoutfile && read_romlayout(layoutfile)) { + ret = 1; + goto out; + } + if (process_include_args()) { + ret = 1; + goto out; + } /* Does a chip with the requested name exist in the flashchips array? */ if (chip_to_probe) { for (flash = flashchips; flash && flash->name; flash++) if (!strcmp(flash->name, chip_to_probe)) break; if (!flash || !flash->name) { - fprintf(stderr, "Error: Unknown chip '%s' specified.\n", - chip_to_probe); - printf("Run flashrom -L to view the hardware supported " - "in this flashrom version.\n"); - exit(1); + msg_cerr("Error: Unknown chip '%s' specified.\n", chip_to_probe); + msg_gerr("Run flashrom -L to view the hardware supported in this flashrom version.\n"); + ret = 1; + goto out; } /* Clean up after the check. */ flash = NULL; @@ -419,7 +446,7 @@ myusec_calibrate_delay(); if (programmer_init(prog, pparam)) { - fprintf(stderr, "Error: Programmer initialization failed.\n"); + msg_perr("Error: Programmer initialization failed.\n"); ret = 1; goto out_shutdown; } @@ -442,25 +469,22 @@ } if (chipcount > 1) { - printf("Multiple flash chips were detected: \"%s\"", - flashes[0].name); + msg_cinfo("Multiple flash chips were detected: \"%s\"", flashes[0].name); for (i = 1; i < chipcount; i++) - printf(", \"%s\"", flashes[i].name); - printf("\nPlease specify which chip to use with the " - "-c option.\n"); + msg_cinfo(", \"%s\"", flashes[i].name); + msg_cinfo("\nPlease specify which chip to use with the -c option.\n"); ret = 1; goto out_shutdown; } else if (!chipcount) { - printf("No EEPROM/flash device found.\n"); + msg_cinfo("No EEPROM/flash device found.\n"); if (!force || !chip_to_probe) { - printf("Note: flashrom can never write if the flash " - "chip isn't found automatically.\n"); + msg_cinfo("Note: flashrom can never write if the flash chip isn't found " + "automatically.\n"); } if (force && read_it && chip_to_probe) { struct registered_programmer *pgm; int compatible_programmers = 0; - printf("Force read (-f -r -c) requested, pretending " - "the chip is there:\n"); + msg_cinfo("Force read (-f -r -c) requested, pretending the chip is there:\n"); /* This loop just counts compatible controllers. */ for (j = 0; j < registered_programmer_count; j++) { pgm = ®istered_programmers[j]; @@ -468,9 +492,8 @@ compatible_programmers++; } if (compatible_programmers > 1) - printf("More than one compatible controller " - "found for the requested flash chip, " - "using the first one.\n"); + msg_cinfo("More than one compatible controller found for the requested flash " + "chip, using the first one.\n"); for (j = 0; j < registered_programmer_count; j++) { pgm = ®istered_programmers[j]; startchip = probe_flash(pgm, 0, &flashes[0], 1); @@ -478,14 +501,13 @@ break; } if (startchip == -1) { - printf("Probing for flash chip '%s' failed.\n", - chip_to_probe); + msg_cinfo("Probing for flash chip '%s' failed.\n", chip_to_probe); ret = 1; goto out_shutdown; } - printf("Please note that forced reads most likely " - "contain garbage.\n"); - return read_flash_to_file(&flashes[0], filename); + msg_cinfo("Please note that forced reads most likely contain garbage.\n"); + ret = read_flash_to_file(&flashes[0], filename); + goto out_shutdown; } ret = 1; goto out_shutdown; @@ -503,22 +525,14 @@ check_chip_supported(fill_flash); size = fill_flash->total_size * 1024; - if (check_max_decode(fill_flash->pgm->buses_supported & fill_flash->bustype, size) && - (!force)) { - fprintf(stderr, "Chip is too big for this programmer " - "(-V gives details). Use --force to override.\n"); + if (check_max_decode(fill_flash->pgm->buses_supported & fill_flash->bustype, size) && (!force)) { + msg_cerr("Chip is too big for this programmer (-V gives details). Use --force to override.\n"); ret = 1; goto out_shutdown; } if (!(read_it | write_it | verify_it | erase_it)) { - printf("No operations were specified.\n"); - goto out_shutdown; - } - - if (!filename && !erase_it) { - printf("Error: No filename specified.\n"); - ret = 1; + msg_ginfo("No operations were specified.\n"); goto out_shutdown; } @@ -531,9 +545,12 @@ * Give the chip time to settle. */ programmer_delay(100000); - return doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); + ret |= doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); + /* Note: doit() already calls programmer_shutdown(). */ + goto out; out_shutdown: programmer_shutdown(); +out: return ret; } Modified: trunk/cli_output.c ============================================================================== --- trunk/cli_output.c Mon May 14 03:51:46 2012 (r1535) +++ trunk/cli_output.c Tue May 15 00:54:58 2012 (r1536) @@ -22,34 +22,25 @@ #include #include "flash.h" -int print(int type, const char *fmt, ...) +/* Please note that level is the verbosity, not the importance of the message. */ +int print(enum msglevel level, const char *fmt, ...) { va_list ap; - int ret; - FILE *output_type; + int ret = 0; + FILE *output_type = stdout; - switch (type) { - case MSG_ERROR: + if (level == MSG_ERROR) output_type = stderr; - break; - case MSG_BARF: - if (verbose < 3) - return 0; - case MSG_DEBUG2: - if (verbose < 2) - return 0; - case MSG_DEBUG: - if (verbose < 1) - return 0; - case MSG_INFO: - default: - output_type = stdout; - break; - } - va_start(ap, fmt); - ret = vfprintf(output_type, fmt, ap); - va_end(ap); - fflush(output_type); + if (level <= verbose) { + va_start(ap, fmt); + ret = vfprintf(output_type, fmt, ap); + va_end(ap); + /* msg_*spew usually happens inside chip accessors in possibly + * time-critical operations. Don't slow them down by flushing. + */ + if (level != MSG_SPEW) + fflush(output_type); + } return ret; } Modified: trunk/flash.h ============================================================================== --- trunk/flash.h Mon May 14 03:51:46 2012 (r1535) +++ trunk/flash.h Tue May 15 00:54:58 2012 (r1536) @@ -268,13 +268,15 @@ #define ERROR_FLASHROM_LIMIT -201 /* cli_output.c */ +enum msglevel { + MSG_ERROR = 0, + MSG_INFO = 1, + MSG_DEBUG = 2, + MSG_DEBUG2 = 3, + MSG_SPEW = 4, +}; /* Let gcc and clang check for correct printf-style format strings. */ -int print(int type, const char *fmt, ...) __attribute__((format(printf, 2, 3))); -#define MSG_ERROR 0 -#define MSG_INFO 1 -#define MSG_DEBUG 2 -#define MSG_DEBUG2 3 -#define MSG_BARF 4 +int print(enum msglevel level, const char *fmt, ...) __attribute__((format(printf, 2, 3))); #define msg_gerr(...) print(MSG_ERROR, __VA_ARGS__) /* general errors */ #define msg_perr(...) print(MSG_ERROR, __VA_ARGS__) /* programmer errors */ #define msg_cerr(...) print(MSG_ERROR, __VA_ARGS__) /* chip errors */ @@ -287,9 +289,9 @@ #define msg_gdbg2(...) print(MSG_DEBUG2, __VA_ARGS__) /* general debug2 */ #define msg_pdbg2(...) print(MSG_DEBUG2, __VA_ARGS__) /* programmer debug2 */ #define msg_cdbg2(...) print(MSG_DEBUG2, __VA_ARGS__) /* chip debug2 */ -#define msg_gspew(...) print(MSG_BARF, __VA_ARGS__) /* general debug barf */ -#define msg_pspew(...) print(MSG_BARF, __VA_ARGS__) /* programmer debug barf */ -#define msg_cspew(...) print(MSG_BARF, __VA_ARGS__) /* chip debug barf */ +#define msg_gspew(...) print(MSG_SPEW, __VA_ARGS__) /* general debug spew */ +#define msg_pspew(...) print(MSG_SPEW, __VA_ARGS__) /* programmer debug spew */ +#define msg_cspew(...) print(MSG_SPEW, __VA_ARGS__) /* chip debug spew */ /* layout.c */ int register_include_arg(char *name); Modified: trunk/flashrom.c ============================================================================== --- trunk/flashrom.c Mon May 14 03:51:46 2012 (r1535) +++ trunk/flashrom.c Tue May 15 00:54:58 2012 (r1536) @@ -40,7 +40,7 @@ const char flashrom_version[] = FLASHROM_VERSION; char *chip_to_probe = NULL; -int verbose = 0; +int verbose = MSG_INFO; static enum programmer programmer = PROGRAMMER_INVALID; @@ -1457,27 +1457,27 @@ if (firstline) firstline = 0; else - printf("\n"); + msg_ginfo("\n"); for (i = 0; i < startcol; i++) - printf(" "); + msg_ginfo(" "); remaining = cols - startcol; } else { - printf(" "); + msg_ginfo(" "); remaining--; } if (paren && (p == 0)) { - printf("("); + msg_ginfo("("); remaining--; } - printf("%s", pname); + msg_ginfo("%s", pname); remaining -= pnamelen; if (p < PROGRAMMER_INVALID - 1) { - printf(","); + msg_ginfo(","); remaining--; } else { if (paren) - printf(")"); - printf("\n"); + msg_ginfo(")"); + msg_ginfo("\n"); } } } From c-d.hailfinger.devel.2006 at gmx.net Tue May 15 00:56:17 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Tue, 15 May 2012 00:56:17 +0200 Subject: [flashrom] [PATCH] Clean up msg_* In-Reply-To: <201205141930.q4EJU9T1022637@mail2.student.tuwien.ac.at> References: <4FAA46CF.7010801@gmx.net> <4FAC9F30.3050903@gmx.net> <201205112348.q4BNmVJ5007427@mail2.student.tuwien.ac.at> <4FAEA27B.6060406@gmx.net> <201205141930.q4EJU9T1022637@mail2.student.tuwien.ac.at> Message-ID: <4FB18D91.6010306@gmx.net> Am 14.05.2012 21:30 schrieb Stefan Tauner: > On Sat, 12 May 2012 19:48:43 +0200 > Carl-Daniel Hailfinger wrote: > >> Am 12.05.2012 01:48 schrieb Stefan Tauner: >>> On Fri, 11 May 2012 07:10:08 +0200 >>> Carl-Daniel Hailfinger wrote: >>>> Index: flashrom-message_reorg/cli_classic.c >>>> =================================================================== >>>> --- flashrom-message_reorg/cli_classic.c (Revision 1534) >>>> +++ flashrom-message_reorg/cli_classic.c (Arbeitskopie) >>>> @@ -415,11 +426,17 @@ >>>> if (prog == PROGRAMMER_INVALID) >>>> prog = default_programmer; >>>> >>>> + msg_gdbg("Command line:"); >>>> + for (i = 0; i < argc; i++) { >>>> + msg_gdbg(" %s", argv[i]); >>> additional \" \" would ease debugging really stupid shell problems, but >>> would make it less readable in almost all circumstances. >>> making them appear in -VVV output would be an option but waaaay too >>> overkill... sorry that little prefectionist[1] crept out again ;) >>> >>> ./flashrom -p dummy:emulate=MX25L6436,spi_status=0x1 -V -c "SFDP-capable chip" -w bla >>> [...] >>> Command line: ./flashrom -p dummy:emulate=MX25L6436,spi_status=0x1 -V -c SFDP-capable chip -w bla >>> >>> note the missing " on the -c option. >> Can be debugged easily with the new argument count in the command line echo. > i beg to differ (while the count adds some information, that's a quite > cumbersome way to debug it :), but i dont think it is a big issue. > together with the actual error or warning message it should be obvious > enough. > >> Signed-off-by: Carl-Daniel Hailfinger >> >> [?] > everything else seems undisputed now, so... still > Acked-by: Stefan Tauner > :) Thanks for the review. Committed in r1536 with one cosmetic fix as suggested by Idwer Vollering. Regards, Carl-Daniel -- http://www.hailfinger.org/ From gurken.papst at gmail.com Tue May 15 01:56:54 2012 From: gurken.papst at gmail.com (Gurken Papst) Date: Tue, 15 May 2012 01:56:54 +0200 Subject: [flashrom] Test report Medion MD5000 V1.2 (MSI MS-6701) - Chip not detected In-Reply-To: References: <201205061454.q46EsUhC003023@mail2.student.tuwien.ac.at> Message-ID: New result with Winbond Super IO detection patch: flashrom v0.9.5.2-r1534 on Linux 3.2.0-23-generic-pae (i686), 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, 1725M loops per second, 10 myus = 11 us, 100 myus = 100 us, 1000 myus = 1002 us, 10000 myus = 9944 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "MEDIONPC" DMI string system-product-name: " " DMI string system-version: " " DMI string baseboard-manufacturer: "MICRO-STAR INTERNATIONAL CO., LTD" DMI string baseboard-product-name: "MS-6701" DMI string baseboard-version: " " DMI string chassis-type: "Desktop" Found Winbond Super I/O, id 60 Found chipset "SiS 648" with PCI ID 1039:0648. This chipset is marked as untested. If you are using an up-to-date version of flashrom *and* were (not) able to successfully update your firmware with it, then please email a report to flashrom at flashrom.org including a verbose (-V) log. Thank you! Enabling flash write... Found southbridge 1039:0963 at 00:02:0 OK. The following protocols are supported: Non-SPI. Probing for AMD Am29F010A/B, 128 kB: probe_jedec_common: id1 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F002(N)BB, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F002(N)BT, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, 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 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV001BT, 128 kB: probe_jedec_common: id1 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV002BB, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV002BT, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, 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 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for AMIC A29002T, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, 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 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT29C512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT29C010A, 128 kB: probe_jedec_common: id1 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT29C020, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT29C040A, 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 AT49BV512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49F002(N), 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49F002(N)T, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49F020, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49F040, 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 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Catalyst CAT28F512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Bright BM29F040, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for EMST F49B002UA, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29F010, 128 kB: probe_jedec_common: id1 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29F002(A)(N)B, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29F002(A)(N)T, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29LV640B, 8192 kB: probe_en29lv640b: id1 0xffff, id2 0x00ff 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 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Hyundai HY29F002B, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content 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 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F001BN/BX-T, 128 kB: probe_jedec_common: id1 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F002BC/BL/BV/BX-T, 256 kB: probe_82802ab: id1 0x25, id2 0x17, 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 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F001T, 128 kB: probe_jedec_common: id1 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F002(N)B, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F002(N)T, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, 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 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29C51000T, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29C51400B, 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 V29C51400T, 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 V29LC51000, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29LC51001, 128 kB: probe_jedec_common: id1 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29LC51002, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm29F002T, 256 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0x25, id2 0x17, 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 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm39LV010, 128 kB: probe_jedec_common: id1 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm39LV020, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, 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 0x25, id2 0x17, 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 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 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for SST SST29LE010, 128 kB: probe_jedec_common: id1 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for SST SST29EE020A, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for SST SST29LE020, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for SST SST39SF512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST39SF010A, 128 kB: probe_jedec_common: id1 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for SST SST39SF020A, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for SST SST39SF040, 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 SST39VF512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST39VF010, 128 kB: probe_jedec_common: id1 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for SST SST39VF020, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for SST SST39VF040, 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 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 0x25, id2 0x17, 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: 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 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF020A, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, 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 M29F002B, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for ST M29F002T/NT, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, 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 0x76, id2 0x9d, 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 0x25, id2 0x17, 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 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51001T, 128 kB: probe_jedec_common: id1 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51002B, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51002T, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51004B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51004T, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {S,V}29C31004B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {S,V}29C31004T, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for TI TMS29F002RB, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for TI TMS29F002RT, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, 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 0x76, id2 0x9d, id1 is normal flash content, id2 is normal flash content Probing for Winbond W29C020(C)/W29C022, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Winbond W29C040/P, 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 W39L040, 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 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 W49F002U/N, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49F020, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002A, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x25, id2 0x17, 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 No EEPROM/flash device found. Note: flashrom can never write if the flash chip isn't found automatically. Restoring PCI config space for 00:02:0 reg 0x45 Restoring PCI config space for 00:02:0 reg 0x40 From gurken.papst at gmail.com Tue May 15 01:53:53 2012 From: gurken.papst at gmail.com (Gurken Papst) Date: Tue, 15 May 2012 01:53:53 +0200 Subject: [flashrom] Test report Biostar M7VIQ - Chip now detected, reading works In-Reply-To: <201205070052.q470qnF1021612@mail2.student.tuwien.ac.at> References: <201205061452.q46EqBAc000625@mail2.student.tuwien.ac.at> <201205070052.q470qnF1021612@mail2.student.tuwien.ac.at> Message-ID: On Mon, May 7, 2012 at 2:52 AM, Stefan Tauner wrote: > if you like please test the current svn HEAD flashrom on all boards with > a winbond superio and send us the usual flashrom -V output, thanks! Ok, here is the new result. I suppose the line "Found Winbond Super I/O, id 60" is telling me detection is working as expected? flashrom v0.9.5.2-r1534 on Linux 3.2.0-23-generic-pae (i686), 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, 820M loops per second, 10 myus = 10 us, 100 myus = 99 us, 1000 myus = 985 us, 10000 myus = 9857 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: " " DMI string baseboard-product-name: "KM266-8235" DMI string baseboard-version: " " DMI string chassis-type: "Desktop" Found Winbond Super I/O, id 60 Found chipset "VIA VT8235" with PCI ID 1106:3177. Enabling flash write... OK. The following protocols are supported: Non-SPI. Probing for AMD Am29F010A/B, 128 kB: probe_jedec_common: id1 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F002(N)BB, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29F002(N)BT, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, 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 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV001BT, 128 kB: probe_jedec_common: id1 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV002BB, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for AMD Am29LV002BT, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, 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 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for AMIC A29002T, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, 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 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT29C512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT29C010A, 128 kB: probe_jedec_common: id1 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT29C020, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT29C040A, 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 AT49BV512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49F002(N), 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49F002(N)T, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49F020, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Atmel AT49F040, 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 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Catalyst CAT28F512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Bright BM29F040, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for EMST F49B002UA, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29F010, 128 kB: probe_jedec_common: id1 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29F002(A)(N)B, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29F002(A)(N)T, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Eon EN29LV640B, 8192 kB: probe_en29lv640b: id1 0xffff, id2 0x00ff 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 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Hyundai HY29F002B, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content 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 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F001BN/BX-T, 128 kB: probe_jedec_common: id1 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F002BC/BL/BV/BX-T, 256 kB: probe_82802ab: id1 0x25, id2 0x5a, 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 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F001T, 128 kB: probe_jedec_common: id1 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F002(N)B, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F002(N)T, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, 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 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29C51000T, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29C51400B, 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 V29C51400T, 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 V29LC51000, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29LC51001, 128 kB: probe_jedec_common: id1 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for MoselVitelic V29LC51002, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm29F002T, 256 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0x25, id2 0x5a, 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 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm39LV010, 128 kB: probe_jedec_common: id1 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm39LV020, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, 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 0x25, id2 0x5a, 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 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 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for SST SST29LE010, 128 kB: probe_jedec_common: id1 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for SST SST29EE020A, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for SST SST29LE020, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for SST SST39SF512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST39SF010A, 128 kB: probe_jedec_common: id1 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for SST SST39SF020A, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for SST SST39SF040, 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 SST39VF512, 64 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST39VF010, 128 kB: probe_jedec_common: id1 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for SST SST39VF020, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for SST SST39VF040, 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 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 0x25, id2 0x5a, 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: 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 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF020A, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, 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 M29F002B, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for ST M29F002T/NT, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, 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 0xd6, id2 0x52, 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 0x25, id2 0x5a, 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 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51001T, 128 kB: probe_jedec_common: id1 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51002B, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51002T, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51004B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {F,S,V}29C51004T, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {S,V}29C31004B, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SyncMOS/MoselVitelic {S,V}29C31004T, 512 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for TI TMS29F002RB, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for TI TMS29F002RT, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, 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 0xd6, id2 0x52, id1 is normal flash content, id2 is normal flash content Probing for Winbond W29C020(C)/W29C022, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Winbond W29C040/P, 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 W39L040, 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 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 W49F002U/N, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49F020, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002A, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x25, id2 0x5a, 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 No EEPROM/flash device found. Note: flashrom can never write if the flash chip isn't found automatically. Restoring PCI config space for 00:11:0 reg 0x40 Restoring PCI config space for 00:11:0 reg 0x41 From stefan.tauner at student.tuwien.ac.at Tue May 15 03:08:03 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 15 May 2012 03:08:03 +0200 Subject: [flashrom] Test report Biostar M7VIQ - Chip now detected, reading works In-Reply-To: References: <201205061452.q46EqBAc000625@mail2.student.tuwien.ac.at> <201205070052.q470qnF1021612@mail2.student.tuwien.ac.at> Message-ID: <201205150108.q4F183cj025150@mail2.student.tuwien.ac.at> On Tue, 15 May 2012 01:53:53 +0200 Gurken Papst wrote: > Ok, here is the new result. I suppose the line "Found Winbond Super > I/O, id 60" is telling me detection is working as expected? thanks! i don't know if it is working as expected (i haven't looked at the code), but that's the interesting part of the output, yes. we want to finally integrate a log file functionality into flashrom soon, so it is possible that the next version of the superio patch will take a while. but afaict carl-daniel is quite interesting in improving that part, so there surely will be some progress :) -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Tue May 15 05:25:01 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 15 May 2012 05:25:01 +0200 Subject: [flashrom] Flashrom -V Report for motherboard Asustek M4N68T-V2 In-Reply-To: References: <201205101347.q4ADlVb6018663@mail2.student.tuwien.ac.at> Message-ID: <201205150325.q4F3P199029098@mail2.student.tuwien.ac.at> On Sat, 12 May 2012 14:25:00 +0200 Jean-Christophe CHARRON wrote: > Thanks Stefan ,working well with 0.9.5 version. Thanks for your report! I have added the board to our list and will commit that later together with other small changes. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Tue May 15 05:37:24 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 15 May 2012 05:37:24 +0200 Subject: [flashrom] Using flashrom with EliteGroup ECS GF8200A motherboard In-Reply-To: References: Message-ID: <201205150337.q4F3bO2D032576@mail2.student.tuwien.ac.at> On Sun, 6 May 2012 21:46:07 -0300 Denilson Figueiredo de S? wrote: > Today I updated the BIOS of my EliteGroup ECS GF8200A motherboard. > [?] > Following help from carldani and twice11, I tried flashing again the > new firmware. This time it worked and gave me no errors. The output is > also attached. thanks for the mail. since flashrom works in general on that board i have added it to our list of supported boards. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Tue May 15 05:21:25 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 15 May 2012 05:21:25 +0200 Subject: [flashrom] test Asus P8H61 B3 In-Reply-To: References: Message-ID: <201205150321.q4F3LP6o028322@mail2.student.tuwien.ac.at> On Wed, 9 May 2012 23:47:18 +0200 Laure-H?l?ne Bruneton wrote: > Could you tell me if it's okay to use flashrom to upgrade my BIOS please? at least there is no clear indication that it would not work. you have to try to be sure. if you do, please report back, thanks. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Tue May 15 05:50:54 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 15 May 2012 05:50:54 +0200 Subject: [flashrom] Chipset A49LF040A : Alix 1D --- Warning report and lspci report In-Reply-To: <1336914009.12933.YahooMailNeo@web161705.mail.bf1.yahoo.com> References: <1336914009.12933.YahooMailNeo@web161705.mail.bf1.yahoo.com> Message-ID: <201205150350.q4F3osTb002999@mail2.student.tuwien.ac.at> On Sun, 13 May 2012 06:00:09 -0700 (PDT) Joao Bonina wrote: > Alix 1D Url: http://pcengines.ch/alix1d.htm > > root at nst100:/boot# flashrom -p internal:laptop=this_is_not_a_laptop > flashrom v0.9.5.2-r1517 on Linux 2.6.38-bpo.2-486 (i586), built with libpci 3.1.9, GCC 4.6.3, little endian > flashrom is free software, get the source code at http://www.flashrom.org > > Calibrating delay loop... delay loop is unreliable, trying to continue OK. > ======================================================================== > WARNING! You may be running flashrom on an unsupported laptop. We could > not detect this for sure because your vendor has not setup the SMBIOS > tables correctly. You can enforce execution by adding > '-p internal:laptop=this_is_not_a_laptop' to the command line, but > please read the following warning if you are not sure. > > Laptops, notebooks and netbooks are difficult to support and we > recommend to use the vendor flashing utility. The embedded controller > (EC) in these machines often interacts badly with flashing. > See http://www.flashrom.org/Laptops for details. > > If flash is shared with the EC, erase is guaranteed to brick your laptop > and write may brick your laptop. > Read and probe may irritate your EC and cause fan failure, backlight > failure and sudden poweroff. > You have been warned. > ======================================================================== > Proceeding anyway because user forced us to. > Found chipset "AMD CS5536". Enabling flash write... OK. > WARNING: unexpected second chipset match: "AMD CS5536" > ignoring, please report lspci and board URL to flashrom at flashrom.org > with 'CHIPSET: your board name' in the subject line. > Found AMIC flash chip "A49LF040A" (512 kB, LPC) at physical address 0xfff80000. > No operations were specified. hi since the alix1c has been reported to work, it is very probable that the alix1d works too regardless of those warnings. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Tue May 15 09:11:31 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Tue, 15 May 2012 09:11:31 +0200 Subject: [flashrom] Test report Biostar M7VIQ - Chip now detected, reading works In-Reply-To: References: <201205061452.q46EqBAc000625@mail2.student.tuwien.ac.at> <201205070052.q470qnF1021612@mail2.student.tuwien.ac.at> Message-ID: <4FB201A3.4090506@gmx.net> Am 15.05.2012 01:53 schrieb Gurken Papst: > On Mon, May 7, 2012 at 2:52 AM, Stefan Tauner > wrote: >> > if you like please test the current svn HEAD flashrom on all boards with >> > a winbond superio and send us the usual flashrom -V output, thanks! > Ok, here is the new result. I suppose the line "Found Winbond Super > I/O, id 60" is telling me detection is working as expected? > > flashrom v0.9.5.2-r1534 on Linux 3.2.0-23-generic-pae (i686), built > with libpci 3.0.0, GCC 4.4.3, little endian > Calibrating delay loop... OS timer resolution is 1 usecs, 820M loops > per second, 10 myus = 10 us, 100 myus = 99 us, 1000 myus = 985 us, > 10000 myus = 9857 us, 4 myus = 4 us, OK. > Initializing internal programmer > DMI string baseboard-product-name: "KM266-8235" > DMI string baseboard-version: " " > DMI string chassis-type: "Desktop" > Found Winbond Super I/O, id 60 Excellent, I can work with that. Expect an updated patch in the next few days. Regards, Carl-Daniel -- http://www.hailfinger.org/ From bonina_2001 at yahoo.com Tue May 15 11:34:19 2012 From: bonina_2001 at yahoo.com (Joao Bonina) Date: Tue, 15 May 2012 02:34:19 -0700 (PDT) Subject: [flashrom] Chipset A49LF040A : Alix 1D --- Warning report and lspci report In-Reply-To: <201205150350.q4F3osTb002999@mail2.student.tuwien.ac.at> References: <1336914009.12933.YahooMailNeo@web161705.mail.bf1.yahoo.com> <201205150350.q4F3osTb002999@mail2.student.tuwien.ac.at> Message-ID: <1337074459.87761.YahooMailNeo@web161704.mail.bf1.yahoo.com> Hello, ok Stefan, thanks for sharing. Regards, Jo?o ________________________________ From: Stefan Tauner To: Joao Bonina Cc: flashrom at flashrom.org Sent: Tuesday, 15 May 2012, 4:50 Subject: Re: [flashrom] Chipset A49LF040A : Alix 1D --- Warning report and lspci report On Sun, 13 May 2012 06:00:09 -0700 (PDT) Joao Bonina wrote: > Alix 1D Url: http://pcengines.ch/alix1d.htm > > root at nst100:/boot# flashrom -p internal:laptop=this_is_not_a_laptop > flashrom v0.9.5.2-r1517 on Linux 2.6.38-bpo.2-486 (i586), built with libpci 3.1.9, GCC 4.6.3, little endian > flashrom is free software, get the source code at http://www.flashrom.org > > Calibrating delay loop... delay loop is unreliable, trying to continue OK. > ======================================================================== > WARNING! You may be running flashrom on an unsupported laptop. We could > not detect this for sure because your vendor has not setup the SMBIOS > tables correctly. You can enforce execution by adding > '-p internal:laptop=this_is_not_a_laptop' to the command line, but > please read the following warning if you are not sure. > > Laptops, notebooks and netbooks are difficult to support and we > recommend to use the vendor flashing utility. The embedded controller > (EC) in these machines often interacts badly with flashing. > See http://www.flashrom.org/Laptops for details. > > If flash is shared with the EC, erase is guaranteed to brick your laptop > and write may brick your laptop. > Read and probe may irritate your EC and cause fan failure, backlight > failure and sudden poweroff. > You have been warned. > ======================================================================== > Proceeding anyway because user forced us to. > Found chipset "AMD CS5536". Enabling flash write... OK. > WARNING: unexpected second chipset match: "AMD CS5536" > ignoring, please report lspci and board URL to flashrom at flashrom.org > with 'CHIPSET: your board name' in the subject line. > Found AMIC flash chip "A49LF040A" (512 kB, LPC) at physical address 0xfff80000. > No operations were specified. hi since the alix1c has been reported to work, it is very probable that the alix1d works too regardless of those warnings. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner -------------- next part -------------- An HTML attachment was scrubbed... URL: From gabris.t at gmail.com Tue May 15 02:19:53 2012 From: gabris.t at gmail.com (gabris) Date: Tue, 15 May 2012 03:19:53 +0300 Subject: [flashrom] DQ965GF Message-ID: Hello, as written in flashrom I'm sending verbose log which is from Intel DQ965GF motherboard running Q965, Mandriva 2010.2 as OS. it has SST25VF016B Bioschip. flashrom v0.9.5.2-r1515 on Linux 2.6.33.7-desktop-2mnb (i686), built with libpci 3.1.7, GCC 4.6.1 20110627 (Mandriva), little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 1852M loops per second, 10 myus = 10 us, 100 myus = 99 us, 1000 myus = 1004 us, 10000 myus = 10143 us, 4 myus = 5 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: "Intel Corporation" DMI string baseboard-product-name: "DQ965GF" DMI string baseboard-version: "AAD41676-400" DMI string chassis-type: "Desktop" Found chipset "Intel ICH8DO" with PCI ID 8086:2814. 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 0xa WARNING: Setting 0xdc from 0xa to 0xb on ICH8DO failed. New value is 0xa. Root Complex Register Block address = 0xfed1c000 GCS = 0x464: BIOS Interface Lock-Down: disabled, Boot BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3020 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: 0x3f00 (HSFC) HSFC: FGO=0, FCYCLE=0, FDBC=63, 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: 0x01ff0120 FREG1: BIOS region (0x00120000-0x001fffff) is read-write. 0x5C: 0x011f0003 FREG2: WARNING: Management Engine region (0x00003000-0x0011ffff) is locked. 0x60: 0x00020001 FREG3: Gigabit Ethernet region (0x00001000-0x00002fff) is read-write. 0x64: 0x00000000 FREG4: WARNING: Platform Data region (0x00000000-0x00000fff) 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: 0x00 (SSFS) SSFS: SCIP=0, FDONE=0, FCERR=0, AEL=0 0x91: 0x004200 (SSFC) SSFC: SCGO=0, ACS=0, SPOP=0, COP=0, DBC=2, SME=0, SCF=0 0x94: 0x0006 (PREOP) 0x96: 0x0008 (OPTYPE) 0x98: 0x0000ab9f (OPMENU) 0x9C: 0x00000000 (OPMENU+4) 0xC1: 0xffffffff (VSCC) VSCC: BES=0x3, WG=1, WSR=1, WEWS=1, EO=0xff, VCL=1 Enabling hardware sequencing because some important opcode is locked. SPI Read Configuration: prefetching enabled, caching enabled, PROBLEMS, continuing anyway The following protocols are supported: FWH, Programmer-specific. Probing for Programmer Opaque flash chip, 0 kB: Found 1 attached SPI flash chip with a density of 2048 kB. There is only one partition containing the whole address space (0x000000 - 0x1fffff). There are 512 erase blocks with 4096 B each. Found Programmer flash chip "Opaque flash chip" (2048 kB, Programmer-specific) at physical address 0x0. Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x4b, id2 0x93, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0x5a, id2 0x47, 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 0x4b, id2 0x93, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0x5a, id2 0x47, 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 0x4b, id2 0x93, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0x0c, id2 0xe1, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0x5a, id2 0x47, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0x5a, id2 0x47, 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 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 0x5a, id2 0x47, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0x5a, id2 0x47, 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 0x4b, id2 0x93, 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 0x5a, id2 0x47, 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 0x5a, id2 0x47, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0x5a, id2 0x47, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0x5a, id2 0x47, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x4b, id2 0x93, 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 0x5a, id2 0x47, id1 parity violation, id1 is normal flash content, id2 is normal flash content Found Programmer flash chip "Opaque flash chip" (2048 kB, Programmer-specific). No operations were specified. Restoring PCI config space for 00:1f:0 reg 0xdc -------------- next part -------------- An HTML attachment was scrubbed... URL: From svn at flashrom.org Wed May 16 00:58:19 2012 From: svn at flashrom.org (repository service) Date: Wed, 16 May 2012 00:58:19 +0200 Subject: [flashrom] [commit] r1537 - trunk Message-ID: Author: stefanct Date: Wed May 16 00:58:19 2012 New Revision: 1537 URL: http://flashrom.org/trac/flashrom/changeset/1537 Log: ft2232_spi.c: add frequency divisor parameter. This adds an optional argument when using the ft2232_spi programmer to set the frequency divisor. The valid values for the divisor is any even integer between 2 and 131072. Signed-off-by: Samir Ibrad?i? Signed-off-by: Stefan Tauner Acked-by: Stefan Tauner Modified: trunk/flashrom.8 trunk/ft2232_spi.c Modified: trunk/flashrom.8 ============================================================================== --- trunk/flashrom.8 Tue May 15 00:54:58 2012 (r1536) +++ trunk/flashrom.8 Wed May 16 00:58:19 2012 (r1537) @@ -549,6 +549,17 @@ .B 4232H and the default interface is .BR B . +.sp +All models supported by the ft2232_spi driver can configure the SPI clock rate by setting a divisor. The +expressible divisors are all even numbers between 2 and 2^17 (=131072) resulting in SPI clock frequencies of +6 MHz down to about 92 Hz for 12 MHz inputs. The default divisor is set to 2, but you can use another one by +specifying the optional +.B divisor +parameter with the +.sp +.B " flashrom \-p ft2232_spi:divisor=div" +.sp +syntax. .SS .BR "serprog " programmer A mandatory parameter specifies either a serial Modified: trunk/ft2232_spi.c ============================================================================== --- trunk/ft2232_spi.c Tue May 15 00:54:58 2012 (r1536) +++ trunk/ft2232_spi.c Wed May 16 00:58:19 2012 (r1537) @@ -64,17 +64,8 @@ {}, }; -/* - * The 'H' chips can run internally at either 12MHz or 60MHz. - * The non-H chips can only run at 12MHz. - */ -static uint8_t clock_5x = 1; -/* - * In either case, the divisor is a simple integer clock divider. - * If clock_5x is set, this divisor divides 30MHz, else it divides 6MHz. - */ -#define DIVIDE_BY 3 /* e.g. '3' will give either 10MHz or 2MHz SPI clock. */ +#define DEFAULT_DIVISOR 2 #define BITMODE_BITBANG_NORMAL 1 #define BITMODE_BITBANG_SPI 2 @@ -162,12 +153,28 @@ /* Returns 0 upon success, a negative number upon errors. */ int ft2232_spi_init(void) { - int f, ret = 0; + int ret = 0; struct ftdi_context *ftdic = &ftdic_context; unsigned char buf[512]; int ft2232_vid = FTDI_VID; int ft2232_type = FTDI_FT4232H_PID; enum ftdi_interface ft2232_interface = INTERFACE_B; + /* + * The 'H' chips can run with an internal clock of either 12 MHz or 60 MHz, + * but the non-H chips can only run at 12 MHz. We enable the divide-by-5 + * prescaler on the former to run on the same speed. + */ + uint8_t clock_5x = 1; + /* In addition to the prescaler mentioned above there is also another + * configurable one on all versions of the chips. Its divisor div can be + * set by a 16 bit value x according to the following formula: + * div = (1 + x) * 2 <-> x = div / 2 - 1 + * Hence the expressible divisors are all even numbers between 2 and + * 2^17 (=131072) resulting in SCK frequencies of 6 MHz down to about + * 92 Hz for 12 MHz inputs. + */ + uint32_t divisor = DEFAULT_DIVISOR; + int f; char *arg; double mpsse_clk; @@ -243,6 +250,21 @@ } } free(arg); + arg = extract_programmer_param("divisor"); + if (arg && strlen(arg)) { + unsigned int temp = 0; + char *endptr; + temp = strtoul(arg, &endptr, 10); + if (*endptr || temp < 2 || temp > 131072 || temp & 0x1) { + msg_perr("Error: Invalid SPI frequency divisor specified: \"%s\".\n" + "Valid are even values between 2 and 131072.\n", arg); + free(arg); + return -2; + } else { + divisor = (uint32_t)temp; + } + } + free(arg); msg_pdbg("Using device type %s %s ", get_ft2232_vendorname(ft2232_vid, ft2232_type), get_ft2232_devicename(ft2232_vid, ft2232_type)); @@ -303,17 +325,15 @@ msg_pdbg("Set clock divisor\n"); buf[0] = 0x86; /* command "set divisor" */ - /* valueL/valueH are (desired_divisor - 1) */ - buf[1] = (DIVIDE_BY - 1) & 0xff; - buf[2] = ((DIVIDE_BY - 1) >> 8) & 0xff; if (send_buf(ftdic, buf, 3)) { ret = -6; goto ftdi_err; } + buf[1] = (divisor / 2 - 1) & 0xff; + buf[2] = ((divisor / 2 - 1) >> 8) & 0xff; - msg_pdbg("MPSSE clock: %f MHz divisor: %d " - "SPI clock: %f MHz\n", mpsse_clk, DIVIDE_BY, - (double)(mpsse_clk / (((DIVIDE_BY - 1) + 1) * 2))); + msg_pdbg("MPSSE clock: %f MHz, divisor: %u, SPI clock: %f MHz\n", + mpsse_clk, divisor, (double)(mpsse_clk / divisor)); /* Disconnect TDI/DO to TDO/DI for loopback. */ msg_pdbg("No loopback of TDI/DO TDO/DI\n"); From stefan.tauner at student.tuwien.ac.at Wed May 16 00:59:44 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Wed, 16 May 2012 00:59:44 +0200 Subject: [flashrom] [PATCH] ft2232_spi.c: add frequency divider parameter. In-Reply-To: <201203302205.q2UM5JCV015883@mail2.student.tuwien.ac.at> References: <4EA3C847.5010501@gmail.com> <1330393681-12334-1-git-send-email-stefan.tauner@student.tuwien.ac.at> <4F4C40FD.5020800@gmail.com> <201203061525.q26FPgQZ020020@mail2.student.tuwien.ac.at> <4F75D6AE.3030802@gmail.com> <201203302205.q2UM5JCV015883@mail2.student.tuwien.ac.at> Message-ID: <201205152259.q4FMxiVl000545@mail2.student.tuwien.ac.at> On Sat, 31 Mar 2012 00:05:19 +0200 Stefan Tauner wrote: > [?] > > it would be nice if someone could really verify the correct > frequencies on the output pins, but if no one will do that in the next > days/weeks, i will commit it anyway. committed in r1537 after adding a section to the manpage explaining the new parameter. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From svn at flashrom.org Wed May 16 02:15:53 2012 From: svn at flashrom.org (repository service) Date: Wed, 16 May 2012 02:15:53 +0200 Subject: [flashrom] [commit] r1538 - trunk Message-ID: Author: stefanct Date: Wed May 16 02:15:53 2012 New Revision: 1538 URL: http://flashrom.org/trac/flashrom/changeset/1538 Log: Remove sharplhf00l04.c. The currently unreferenced function in sharplhf00l04.c does a standard FWH block protection reset (writes 0 to the protection register) and a standard FWH block erase. Signed-off-by: Michael Karcher Acked-by: Carl-Daniel Hailfinger Deleted: trunk/sharplhf00l04.c Modified: trunk/Makefile Modified: trunk/Makefile ============================================================================== --- trunk/Makefile Wed May 16 00:58:19 2012 (r1537) +++ trunk/Makefile Wed May 16 02:15:53 2012 (r1538) @@ -260,7 +260,7 @@ CHIP_OBJS = jedec.o stm50flw0x0x.o w39.o w29ee011.o \ sst28sf040.o m29f400bt.o 82802ab.o pm49fl00x.o \ - sst49lfxxxc.o sst_fwhub.o flashchips.o spi.o spi25.o sharplhf00l04.o \ + sst49lfxxxc.o sst_fwhub.o flashchips.o spi.o spi25.o \ a25.o at25.o opaque.o sfdp.o en29lv640b.o LIB_OBJS = layout.o From stefan.tauner at student.tuwien.ac.at Wed May 16 02:17:50 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Wed, 16 May 2012 02:17:50 +0200 Subject: [flashrom] [PATCH] Remove sharplhf00l04.c In-Reply-To: <4DFE8D62.6050507@gmx.net> References: <1308525192-8877-1-git-send-email-flashrom@mkarcher.dialup.fu-berlin.de> <4DFE8D62.6050507@gmx.net> Message-ID: <201205160017.q4G0HpPJ003108@mail2.student.tuwien.ac.at> On Mon, 20 Jun 2011 01:59:30 +0200 Carl-Daniel Hailfinger wrote: > > Signed-off-by: Michael Karcher > > > > Killing sharplhf00l04.c is a good thing, though, so that part is > Acked-by: Carl-Daniel Hailfinger almost a year old... i took care of that in r1538. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From c-d.hailfinger.devel.2006 at gmx.net Wed May 16 08:26:32 2012 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 16 May 2012 08:26:32 +0200 Subject: [flashrom] [PATCH] Add logfile support to flashrom In-Reply-To: <4FAAF447.80807@gmx.net> References: <4DF12DDE.9000401@gmx.net> <20110611142151.GE6443@greenwood> <4DF38206.20903@home.nl> <4DF53AAF.6000700@gmx.net> <4DF53D2B.7090006@home.nl> <4DF69FA1.6070705@gmx.net> <201106171328.p5HDSU4l017284@mail2.student.tuwien.ac.at> <201106191244.p5JCiSbM005768@mail2.student.tuwien.ac.at> <4E3092B5.9020307@gmx.net> <4F03A676.1040006@gmx.net> <201202092013.q19KDFpe031614@mail2.student.tuwien.ac.at> <4FA1C4E2.5040500@gmx.net> <4FAA6E14.8010901@gmx.net> <201205091354.q49DsfCB026816@mail2.student.tuwien.ac.at> <4FAAF447.80807@gmx.net> Message-ID: <4FB34898.5070306@gmx.net> Am 10.05.2012 00:48 schrieb Carl-Daniel Hailfinger: > Am 09.05.2012 15:54 schrieb Stefan Tauner: >> On Wed, 09 May 2012 15:16:04 +0200 Carl-Daniel Hailfinger wrote: >>> Am 08.05.2012 19:48 schrieb Idwer Vollering: >>>> 2012/5/3 Carl-Daniel Hailfinger : >>>> >>>>> - Add man page entry >>>>> - Is the log level difference for screen/logfile a good thing, and >>>>> should we default the logfile level to dbg2 instead of dbg? >>>>> >>>>> Add log file support to flashrom. >>>>> >>>>> If you use cli_classic, the log file will always contain messages at >>>>> a level which is one higher than the one specified. That way we get >>>>> all verbose messages in the log even if the user doesn't specify -V. >>>> This handles -VV and -VVV too, correct? >>> Yes. If a user specifies -VV, the log file will get -VVV output, but the >>> on-screen info will stay manageable. Not sure how we should handle it >>> when the user specifies -VVV... for now, that would set msglevel to 5 >>> (outside the defined range of the enum, but handled implicitly by the >>> code like msglevel 4). >>> >>> We could make the log file always store logs at least at level -VV (to >>> get all dbg2 output) regardless of whether -V was specified or not, and >>> only if -VV or greater was specified, add 1 to the loglevel. >>> What do you think? >> i dont like that implicit "+1" verbosity in the current implementation. >> while non-verbose output is almost useless in the logfile, -VV and >> especially -VVV hides the interesting parts in most cases and should >> only be logged if the user really wants that much detail. i guess it >> might also create quite large log files in some cases. >> >> i think the best solution would be a minimum verbosity of MSG_DEBUG in >> the log file, but without any other escalations. > Not DEBUG2? IIRC you once said that for ICHSPI debugging DEBUG2 produces > better logs. And since we introduced DEBUG2, tha amount of msg_*dbg2 > messages was kept pretty low. Of course SPEW is overkill for pretty much > every log. > I like your minimum verbosity proposal, but I'd pick DEBUG2 and provide > SPEW both on-screen and in the log file only in case the user specifies > -VVV. This patch doesn't have the minimum verbosity handling yet, but I plan to change that. >> an alternative would be a mandatory log file verbosity switch. >> carl-daniel once told me that he would like to see a UI to change the >> verbosity of the different log types (programmer, general, chip etc). >> so a switch for the log file itself does not seem to be that much out >> of proportion (although it makes the previously mentioned UI problem >> harder). > Log level control UI is an issue conceptually separate from log writing > and I'd like to postpone this until the log writing review is pretty > much done. > > >>>>> + cli_classic_abort_usage(); >>>>> + } >>>>> + if (filename && (filename[0] == '-')) >>>>> + fprintf(stderr, "Warning: Supplied file name starts with -\n"); >>>>> >>>>> +#ifndef STANDALONE >>>>> + if (log_name && (log_name[0] == '-')) >>>>> + fprintf(stderr, "Warning: Supplied file name starts with -\n"); >>>>> + if (log_name && open_logfile(log_name)) >>>> WARNING or Warning? Maybe add a line that says that this will change >>>> in the future? >>> I'd say "Warning" it totally OK... it's an indicator that the user did >>> something unintended, but it's not an error per se. >> we use both - WARNING and Warning - throughout the code. is that >> intended? if so what's the policy? if not then we should fix it. i >> think (without looking at any specific case) that WARNING is warranted >> because it sticks out more (especially in verbose outputs). as long as >> we dont want to play with bold or colored text... :) > WARNING > > The point about "Warning" vs. "WARNING" is intricately linked to whether > you believe there should be one or two levels of warnings ("retrying a > different erase command" vs "your EC is stuck, and we just erased its > firmware"). Even a really serious warning is not an error because > flashrom may be theoretically able to fix this while it is still running. > That's largely nitpicking, though. I have no really strong feelings > about this. Besides that, we need msg_*warn in addition to msg_*err. Anyway, here is a new log file patch. It should work, and I hope I killed most/all of the controversial points. Well, except the programmer_shutdown changes which might be unnecessary with the new code flow introduced in the msg_* cleanup. The print_version() change is in this patch because it's a behavioural change needed for reasonable log file writing. Signed-off-by: Carl-Daniel Hailfinger Index: flashrom-logfile/flash.h =================================================================== --- flashrom-logfile/flash.h (Revision 1536) +++ flashrom-logfile/flash.h (Arbeitskopie) @@ -228,7 +228,8 @@ write_gran_1byte, write_gran_256bytes, }; -extern int verbose; +extern int verbose_screen; +extern int verbose_logfile; extern const char flashrom_version[]; extern char *chip_to_probe; void map_flash_registers(struct flashctx *flash); @@ -268,6 +269,11 @@ #define ERROR_FLASHROM_LIMIT -201 /* cli_output.c */ +#ifndef STANDALONE +int open_logfile(const char * const filename); +int close_logfile(void); +void start_logging(void); +#endif enum msglevel { MSG_ERROR = 0, MSG_INFO = 1, Index: flashrom-logfile/cli_output.c =================================================================== --- flashrom-logfile/cli_output.c (Revision 1536) +++ flashrom-logfile/cli_output.c (Arbeitskopie) @@ -2,6 +2,7 @@ * This file is part of the flashrom project. * * Copyright (C) 2009 Sean Nelson + * Copyright (C) 2011 Carl-Daniel Hailfinger * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,8 +21,53 @@ #include #include +#include +#include #include "flash.h" +static FILE *logfile = NULL; + +#ifndef STANDALONE +int close_logfile(void) +{ + if (logfile && fclose(logfile)) { + /* fclose returned an error. Stop writing to be safe. */ + logfile = NULL; + msg_perr("Closing the log file returned error %s\n", + strerror(errno)); + return 1; + } + logfile = NULL; + return 0; +} + +int open_logfile(const char * const filename) +{ + if (!filename) { + msg_gerr("No filename specified.\n"); + return 1; + } + if ((logfile = fopen(filename, "w")) == NULL) { + perror(filename); + return 1; + } + return 0; +} + +void start_logging(void) +{ + enum msglevel oldverbose_screen = verbose_screen; + enum msglevel oldverbose_logfile = verbose_logfile; + + /* Shut up the console. */ + verbose_screen = MSG_ERROR; + verbose_logfile = MSG_DEBUG; + print_version(); + verbose_screen = oldverbose_screen; + verbose_logfile = oldverbose_logfile; +} +#endif /* STANDALONE */ + /* Please note that level is the verbosity, not the importance of the message. */ int print(enum msglevel level, const char *fmt, ...) { @@ -32,7 +78,7 @@ if (level == MSG_ERROR) output_type = stderr; - if (level <= verbose) { + if (level <= verbose_screen) { va_start(ap, fmt); ret = vfprintf(output_type, fmt, ap); va_end(ap); @@ -42,5 +88,12 @@ if (level != MSG_SPEW) fflush(output_type); } + if ((level <= verbose_logfile) && logfile) { + va_start(ap, fmt); + ret = vfprintf(logfile, fmt, ap); + va_end(ap); + if (level != MSG_SPEW) + fflush(logfile); + } return ret; } Index: flashrom-logfile/cli_classic.c =================================================================== --- flashrom-logfile/cli_classic.c (Revision 1536) +++ flashrom-logfile/cli_classic.c (Arbeitskopie) @@ -106,7 +106,7 @@ "-z|" #endif "-E|-r |-w |-v ]\n" - " [-c ] [-l ]\n" + " [-c ] [-l ] [-o ]\n" " [-i ] [-p [:]]\n\n"); printf("Please note that the command line interface for flashrom has " @@ -135,6 +135,7 @@ "\n" " -i | --image only flash image " "from flash layout\n" + " -o | --output log to file \n" " -L | --list-supported print supported devices\n" #if CONFIG_PRINT_WIKI == 1 " -z | --list-supported-wiki print supported devices " @@ -189,7 +190,7 @@ enum programmer prog = PROGRAMMER_INVALID; int ret = 0; - static const char optstring[] = "r:Rw:v:nVEfc:l:i:p:Lzh"; + static const char optstring[] = "r:Rw:v:nVEfc:l:i:p:Lzho:"; static const struct option long_options[] = { {"read", 1, NULL, 'r'}, {"write", 1, NULL, 'w'}, @@ -206,11 +207,13 @@ {"programmer", 1, NULL, 'p'}, {"help", 0, NULL, 'h'}, {"version", 0, NULL, 'R'}, + {"output", 1, NULL, 'o'}, {NULL, 0, NULL, 0}, }; char *filename = NULL; char *layoutfile = NULL; + char *log_name = NULL; char *tempstr = NULL; char *pparam = NULL; @@ -272,7 +275,8 @@ chip_to_probe = strdup(optarg); break; case 'V': - verbose++; + verbose_screen++; + verbose_logfile++; break; case 'E': if (++operation_specified > 1) { @@ -378,6 +382,19 @@ cli_classic_usage(argv[0]); exit(0); break; + case 'o': +#ifdef STANDALONE + fprintf(stderr, "Log file not supported in standalone " + "mode. Aborting.\n"); + cli_classic_abort_usage(); +#else /* STANDALONE */ + log_name = strdup(optarg); + if (log_name[0] == '\0') { + fprintf(stderr, "No log filename specified.\n"); + cli_classic_abort_usage(); + } +#endif /* STANDALONE */ + break; default: cli_classic_abort_usage(); break; @@ -396,6 +413,13 @@ cli_classic_abort_usage(); } +#ifndef STANDALONE + if (log_name && check_filename(log_name, "log")) + cli_classic_abort_usage(); + if (log_name && open_logfile(log_name)) + return 1; +#endif /* !STANDALONE */ + #if CONFIG_PRINT_WIKI == 1 if (list_supported_wiki) { print_supported_wiki(); @@ -410,6 +434,10 @@ goto out; } +#ifndef STANDALONE + start_logging(); +#endif /* STANDALONE */ + msg_gdbg("Command line (%i args):", argc - 1); for (i = 0; i < argc; i++) { msg_gdbg(" %s", argv[i]); @@ -546,11 +574,12 @@ */ programmer_delay(100000); ret |= doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); - /* Note: doit() already calls programmer_shutdown(). */ - goto out; out_shutdown: programmer_shutdown(); out: +#ifndef STANDALONE + ret |= close_logfile(); +#endif return ret; } Index: flashrom-logfile/flashrom.c =================================================================== --- flashrom-logfile/flashrom.c (Revision 1536) +++ flashrom-logfile/flashrom.c (Arbeitskopie) @@ -40,7 +40,8 @@ const char flashrom_version[] = FLASHROM_VERSION; char *chip_to_probe = NULL; -int verbose = MSG_INFO; +int verbose_screen = MSG_INFO; +int verbose_logfile = MSG_DEBUG; static enum programmer programmer = PROGRAMMER_INVALID; @@ -1493,35 +1494,35 @@ #else msg_ginfo(" on unknown machine"); #endif - msg_ginfo(", built with"); + msg_gdbg(", built with"); #if NEED_PCI == 1 #ifdef PCILIB_VERSION - msg_ginfo(" libpci %s,", PCILIB_VERSION); + msg_gdbg(" libpci %s,", PCILIB_VERSION); #else - msg_ginfo(" unknown PCI library,"); + msg_gdbg(" unknown PCI library,"); #endif #endif #ifdef __clang__ - msg_ginfo(" LLVM Clang"); + msg_gdbg(" LLVM Clang"); #ifdef __clang_version__ - msg_ginfo(" %s,", __clang_version__); + msg_gdbg(" %s,", __clang_version__); #else - msg_ginfo(" unknown version (before r102686),"); + msg_gdbg(" unknown version (before r102686),"); #endif #elif defined(__GNUC__) - msg_ginfo(" GCC"); + msg_gdbg(" GCC"); #ifdef __VERSION__ - msg_ginfo(" %s,", __VERSION__); + msg_gdbg(" %s,", __VERSION__); #else - msg_ginfo(" unknown version,"); + msg_gdbg(" unknown version,"); #endif #else - msg_ginfo(" unknown compiler,"); + msg_gdbg(" unknown compiler,"); #endif #if defined (__FLASHROM_LITTLE_ENDIAN__) - msg_ginfo(" little endian"); + msg_gdbg(" little endian"); #else - msg_ginfo(" big endian"); + msg_gdbg(" big endian"); #endif msg_ginfo("\n"); } @@ -1840,6 +1841,5 @@ free(oldcontents); free(newcontents); out_nofree: - programmer_shutdown(); return ret; } -- http://www.hailfinger.org/ From stefan.tauner at student.tuwien.ac.at Fri May 18 00:59:08 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Fri, 18 May 2012 00:59:08 +0200 Subject: [flashrom] [PATCH] Add logfile support to flashrom In-Reply-To: <4FB34898.5070306@gmx.net> References: <4DF12DDE.9000401@gmx.net> <20110611142151.GE6443@greenwood> <4DF38206.20903@home.nl> <4DF53AAF.6000700@gmx.net> <4DF53D2B.7090006@home.nl> <4DF69FA1.6070705@gmx.net> <201106171328.p5HDSU4l017284@mail2.student.tuwien.ac.at> <201106191244.p5JCiSbM005768@mail2.student.tuwien.ac.at> <4E3092B5.9020307@gmx.net> <4F03A676.1040006@gmx.net> <201202092013.q19KDFpe031614@mail2.student.tuwien.ac.at> <4FA1C4E2.5040500@gmx.net> <4FAA6E14.8010901@gmx.net> <201205091354.q49DsfCB026816@mail2.student.tuwien.ac.at> <4FAAF447.80807@gmx.net> <4FB34898.5070306@gmx.net> Message-ID: <201205172259.q4HMx8Op015734@mail2.student.tuwien.ac.at> On Wed, 16 May 2012 08:26:32 +0200 Carl-Daniel Hailfinger wrote: > Am 10.05.2012 00:48 schrieb Carl-Daniel Hailfinger: > > Am 09.05.2012 15:54 schrieb Stefan Tauner: > >> On Wed, 09 May 2012 15:16:04 +0200 Carl-Daniel Hailfinger wrote: > >> we use both - WARNING and Warning - throughout the code. is that > >> intended? if so what's the policy? if not then we should fix it. i > >> think (without looking at any specific case) that WARNING is warranted > >> because it sticks out more (especially in verbose outputs). as long as > >> we dont want to play with bold or colored text... :) > > WARNING > > > > The point about "Warning" vs. "WARNING" is intricately linked to whether > > you believe there should be one or two levels of warnings ("retrying a > > different erase command" vs "your EC is stuck, and we just erased its > > firmware"). Even a really serious warning is not an error because > > flashrom may be theoretically able to fix this while it is still running. > > That's largely nitpicking, though. I have no really strong feelings > > about this. > > Besides that, we need msg_*warn in addition to msg_*err. and msg_*warn2: if you really want to distinguish between WARNING and Warning, this should be done explicitly and with some policy similar to how the rest of the verbosity scheme works. > Anyway, here is a new log file patch. It should work, and I hope I > killed most/all of the controversial points. > Well, except the programmer_shutdown changes which might be unnecessary > with the new code flow introduced in the msg_* cleanup. > The print_version() change is in this patch because it's a behavioural > change needed for reasonable log file writing. what changes exactly? the verbosity changes in print_sysinfo are useless regarding the log file support: stdout/err and log file are equal with and without those changes. they should have been in the previous cleanup patch imho. > Signed-off-by: Carl-Daniel Hailfinger > > Index: flashrom-logfile/flash.h > =================================================================== > --- flashrom-logfile/flash.h (Revision 1536) > +++ flashrom-logfile/flash.h (Arbeitskopie) > [?] > /* cli_output.c */ > +#ifndef STANDALONE > +int open_logfile(const char * const filename); > +int close_logfile(void); > +void start_logging(void); > +#endif hm... while logging is not useful inside coreboot, it certainly is somewhat useful in code using libflashrom... side note: the name STANDALONE sucks. > Index: flashrom-logfile/cli_output.c > =================================================================== > --- flashrom-logfile/cli_output.c (Revision 1536) > +++ flashrom-logfile/cli_output.c (Arbeitskopie) > @@ -2,6 +2,7 @@ > * This file is part of the flashrom project. > * > * Copyright (C) 2009 Sean Nelson > + * Copyright (C) 2011 Carl-Daniel Hailfinger > * > * This program is free software; you can redistribute it and/or modify > * it under the terms of the GNU General Public License as published by > @@ -20,8 +21,53 @@ > > #include > #include > +#include > +#include > #include "flash.h" > > +static FILE *logfile = NULL; > + > +#ifndef STANDALONE > +int close_logfile(void) > +{ > + if (logfile && fclose(logfile)) { > + /* fclose returned an error. Stop writing to be safe. */ > + logfile = NULL; > + msg_perr("Closing the log file returned error %s\n", > + strerror(errno)); new line limit > + return 1; > + } > + logfile = NULL; > + return 0; > +} > + > +int open_logfile(const char * const filename) > +{ > + if (!filename) { > + msg_gerr("No filename specified.\n"); > + return 1; > + } > + if ((logfile = fopen(filename, "w")) == NULL) { > + perror(filename); > + return 1; > + } > + return 0; > +} > + > +void start_logging(void) > +{ > + enum msglevel oldverbose_screen = verbose_screen; > + enum msglevel oldverbose_logfile = verbose_logfile; > + > + /* Shut up the console temporarily. */ > + verbose_screen = MSG_ERROR; > + verbose_logfile = MSG_DEBUG; > + print_version(); > + verbose_screen = oldverbose_screen; > + verbose_logfile = oldverbose_logfile; > +} > +#endif /* STANDALONE */ actually it is !STANDALONE... that comment is worse than none imho. > /* Please note that level is the verbosity, not the importance of the message. */ > int print(enum msglevel level, const char *fmt, ...) > { > @@ -32,7 +78,7 @@ > if (level == MSG_ERROR) > output_type = stderr; > > - if (level <= verbose) { > + if (level <= verbose_screen) { > va_start(ap, fmt); > ret = vfprintf(output_type, fmt, ap); > va_end(ap); > @@ -42,5 +88,12 @@ > if (level != MSG_SPEW) > fflush(output_type); > } > + if ((level <= verbose_logfile) && logfile) { > + va_start(ap, fmt); > + ret = vfprintf(logfile, fmt, ap); > + va_end(ap); > + if (level != MSG_SPEW) > + fflush(logfile); > + } > return ret; > } > Index: flashrom-logfile/cli_classic.c > =================================================================== > --- flashrom-logfile/cli_classic.c (Revision 1536) > +++ flashrom-logfile/cli_classic.c (Arbeitskopie) > @@ -106,7 +106,7 @@ > "-z|" > #endif > "-E|-r |-w |-v ]\n" > - " [-c ] [-l ]\n" > + " [-c ] [-l ] [-o ]\n" > " [-i ] [-p [:]]\n\n"); > > printf("Please note that the command line interface for flashrom has " > @@ -135,6 +135,7 @@ > "\n" > " -i | --image only flash image " > "from flash layout\n" > + " -o | --output log to file \n" > " -L | --list-supported print supported devices\n" > #if CONFIG_PRINT_WIKI == 1 > " -z | --list-supported-wiki print supported devices " > @@ -189,7 +190,7 @@ > enum programmer prog = PROGRAMMER_INVALID; > int ret = 0; > > - static const char optstring[] = "r:Rw:v:nVEfc:l:i:p:Lzh"; > + static const char optstring[] = "r:Rw:v:nVEfc:l:i:p:Lzho:"; > static const struct option long_options[] = { > {"read", 1, NULL, 'r'}, > {"write", 1, NULL, 'w'}, > @@ -206,11 +207,13 @@ > {"programmer", 1, NULL, 'p'}, > {"help", 0, NULL, 'h'}, > {"version", 0, NULL, 'R'}, > + {"output", 1, NULL, 'o'}, > {NULL, 0, NULL, 0}, > }; > > char *filename = NULL; > char *layoutfile = NULL; > + char *log_name = NULL; the variable names for the different filenames are not very consistent. image_file layout_file log_file > char *tempstr = NULL; > char *pparam = NULL; > > @@ -272,7 +275,8 @@ > chip_to_probe = strdup(optarg); > break; > case 'V': > - verbose++; > + verbose_screen++; > + verbose_logfile++; > break; > case 'E': > if (++operation_specified > 1) { > @@ -378,6 +382,19 @@ > cli_classic_usage(argv[0]); > exit(0); > break; > + case 'o': > +#ifdef STANDALONE > + fprintf(stderr, "Log file not supported in standalone " > + "mode. Aborting.\n"); new line limit > + cli_classic_abort_usage(); > +#else /* STANDALONE */ > + log_name = strdup(optarg); > + if (log_name[0] == '\0') { > + fprintf(stderr, "No log filename specified.\n"); > + cli_classic_abort_usage(); > + } > +#endif /* STANDALONE */ > + break; > default: > cli_classic_abort_usage(); > break; > @@ -396,6 +413,13 @@ > cli_classic_abort_usage(); > } > > +#ifndef STANDALONE > + if (log_name && check_filename(log_name, "log")) > + cli_classic_abort_usage(); > + if (log_name && open_logfile(log_name)) > + return 1; > +#endif /* !STANDALONE */ > + > #if CONFIG_PRINT_WIKI == 1 > if (list_supported_wiki) { > print_supported_wiki(); > @@ -410,6 +434,10 @@ > goto out; > } > > +#ifndef STANDALONE > + start_logging(); > +#endif /* STANDALONE */ > + > msg_gdbg("Command line (%i args):", argc - 1); > for (i = 0; i < argc; i++) { > msg_gdbg(" %s", argv[i]); > @@ -546,11 +574,12 @@ > */ > programmer_delay(100000); > ret |= doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); > - /* Note: doit() already calls programmer_shutdown(). */ > - goto out; > > out_shutdown: > programmer_shutdown(); > out: > +#ifndef STANDALONE > + ret |= close_logfile(); > +#endif > return ret; > } > Index: flashrom-logfile/flashrom.c > =================================================================== > --- flashrom-logfile/flashrom.c (Revision 1536) > +++ flashrom-logfile/flashrom.c (Arbeitskopie) > @@ -40,7 +40,8 @@ > > const char flashrom_version[] = FLASHROM_VERSION; > char *chip_to_probe = NULL; > -int verbose = MSG_INFO; > +int verbose_screen = MSG_INFO; > +int verbose_logfile = MSG_DEBUG; > > static enum programmer programmer = PROGRAMMER_INVALID; > > @@ -1493,35 +1494,35 @@ > #else > msg_ginfo(" on unknown machine"); > #endif > - msg_ginfo(", built with"); > + msg_gdbg(", built with"); > #if NEED_PCI == 1 > #ifdef PCILIB_VERSION > - msg_ginfo(" libpci %s,", PCILIB_VERSION); > + msg_gdbg(" libpci %s,", PCILIB_VERSION); > #else > - msg_ginfo(" unknown PCI library,"); > + msg_gdbg(" unknown PCI library,"); > #endif > #endif > #ifdef __clang__ > - msg_ginfo(" LLVM Clang"); > + msg_gdbg(" LLVM Clang"); > #ifdef __clang_version__ > - msg_ginfo(" %s,", __clang_version__); > + msg_gdbg(" %s,", __clang_version__); > #else > - msg_ginfo(" unknown version (before r102686),"); > + msg_gdbg(" unknown version (before r102686),"); > #endif > #elif defined(__GNUC__) > - msg_ginfo(" GCC"); > + msg_gdbg(" GCC"); > #ifdef __VERSION__ > - msg_ginfo(" %s,", __VERSION__); > + msg_gdbg(" %s,", __VERSION__); > #else > - msg_ginfo(" unknown version,"); > + msg_gdbg(" unknown version,"); > #endif > #else > - msg_ginfo(" unknown compiler,"); > + msg_gdbg(" unknown compiler,"); > #endif > #if defined (__FLASHROM_LITTLE_ENDIAN__) > - msg_ginfo(" little endian"); > + msg_gdbg(" little endian"); > #else > - msg_ginfo(" big endian"); > + msg_gdbg(" big endian"); > #endif > msg_ginfo("\n"); > } > @@ -1840,6 +1841,5 @@ > free(oldcontents); > free(newcontents); > out_nofree: > - programmer_shutdown(); > return ret; > } > > TODO: - minimum verbosity handling apart from that it would have been ack-able i think. looks very nice, small, clean and sane. thanks! pity we took so long. NB: i have not thoroughly tested it yet. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Fri May 18 01:17:33 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Fri, 18 May 2012 01:17:33 +0200 Subject: [flashrom] DQ965GF In-Reply-To: References: Message-ID: <201205172317.q4HNHXYQ024048@mail2.student.tuwien.ac.at> On Tue, 15 May 2012 03:19:53 +0300 gabris wrote: > Hello, as written in flashrom I'm sending verbose log which is from Intel > DQ965GF motherboard running Q965, Mandriva 2010.2 as OS. it has SST25VF016B > Bioschip. > Hello gabris, thanks for your report! I have added the board to our list of (un)supported boards (with an appropriate note) and will commit that later together with other small changes. It wont change anything regarding support of the board, but i would like to see the output of flashrom -VV -r image.tmp It will try to read the whole flash chip and will fail and i want to know where. This test is safe. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From gabris.t at gmail.com Fri May 18 01:53:18 2012 From: gabris.t at gmail.com (gabris) Date: Fri, 18 May 2012 02:53:18 +0300 Subject: [flashrom] DQ965GF In-Reply-To: <201205172317.q4HNHXYQ024048@mail2.student.tuwien.ac.at> References: <201205172317.q4HNHXYQ024048@mail2.student.tuwien.ac.at> Message-ID: Hello Stefan, here's output: flashrom v0.9.5.2-r1515 on Linux 2.6.33.7-desktop-2mnb (i686), built with libpci 3.1.7, GCC 4.6.1 20110627 (Mandriva), little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 1855M loops per second, 10 myus = 11 us, 100 myus = 100 us, 1000 myus = 1004 us, 10000 myus = 10008 us, 4 myus = 5 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: "Intel Corporation" DMI string baseboard-product-name: "DQ965GF" DMI string baseboard-version: "AAD41676-400" DMI string chassis-type: "Desktop" Found chipset "Intel ICH8DO" with PCI ID 8086:2814. 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 0xa WARNING: Setting 0xdc from 0xa to 0xb on ICH8DO failed. New value is 0xa. Root Complex Register Block address = 0xfed1c000 GCS = 0x464: BIOS Interface Lock-Down: disabled, Boot BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3020 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 OP Type Pre-OP op[0]: 0x9f, read w/o addr, none op[1]: 0xab, read w/ addr, none op[2]: 0x00, read w/o addr, none op[3]: 0x00, read w/o addr, none op[4]: 0x00, read w/o addr, none op[5]: 0x00, read w/o addr, none op[6]: 0x00, read w/o addr, none op[7]: 0x00, read w/o addr, none Pre-OP 0: 0x06, Pre-OP 1: 0x00 0x06: 0x3b00 (HSFC) HSFC: FGO=0, FCYCLE=0, FDBC=59, SME=0 0x08: 0x00122201 (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: 0x01ff0120 FREG1: BIOS region (0x00120000-0x001fffff) is read-write. 0x5C: 0x011f0003 FREG2: WARNING: Management Engine region (0x00003000-0x0011ffff) is locked. 0x60: 0x00020001 FREG3: Gigabit Ethernet region (0x00001000-0x00002fff) is read-write. 0x64: 0x00000000 FREG4: WARNING: Platform Data region (0x00000000-0x00000fff) is locked. 0x74: 0x00000000 (PR0 is unused) 0x78: 0x00000000 (PR1 is unused) 0x7C: 0x00000000 (PR2 is unused) 0x80: 0x00000000 (PR3 is unused) 0x84: 0x00000000 (PR4 is unused) 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: 0x00 (SSFS) SSFS: SCIP=0, FDONE=0, FCERR=0, AEL=0 0x91: 0x004200 (SSFC) SSFC: SCGO=0, ACS=0, SPOP=0, COP=0, DBC=2, SME=0, SCF=0 0x94: 0x0006 (PREOP) 0x96: 0x0008 (OPTYPE) 0x98: 0x0000ab9f (OPMENU) 0x9C: 0x00000000 (OPMENU+4) 0xC1: 0xffffffff (VSCC) VSCC: BES=0x3, WG=1, WSR=1, WEWS=1, EO=0xff, VCL=1 Reading flash descriptors mapped by the chipset via FDOC/FDOD... done. === Content Section === FLVALSIG 0x0ff0a55a FLMAP0 0x03040001 FLMAP1 0x01100206 FLMAP2 0x00000120 --- Details --- NR (Number of Regions): 4 FRBA (Flash Region Base Address): 0x040 NC (Number of Components): 1 FCBA (Flash Component Base Address): 0x010 ISL (ICH/PCH Strap Length): 1 FISBA/FPSBA (Flash ICH/PCH Strap Base Address): 0x100 NM (Number of Masters): 3 FMBA (Flash Master Base Address): 0x060 MSL/PSL (MCH/PROC Strap Length): 1 FMSBA (Flash MCH/PROC Strap Base Address): 0x200 === Component Section === FLCOMP 0x00300002 FLILL 0x00000000 --- Details --- Component 1 density: 2 MB Component 2 is not used. Read Clock Frequency: 20 MHz Read ID and Status Clock Freq.: 20 MHz Write and Erase Clock Freq.: 20 MHz Fast Read is supported. Fast Read Clock Frequency: 33 MHz No forbidden opcodes. === Region Section === FLREG0 0x00000000 FLREG1 0x01ff0120 FLREG2 0x011f0003 FLREG3 0x00020001 FLREG4 0x00000000 --- Details --- Region 0 (Descr.) 0x00000000 - 0x00000fff Region 1 (BIOS ) 0x00120000 - 0x001fffff Region 2 (ME ) 0x00003000 - 0x0011ffff Region 3 (GbE ) 0x00001000 - 0x00002fff Region 4 (Platf.) 0x00000000 - 0x00000fff === Master Section === FLMSTR1 0x0a0b0000 FLMSTR2 0x0c0d0000 FLMSTR3 0x08090218 --- Details --- Descr. BIOS ME GbE Platf. BIOS r rw rw ME r rw rw GbE r rw Enabling hardware sequencing because some important opcode is locked. SPI Read Configuration: prefetching enabled, caching enabled, PROBLEMS, continuing anyway The following protocols are supported: FWH, Programmer-specific. Probing for Programmer Opaque flash chip, 0 kB: Found 1 attached SPI flash chip with a density of 2048 kB. There is only one partition containing the whole address space (0x000000 - 0x1fffff). There are 512 erase blocks with 4096 B each. Found Programmer flash chip "Opaque flash chip" (2048 kB, Programmer-specific) at physical address 0x0. Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x4b, id2 0x93, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0x5a, id2 0x47, 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 0x4b, id2 0x93, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0x5a, id2 0x47, 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 0x4b, id2 0x93, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0x0c, id2 0xe1, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0x5a, id2 0x47, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0x5a, id2 0x47, 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 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 0x5a, id2 0x47, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0x5a, id2 0x47, 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 0x4b, id2 0x93, 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 0x5a, id2 0x47, 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 0x5a, id2 0x47, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0x5a, id2 0x47, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0x5a, id2 0x47, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0x4b, id2 0x93, 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 0x5a, id2 0x47, id1 parity violation, id1 is normal flash content, id2 is normal flash content Found Programmer flash chip "Opaque flash chip" (2048 kB, Programmer-specific). Reading flash... Reading 2097152 bytes starting at 0x000000. Transaction error between offset 0x00003000 and 0x0000303f (= 0x00003000 + 63)! HSFS: FDONE=1, FCERR=1, AEL=0, BERASE=1, SCIP=0, FDOPSS=1, FDV=1, FLOCKDN=1 HSFC: FGO=0, FCYCLE=0, FDBC=63, SME=0 Read operation failed! FAILED. Restoring PCI config space for 00:1f:0 reg 0xdc On Fri, May 18, 2012 at 2:17 AM, Stefan Tauner < stefan.tauner at student.tuwien.ac.at> wrote: > On Tue, 15 May 2012 03:19:53 +0300 > gabris wrote: > > > Hello, as written in flashrom I'm sending verbose log which is from Intel > > DQ965GF motherboard running Q965, Mandriva 2010.2 as OS. it has > SST25VF016B > > Bioschip. > > > > Hello gabris, > > thanks for your report! > > I have added the board to our list of (un)supported boards (with an > appropriate note) and will commit that later together with other small > changes. > > It wont change anything regarding support of the board, but i would like > to see the output of > flashrom -VV -r image.tmp > It will try to read the whole flash chip and will fail and i want to > know where. This test is safe. > > -- > Kind regards/Mit freundlichen Gr??en, Stefan Tauner > -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan.tauner at student.tuwien.ac.at Fri May 18 15:53:59 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Fri, 18 May 2012 15:53:59 +0200 Subject: [flashrom] PONY_SPI, patch to support a new programmer (AJAWe) In-Reply-To: References: Message-ID: <201205181354.q4IDrxNF008044@mail2.student.tuwien.ac.at> On Fri, 11 May 2012 14:50:17 +0200 Virgil-Adrian Teaca wrote: > There is a new patch for pony_spi, to add support for a new serial > programmer, produced by AJAWe. i asked them for a sample to test or someone that might be able to test it on their hardware. they replied quickly, but are not interested at all. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From gomezclaude at free.fr Sat May 19 11:13:15 2012 From: gomezclaude at free.fr (claude) Date: Sat, 19 May 2012 11:13:15 +0200 Subject: [flashrom] (no subject) Message-ID: <1337418795.4135.1.camel@claude-MS-7366> MSI P6NGM motherboard claude at claude-MS-7366:~$ sudo flashrom -V flashrom v0.9.5.2-r1517 on Linux 3.2.0-24-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, 1972M loops per second, 10 myus = 10 us, 100 myus = 97 us, 1000 myus = 965 us, 10000 myus = 11415 us, 4 myus = 5 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "MSI" DMI string system-product-name: "MS-7366" DMI string system-version: "1.0" DMI string baseboard-manufacturer: "MSI" DMI string baseboard-product-name: "MS-7366" DMI string baseboard-version: "1.0" 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: 0x00, bit 6 is 0, bit 5 is 0 Flash bus type is LPC Found SMBus device 10de:07d8 at 00:03:1 MCP SPI BAR is at 0xfeb80000 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 with your board name: flashrom -V as the subject to help us finish support for your chipset. Thanks. OK. The following protocols are supported: LPC. 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 0xd7, id2 0x99, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0xd7, id2 0x99, 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 SST SST49LF020, 256 kB: probe_jedec_common: id1 0xd7, id2 0x99, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF020A, 256 kB: probe_jedec_common: id1 0xd7, id2 0x99, 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 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 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 0xd7, id2 0x99, 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:03:0 reg 0x6d Restoring PCI config space for 00:03:0 reg 0x90 Restoring PCI config space for 00:03:0 reg 0x8c Restoring PCI config space for 00:03:0 reg 0x88 claude at claude-MS-7366:~$ From kyosti.malkki at gmail.com Sat May 19 21:09:19 2012 From: kyosti.malkki at gmail.com (=?ISO-8859-1?Q?Ky=F6sti_M=E4lkki?=) Date: Sat, 19 May 2012 22:09:19 +0300 Subject: [flashrom] Add chip Pm39LV512 Message-ID: <1337454559.2284.58.camel@obelix> This flash is like PMC model Pm39LV010 but capacity is 64kB. Model ID was already defined, PREW works for me. Signed-off-by: Ky?sti M?lkki Index: flashrom-pmc64k/flashchips.c =================================================================== --- flashrom-pmc64k/flashchips.c (revision 1538) +++ flashrom-pmc64k/flashchips.c (working copy) @@ -5267,6 +5267,36 @@ { .vendor = "PMC", + .name = "Pm39LV512", + .bustype = BUS_PARALLEL, + .manufacture_id = PMC_ID_NOPREFIX, + .model_id = PMC_PM39LV512, + .total_size = 64, + .page_size = 4096, + .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, + .tested = TEST_OK_PREW, + .probe = probe_jedec, + .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 16} }, + .block_erase = erase_sector_jedec, + }, { + .eraseblocks = { {64 * 1024, 1} }, + .block_erase = erase_block_jedec, + }, { + .eraseblocks = { {64 * 1024, 1} }, + .block_erase = erase_chip_block_jedec, + } + }, + .write = write_jedec_1, + .read = read_memmapped, + .voltage = {2700, 3600}, + }, + + { + .vendor = "PMC", .name = "Pm39LV010", .bustype = BUS_PARALLEL, .manufacture_id = PMC_ID_NOPREFIX, From paulepanter at users.sourceforge.net Sat May 19 21:50:21 2012 From: paulepanter at users.sourceforge.net (Paul Menzel) Date: Sat, 19 May 2012 21:50:21 +0200 Subject: [flashrom] Add chip Pm39LV512 In-Reply-To: <1337454559.2284.58.camel@obelix> References: <1337454559.2284.58.camel@obelix> Message-ID: <1337457021.5152.4.camel@mattotaupa> Dear Ky?sti, Am Samstag, den 19.05.2012, 22:09 +0300 schrieb Ky?sti M?lkki: > This flash is like PMC model Pm39LV010 but capacity is 64kB. could you add a link to the data sheet to the commit message? > Model ID was already defined, PREW works for me. Could you also sent the output of `flashrom -Vr` and the other commends to the list for archival purposes. > Signed-off-by: Ky?sti M?lkki > > Index: flashrom-pmc64k/flashchips.c > =================================================================== > --- flashrom-pmc64k/flashchips.c (revision 1538) > +++ flashrom-pmc64k/flashchips.c (working copy) > @@ -5267,6 +5267,36 @@ > > { > .vendor = "PMC", > + .name = "Pm39LV512", If this list is sorted, it should go after ?Pm39LV010?. > + .bustype = BUS_PARALLEL, > + .manufacture_id = PMC_ID_NOPREFIX, > + .model_id = PMC_PM39LV512, > + .total_size = 64, > + .page_size = 4096, > + .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, > + .tested = TEST_OK_PREW, > + .probe = probe_jedec, > + .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ > + .block_erasers = > + { > + { > + .eraseblocks = { {4 * 1024, 16} }, > + .block_erase = erase_sector_jedec, > + }, { > + .eraseblocks = { {64 * 1024, 1} }, > + .block_erase = erase_block_jedec, > + }, { > + .eraseblocks = { {64 * 1024, 1} }, > + .block_erase = erase_chip_block_jedec, > + } > + }, > + .write = write_jedec_1, > + .read = read_memmapped, > + .voltage = {2700, 3600}, > + }, > + > + { > + .vendor = "PMC", > .name = "Pm39LV010", > .bustype = BUS_PARALLEL, > .manufacture_id = PMC_ID_NOPREFIX, With the above comments addressed, you can add Acked-by: Paul Menzel to the [PATCH v2]. Thanks, Paul -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: This is a digitally signed message part URL: From kyosti.malkki at gmail.com Sun May 20 12:39:32 2012 From: kyosti.malkki at gmail.com (=?ISO-8859-1?Q?Ky=F6sti_M=E4lkki?=) Date: Sun, 20 May 2012 13:39:32 +0300 Subject: [flashrom] Add chip Pm39LV512 In-Reply-To: <1337457021.5152.4.camel@mattotaupa> References: <1337454559.2284.58.camel@obelix> <1337457021.5152.4.camel@mattotaupa> Message-ID: <1337510372.2284.343.camel@obelix> On Sat, 2012-05-19 at 21:50 +0200, Paul Menzel wrote: > Dear Ky?sti, > > > Am Samstag, den 19.05.2012, 22:09 +0300 schrieb Ky?sti M?lkki: > > This flash is like PMC model Pm39LV010 but capacity is 64kB. > > could you add a link to the data sheet to the commit message? Done. I found no official site, though. > > Model ID was already defined, PREW works for me. > > Could you also sent the output of `flashrom -Vr` and the other commends > to the list for archival purposes. > I will do so. I used IT8212F PCI PATA card as a programmer, need to submit that patch too. > > Signed-off-by: Ky?sti M?lkki > > > > Index: flashrom-pmc64k/flashchips.c > > =================================================================== > > --- flashrom-pmc64k/flashchips.c (revision 1538) > > +++ flashrom-pmc64k/flashchips.c (working copy) > > @@ -5267,6 +5267,36 @@ > > > > { > > .vendor = "PMC", > > + .name = "Pm39LV512", > > If this list is sorted, it should go after ?Pm39LV010?. > Done. It's after Pm39LV040 now. > > + .bustype = BUS_PARALLEL, > > + .manufacture_id = PMC_ID_NOPREFIX, > > + .model_id = PMC_PM39LV512, > > + .total_size = 64, > > + .page_size = 4096, > > + .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, > > + .tested = TEST_OK_PREW, > > + .probe = probe_jedec, > > + .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ > > + .block_erasers = > > + { > > + { > > + .eraseblocks = { {4 * 1024, 16} }, > > + .block_erase = erase_sector_jedec, > > + }, { > > + .eraseblocks = { {64 * 1024, 1} }, > > + .block_erase = erase_block_jedec, > > + }, { > > + .eraseblocks = { {64 * 1024, 1} }, > > + .block_erase = erase_chip_block_jedec, > > + } > > + }, > > + .write = write_jedec_1, > > + .read = read_memmapped, > > + .voltage = {2700, 3600}, > > + }, > > + > > + { > > + .vendor = "PMC", > > .name = "Pm39LV010", > > .bustype = BUS_PARALLEL, > > .manufacture_id = PMC_ID_NOPREFIX, > > With the above comments addressed, you can add > > Acked-by: Paul Menzel > > to the [PATCH v2]. > Done. > > Thanks, > > Paul > _______________________________________________ > flashrom mailing list > flashrom at flashrom.org > http://www.flashrom.org/mailman/listinfo/flashrom From kyosti.malkki at gmail.com Sun May 20 12:58:09 2012 From: kyosti.malkki at gmail.com (=?ISO-8859-1?Q?Ky=F6sti_M=E4lkki?=) Date: Sun, 20 May 2012 13:58:09 +0300 Subject: [flashrom] Add chip Pm39LV512 In-Reply-To: <1337457021.5152.4.camel@mattotaupa> References: <1337454559.2284.58.camel@obelix> <1337457021.5152.4.camel@mattotaupa> Message-ID: <1337511489.2284.362.camel@obelix> This flash is like PMC model Pm39LV010 but capacity is 64kB. Model ID was already defined, PREW works for me. http://www.alldatasheet.com/datasheet-pdf/pdf/PMC/PM39LV512-70JC.html Signed-off-by: Ky?sti M?lkki Acked-by: Paul Menzel Index: flashrom-pmc64k/flashchips.c =================================================================== --- flashrom-pmc64k/flashchips.c (revision 1538) +++ flashrom-pmc64k/flashchips.c (working copy) @@ -5354,9 +5354,39 @@ .read = read_memmapped, .voltage = {2700, 3600}, }, - + { .vendor = "PMC", + .name = "Pm39LV512", + .bustype = BUS_PARALLEL, + .manufacture_id = PMC_ID_NOPREFIX, + .model_id = PMC_PM39LV512, + .total_size = 64, + .page_size = 4096, + .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, + .tested = TEST_OK_PREW, + .probe = probe_jedec, + .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 16} }, + .block_erase = erase_sector_jedec, + }, { + .eraseblocks = { {64 * 1024, 1} }, + .block_erase = erase_block_jedec, + }, { + .eraseblocks = { {64 * 1024, 1} }, + .block_erase = erase_chip_block_jedec, + } + }, + .write = write_jedec_1, + .read = read_memmapped, + .voltage = {2700, 3600}, + }, + + { + .vendor = "PMC", .name = "Pm49FL002", .bustype = BUS_LPC | BUS_FWH, /* A/A Mux */ .manufacture_id = PMC_ID_NOPREFIX, From felix.janda at posteo.de Sun May 20 10:24:05 2012 From: felix.janda at posteo.de (Felix Janda) Date: Sun, 20 May 2012 10:24:05 +0200 Subject: [flashrom] Asrock N61P-S: Testing reading Message-ID: <20120520082405.GA989@gauss> Hello, reading out the flash chip works. However I don't get the same result each time. More precisely I get equal dumps when reading the chip several times, but I get something different after reboot. The differences appear however only in the region 0x0006e000-0x00070000. The image from the vendor is also identical to the dumps but in this region, where it contains only 0xff. I hope that makes sense. I've included the output of flashrom, lspci and superiotool. Regards. --------------------------------------------------------------------- flashrom v0.9.5.2-r1515 on Linux 3.4.0-rc7gauss+ (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 2 usecs, 337M loops per second, delay more than 10% too short (got 34% of expected delay), recalculating... 1030M loops per second, 10 myus = 12 us, 100 myus = 101 us, 1000 myus = 1003 us, 10000 myus = 10009 us, 8 myus = 10 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: "N61P-S" DMI string baseboard-version: " " 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 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. 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. --------------------------------------------------------------------- 00:00.0 RAM memory [0500]: nVidia Corporation MCP61 Memory Controller [10de:03ea] (rev a1) Subsystem: ASRock Incorporation 939NF6G-VSTA Board [1849:03ea] 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- Reset- FastB2B- PriDiscTmr- SecDiscTmr+ DiscTmrStat- DiscTmrSERREn- Capabilities: [b8] Subsystem: ASRock Incorporation 939NF6G-VSTA Board [1849:03f3] Capabilities: [8c] HyperTransport: MSI Mapping Enable- Fixed- Mapping Address Base: 00000000fee00000 00: de 10 f3 03 04 00 b0 00 a1 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 f0 ff 00 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 b8 00 00 00 00 00 00 00 00 00 02 02 40: 00 00 73 07 01 00 02 00 07 00 00 00 00 00 48 00 50: 00 00 00 00 00 00 00 00 ff 1f ff 1f 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 03 00 00 80 00 00 00 00 00 00 00 08 00 00 a8 90: 00 00 e0 fe 00 00 00 00 00 00 00 00 00 00 00 00 a0: 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 ff ff 00 00 0d 8c 00 00 49 18 f3 03 c0: 49 18 f3 03 03 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 Audio device [0403]: nVidia Corporation MCP61 High Definition Audio [10de:03f0] (rev a2) Subsystem: ASRock Incorporation Device [1849:3662] 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- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [40] Subsystem: ASRock Incorporation 939NF6G-VSTA Board [1849:03e8] 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=0 PME- Capabilities: [50] MSI: Enable+ Count=1/2 Maskable- 64bit+ Address: 00000000fee0300c Data: 4149 Capabilities: [60] HyperTransport: MSI Mapping Enable- Fixed- Mapping Address Base: 00000000fee00000 Capabilities: [80] Express (v1) Root 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 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x16, 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 x16, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise- Slot #1, PowerLimit 75.000W; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd On, 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] Virtual Channel Caps: LPEVC=0 RefClk=100ns PATEntryBits=1 Arb: Fixed- WRR32- WRR64- WRR128- Ctrl: ArbSelect=WRR32 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: pcieport 00: de 10 e8 03 07 04 10 00 a2 00 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 00 02 02 00 e1 e1 00 00 20: 00 dc f0 df 01 c0 f1 cf 00 00 00 00 00 00 00 00 30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 1a 00 40: 0d 48 00 00 49 18 e8 03 01 50 02 f8 00 00 00 00 50: 05 60 83 00 0c 30 e0 fe 00 00 00 00 49 41 00 00 60: 08 80 00 a8 00 00 e0 fe 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: 10 00 41 01 01 80 00 00 10 28 00 00 01 3d 11 00 90: 40 00 01 31 80 25 08 00 c0 01 48 01 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:0b.0 PCI bridge [0604]: nVidia Corporation MCP61 PCI Express bridge [10de:03e9] (rev a2) (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] Subsystem: ASRock Incorporation 939NF6G-VSTA Board [1849:03e9] 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=0 PME- Capabilities: [50] MSI: Enable+ Count=1/2 Maskable- 64bit+ Address: 00000000fee0300c Data: 4151 Capabilities: [60] HyperTransport: MSI Mapping Enable- Fixed- Mapping Address Base: 00000000fee00000 Capabilities: [80] Express (v1) Root 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 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #1, Speed 2.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 #2, PowerLimit 10.000W; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd On, 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] Virtual Channel Caps: LPEVC=0 RefClk=100ns PATEntryBits=1 Arb: Fixed- WRR32- WRR64- WRR128- Ctrl: ArbSelect=WRR32 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: pcieport 00: de 10 e9 03 04 04 10 00 a2 00 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 00 03 03 00 f1 01 00 00 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 00 00 02 00 40: 0d 48 00 00 49 18 e9 03 01 50 02 f8 00 00 00 00 50: 05 60 83 00 0c 30 e0 fe 00 00 00 00 51 41 00 00 60: 08 80 00 a8 00 00 e0 fe 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: 10 00 41 01 01 80 00 00 10 28 00 00 11 3c 11 01 90: 00 00 11 10 00 05 10 00 c0 01 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:0c.0 PCI bridge [0604]: nVidia Corporation MCP61 PCI Express bridge [10de:03e9] (rev a2) (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] Subsystem: ASRock Incorporation 939NF6G-VSTA Board [1849:03e9] 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=0 PME- Capabilities: [50] MSI: Enable+ Count=1/2 Maskable- 64bit+ Address: 00000000fee0300c Data: 4159 Capabilities: [60] HyperTransport: MSI Mapping Enable- Fixed- Mapping Address Base: 00000000fee00000 Capabilities: [80] Express (v1) Root 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 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #2, Speed 2.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 #3, PowerLimit 10.000W; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd On, 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] Virtual Channel Caps: LPEVC=0 RefClk=100ns PATEntryBits=1 Arb: Fixed- WRR32- WRR64- WRR128- Ctrl: ArbSelect=WRR32 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: pcieport 00: de 10 e9 03 04 04 10 00 a2 00 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 00 04 04 00 f1 01 00 00 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 00 00 02 00 40: 0d 48 00 00 49 18 e9 03 01 50 02 f8 00 00 00 00 50: 05 60 83 00 0c 30 e0 fe 00 00 00 00 59 41 00 00 60: 08 80 00 a8 00 00 e0 fe 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: 10 00 41 01 01 80 00 00 10 28 00 00 11 3c 11 02 90: 00 00 11 10 00 05 18 00 c0 01 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:18.0 Host bridge [0600]: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration [1022:1100] 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- Kernel driver in use: k8temp 00: 22 10 03 11 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: ff 3b 04 00 40 00 10 0a 00 00 00 00 00 00 00 00 50: f8 01 f8 ef d5 00 00 00 00 00 00 00 80 ff c2 3f 60: fe 00 00 00 01 77 00 00 00 00 00 00 00 00 00 00 70: 11 01 02 51 11 80 00 50 00 38 00 08 1a 22 00 00 80: 00 00 07 23 13 21 13 21 00 00 00 00 00 00 00 00 90: 43 00 00 00 5a 00 00 00 00 fc 39 01 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 b0 8c 37 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 01 a7 0d 00 00 00 20 04 25 20 20 00 e0: 00 00 00 00 3e 5c 38 00 19 17 00 00 00 00 00 00 f0: 0f 00 10 00 00 00 00 00 00 00 00 00 b2 0f 06 00 02:00.0 VGA compatible controller [0300]: nVidia Corporation G96 [GeForce 9400 GT] [10de:0641] (rev a1) (prog-if 00 [VGA controller]) Subsystem: XFX Pine Group Inc. Device [1682:4009] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- 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- Capabilities: [128 v1] Power Budgeting Capabilities: [600 v1] Vendor Specific Information: ID=0001 Rev=1 Len=024 Kernel driver in use: nouveau 00: de 10 41 06 07 01 10 00 a1 00 00 03 10 00 00 00 10: 00 00 00 df 0c 00 00 c0 00 00 00 00 04 00 00 dc 20: 00 00 00 00 01 ec 00 00 00 00 00 00 82 16 09 40 30: 00 00 f8 de 60 00 00 00 00 00 00 00 0a 01 00 00 40: 82 16 09 40 00 00 00 00 00 00 00 00 00 00 00 00 50: 01 00 00 00 01 00 00 00 ce d6 23 00 00 00 00 00 60: 01 68 03 00 00 00 00 00 05 78 80 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 10 b4 01 00 20 85 00 00 80: 10 28 00 00 01 4d 00 00 48 00 01 11 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 09 00 14 01 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 --------------------------------------------------------------------- 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=0x0400, id=0x6388 Probing for Fintek Super I/O at 0x4e... Failed. Returned data: vid=0xffff, id=0xffff 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=0x8863, 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=0xffff, rev=0xf 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=0x8863 Probing for Nuvoton Super I/O (sid=0xfc) at 0x2e... Failed. Returned data: sid=0xff, id=0x8863, rev=0x00 Probing for Nuvoton Super I/O at 0x4e... Failed. Returned data: chip_id=0xffff Probing for Nuvoton Super I/O (sid=0xfc) at 0x4e... Failed. Returned data: sid=0xff, id=0xffff, 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... Found Winbond W83627EHF/EF/EHG/EG (id=0x88, rev=0x63) at 0x2e Register dump: idx 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f val 88 63 ff 00 04 00 00 ff 50 04 00 00 02 41 00 ff def 88 MM ff 00 MM 00 MM RR 50 04 00 RR 00 21 00 00 LDN 0x00 (Floppy) idx 30 60 61 70 74 f0 f1 f2 f4 f5 val 00 00 00 00 04 0e 00 ff 00 00 def 01 03 f0 06 02 8e 00 ff 00 00 LDN 0x01 (Parallel port) idx 30 60 61 70 74 f0 val 01 03 78 07 03 3b def 01 03 78 07 04 3f LDN 0x02 (COM1) idx 30 60 61 70 f0 val 01 03 f8 04 00 def 01 03 f8 04 00 LDN 0x03 (COM2) idx 30 60 61 70 f0 f1 val 00 02 f8 03 00 00 def 01 02 f8 03 00 00 LDN 0x05 (Keyboard) idx 30 60 61 62 63 70 72 f0 val 01 00 60 00 64 01 0c 82 def 01 00 60 00 64 01 0c 83 LDN 0x06 (Serial flash interface) idx 30 62 63 val 00 ff ff def 00 00 00 LDN 0x07 (GPIO 1, GPIO 6, game port, MIDI port) idx 30 60 61 62 63 70 f0 f1 f2 f3 f4 f5 f6 f7 val 00 02 01 03 30 00 ff ff ff ff ff ff ff 00 def 00 02 01 03 30 09 ff 00 00 00 ff 00 00 00 LDN 0x08 (WDTO#, PLED) idx 30 f5 f6 f7 val 00 ff 00 ff def 00 00 00 00 LDN 0x09 (GPIO 2, GPIO 3, GPIO 4, GPIO 5, SUSLED) idx 30 e0 e1 e2 e3 e4 e5 f0 f1 f2 f3 f4 f5 f6 f7 val 06 ff ff ff ff ff ff a8 bf 00 40 ff ff 00 00 def 00 ff 00 00 ff 00 00 ff 00 00 00 ff 00 00 00 LDN 0x0a (ACPI) idx 30 70 e0 e1 e2 e3 e4 e5 e6 e7 e8 f2 f3 f4 f6 f7 val 00 00 01 00 00 21 00 00 0c 00 09 7c 00 00 00 00 def 00 00 01 00 ff 08 00 RR 00 00 RR 7c 00 00 00 00 LDN 0x0b (Hardware monitor) idx 30 60 61 70 f0 f1 val 01 02 90 00 e9 12 def 00 00 00 00 c1 00 Hardware monitor (0x0295) 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=0xff/0x0f, rev=0xff 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 Server Engines Super I/O at 0x2e... Failed. Returned data: id=0xffff, rev=0xff From svn at flashrom.org Mon May 21 01:32:35 2012 From: svn at flashrom.org (repository service) Date: Mon, 21 May 2012 01:32:35 +0200 Subject: [flashrom] [commit] r1539 - trunk Message-ID: Author: stefanct Date: Mon May 21 01:32:33 2012 New Revision: 1539 URL: http://flashrom.org/trac/flashrom/changeset/1539 Log: Add support for PMC Pm39LV512. This flash is like PMC model Pm39LV010 but capacity is 64kB. Model ID was already defined. PREW works for me. Signed-off-by: Ky?sti M?lkki Acked-by: Paul Menzel Modified: trunk/flashchips.c Modified: trunk/flashchips.c ============================================================================== --- trunk/flashchips.c Wed May 16 02:15:53 2012 (r1538) +++ trunk/flashchips.c Mon May 21 01:32:33 2012 (r1539) @@ -5803,7 +5803,37 @@ .read = read_memmapped, .voltage = {2700, 3600}, }, - + + { + .vendor = "PMC", + .name = "Pm39LV512", + .bustype = BUS_PARALLEL, + .manufacture_id = PMC_ID_NOPREFIX, + .model_id = PMC_PM39LV512, + .total_size = 64, + .page_size = 4096, + .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, + .tested = TEST_OK_PREW, + .probe = probe_jedec, + .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 16} }, + .block_erase = erase_sector_jedec, + }, { + .eraseblocks = { {64 * 1024, 1} }, + .block_erase = erase_block_jedec, + }, { + .eraseblocks = { {64 * 1024, 1} }, + .block_erase = erase_chip_block_jedec, + } + }, + .write = write_jedec_1, + .read = read_memmapped, + .voltage = {2700, 3600}, + }, + { .vendor = "PMC", .name = "Pm49FL002", From stefan.tauner at student.tuwien.ac.at Mon May 21 01:36:38 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 21 May 2012 01:36:38 +0200 Subject: [flashrom] Add chip Pm39LV512 In-Reply-To: <1337511489.2284.362.camel@obelix> References: <1337454559.2284.58.camel@obelix> <1337457021.5152.4.camel@mattotaupa> <1337511489.2284.362.camel@obelix> Message-ID: <201205202336.q4KNacdK016117@mail2.student.tuwien.ac.at> On Sun, 20 May 2012 13:58:09 +0300 Ky?sti M?lkki wrote: > This flash is like PMC model Pm39LV010 but capacity is 64kB. > Model ID was already defined, PREW works for me. > > http://www.alldatasheet.com/datasheet-pdf/pdf/PMC/PM39LV512-70JC.html > > Signed-off-by: Ky?sti M?lkki > Acked-by: Paul Menzel thanks for the patch! applied with minor changes to the commit message in r1539. the link to the datasheet got kicked because i dont think it makes a lot of sense to link to sites that are easily replaceable with any other hit by your favourite search engine. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Mon May 21 01:42:38 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Mon, 21 May 2012 01:42:38 +0200 Subject: [flashrom] Asrock N61P-S: Testing reading In-Reply-To: <20120520082405.GA989@gauss> References: <20120520082405.GA989@gauss> Message-ID: <201205202342.q4KNgcvH018044@mail2.student.tuwien.ac.at> On Sun, 20 May 2012 10:24:05 +0200 Felix Janda wrote: > reading out the flash chip works. However I don't get the same result > each time. More precisely I get equal dumps when reading the chip > several times, but I get something different after reboot. The > differences appear however only in the region > 0x0006e000-0x00070000. The image from the vendor is also identical to > the dumps but in this region, where it contains only 0xff. hi! the firmware is free to use the flash chip as data storage for e.g. logs of the boot process (e.g. last selected boot device), and yours apparently stores them in the region you mentioned... if you try updating it, please let us know the result, thanks. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From kyosti.malkki at gmail.com Mon May 21 15:50:34 2012 From: kyosti.malkki at gmail.com (=?ISO-8859-1?Q?Ky=F6sti_M=E4lkki?=) Date: Mon, 21 May 2012 16:50:34 +0300 Subject: [flashrom] [PATCH] Add IT8212F as programmer Message-ID: <1337608234.2284.490.camel@obelix> This PCI PATA controller can use 3V parallel flash upto 128kB. My card was identified as: PCI 1283:8212, subsystem 1283:0001. and labelled as: Innovision Multimedia LTD. EIO ATA133 RAID (DM-8401 Ver A) This particular card did not require setting of any GPIO signals to enable flash writing. My card has Pm39LV512 in PLCC32 package without socket. Signed-off-by: Ky?sti M?lkki Index: flashrom-it8212f/Makefile =================================================================== --- flashrom-it8212f/Makefile (revision 1539) +++ flashrom-it8212f/Makefile (working copy) @@ -177,7 +177,12 @@ else override CONFIG_SATAMV = no endif +ifeq ($(CONFIG_IT8212), yes) +UNSUPPORTED_FEATURES += CONFIG_IT8212=yes +else +override CONFIG_IT8212 = no endif +endif ifeq ($(TARGET_OS), libpayload) CPPFLAGS += -DSTANDALONE @@ -344,6 +349,9 @@ # Enable Linux spidev interface by default. We disable it on non-Linux targets. CONFIG_LINUX_SPI ?= yes +# Always enable ITE IT8212F PATA controllers for now. +CONFIG_IT8212 ?= yes + # Disable wiki printing by default. It is only useful if you have wiki access. CONFIG_PRINT_WIKI ?= no @@ -503,6 +511,12 @@ PROGRAMMER_OBJS += linux_spi.o endif +ifeq ($(CONFIG_IT8212), yes) +FEATURE_CFLAGS += -D'CONFIG_IT8212=1' +PROGRAMMER_OBJS += it8212.o +NEED_PCI := yes +endif + ifeq ($(NEED_SERIAL), yes) LIB_OBJS += serial.o endif Index: flashrom-it8212f/print_wiki.c =================================================================== --- flashrom-it8212f/print_wiki.c (revision 1539) +++ flashrom-it8212f/print_wiki.c (working copy) @@ -338,6 +338,9 @@ #if CONFIG_SATAMV == 1 print_supported_pcidevs_wiki(satas_mv); #endif +#if CONFIG_IT8212 == 1 + print_supported_pcidevs_wiki(ata_it82); +#endif printf("\n|}\n"); } Index: flashrom-it8212f/it8212.c =================================================================== --- flashrom-it8212f/it8212.c (revision 0) +++ flashrom-it8212f/it8212.c (revision 0) @@ -0,0 +1,110 @@ +/* + * This file is part of the flashrom project. + * + * Copyright (C) 2011 Carl-Daniel Hailfinger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include "flash.h" +#include "programmer.h" + +static uint8_t *it8212_bar; +static uint8_t it8212_rom_enable = 0; + +#define PCI_VENDOR_ID_ITE 0x1283 + +const struct pcidev_status ata_it82[] = { + {PCI_VENDOR_ID_ITE, 0x8212, OK, "ITE", "8212F PATA RAID"}, + {}, +}; + +#define IT8212_MEMMAP_SIZE (128 * 1024) +#define IT8212_MEMMAP_MASK (IT8212_MEMMAP_SIZE - 1) + +static void it8212_chip_writeb(const struct flashctx *flash, uint8_t val, + chipaddr addr); +static uint8_t it8212_chip_readb(const struct flashctx *flash, + const chipaddr addr); +static const struct par_programmer par_programmer_it8212 = { + .chip_readb = it8212_chip_readb, + .chip_readw = fallback_chip_readw, + .chip_readl = fallback_chip_readl, + .chip_readn = fallback_chip_readn, + .chip_writeb = it8212_chip_writeb, + .chip_writew = fallback_chip_writew, + .chip_writel = fallback_chip_writel, + .chip_writen = fallback_chip_writen, +}; + +static int it8212_shutdown(void *data) +{ + if (! it8212_rom_enable) { + uintptr_t addr = pci_read_long(pcidev_dev, PCI_ROM_ADDRESS); + pci_write_long(pcidev_dev, PCI_ROM_ADDRESS, addr & ~0x01); + } + physunmap(it8212_bar, IT8212_MEMMAP_SIZE); + pci_cleanup(pacc); + release_io_perms(); + return 0; +} + +int it8212_init(void) +{ + uintptr_t addr; + + /* Needed only for PCI accesses on some platforms. + * FIXME: Refactor that into get_mem_perms/get_io_perms/get_pci_perms? + */ + get_io_perms(); + + /* No need to check for errors, pcidev_init() will not return in case + * of errors. + */ + addr = pcidev_init(PCI_ROM_ADDRESS, ata_it82); + + it8212_bar = physmap("IT8212F flash", addr, IT8212_MEMMAP_SIZE); + if (it8212_bar == ERROR_PTR) + goto error_out_unmap; + if (register_shutdown(it8212_shutdown, NULL)) + return 1; + + /* To restore ROM BAR enable once we are done. */ + it8212_rom_enable = addr & 0x01; + if (! it8212_rom_enable) + pci_write_long(pcidev_dev, PCI_ROM_ADDRESS, addr | 0x01); + + max_rom_decode.parallel = IT8212_MEMMAP_SIZE; + register_par_programmer(&par_programmer_it8212, BUS_PARALLEL); + return 0; + +error_out_unmap: + physunmap(it8212_bar, IT8212_MEMMAP_SIZE); + pci_cleanup(pacc); + release_io_perms(); + return 1; +} + +static void it8212_chip_writeb(const struct flashctx *flash, uint8_t val, + chipaddr addr) +{ + pci_mmio_writeb(val, it8212_bar + (addr & IT8212_MEMMAP_MASK)); +} + +static uint8_t it8212_chip_readb(const struct flashctx *flash, + const chipaddr addr) +{ + return pci_mmio_readb(it8212_bar + (addr & IT8212_MEMMAP_MASK)); +} Index: flashrom-it8212f/flashrom.c =================================================================== --- flashrom-it8212f/flashrom.c (revision 1539) +++ flashrom-it8212f/flashrom.c (working copy) @@ -261,6 +261,16 @@ }, #endif +#if CONFIG_IT8212 == 1 + { + .name = "it8212", + .init = it8212_init, + .map_flash_region = fallback_map, + .unmap_flash_region = fallback_unmap, + .delay = internal_delay, + }, +#endif + {}, /* This entry corresponds to PROGRAMMER_INVALID. */ }; Index: flashrom-it8212f/programmer.h =================================================================== --- flashrom-it8212f/programmer.h (revision 1539) +++ flashrom-it8212f/programmer.h (working copy) @@ -87,6 +87,9 @@ #if CONFIG_LINUX_SPI == 1 PROGRAMMER_LINUX_SPI, #endif +#if CONFIG_IT8212 == 1 + PROGRAMMER_IT8212, +#endif PROGRAMMER_INVALID /* This must always be the last entry. */ }; @@ -456,6 +459,12 @@ int linux_spi_init(void); #endif +/* it8212.c */ +#if CONFIG_IT8212 == 1 +int it8212_init(void); +extern const struct pcidev_status ata_it82[]; +#endif + /* dediprog.c */ #if CONFIG_DEDIPROG == 1 int dediprog_init(void); Index: flashrom-it8212f/print.c =================================================================== --- flashrom-it8212f/print.c (revision 1539) +++ flashrom-it8212f/print.c (working copy) @@ -538,6 +538,11 @@ programmer_table[PROGRAMMER_LINUX_SPI].name); msg_ginfo("Device files /dev/spidev*.*\n"); #endif +#if CONFIG_IT8212 == 1 + msg_ginfo("\nSupported devices for the %s programmer:\n", + programmer_table[PROGRAMMER_IT8212].name); + print_supported_pcidevs(ata_it82); +#endif } #if CONFIG_INTERNAL == 1 From kyosti.malkki at gmail.com Mon May 21 16:21:29 2012 From: kyosti.malkki at gmail.com (=?ISO-8859-1?Q?Ky=F6sti_M=E4lkki?=) Date: Mon, 21 May 2012 17:21:29 +0300 Subject: [flashrom] Success with Pm39LV512 and IT8212F Message-ID: <1337610089.2284.509.camel@obelix> Report of success with my recent patches. Thanks, Ky?sti /tmp # ./flashrom -V -p it8212 -r dump.bin flashrom v0.9.5.2-r1539 on Linux 2.6.39.4 (i686), 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 Command line (5 args): ./flashrom -V -p it8212 -r dump.bin Calibrating delay loop... OS timer resolution is 1 usecs, 1114M loops per second, 10 myus = 11 us, 100 myus = 100 us, 1000 myus = 1015 us, 10000 myus = 9950 us, 4 myus = 5 us, OK. Initializing it8212 programmer Found "ITE 8212F PATA RAID" (1283:8212, BDF 02:02.0). Requested BAR is ROM The following protocols are supported: Parallel. Probing for AMD Am29F010A/B, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29F002(N)BB, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29F002(N)BT, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29F016D, 2048 kB: Chip size 2048 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29F040B, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29F080B, 1024 kB: Chip size 1024 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29LV001BB, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29LV001BT, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29LV002BB, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29LV002BT, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29LV004BB, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29LV004BT, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29LV008BB, 1024 kB: Chip size 1024 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29LV008BT, 1024 kB: Chip size 1024 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29LV040B, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMD Am29LV081B, 1024 kB: Chip size 1024 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMIC A29002B, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMIC A29002T, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for AMIC A29040B, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Atmel AT29C512, 64 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for Atmel AT29C010A, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for Atmel AT29C020, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Atmel AT29C040A, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Atmel AT49BV512, 64 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for Atmel AT49F002(N), 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Atmel AT49F002(N)T, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Atmel AT49F020, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Atmel AT49F040, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Catalyst CAT28F512, 64 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for Bright BM29F040, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for EMST F49B002UA, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Eon EN29F010, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for Eon EN29F002(A)(N)B, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Eon EN29F002(A)(N)T, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Eon EN29LV640B, 8192 kB: Chip size 8192 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_en29lv640b: id1 0xbd00, id2 0x0000 Probing for Fujitsu MBM29F004BC, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Fujitsu MBM29F004TC, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Fujitsu MBM29F400BC, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_m29f400bt: id1 0xbd, id2 0x00 Probing for Fujitsu MBM29F400TC, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_m29f400bt: id1 0xbd, id2 0x00 Probing for Hyundai HY29F002T, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Hyundai HY29F002B, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Hyundai HY29F040A, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Intel 28F001BN/BX-B, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for Intel 28F001BN/BX-T, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for Intel 28F002BC/BL/BV/BX-T, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_82802ab: id1 0xbd, id2 0x00, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F008S3/S5/SC, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_82802ab: id1 0xbd, id2 0x00, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F004B5/BE/BV/BX-B, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_82802ab: id1 0xbd, id2 0x00, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F004B5/BE/BV/BX-T, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_82802ab: id1 0xbd, id2 0x00, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F400BV/BX/CE/CV-B, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_82802ab: id1 0xbd, id2 0x00, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Intel 28F400BV/BX/CE/CV-T, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_82802ab: id1 0xbd, id2 0x00, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX29F001B, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for Macronix MX29F001T, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for Macronix MX29F002(N)B, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Macronix MX29F002(N)T, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Macronix MX29F040, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Macronix MX29LV040, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for MoselVitelic V29C51000B, 64 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for MoselVitelic V29C51000T, 64 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for MoselVitelic V29C51400B, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for MoselVitelic V29C51400T, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for MoselVitelic V29LC51000, 64 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for MoselVitelic V29LC51001, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for MoselVitelic V29LC51002, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for PMC Pm29F002T, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0x9d, id2 0x1b Probing for PMC Pm29F002B, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0x9d, id2 0x1b Probing for PMC Pm39LV010, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for PMC Pm39LV020, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for PMC Pm39LV040, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for PMC Pm39LV512, 64 kB: probe_jedec_common: id1 0x9d, id2 0x1b Found PMC flash chip "Pm39LV512" (64 kB, Parallel) on it8212. Probing for Sharp LH28F008BJT-BTLZ1, 1024 kB: Chip size 1024 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_82802ab: id1 0xbd, id2 0x00, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST28SF040A, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_82802ab: id1 0xbd, id2 0x00, 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 0x1b Probing for SST SST29LE010, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for SST SST29EE020A, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for SST SST29LE020, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for SST SST39SF512, 64 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for SST SST39SF010A, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for SST SST39SF020A, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for SST SST39SF040, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for SST SST39VF512, 64 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for SST SST39VF010, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for SST SST39VF020, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for SST SST39VF040, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for SST SST39VF080, 1024 kB: Chip size 1024 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for ST M29F002B, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for ST M29F002T/NT, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for ST M29F040B, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for ST M29F400BB, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_m29f400bt: id1 0xbd, id2 0x00 Probing for ST M29F400BT, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_m29f400bt: id1 0xbd, id2 0x00 Probing for ST M29W010B, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for ST M29W040B, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for ST M29W512B, 64 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for SyncMOS/MoselVitelic {F,S,V}29C51001B, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for SyncMOS/MoselVitelic {F,S,V}29C51001T, 128 kB: probe_jedec_common: id1 0x9d, id2 0x1b Probing for SyncMOS/MoselVitelic {F,S,V}29C51002B, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for SyncMOS/MoselVitelic {F,S,V}29C51002T, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for SyncMOS/MoselVitelic {F,S,V}29C51004B, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for SyncMOS/MoselVitelic {F,S,V}29C51004T, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for SyncMOS/MoselVitelic {S,V}29C31004B, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for SyncMOS/MoselVitelic {S,V}29C31004T, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for TI TMS29F002RB, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for TI TMS29F002RT, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b 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 0x1b Probing for Winbond W29C020(C)/W29C022, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Winbond W29C040/P, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Winbond W39L040, 512 kB: Chip size 512 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Winbond W49F002U/N, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Probing for Winbond W49F020, 256 kB: Chip size 256 kB is bigger than supported size 128 kB of chipset/board/programmer for Parallel interface, probe/read/erase/write may fail. probe_jedec_common: id1 0x9d, id2 0x1b Found PMC flash chip "Pm39LV512" (64 kB, Parallel). Reading flash... done. /tmp # /tmp # ./flashrom -p it8212 -E flashrom v0.9.5.2-r1539 on Linux 2.6.39.4 (i686), 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... OK. Found "ITE 8212F PATA RAID" (1283:8212, BDF 02:02.0). Found PMC flash chip "Pm39LV512" (64 kB, Parallel) on it8212. Erasing and writing flash chip... Erase/write done. /tmp # ./flashrom -p it8212 -v dump.bin flashrom v0.9.5.2-r1539 on Linux 2.6.39.4 (i686), 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... OK. Found "ITE 8212F PATA RAID" (1283:8212, BDF 02:02.0). Found PMC flash chip "Pm39LV512" (64 kB, Parallel) on it8212. Reading old flash chip contents... done. Verifying flash... VERIFY FAILED at 0x00000000! Expected=0xbd, Read=0xff, failed byte count from 0x00000000-0x0000ffff: 0xf9da /tmp # ./flashrom -p it8212 -w dump.bin flashrom v0.9.5.2-r1539 on Linux 2.6.39.4 (i686), 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... OK. Found "ITE 8212F PATA RAID" (1283:8212, BDF 02:02.0). Found PMC flash chip "Pm39LV512" (64 kB, Parallel) on it8212. Reading old flash chip contents... done. Erasing and writing flash chip... Erase/write done. Verifying flash... VERIFIED. /tmp # ./flashrom -p it8212 -v dump.bin flashrom v0.9.5.2-r1539 on Linux 2.6.39.4 (i686), 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... OK. Found "ITE 8212F PATA RAID" (1283:8212, BDF 02:02.0). Found PMC flash chip "Pm39LV512" (64 kB, Parallel) on it8212. Reading old flash chip contents... done. Verifying flash... VERIFIED. From felix.janda at posteo.de Mon May 21 20:19:22 2012 From: felix.janda at posteo.de (Felix Janda) Date: Mon, 21 May 2012 20:19:22 +0200 Subject: [flashrom] Asrock N61P-S: Testing reading In-Reply-To: <201205202342.q4KNgcvH018044@mail2.student.tuwien.ac.at> References: <20120520082405.GA989@gauss> <201205202342.q4KNgcvH018044@mail2.student.tuwien.ac.at> Message-ID: <20120521181922.GA2511@gauss> On 05/21/12 at 01:42am, Stefan Tauner wrote: > the firmware is free to use the flash chip as data storage for e.g. > logs of the boot process (e.g. last selected boot device), and yours > apparently stores them in the region you mentioned... Thanks for this information. > if you try updating it, please let us know the result, thanks. I have successfully flashed the chip and verified the changed version number at boot. Felix From kyosti.malkki at gmail.com Tue May 22 10:09:00 2012 From: kyosti.malkki at gmail.com (=?ISO-8859-1?Q?Ky=F6sti_M=E4lkki?=) Date: Tue, 22 May 2012 11:09:00 +0300 Subject: [flashrom] [PATCH v2] Add IT8212F as programmer In-Reply-To: <1337608234.2284.490.camel@obelix> References: <1337608234.2284.490.camel@obelix> Message-ID: <1337674140.2284.561.camel@obelix> This PCI PATA controller can use 3V parallel flash upto 128kB. My card was identified as: PCI 1283:8212, subsystem 1283:0001. and labelled as: Innovision Multimedia LTD. EIO ATA133 RAID (DM-8401 Ver A) This particular card did not require setting of any GPIO signals to enable flash writing. My card has Pm39LV512 in PLCC32 package without socket. Signed-off-by: Ky?sti M?lkki Index: flashrom-it8212f/Makefile =================================================================== --- flashrom-it8212f/Makefile (revision 1539) +++ flashrom-it8212f/Makefile (working copy) @@ -177,7 +177,12 @@ else override CONFIG_SATAMV = no endif +ifeq ($(CONFIG_IT8212), yes) +UNSUPPORTED_FEATURES += CONFIG_IT8212=yes +else +override CONFIG_IT8212 = no endif +endif ifeq ($(TARGET_OS), libpayload) CPPFLAGS += -DSTANDALONE @@ -344,6 +349,9 @@ # Enable Linux spidev interface by default. We disable it on non-Linux targets. CONFIG_LINUX_SPI ?= yes +# Always enable ITE IT8212F PATA controllers for now. +CONFIG_IT8212 ?= yes + # Disable wiki printing by default. It is only useful if you have wiki access. CONFIG_PRINT_WIKI ?= no @@ -503,6 +511,12 @@ PROGRAMMER_OBJS += linux_spi.o endif +ifeq ($(CONFIG_IT8212), yes) +FEATURE_CFLAGS += -D'CONFIG_IT8212=1' +PROGRAMMER_OBJS += it8212.o +NEED_PCI := yes +endif + ifeq ($(NEED_SERIAL), yes) LIB_OBJS += serial.o endif Index: flashrom-it8212f/print_wiki.c =================================================================== --- flashrom-it8212f/print_wiki.c (revision 1539) +++ flashrom-it8212f/print_wiki.c (working copy) @@ -338,6 +338,9 @@ #if CONFIG_SATAMV == 1 print_supported_pcidevs_wiki(satas_mv); #endif +#if CONFIG_IT8212 == 1 + print_supported_pcidevs_wiki(ata_it82); +#endif printf("\n|}\n"); } Index: flashrom-it8212f/it8212.c =================================================================== --- flashrom-it8212f/it8212.c (revision 0) +++ flashrom-it8212f/it8212.c (revision 0) @@ -0,0 +1,111 @@ +/* + * This file is part of the flashrom project. + * + * Copyright (C) 2011 Carl-Daniel Hailfinger + * Copyright (C) 2012 Ky?sti M?lkki + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include "flash.h" +#include "programmer.h" + +static uint8_t *it8212_bar; +static uint8_t it8212_rom_enable = 0; + +#define PCI_VENDOR_ID_ITE 0x1283 + +const struct pcidev_status ata_it82[] = { + {PCI_VENDOR_ID_ITE, 0x8212, OK, "ITE", "8212F PATA RAID"}, + {}, +}; + +#define IT8212_MEMMAP_SIZE (128 * 1024) +#define IT8212_MEMMAP_MASK (IT8212_MEMMAP_SIZE - 1) + +static void it8212_chip_writeb(const struct flashctx *flash, uint8_t val, + chipaddr addr); +static uint8_t it8212_chip_readb(const struct flashctx *flash, + const chipaddr addr); +static const struct par_programmer par_programmer_it8212 = { + .chip_readb = it8212_chip_readb, + .chip_readw = fallback_chip_readw, + .chip_readl = fallback_chip_readl, + .chip_readn = fallback_chip_readn, + .chip_writeb = it8212_chip_writeb, + .chip_writew = fallback_chip_writew, + .chip_writel = fallback_chip_writel, + .chip_writen = fallback_chip_writen, +}; + +static int it8212_shutdown(void *data) +{ + if (! it8212_rom_enable) { + uintptr_t addr = pci_read_long(pcidev_dev, PCI_ROM_ADDRESS); + pci_write_long(pcidev_dev, PCI_ROM_ADDRESS, addr & ~0x01); + } + physunmap(it8212_bar, IT8212_MEMMAP_SIZE); + pci_cleanup(pacc); + release_io_perms(); + return 0; +} + +int it8212_init(void) +{ + uintptr_t addr; + + /* Needed only for PCI accesses on some platforms. + * FIXME: Refactor that into get_mem_perms/get_io_perms/get_pci_perms? + */ + get_io_perms(); + + /* No need to check for errors, pcidev_init() will not return in case + * of errors. + */ + addr = pcidev_init(PCI_ROM_ADDRESS, ata_it82); + + it8212_bar = physmap("IT8212F flash", addr, IT8212_MEMMAP_SIZE); + if (it8212_bar == ERROR_PTR) + goto error_out_unmap; + if (register_shutdown(it8212_shutdown, NULL)) + return 1; + + /* To restore ROM BAR enable once we are done. */ + it8212_rom_enable = addr & 0x01; + if (! it8212_rom_enable) + pci_write_long(pcidev_dev, PCI_ROM_ADDRESS, addr | 0x01); + + max_rom_decode.parallel = IT8212_MEMMAP_SIZE; + register_par_programmer(&par_programmer_it8212, BUS_PARALLEL); + return 0; + +error_out_unmap: + physunmap(it8212_bar, IT8212_MEMMAP_SIZE); + pci_cleanup(pacc); + release_io_perms(); + return 1; +} + +static void it8212_chip_writeb(const struct flashctx *flash, uint8_t val, + chipaddr addr) +{ + pci_mmio_writeb(val, it8212_bar + (addr & IT8212_MEMMAP_MASK)); +} + +static uint8_t it8212_chip_readb(const struct flashctx *flash, + const chipaddr addr) +{ + return pci_mmio_readb(it8212_bar + (addr & IT8212_MEMMAP_MASK)); +} Index: flashrom-it8212f/flashrom.8 =================================================================== --- flashrom-it8212f/flashrom.8 (revision 1539) +++ flashrom-it8212f/flashrom.8 (working copy) @@ -210,6 +210,8 @@ .sp .BR "* linux_spi" " (for SPI flash ROMs accessible via /dev/spidevX.Y on Linux)" .sp +.BR "* it8212" " (for flash ROMs on ITE IT8212F PATA/RAID controller)" +.sp Some programmers have optional or mandatory parameters which are described in detail in the .B PROGRAMMER SPECIFIC INFO @@ -509,7 +511,7 @@ .SS .BR "nic3com" , " nicrealtek" , " nicsmc1211" , " nicnatsemi" , " nicintel\ " , " nicintel_spi" , " gfxnvidia" , " ogp_spi" , " drkaiser" , " satasii\ -" , " satamv" ", and " atahpt " programmers +" , " satamv" ", " atahpt " and " it8212 " programmers These programmers have an option to specify the PCI address of the card your want to use, which must be specified if more than one card supported by the selected programmer is installed in your system. The syntax is @@ -713,7 +715,7 @@ .B atahpt needs PCI configuration space access and raw I/O port access. .sp -.BR gfxnvidia " and " drkaiser +.BR gfxnvidia ", " drkaiser " and " it8212 need PCI configuration space access and raw memory access. .sp .B rayer_spi Index: flashrom-it8212f/flashrom.c =================================================================== --- flashrom-it8212f/flashrom.c (revision 1539) +++ flashrom-it8212f/flashrom.c (working copy) @@ -261,6 +261,16 @@ }, #endif +#if CONFIG_IT8212 == 1 + { + .name = "it8212", + .init = it8212_init, + .map_flash_region = fallback_map, + .unmap_flash_region = fallback_unmap, + .delay = internal_delay, + }, +#endif + {}, /* This entry corresponds to PROGRAMMER_INVALID. */ }; Index: flashrom-it8212f/programmer.h =================================================================== --- flashrom-it8212f/programmer.h (revision 1539) +++ flashrom-it8212f/programmer.h (working copy) @@ -87,6 +87,9 @@ #if CONFIG_LINUX_SPI == 1 PROGRAMMER_LINUX_SPI, #endif +#if CONFIG_IT8212 == 1 + PROGRAMMER_IT8212, +#endif PROGRAMMER_INVALID /* This must always be the last entry. */ }; @@ -456,6 +459,12 @@ int linux_spi_init(void); #endif +/* it8212.c */ +#if CONFIG_IT8212 == 1 +int it8212_init(void); +extern const struct pcidev_status ata_it82[]; +#endif + /* dediprog.c */ #if CONFIG_DEDIPROG == 1 int dediprog_init(void); Index: flashrom-it8212f/print.c =================================================================== --- flashrom-it8212f/print.c (revision 1539) +++ flashrom-it8212f/print.c (working copy) @@ -538,6 +538,11 @@ programmer_table[PROGRAMMER_LINUX_SPI].name); msg_ginfo("Device files /dev/spidev*.*\n"); #endif +#if CONFIG_IT8212 == 1 + msg_ginfo("\nSupported devices for the %s programmer:\n", + programmer_table[PROGRAMMER_IT8212].name); + print_supported_pcidevs(ata_it82); +#endif } #if CONFIG_INTERNAL == 1 From stefan.tauner at student.tuwien.ac.at Tue May 22 23:07:30 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Tue, 22 May 2012 23:07:30 +0200 Subject: [flashrom] Asrock N61P-S: Testing reading In-Reply-To: <20120521181922.GA2511@gauss> References: <20120520082405.GA989@gauss> <201205202342.q4KNgcvH018044@mail2.student.tuwien.ac.at> <20120521181922.GA2511@gauss> Message-ID: <201205222107.q4ML7U5D001233@mail2.student.tuwien.ac.at> On Mon, 21 May 2012 20:19:22 +0200 Felix Janda wrote: > On 05/21/12 at 01:42am, Stefan Tauner wrote: > > the firmware is free to use the flash chip as data storage for e.g. > > logs of the boot process (e.g. last selected boot device), and yours > > apparently stores them in the region you mentioned... > > Thanks for this information. > > > if you try updating it, please let us know the result, thanks. > > I have successfully flashed the chip and verified the changed version > number at boot. great, thanks! I have 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 fletcher at gmx.de Tue May 22 20:12:18 2012 From: fletcher at gmx.de (fletcher) Date: Tue, 22 May 2012 20:12:18 +0200 Subject: [flashrom] ASUS M2N-MX: flashrom -V Message-ID: <4FBBD702.1000501@gmx.de> Hi folks, that's the output of flashrom -V on my system Bios version is 0112 Reading and verifying works fine, writing/erasing doesn't. cheers, Felix Blendinger flashrom v0.9.5.2-r1515 on Linux 3.2.0-2-686-pae (i686), built with libpci 3.1.9, 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 2 usecs, 855M loops per second, 10 myus = 12 us, 100 myus = 99 us, 1000 myus = 999 us, 10000 myus = 14186 us, 8 myus = 9 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "ASUSTeK Computer INC." DMI string system-product-name: "M2N-MX" DMI string system-version: "System Version" DMI string baseboard-manufacturer: "ASUSTeK Computer INC." DMI string baseboard-product-name: "M2N-MX" 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 MCP61" with PCI ID 10de:03e0. Enabling flash write... 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 0x40000000 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 with your board name: flashrom -V as the subject to help us finish support for your chipset. Thanks. OK. Super I/O ID 0x8712 is not on the list of flash capable controllers. The following protocols are supported: LPC. Probing for AMIC A49LF040A, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x58, id2 0xee, 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 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 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 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 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 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 0xbf, id2 0x50 Found SST flash chip "SST49LF040B" (512 kB, LPC). No operations were specified. Restoring PCI config space for 00:01:0 reg 0x6d Restoring PCI config space for 00:01:0 reg 0x90 Restoring PCI config space for 00:01:0 reg 0x8c Restoring PCI config space for 00:01:0 reg 0x88 root at fbock:/usr/local/src/flashrom-0.9.5.2# ./flashrom flashrom v0.9.5.2-r1515 on Linux 3.2.0-2-686-pae (i686), built with libpci 3.1.9, GCC 4.6.3, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OK. Found chipset "NVIDIA MCP61". Enabling flash write... This chipset is not really supported yet. Guesswork... 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. Found SST flash chip "SST49LF040B" (512 kB, LPC) at physical address 0xfff80000. No operations were specified. root at fbock:/usr/local/src/flashrom-0.9.5.2# ./flashrom -V flashrom v0.9.5.2-r1515 on Linux 3.2.0-2-686-pae (i686), built with libpci 3.1.9, 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 2 usecs, 786M loops per second, 10 myus = 11 us, 100 myus = 91 us, 1000 myus = 918 us, 10000 myus = 16481 us, 8 myus = 9 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "ASUSTeK Computer INC." DMI string system-product-name: "M2N-MX" DMI string system-version: "System Version" DMI string baseboard-manufacturer: "ASUSTeK Computer INC." DMI string baseboard-product-name: "M2N-MX" 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 MCP61" with PCI ID 10de:03e0. Enabling flash write... 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 0x40000000 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 with your board name: flashrom -V as the subject to help us finish support for your chipset. Thanks. OK. Super I/O ID 0x8712 is not on the list of flash capable controllers. The following protocols are supported: LPC. Probing for AMIC A49LF040A, 512 kB: probe_jedec_common: id1 0xbf, id2 0x50 Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x58, id2 0xee, 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 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 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 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 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 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 0xbf, id2 0x50 Found SST flash chip "SST49LF040B" (512 kB, LPC). No operations were specified. Restoring PCI config space for 00:01:0 reg 0x6d Restoring PCI config space for 00:01:0 reg 0x90 Restoring PCI config space for 00:01:0 reg 0x8c Restoring PCI config space for 00:01:0 reg 0x88 From MichaelSchollerer at kuka-roboter.de Tue May 22 10:15:04 2012 From: MichaelSchollerer at kuka-roboter.de (Schollerer Michael) Date: Tue, 22 May 2012 08:15:04 +0000 Subject: [flashrom] Intel Q67 read failed Message-ID: <251874589268C34589DB841E360D01C606F5F667@deau1svmailmbx1.roboter.kuka.de> Hi, this is a verbose output of an unsuccessful read: flashrom v0.9.5.2-r1515 on Linux 2.6.35-22-generic (i686), built with libpci 3.1.7, GCC 4.4.5, little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 1447M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 1001 us, 10000 myus = 10007 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "FUJITSU" DMI string system-product-name: "D3076-K1" DMI string system-version: " " DMI string baseboard-manufacturer: "FUJITSU" DMI string baseboard-product-name: "D3076-K1" DMI string baseboard-version: "S26361-D3076-K1 " DMI string chassis-type: "" DMI chassis-type is not specific enough. 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 = 0xc05: 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: 0x00003000 (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: 0xf90000 (SSFC) SSFC: SCGO=0, ACS=0, SPOP=0, COP=0, DBC=0, 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 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 0xb9, id2 0xd1, id1 is normal flash content, id2 is normal flash content 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 Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0xb9, id2 0xd1, id1 is normal flash content, id2 is normal flash content 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 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 0xb9, id2 0xd1, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0xb9, id2 0xd1, 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 0xcc, id2 0xb7, 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 0xb9, id2 0xd1, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0xb9, id2 0xd1, 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 0xcc, id2 0xb7, 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 0xb9, id2 0xd1, 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 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 0xb9, id2 0xd1, 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). 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=1 Running OPCODE 0x03 failed at address 0x003000 (payload length was 64). FAILED. Restoring MMIO space at 0xb780f8a0 Restoring PCI config space for 00:1f:0 reg 0xdc It would be great to get it working, because I really need a bios update! Thanks for your support. -------------- next part -------------- An HTML attachment was scrubbed... URL: From rrblum at gmail.com Thu May 24 22:02:47 2012 From: rrblum at gmail.com (Richard R. Blum) Date: Thu, 24 May 2012 16:02:47 -0400 Subject: [flashrom] Marvell 9120 SATA Controller/Macronix MX25L4005 EEPROM on ASUS P7p55D-E LX Message-ID: <4FBE93E7.6223.2722CC@rrblum.gmail.com> Dear Flashrom Support: I recently bricked the Marvell 9120 SATA Controller on an ASUS P7P55D-E LX mainboard. I have read that I may be able to recover this controller by flashing the external Macronix MX25L4005 EEPROM on which the Marvell 9120 firmware is stored using flashrom. When I ran flashrom on the ASUS P7P55D-E LX mainboard, flashrom returned the warnings associated with laptops, so I didn't run flashrom further. It appears that flashrom fully supports the Macronix MX25L4005 EEPROM and I have a copy of an image of the original firmware. Also, it is my understanding that the ASUS P7P55D-E LX southbridge is an Intel ICH10R. Is it possible to flash the Macronix MX25L4005 EEPROM without removing the chip? If so, please provide recommendations and instructions. If not, I read about a flashrom user who flashed a Macronix MX25L4005 to restore a laptop using a buspirate and disconnecting the VCC pin. Thanks for your help. Richard Blum From newforest333 at hotmail.ca Fri May 25 04:04:50 2012 From: newforest333 at hotmail.ca (Bicks Factory) Date: Thu, 24 May 2012 22:04:50 -0400 Subject: [flashrom] external programmer Message-ID: Trying to use an external programmer, specifically the TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA). Running from a live cd of parted magic. Using flashrom v0.9.5.2-r1515. Run command: flashrom -p ft2232_spi:type=tumpa get back: unknown programmer ft2232_spi:type=tumpa. Motherboard is a MSI G41M-F. Flashrom can see the flash chip on the board. Intel ich7 Not really used to using command prompt or linux. I'm assuming I'm missing some usb drivers. Any help would be greatly appreciated. -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan.tauner at student.tuwien.ac.at Fri May 25 08:56:01 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Fri, 25 May 2012 08:56:01 +0200 Subject: [flashrom] external programmer In-Reply-To: References: Message-ID: <201205250656.q4P6u1BI015817@mail2.student.tuwien.ac.at> On Thu, 24 May 2012 22:04:50 -0400 Bicks Factory wrote: > > > Trying to use an external programmer, specifically the > TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA). > Running from a live cd of parted magic. Using flashrom v0.9.5.2-r1515. > Run command: flashrom -p ft2232_spi:type=tumpa > get back: unknown programmer ft2232_spi:type=tumpa. > Motherboard is a MSI G41M-F. > Flashrom can see the flash chip on the board. Intel ich7 > Not really used to using command prompt or linux. > I'm assuming I'm missing some usb drivers. > > > Any help would be greatly appreciated. hello! that's not your fault (and admittedly the error message could be a bit better). the problem seems to be that flashrom was compiled without support for the ft2232_spi programmer in parted magic to safe space. so you need to get another live cd or build flashrom yourself (not really recommended when you dont know linux and the command line :) i am not aware of any live cd that ships a full build of flashrom (i was not aware yet, that they actually strip them down. it is not the default to do so, so they did it on consciously). the livecds of the bigger distributions such as ubuntu should be able to install packages after boot, which is necessary because flashrom is not added to the cds themselves and they should be the complete version. this requires either internet access after boot or some manual preparation though... hth -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From iociatos at gmail.com Fri May 25 20:26:47 2012 From: iociatos at gmail.com (=?ISO-8859-1?Q?Dar=EDo_Garc=EDa_Martos?=) Date: Fri, 25 May 2012 20:26:47 +0200 Subject: [flashrom] Gigabyte 8iPE1000 rev 1.x Message-ID: <4FBFCEE7.4000807@gmail.com> Dear developers, I have this motherboard: GA-8IPE1000 (rev. 1.x) with version FB of the BIOS, and tried to upgrade BIOS firmware with your software, and here is the results: usuario at pentium4ht:~/temporal$ sudo /usr/sbin/flashrom -w 8ipe1000.f12 flashrom v0.9.5.2-r1517 on Linux 3.2.0-24-generic-pae (i686), 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... OK. Found chipset "Intel ICH5/ICH5R". Enabling flash write... OK. Found SST flash chip "SST49LF002A/B" (256 kB, FWH) at physical address 0xfffc0000. 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=0x23, failed byte count from 0x00000000-0x00000fff: 0xff0 ERASE FAILED! Reading current flash chip contents... done. ERASE FAILED at 0x00000000! Expected=0xff, Read=0x23, failed byte count from 0x00000000-0x00003fff: 0x3fb9 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. usuario at pentium4ht:~/temporal$ I attached the output of lshw. Thanks a lot. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- pentium4ht descripci?n: Equipo de escritorio producto: PROD00000000 fabricante: OEM00000 anchura: 32 bits capacidades: smbios-2.3 dmi-2.3 smp-1.4 smp configuraci?n: boot=normal chassis=desktop cpus=1 *-core descripci?n: Placa base producto: 8IPE1000 fabricante: Gigabyte Technology Co., Ltd. id f?sico: 0 versi?n: 1.x *-firmware descripci?n: BIOS fabricante: Award Software International, Inc. id f?sico: 0 versi?n: FB date: 08/17/2005 tama?o: 128KiB capacidad: 192KiB capacidades: pci pnp apm upgrade shadowing cdboot bootselect socketedrom edd int13floppy360 int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer int10video acpi usb agp ls120boot zipboot biosbootspecification *-cpu:0 descripci?n: CPU producto: Intel(R) Pentium(R) 4 CPU 2.80GHz fabricante: Intel Corp. id f?sico: 4 informaci?n del bus: cpu at 0 versi?n: 15.2.9 ranura: Socket 478 tama?o: 2800MHz capacidad: 3600MHz anchura: 32 bits reloj: 200MHz capacidades: boot fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pebs bts cid xtpr configuraci?n: id=1 *-cache:0 descripci?n: L1 cach? id f?sico: b ranura: Internal Cache tama?o: 8KiB capacidad: 8KiB capacidades: synchronous internal write-back *-cache:1 descripci?n: L2 cach? id f?sico: c ranura: External Cache tama?o: 512KiB capacidad: 1MiB capacidades: synchronous internal write-back *-logicalcpu:0 descripci?n: CPU l?gica id f?sico: 1.1 anchura: 32 bits capacidades: logical *-logicalcpu:1 descripci?n: CPU l?gica id f?sico: 1.2 anchura: 32 bits capacidades: logical *-cpu:1 descripci?n: CPU fabricante: Intel id f?sico: 5 informaci?n del bus: cpu at 1 versi?n: 15.2.9 ranura: Socket 478 tama?o: 2800MHz capacidad: 3600MHz reloj: 200MHz capacidades: ht configuraci?n: id=1 *-logicalcpu:0 descripci?n: CPU l?gica id f?sico: 1.1 capacidades: logical *-logicalcpu:1 descripci?n: CPU l?gica id f?sico: 1.2 capacidades: logical *-cache:0 descripci?n: Cach? L1 id f?sico: 0 tama?o: 8KiB *-cache:1 descripci?n: Cach? L2 id f?sico: 1 tama?o: 512KiB *-memory descripci?n: Memoria de sistema id f?sico: 1e ranura: Placa de sistema o placa base tama?o: 2GiB *-bank:0 descripci?n: DIMMProject-Id-Version: lshwReport-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2009-10-08 14:02+0200PO-Revision-Date: 2012-03-14 06:38+0000Last-Translator: Paco Molinero Language-Team: Spanish MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2012-04-18 06:53+0000X-Generator: Launchpad (build 15099) 400 MHz (2,5 ns) producto: None fabricante: None id f?sico: 0 serie: None ranura: A0 tama?o: 1GiB anchura: 64 bits reloj: 400MHz (2.5ns) *-bank:1 descripci?n: DIMMProject-Id-Version: lshwReport-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2009-10-08 14:02+0200PO-Revision-Date: 2012-03-14 06:38+0000Last-Translator: Paco Molinero Language-Team: Spanish MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2012-04-18 06:53+0000X-Generator: Launchpad (build 15099) [vac?o] producto: None fabricante: None id f?sico: 1 serie: None ranura: A1 *-bank:2 descripci?n: DIMMProject-Id-Version: lshwReport-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2009-10-08 14:02+0200PO-Revision-Date: 2012-03-14 06:38+0000Last-Translator: Paco Molinero Language-Team: Spanish MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2012-04-18 06:53+0000X-Generator: Launchpad (build 15099) 400 MHz (2,5 ns) producto: None fabricante: None id f?sico: 2 serie: None ranura: A2 tama?o: 1GiB anchura: 64 bits reloj: 400MHz (2.5ns) *-bank:3 descripci?n: DIMMProject-Id-Version: lshwReport-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2009-10-08 14:02+0200PO-Revision-Date: 2012-03-14 06:38+0000Last-Translator: Paco Molinero Language-Team: Spanish MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2012-04-18 06:53+0000X-Generator: Launchpad (build 15099) [vac?o] producto: None fabricante: None id f?sico: 3 serie: None ranura: A3 *-pci descripci?n: Host bridge producto: 82865G/PE/P DRAM Controller/Host-Hub Interface fabricante: Intel Corporation id f?sico: 100 informaci?n del bus: pci at 0000:00:00.0 versi?n: 02 anchura: 32 bits reloj: 33MHz configuraci?n: driver=agpgart-intel recursos: irq:0 memoria:f0000000-f7ffffff *-pci:0 descripci?n: PCI bridge producto: 82865G/PE/P AGP Bridge fabricante: Intel Corporation id f?sico: 1 informaci?n del bus: pci at 0000:00:01.0 versi?n: 02 anchura: 32 bits reloj: 66MHz capacidades: pci normal_decode bus_master recursos: memoria:f8000000-faffffff memoria:e0000000-efffffff *-display descripci?n: VGA compatible controller producto: NV44A [GeForce 6200] fabricante: NVIDIA Corporation id f?sico: 0 informaci?n del bus: pci at 0000:01:00.0 versi?n: a1 anchura: 32 bits reloj: 66MHz capacidades: pm agp agp-3.0 vga_controller bus_master cap_list rom configuraci?n: driver=nvidia latency=248 maxlatency=1 mingnt=5 recursos: irq:16 memoria:f8000000-f8ffffff memoria:e0000000-efffffff memoria:f9000000-f9ffffff memoria:fa000000-fa01ffff *-generic NO RECLAMADO descripci?n: System peripheral producto: 82865G/PE/P Processor to I/O Memory Interface fabricante: Intel Corporation id f?sico: 6 informaci?n del bus: pci at 0000:00:06.0 versi?n: 02 anchura: 32 bits reloj: 33MHz configuraci?n: latency=0 recursos: memoria:fecf0000-fecf0fff *-usb:0 descripci?n: USB controller producto: 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 fabricante: Intel Corporation id f?sico: 1d informaci?n del bus: pci at 0000:00:1d.0 versi?n: 02 anchura: 32 bits reloj: 33MHz capacidades: uhci bus_master configuraci?n: driver=uhci_hcd latency=0 recursos: irq:16 ioport:ac00(size=32) *-usb:1 descripci?n: USB controller producto: 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 fabricante: Intel Corporation id f?sico: 1d.1 informaci?n del bus: pci at 0000:00:1d.1 versi?n: 02 anchura: 32 bits reloj: 33MHz capacidades: uhci bus_master configuraci?n: driver=uhci_hcd latency=0 recursos: irq:19 ioport:a000(size=32) *-usb:2 descripci?n: USB controller producto: 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 fabricante: Intel Corporation id f?sico: 1d.2 informaci?n del bus: pci at 0000:00:1d.2 versi?n: 02 anchura: 32 bits reloj: 33MHz capacidades: uhci bus_master configuraci?n: driver=uhci_hcd latency=0 recursos: irq:18 ioport:a400(size=32) *-usb:3 descripci?n: USB controller producto: 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 fabricante: Intel Corporation id f?sico: 1d.3 informaci?n del bus: pci at 0000:00:1d.3 versi?n: 02 anchura: 32 bits reloj: 33MHz capacidades: uhci bus_master configuraci?n: driver=uhci_hcd latency=0 recursos: irq:16 ioport:a800(size=32) *-usb:4 descripci?n: USB controller producto: 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller fabricante: Intel Corporation id f?sico: 1d.7 informaci?n del bus: pci at 0000:00:1d.7 versi?n: 02 anchura: 32 bits reloj: 33MHz capacidades: pm ehci bus_master cap_list configuraci?n: driver=ehci_hcd latency=0 recursos: irq:23 memoria:fb100000-fb1003ff *-pci:1 descripci?n: PCI bridge producto: 82801 PCI Bridge fabricante: Intel Corporation id f?sico: 1e informaci?n del bus: pci at 0000:00:1e.0 versi?n: c2 anchura: 32 bits reloj: 33MHz capacidades: pci normal_decode bus_master recursos: ioport:9000(size=4096) memoria:fb000000-fb0fffff *-network descripci?n: Ethernet interface producto: RTL-8139/8139C/8139C+ fabricante: Realtek Semiconductor Co., Ltd. id f?sico: 3 informaci?n del bus: pci at 0000:02:03.0 nombre l?gico: eth0 versi?n: 10 serie: 00:e0:7d:ba:8a:60 tama?o: 100Mbit/s capacidad: 100Mbit/s anchura: 32 bits reloj: 33MHz capacidades: pm bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation configuraci?n: autonegotiation=on broadcast=yes driver=8139too driverversion=0.9.28 duplex=full ip=192.168.8.132 latency=64 link=yes maxlatency=64 mingnt=32 multicast=yes port=MII speed=100Mbit/s recursos: irq:16 ioport:9000(size=256) memoria:fb000000-fb0000ff *-isa descripci?n: ISA bridge producto: 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge fabricante: Intel Corporation id f?sico: 1f informaci?n del bus: pci at 0000:00:1f.0 versi?n: 02 anchura: 32 bits reloj: 33MHz capacidades: isa bus_master configuraci?n: latency=0 *-ide descripci?n: IDE interface producto: 82801EB/ER (ICH5/ICH5R) IDE Controller fabricante: Intel Corporation id f?sico: 1f.1 informaci?n del bus: pci at 0000:00:1f.1 nombre l?gico: scsi0 versi?n: 02 anchura: 32 bits reloj: 33MHz capacidades: ide bus_master emulated configuraci?n: driver=ata_piix latency=0 recursos: irq:18 ioport:1f0(size=8) ioport:3f6 ioport:170(size=8) ioport:376 ioport:f000(size=16) memoria:80000000-800003ff *-cdrom descripci?n: DVD-RAM writer producto: DVDRAM GSA-4163B fabricante: HL-DT-ST id f?sico: 0.0.0 informaci?n del bus: scsi at 0:0.0.0 nombre l?gico: /dev/cdrom nombre l?gico: /dev/cdrw nombre l?gico: /dev/dvd nombre l?gico: /dev/dvdrw nombre l?gico: /dev/sr0 versi?n: A104 capacidades: removable audio cd-r cd-rw dvd dvd-r dvd-ram configuraci?n: ansiversion=5 status=nodisc *-serial NO RECLAMADO descripci?n: SMBus producto: 82801EB/ER (ICH5/ICH5R) SMBus Controller fabricante: Intel Corporation id f?sico: 1f.3 informaci?n del bus: pci at 0000:00:1f.3 versi?n: 02 anchura: 32 bits reloj: 33MHz configuraci?n: latency=0 recursos: ioport:1400(size=32) *-multimedia descripci?n: Multimedia audio controller producto: 82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller fabricante: Intel Corporation id f?sico: 1f.5 informaci?n del bus: pci at 0000:00:1f.5 versi?n: 02 anchura: 32 bits reloj: 33MHz capacidades: pm bus_master cap_list configuraci?n: driver=snd_intel8x0 latency=0 recursos: irq:17 ioport:b400(size=256) ioport:b800(size=64) memoria:fb101000-fb1011ff memoria:fb102000-fb1020ff *-scsi id f?sico: 1 informaci?n del bus: usb at 1:5 nombre l?gico: scsi2 capacidades: emulated scsi-host configuraci?n: driver=usb-storage *-disk descripci?n: SCSI Disk producto: 622AS External fabricante: WD id f?sico: 0.0.0 informaci?n del bus: scsi at 2:0.0.0 nombre l?gico: /dev/sda versi?n: 1.75 serie: 5NF1JCM0 tama?o: 279GiB (300GB) capacidades: partitioned partitioned:dos configuraci?n: ansiversion=4 signature=37ac37ab *-volume:0 descripci?n: Windows NTFS volumen id f?sico: 1 informaci?n del bus: scsi at 2:0.0.0,1 nombre l?gico: /dev/sda1 nombre l?gico: /windows versi?n: 3.1 serie: 96ad6201-7a2f-3a42-9657-91ad4ea8d472 tama?o: 25GiB capacidad: 25GiB capacidades: primary ntfs initialized configuraci?n: clustersize=4096 created=2010-03-25 11:43:42 filesystem=ntfs label=WindowsXP mount.fstype=fuseblk mount.options=rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096 state=mounted *-volume:1 descripci?n: partici?n EXT4 fabricante: Linux id f?sico: 2 informaci?n del bus: scsi at 2:0.0.0,2 nombre l?gico: /dev/sda2 nombre l?gico: / versi?n: 1.0 serie: a79b2fab-ea27-4a7a-84ab-16b570ba89b3 tama?o: 20GiB capacidad: 20GiB capacidades: primary bootable journaled extended_attributes large_files huge_files dir_nlink recover extents ext4 ext2 initialized configuraci?n: created=2012-05-01 12:22:45 filesystem=ext4 lastmountpoint=/ modified=2012-05-01 12:50:12 mount.fstype=ext4 mount.options=rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered mounted=2012-05-25 17:00:06 state=mounted *-volume:2 descripci?n: partici?n EXT4 fabricante: Linux id f?sico: 3 informaci?n del bus: scsi at 2:0.0.0,3 nombre l?gico: /dev/sda3 nombre l?gico: /home versi?n: 1.0 serie: f62bd051-991b-4e71-bde7-d1dfa438d79a tama?o: 230GiB capacidad: 230GiB capacidades: primary journaled extended_attributes large_files huge_files dir_nlink recover extents ext4 ext2 initialized configuraci?n: created=2010-03-22 13:53:43 filesystem=ext4 label=Usuarios lastmountpoint=/home modified=2012-05-25 17:00:06 mount.fstype=ext4 mount.options=rw,relatime,user_xattr,acl,barrier=1,data=ordered mounted=2012-05-25 17:00:06 state=mounted *-volume:3 descripci?n: Linux swap volumen id f?sico: 4 informaci?n del bus: scsi at 2:0.0.0,4 nombre l?gico: /dev/sda4 versi?n: 1 serie: 38e4b0e4-6908-4a89-ac45-00ccc1db586e tama?o: 4063MiB capacidad: 4063MiB capacidades: primary nofs swap initialized configuraci?n: filesystem=swap pagesize=4096 *-network descripci?n: Interfaz inal?mbrica id f?sico: 1 informaci?n del bus: usb at 1:6.2 nombre l?gico: wlan0 serie: 00:13:f7:e8:03:ac capacidades: ethernet physical wireless configuraci?n: broadcast=yes driver=zd1211rw driverversion=3.2.0-24-generic-pae firmware=4725 ip=192.168.8.131 link=yes multicast=yes wireless=IEEE 802.11bg From stefan.tauner at student.tuwien.ac.at Fri May 25 21:23:18 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Fri, 25 May 2012 21:23:18 +0200 Subject: [flashrom] Marvell 9120 SATA Controller/Macronix MX25L4005 EEPROM on ASUS P7p55D-E LX In-Reply-To: <4FBE93E7.6223.2722CC@rrblum.gmail.com> References: <4FBE93E7.6223.2722CC@rrblum.gmail.com> Message-ID: <201205251923.q4PJNI5B007689@mail2.student.tuwien.ac.at> On Thu, 24 May 2012 16:02:47 -0400 "Richard R. Blum" wrote: > Dear Flashrom Support: > > I recently bricked the Marvell 9120 SATA Controller on an ASUS P7P55D-E LX mainboard. I > have read that I may be able to recover this controller by flashing the external Macronix > MX25L4005 EEPROM on which the Marvell 9120 firmware is stored using flashrom. > > When I ran flashrom on the ASUS P7P55D-E LX mainboard, flashrom returned the warnings > associated with laptops, so I didn't run flashrom further. It appears that flashrom fully supports > the Macronix MX25L4005 EEPROM and I have a copy of an image of the original firmware. Also, > it is my understanding that the ASUS P7P55D-E LX southbridge is an Intel ICH10R. > > Is it possible to flash the Macronix MX25L4005 EEPROM without removing the chip? If so, > please provide recommendations and instructions. If not, I read about a flashrom user who > flashed a Macronix MX25L4005 to restore a laptop using a buspirate and disconnecting the VCC > pin. hi you seem to be a little bit confused :) the macronix chip you see is most probably the one where your mainboard has stored its firmware/bios. it has nothing to do with the marvell controller's flash. atm there is only support for marvell's 88SX6041 and 88SX6042 in flashrom (see satamv programmer). it is possible that we could add support for your controller too, but not easily without a detailed datasheet. and it would take some time too. it might be easier to get an external programmer and attach it to the flash directly. can you take a look at the sata controller and search for the flash chip? this might help you locating it: http://flashrom.org/Technology -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Fri May 25 21:26:18 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Fri, 25 May 2012 21:26:18 +0200 Subject: [flashrom] Marvell 9120 SATA Controller/Macronix MX25L4005 EEPROM on ASUS P7p55D-E LX In-Reply-To: <4FBE93E7.6223.2722CC@rrblum.gmail.com> References: <4FBE93E7.6223.2722CC@rrblum.gmail.com> Message-ID: <201205251926.q4PJQIOx009670@mail2.student.tuwien.ac.at> On Thu, 24 May 2012 16:02:47 -0400 "Richard R. Blum" wrote: > Dear Flashrom Support: > > I recently bricked the Marvell 9120 SATA Controller on an ASUS P7P55D-E LX mainboard. oh. onboard sata chip. obviously i was the one confused, sorry. how did you brick it? if the firmware is stored in the normal flash as flashrom sees it (which is likely), flashing the normal mainboard updates should fix it. what about the flashing tools from asus... did you try recovering with them? -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Fri May 25 21:27:55 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Fri, 25 May 2012 21:27:55 +0200 Subject: [flashrom] Gigabyte 8iPE1000 rev 1.x In-Reply-To: <4FBFCEE7.4000807@gmail.com> References: <4FBFCEE7.4000807@gmail.com> Message-ID: <201205251927.q4PJRtwv010647@mail2.student.tuwien.ac.at> On Fri, 25 May 2012 20:26:47 +0200 Dar?o Garc?a Martos wrote: > Dear developers, > > I have this motherboard: GA-8IPE1000 (rev. 1.x) > > with version FB of the BIOS, and tried to upgrade BIOS firmware with > your software, and here is the results: > hi please send the output of flashrom -V and lspci -nnxxxvv -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From stefan.tauner at student.tuwien.ac.at Fri May 25 21:29:41 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Fri, 25 May 2012 21:29:41 +0200 Subject: [flashrom] Intel Q67 read failed In-Reply-To: <251874589268C34589DB841E360D01C606F5F667@deau1svmailmbx1.roboter.kuka.de> References: <251874589268C34589DB841E360D01C606F5F667@deau1svmailmbx1.roboter.kuka.de> Message-ID: <201205251929.q4PJTfhD011882@mail2.student.tuwien.ac.at> On Tue, 22 May 2012 08:15:04 +0000 Schollerer Michael wrote: > It would be great to get it working, because I really need a bios update! Thanks for your support. hello michael, locked down intel-based boards wont be supported in the foreseeable future, sorry. please use the vendor tool if possible. -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From iociatos at gmail.com Fri May 25 21:36:47 2012 From: iociatos at gmail.com (=?UTF-8?B?RGFyw61vIEdhcmPDrWEgTWFydG9z?=) Date: Fri, 25 May 2012 21:36:47 +0200 Subject: [flashrom] Gigabyte 8iPE1000 rev 1.x In-Reply-To: <201205251927.q4PJRtwv010647@mail2.student.tuwien.ac.at> References: <4FBFCEE7.4000807@gmail.com> <201205251927.q4PJRtwv010647@mail2.student.tuwien.ac.at> Message-ID: <4FBFDF4F.5000105@gmail.com> El 25/05/12 21:27, Stefan Tauner escribi?: > hi please send the output of flashrom -V and lspci -nnxxxvv Thanks a lot Stefan, here it is. P.D. Faster than the HP service!! :-* -------------- next part -------------- flashrom v0.9.5.2-r1517 on Linux 3.2.0-24-generic-pae (i686), 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, 1706M loops per second, 10 myus = 25 us, 100 myus = 91 us, 1000 myus = 910 us, 10000 myus = 11735 us, 4 myus = 11 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: "Gigabyte Technology Co., Ltd." DMI string baseboard-product-name: "8IPE1000" DMI string baseboard-version: "1.x" DMI string chassis-type: "Desktop" Found ITE Super I/O, ID 0x8712 on port 0x2e Found chipset "Intel ICH5/ICH5R" with PCI ID 8086:24d0. Enabling flash write... BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0 OK. Super I/O ID 0x8712 is not on the list of flash capable controllers. The following protocols are supported: FWH. Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x23, id2 0xfa, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0x23, id2 0xfa, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0x23, id2 0xfa, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0xbf, id2 0x57 Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xbf, id2 0x57 Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0x23, id2 0xfa, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0xbf, id2 0x57 Found SST flash chip "SST49LF002A/B" (256 kB, FWH) at physical address 0xfffc0000. Lock status for 0x000000 (size 0x004000) is 00, full access Lock status for 0x004000 (size 0x004000) is 00, full access Lock status for 0x008000 (size 0x004000) is 00, full access Lock status for 0x00c000 (size 0x004000) is 00, full access Lock status for 0x010000 (size 0x004000) is 00, full access Lock status for 0x014000 (size 0x004000) is 00, full access Lock status for 0x018000 (size 0x004000) is 00, full access Lock status for 0x01c000 (size 0x004000) is 00, full access Lock status for 0x020000 (size 0x004000) is 00, full access Lock status for 0x024000 (size 0x004000) is 00, full access Lock status for 0x028000 (size 0x004000) is 00, full access Lock status for 0x02c000 (size 0x004000) is 00, full access Lock status for 0x030000 (size 0x004000) is 00, full access Lock status for 0x034000 (size 0x004000) is 00, full access Lock status for 0x038000 (size 0x004000) is 00, full access Lock status for 0x03c000 (size 0x004000) is 00, full access Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xbf, id2 0x57 Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xbf, id2 0x57 Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0x23, id2 0xfa, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0xbf, id2 0x57 Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0x23, id2 0xfa, 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 0x23, id2 0xfa, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0x23, id2 0xfa, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0x23, id2 0xfa, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0x23, id2 0xfa, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x23, id2 0xfa, 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 0x23, id2 0xfa, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0x23, id2 0xfa, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xbf, id2 0x57 Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xbf, id2 0x57 Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xbf, id2 0x57 Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0xbf, id2 0x57 Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0xbf, id2 0x57 Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xbf, id2 0x57 Found SST flash chip "SST49LF002A/B" (256 kB, FWH). No operations were specified. Restoring PCI config space for 00:1f:0 reg 0x4e -------------- next part -------------- 00:00.0 Host bridge [0600]: Intel Corporation 82865G/PE/P DRAM Controller/Host-Hub Interface [8086:2570] (rev 02) Subsystem: Giga-byte Technology GA-8IPE1000 Pro2 motherboard (865PE) [1458:2570] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- SERR- Capabilities: [a0] AGP version 3.0 Status: RQ=32 Iso- ArqSz=2 Cal=2 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3+ Rate=x4,x8 Command: RQ=1 ArqSz=0 Cal=2 SBA+ AGP+ GART64- 64bit- FW- Rate=x8 Kernel driver in use: agpgart-intel 00: 86 80 70 25 06 01 90 20 02 00 00 06 00 00 00 00 10: 08 00 00 f0 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 58 14 70 25 30: 00 00 00 00 e4 00 00 00 00 00 00 00 00 00 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 00 02 08 00 40 80 1c 00 00 00 00 00 00 00 00 00 60: 00 05 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: 10 11 11 33 00 00 00 00 00 00 00 00 00 0a 38 00 a0: 02 00 30 00 1b 4a 00 1f 02 0b 00 00 00 00 00 00 b0: 80 00 00 00 20 00 00 00 00 00 cc 33 10 10 00 00 c0: 00 00 00 00 00 80 0e 28 10 00 00 00 00 00 00 00 d0: 02 28 04 0e 0b 0d 00 00 00 00 00 00 00 00 20 01 e0: 00 00 00 00 09 a0 06 21 00 02 00 00 00 00 00 00 f0: 00 00 00 00 02 00 00 00 68 0f 03 00 00 00 00 00 00:01.0 PCI bridge [0604]: Intel Corporation 82865G/PE/P AGP Bridge [8086:2571] (rev 02) (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- Kernel modules: shpchp 00: 86 80 71 25 07 00 a0 00 02 00 04 06 00 40 01 00 10: 00 00 00 00 00 00 00 00 00 01 01 20 f0 00 a0 22 20: 00 f8 f0 fa 00 e0 f0 ef 00 00 00 00 00 00 00 00 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 00 40: 00 00 00 00 00 00 00 00 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 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 68 0f 03 00 00 00 00 00 00:06.0 System peripheral [0880]: Intel Corporation 82865G/PE/P Processor to I/O Memory Interface [8086:2576] (rev 02) 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- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Kernel modules: shpchp 00: 86 80 4e 24 07 00 80 00 c2 00 04 06 00 00 01 00 10: 00 00 00 00 00 00 00 00 00 02 02 20 90 90 80 22 20: 00 fb 00 fb 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 04 00 40: 02 28 30 76 00 00 00 00 00 00 00 00 00 00 00 00 50: 26 64 73 00 00 00 00 00 50 01 34 00 00 00 00 00 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 88 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: 01 00 02 00 00 00 c0 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 66 0f 04 00 00 00 51 33 00:1f.0 ISA bridge [0601]: Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge [8086:24d0] (rev 02) 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- please always reply to the mailing list. some stuff about in-system programming that might be partially relevant to you: http://flashrom.org/ISP a special flashrom version for the chip is not needed at all, you seem to be way too focused on that. normally flashrom will detect that chip by itself. if not then the communication does not work reliable. there is also an option to look for a specific chip only instead of all compatible chips (-c MX25L4005). Begin forwarded message: Date: Fri, 25 May 2012 18:19:27 -0400 From: "Richard R. Blum" To: Stefan Tauner Subject: Re: [flashrom] Marvell 9120 SATA Controller/Macronix MX25L4005 EEPROM on ASUS P7p55D-E LX Stefan Tauner: Thanks for your reply. I bricked the onboard Marvell 9120 SATA controller by flashing the sata controller itself using the marvell flash tool with firmware for another controller model (stupidly). When I try to force a flash I now get a "Adapter Not Found" message. I'm sure the sata controller firmware is on a Macronix MX25L4005 EEPROM located adjacent to the Marvell onboard sata controller according to information for the Marvell 9120 SATA controller and from reading about the experience of others with similar problems and hardware. Flashing the mainboard bios has no effect. Besides, the Macronix MX25L4005 has 512k memory and the mainboard bios files are 2048k. I'm considering using a buspirate and flashrom to flash the MX25L4005. I'll probably try to flash the MX25L4005 while it is still soldered onto the mainboard but not powered by the mainboard, and supply power to the MX25L4005 separately from the board, although I have read where others have had to either lift their MX25L4005 vcc leg from it's mainboard or remove the MX25L4005 entirely for a successful flash. I believe I have a good full copy of the firmware that I overwrote, I just need to purchase a buspirate and set of probes or a clamp and use the correctly compiled flashrom. At this point having a version of flashrom complied to specifically flash a MX25L4005 would be a great help along with any other advice you might have for me. R. Blum On 25 May 2012 at 21:26, Stefan Tauner wrote: On Thu, 24 May 2012 16:02:47 -0400 "Richard R. Blum" wrote: > Dear Flashrom Support: > > I recently bricked the Marvell 9120 SATA Controller on an ASUS > P7P55D-E LX mainboard. oh. onboard sata chip. obviously i was the one confused, sorry. how did you brick it? if the firmware is stored in the normal flash as flashrom sees it (which is likely), flashing the normal mainboard updates should fix it. what about the flashing tools from asus... did you try recovering with them? -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner From iociatos at gmail.com Sat May 26 10:20:48 2012 From: iociatos at gmail.com (=?UTF-8?B?RGFyw61vIEdhcmPDrWEgTWFydG9z?=) Date: Sat, 26 May 2012 10:20:48 +0200 Subject: [flashrom] Gigabyte 8iPE1000 rev 1.x In-Reply-To: <201205251927.q4PJRtwv010647@mail2.student.tuwien.ac.at> References: <4FBFCEE7.4000807@gmail.com> <201205251927.q4PJRtwv010647@mail2.student.tuwien.ac.at> Message-ID: <4FC09260.1080901@gmail.com> El 25/05/12 21:27, Stefan Tauner escribi?: > hi please send the output of flashrom -V and lspci -nnxxxvv Uhmm, i think i was in a mistake, I tried it with an usb pendrive made with unetbootin and the system told me that one jumper is not set properly :-[ . I am looking in the user's manual of the motherboard and can only find a Clear Password jumper. Thank you very much again. From ghannon at cspi.com Fri May 25 21:56:17 2012 From: ghannon at cspi.com (Gary Hannon) Date: Fri, 25 May 2012 15:56:17 -0400 Subject: [flashrom] Using flashrom with Intel Ibex Peak (PCH 3420) amd M25P64 flash works Message-ID: <4DE5BCE5EF72E049B1C611B948D719AB775AFE@knob.corp.cspi.com> Great tool. I found this after lunch and had it working and verified by 3:30. Attached are the Verbose output dumps that you were hoping to get on new arch's. I was able to read, erase, program and verify the flash. We will soon have a board that uses 2 flashes, each 64Mb. I will also send feedback of what that looks like. Can this tool specify which chip select to use when writing, or do I need to create a map? We will have the descriptors in each flash calling the other flash as the Platform Data region. Our board has a way to steer which chip gets CS0 and which gets CS1 for having a failover incase a BIOS setting makes the board unbootable. Thanks much Gary Hannon Sr. Software Engineer CSP Inc. 43 Manning Road Billerica, MA 01821 978-663-7598 x1509 ghannon at cspi.com -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: flashrom_Intel3420_m25p64.txt URL: From allfer at rambler.ru Mon May 28 16:16:02 2012 From: allfer at rambler.ru (user) Date: Mon, 28 May 2012 18:16:02 +0400 Subject: [flashrom] Log for Gigabyte GA-H61M-D2H-USB3 Message-ID: <1338214562.10131.6.camel@localhost> Log for Gigabyte GA-H61M-D2H-USB3 motherboard on a Intel H61 chipset for read and write operations. -------------- next part -------------- A non-text attachment was scrubbed... Name: GA-H61M-D2H-USB3.log.zip Type: application/zip Size: 9952 bytes Desc: not available URL: From juergen.bullinger at gmx.de Sun May 27 16:44:08 2012 From: juergen.bullinger at gmx.de (juergen.bullinger at gmx.de) Date: Sun, 27 May 2012 16:44:08 +0200 Subject: [flashrom] Output of Flashrom for Asus M2N68-VM Message-ID: <20120527144408.11790@gmx.net> Hi, thank you for the great tool it saved me from messing ouround with DOS boot dics etc on a system which is purely running on Linux. I updated the bios of this board and in case the diagnostic output of this board is interesting for you, here is it: juergen at media:/scratch/software/bios$ sudo flashrom [sudo] password for juergen: flashrom v0.9.5.2-r1517 on Linux 3.2.0-25-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... OK. Found chipset "NVIDIA MCP67". Enabling flash write... This chipset is not really supported yet. Guesswork... SPI on this chipset is WIP. Please report any success or failure by mailing us the verbose output to flashrom at flashrom.org, thanks! Mapping NVIDIA MCP6x SPI at 0xfec80000, unaligned size 0x544. 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. Found Macronix flash chip "MX25L8005" (1024 kB, SPI) at physical address 0xfff00000. No operations were specified. -- NEU: FreePhone 3-fach-Flat mit kostenlosem Smartphone! Jetzt informieren: http://mobile.1und1.de/?ac=OM.PW.PW003K20328T7073a From niso at kth.se Tue May 29 21:52:55 2012 From: niso at kth.se (=?UTF-8?q?Niklas=20S=C3=B6derlund?=) Date: Tue, 29 May 2012 21:52:55 +0200 Subject: [flashrom] [PATCH] remove exit calls from sp_openserport Message-ID: <1338321175-12543-1-git-send-email-niso@kth.se> Instead: - Print same error message as before but use msg_perr instead of perror - Return -1 instead of calling exit(1) All callers of sp_openserport where able to handle this change without much trouble. There already where other error cases that where taken care of, so adding one more will not change behavior of there callers. Signed-off-by: Niklas S?derlund --- buspirate_spi.c | 2 ++ pony_spi.c | 3 ++- serial.c | 32 +++++++++++++++++++++++--------- serprog.c | 3 ++- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/buspirate_spi.c b/buspirate_spi.c index f816afd..f18538a 100644 --- a/buspirate_spi.c +++ b/buspirate_spi.c @@ -39,6 +39,8 @@ static int buspirate_serialport_setup(char *dev) { /* 115200bps, 8 databits, no parity, 1 stopbit */ sp_fd = sp_openserport(dev, 115200); + if (sp_fd < 0) + return 1; return 0; } #else diff --git a/pony_spi.c b/pony_spi.c index b5dfc2f..3a413c7 100644 --- a/pony_spi.c +++ b/pony_spi.c @@ -99,7 +99,8 @@ int pony_spi_init(void) if (arg && strlen(arg)) { sp_fd = sp_openserport( arg, 9600 ); - have_device++; + if (sp_fd >= 0) + have_device++; } free(arg); diff --git a/serial.c b/serial.c index 0a56568..32d7e6a 100644 --- a/serial.c +++ b/serial.c @@ -113,8 +113,10 @@ fdtype sp_openserport(char *dev, unsigned int baud) (tolower((unsigned char)dev[1]) == 'o') && (tolower((unsigned char)dev[2]) == 'm')) { dev2 = malloc(strlen(dev) + 5); - if (!dev2) - sp_die("Error: Out of memory"); + if (!dev2) { + msg_perr("Error: Out of memory: %s\n", strerror(errno)); + return -1; + } strcpy(dev2, "\\\\.\\"); strcpy(dev2 + 4, dev); } @@ -123,33 +125,45 @@ fdtype sp_openserport(char *dev, unsigned int baud) if (dev2 != dev) free(dev2); if (fd == INVALID_HANDLE_VALUE) { - sp_die("Error: cannot open serial port"); + msg_perr("Error: cannot open serial port: %s\n", + strerror(errno)); + return -1; } DCB dcb; if (!GetCommState(fd, &dcb)) { - sp_die("Error: Could not fetch serial port configuration"); + msg_perr("Error: Could not fetch serial port configuration: %s\n", + strerror(errno)); + return -1; } + switch (baud) { case 9600: dcb.BaudRate = CBR_9600; break; case 19200: dcb.BaudRate = CBR_19200; break; case 38400: dcb.BaudRate = CBR_38400; break; case 57600: dcb.BaudRate = CBR_57600; break; case 115200: dcb.BaudRate = CBR_115200; break; - default: sp_die("Error: Could not set baud rate"); + default: msg_perr("Error: Could not set baud rate: %s\n", + strerror(errno)); + return -1; } dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; if (!SetCommState(fd, &dcb)) { - sp_die("Error: Could not change serial port configuration"); + msg_perr("Error: Could not change serial port configuration: %s\n", + strerror(errno)); + return -1; } return fd; #else struct termios options; int fd, i; fd = open(dev, O_RDWR | O_NOCTTY | O_NDELAY); - if (fd < 0) - sp_die("Error: cannot open serial port"); + if (fd < 0) { + msg_perr("Error: cannot open serial port: %s\n", + strerror(errno)); + return -1; + } fcntl(fd, F_SETFL, 0); tcgetattr(fd, &options); for (i = 0;; i++) { @@ -157,7 +171,7 @@ fdtype sp_openserport(char *dev, unsigned int baud) close(fd); msg_perr("Error: cannot configure for baudrate %d\n", baud); - exit(1); + return -1; } if (sp_baudtable[i].baud == baud) { cfsetispeed(&options, sp_baudtable[i].flag); diff --git a/serprog.c b/serprog.c index 65539a1..baa1eab 100644 --- a/serprog.c +++ b/serprog.c @@ -361,7 +361,8 @@ int serprog_init(void) } if (strlen(device)) { sp_fd = sp_openserport(device, atoi(baudport)); - have_device++; + if (sp_fd >= 0) + have_device++; } } if (device && !strlen(device)) { -- 1.7.10.2 From niso at kth.se Tue May 29 23:19:39 2012 From: niso at kth.se (=?UTF-8?q?Niklas=20S=C3=B6derlund?=) Date: Tue, 29 May 2012 23:19:39 +0200 Subject: [flashrom] [PATCHv2] remove exit calls from sp_openserport In-Reply-To: <1338321175-12543-1-git-send-email-niso@kth.se> References: <1338321175-12543-1-git-send-email-niso@kth.se> Message-ID: <1338326379-17523-1-git-send-email-niso@kth.se> Instead: - Print same error message as before but use msg_perr instead of perror - Return -1 instead of calling exit(1) All callers of sp_openserport where able to handle this change without much trouble. There already where other error cases that where taken care of, so adding one more will not change behavior of there callers. Signed-off-by: Niklas S?derlund --- buspirate_spi.c | 2 ++ pony_spi.c | 4 ++++ serial.c | 30 +++++++++++++++++++----------- serprog.c | 4 ++++ 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/buspirate_spi.c b/buspirate_spi.c index f816afd..f18538a 100644 --- a/buspirate_spi.c +++ b/buspirate_spi.c @@ -39,6 +39,8 @@ static int buspirate_serialport_setup(char *dev) { /* 115200bps, 8 databits, no parity, 1 stopbit */ sp_fd = sp_openserport(dev, 115200); + if (sp_fd < 0) + return 1; return 0; } #else diff --git a/pony_spi.c b/pony_spi.c index b5dfc2f..6ce467e 100644 --- a/pony_spi.c +++ b/pony_spi.c @@ -99,6 +99,10 @@ int pony_spi_init(void) if (arg && strlen(arg)) { sp_fd = sp_openserport( arg, 9600 ); + if (sp_fd < 0) { + free(arg); + return 1; + } have_device++; } free(arg); diff --git a/serial.c b/serial.c index 0a56568..474cc96 100644 --- a/serial.c +++ b/serial.c @@ -113,8 +113,10 @@ fdtype sp_openserport(char *dev, unsigned int baud) (tolower((unsigned char)dev[1]) == 'o') && (tolower((unsigned char)dev[2]) == 'm')) { dev2 = malloc(strlen(dev) + 5); - if (!dev2) - sp_die("Error: Out of memory"); + if (!dev2) { + msg_perr("Error: Out of memory: %s\n", strerror(errno)); + return -1; + } strcpy(dev2, "\\\\.\\"); strcpy(dev2 + 4, dev); } @@ -123,41 +125,47 @@ fdtype sp_openserport(char *dev, unsigned int baud) if (dev2 != dev) free(dev2); if (fd == INVALID_HANDLE_VALUE) { - sp_die("Error: cannot open serial port"); + msg_perr("Error: cannot open serial port: %s\n", strerror(errno)); + return -1; } DCB dcb; if (!GetCommState(fd, &dcb)) { - sp_die("Error: Could not fetch serial port configuration"); + msg_perr("Error: Could not fetch serial port configuration: %s\n", strerror(errno)); + return -1; } + switch (baud) { case 9600: dcb.BaudRate = CBR_9600; break; case 19200: dcb.BaudRate = CBR_19200; break; case 38400: dcb.BaudRate = CBR_38400; break; case 57600: dcb.BaudRate = CBR_57600; break; case 115200: dcb.BaudRate = CBR_115200; break; - default: sp_die("Error: Could not set baud rate"); + default: msg_perr("Error: Could not set baud rate: %s\n", strerror(errno)); + return -1; } dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; if (!SetCommState(fd, &dcb)) { - sp_die("Error: Could not change serial port configuration"); + msg_perr("Error: Could not change serial port configuration: %s\n", strerror(errno)); + return -1; } return fd; #else struct termios options; int fd, i; fd = open(dev, O_RDWR | O_NOCTTY | O_NDELAY); - if (fd < 0) - sp_die("Error: cannot open serial port"); + if (fd < 0) { + msg_perr("Error: cannot open serial port: %s\n", strerror(errno)); + return -1; + } fcntl(fd, F_SETFL, 0); tcgetattr(fd, &options); for (i = 0;; i++) { if (sp_baudtable[i].baud == 0) { close(fd); - msg_perr("Error: cannot configure for baudrate %d\n", - baud); - exit(1); + msg_perr("Error: cannot configure for baudrate %d\n", baud); + return -1; } if (sp_baudtable[i].baud == baud) { cfsetispeed(&options, sp_baudtable[i].flag); diff --git a/serprog.c b/serprog.c index 65539a1..d06fb0b 100644 --- a/serprog.c +++ b/serprog.c @@ -361,6 +361,10 @@ int serprog_init(void) } if (strlen(device)) { sp_fd = sp_openserport(device, atoi(baudport)); + if (sp_fd < 0) { + free(device); + return 1; + } have_device++; } } -- 1.7.10.2 From mail at justinbogner.com Wed May 30 03:43:08 2012 From: mail at justinbogner.com (Justin Bogner) Date: Tue, 29 May 2012 19:43:08 -0600 Subject: [flashrom] P5B-VM DO support Message-ID: <87bol6qw9f.fsf@glimpse.justinbogner.com> Hello, I tried out flashrom on one of my machines and it asked me to send a verbose log here, since my mainboard isn't listed on the supported hardware page. The non-verbose log errors with "FREG4: WARNING: Platform Data region is locked" and the chipset is Intel ICH8DO. The mainboard is this one: http://www.asus.com/Motherboards/Intel_Socket_775/P5BVM_DO -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: p5b-vm-do.flashrom.log URL: From niso at kth.se Wed May 30 20:18:18 2012 From: niso at kth.se (=?UTF-8?q?Niklas=20S=C3=B6derlund?=) Date: Wed, 30 May 2012 20:18:18 +0200 Subject: [flashrom] [PATCH] remove exit call from show_id Message-ID: <1338401898-4796-1-git-send-email-niso@kth.se> The only caller is able to check the return code and handle it correctly --- flashrom.c | 5 ++++- layout.c | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/flashrom.c b/flashrom.c index ec8137b..f6597e5 100644 --- a/flashrom.c +++ b/flashrom.c @@ -1781,7 +1781,10 @@ int doit(struct flashctx *flash, int force, const char *filename, int read_it, #if CONFIG_INTERNAL == 1 if (programmer == PROGRAMMER_INTERNAL) - show_id(newcontents, size, force); + if (show_id(newcontents, size, force)) { + ret = 1; + goto out; + } #endif } diff --git a/layout.c b/layout.c index 379ee8c..0512638 100644 --- a/layout.c +++ b/layout.c @@ -137,7 +137,7 @@ int show_id(uint8_t *bios, int size, int force) "\n\n", mainboard_vendor, mainboard_part, lb_vendor, lb_part); - exit(1); + return 1; } } -- 1.7.10.2 From niso at kth.se Wed May 30 20:21:46 2012 From: niso at kth.se (=?ISO-8859-1?Q?Niklas_S=F6derlund?=) Date: Wed, 30 May 2012 20:21:46 +0200 Subject: [flashrom] [PATCH] remove exit call from show_id In-Reply-To: <1338401898-4796-1-git-send-email-niso@kth.se> References: <1338401898-4796-1-git-send-email-niso@kth.se> Message-ID: <4FC6653A.3060809@kth.se> Sorry I forgot, Signed-off-by: Niklas S?derlund On 05/30/2012 08:18 PM, Niklas S?derlund wrote: > The only caller is able to check the return code and handle it correctly > --- > flashrom.c | 5 ++++- > layout.c | 2 +- > 2 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/flashrom.c b/flashrom.c > index ec8137b..f6597e5 100644 > --- a/flashrom.c > +++ b/flashrom.c > @@ -1781,7 +1781,10 @@ int doit(struct flashctx *flash, int force, const char *filename, int read_it, > > #if CONFIG_INTERNAL == 1 > if (programmer == PROGRAMMER_INTERNAL) > - show_id(newcontents, size, force); > + if (show_id(newcontents, size, force)) { > + ret = 1; > + goto out; > + } > #endif > } > > diff --git a/layout.c b/layout.c > index 379ee8c..0512638 100644 > --- a/layout.c > +++ b/layout.c > @@ -137,7 +137,7 @@ int show_id(uint8_t *bios, int size, int force) > "\n\n", > mainboard_vendor, mainboard_part, lb_vendor, > lb_part); > - exit(1); > + return 1; > } > } > From niso at kth.se Wed May 30 20:48:36 2012 From: niso at kth.se (=?UTF-8?q?Niklas=20S=C3=B6derlund?=) Date: Wed, 30 May 2012 20:48:36 +0200 Subject: [flashrom] [PATCH] remove exit call from internal_init Message-ID: <1338403716-7809-1-git-send-email-niso@kth.se> Replace with a return instead, all other plumbing is already in place Signed-off-by: Niklas S?derlund --- internal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal.c b/internal.c index 5b24577..75e526b 100644 --- a/internal.c +++ b/internal.c @@ -298,7 +298,7 @@ int internal_init(void) msg_perr("Proceeding anyway because user forced us to.\n"); } else { msg_perr("Aborting.\n"); - exit(1); + return 1; } } -- 1.7.10.2 From dhendrix at google.com Wed May 30 21:24:19 2012 From: dhendrix at google.com (David Hendricks) Date: Wed, 30 May 2012 12:24:19 -0700 Subject: [flashrom] [PATCH] remove exit call from internal_init In-Reply-To: <1338403716-7809-1-git-send-email-niso@kth.se> References: <1338403716-7809-1-git-send-email-niso@kth.se> Message-ID: This seems trivial, as internal_init() already does the right thing when a return value is used here. Acked-by: David Hendricks On Wed, May 30, 2012 at 11:48 AM, Niklas S?derlund wrote: > Replace with a return instead, all other plumbing is already in place > > Signed-off-by: Niklas S?derlund > --- > internal.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/internal.c b/internal.c > index 5b24577..75e526b 100644 > --- a/internal.c > +++ b/internal.c > @@ -298,7 +298,7 @@ int internal_init(void) > msg_perr("Proceeding anyway because user forced us > to.\n"); > } else { > msg_perr("Aborting.\n"); > - exit(1); > + return 1; > } > } > > -- > 1.7.10.2 > > > _______________________________________________ > flashrom mailing list > flashrom at flashrom.org > http://www.flashrom.org/mailman/listinfo/flashrom -- David Hendricks (dhendrix) Systems Software Engineer, Google Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From dhendrix at google.com Wed May 30 21:24:20 2012 From: dhendrix at google.com (David Hendricks) Date: Wed, 30 May 2012 12:24:20 -0700 Subject: [flashrom] [PATCH] remove exit call from show_id In-Reply-To: <4FC6653A.3060809@kth.se> References: <1338401898-4796-1-git-send-email-niso@kth.se> <4FC6653A.3060809@kth.se> Message-ID: Seems trivial, and I think you're also helping to make sure memory alloc'd in doit() gets free'd properly. So: Acked-by: David Hendricks Thanks for doing this! On Wed, May 30, 2012 at 11:21 AM, Niklas S?derlund wrote: > Sorry I forgot, > > Signed-off-by: Niklas S?derlund > > On 05/30/2012 08:18 PM, Niklas S?derlund wrote: > > > The only caller is able to check the return code and handle it correctly > > --- > > flashrom.c | 5 ++++- > > layout.c | 2 +- > > 2 files changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/flashrom.c b/flashrom.c > > index ec8137b..f6597e5 100644 > > --- a/flashrom.c > > +++ b/flashrom.c > > @@ -1781,7 +1781,10 @@ int doit(struct flashctx *flash, int force, const > char *filename, int read_it, > > > > #if CONFIG_INTERNAL == 1 > > if (programmer == PROGRAMMER_INTERNAL) > > - show_id(newcontents, size, force); > > + if (show_id(newcontents, size, force)) { > > + ret = 1; > > + goto out; > > + } > > #endif > > } > > > > diff --git a/layout.c b/layout.c > > index 379ee8c..0512638 100644 > > --- a/layout.c > > +++ b/layout.c > > @@ -137,7 +137,7 @@ int show_id(uint8_t *bios, int size, int force) > > "\n\n", > > mainboard_vendor, mainboard_part, > lb_vendor, > > lb_part); > > - exit(1); > > + return 1; > > } > > } > > > > > > _______________________________________________ > flashrom mailing list > flashrom at flashrom.org > http://www.flashrom.org/mailman/listinfo/flashrom > -- David Hendricks (dhendrix) Systems Software Engineer, Google Inc. -------------- next part -------------- An HTML attachment was scrubbed... URL: From newforest333 at hotmail.ca Thu May 31 13:27:03 2012 From: newforest333 at hotmail.ca (Bicks Factory) Date: Thu, 31 May 2012 07:27:03 -0400 Subject: [flashrom] external programmer Message-ID: Hey thanks for taking time to help out. So I went and got a copy of debian os to try. I installed it but had too many problems with network cards not being detected and getting root privlages etc. That was a waste of a cd. So I went to ubuntu 12.04. Installed on hard drive and couldnt get flashrom to install at all. Changed the server location were ubuntu was looking for flashrom from CAN site to default server. Worked. So now I have ubuntu installed with flashrom. I checked and libftdi is installed aswell. Unfortunately I get the same problem. Cant detect/see my external programmer. I am hoping someone that has got this thing to work can add some usefull instructions on how they got this to work.? Thanks again. I hope Im responding in the right manner. Not sure if this is going to a personal email or if this is going to the mailing list. Sent From Android Stefan Tauner wrote: On Thu, 24 May 2012 22:04:50 -0400 Bicks Factory wrote: > > >? Trying to use an external programmer, specifically the > TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA). > Running from a live cd of parted magic. Using flashrom v0.9.5.2-r1515. > Run command: flashrom -p ft2232_spi:type=tumpa > get back: unknown programmer ft2232_spi:type=tumpa. > Motherboard is a MSI G41M-F. > Flashrom can see the flash chip on the board. Intel ich7 > Not really used to using command prompt or linux. > I'm assuming I'm missing some usb drivers. > > > Any help would be greatly appreciated. hello! that's not your fault (and admittedly the error message could be a bit better). the problem seems to be that flashrom was compiled without support for the ft2232_spi programmer in parted magic to safe space. so you need to get another live cd or build flashrom yourself (not really recommended when you dont know linux and the command line :) i am not aware of any live cd that ships a full build of flashrom (i was not aware yet, that they actually strip them down. it is not the default to do so, so they did it on consciously). the livecds of the bigger distributions such as ubuntu should be able to install packages after boot, which is necessary because flashrom is not added to the cds themselves and they should be the complete version. this requires either internet access after boot or some manual preparation though... hth -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan.tauner at student.tuwien.ac.at Thu May 31 13:54:08 2012 From: stefan.tauner at student.tuwien.ac.at (Stefan Tauner) Date: Thu, 31 May 2012 13:54:08 +0200 Subject: [flashrom] external programmer In-Reply-To: References: Message-ID: <201205311154.q4VBs8mU008036@mail2.student.tuwien.ac.at> On Thu, 31 May 2012 07:27:03 -0400 Bicks Factory wrote: > Hey thanks for taking time to help out. So I went and got a copy of debian os to try. I installed it but had too many problems with network cards not being detected and getting root privlages etc. That was a waste of a cd. So I went to ubuntu 12.04. Installed on hard drive and couldnt get flashrom to install at all. Changed the server location were ubuntu was looking for flashrom from CAN site to default server. Worked. So now I have ubuntu installed with flashrom. I checked and libftdi is installed aswell. Unfortunately I get the same problem. Cant detect/see my external programmer. I am hoping someone that has got this thing to work can add some usefull instructions on how they got this to work.? > Thanks again. > I hope Im responding in the right manner. Not sure if this is going to a personal email or if this is going to the mailing list. can you please send us the complete output of flashrom you get (please ensure that there is at least one -V parameter in your command line so that we see useful debug information). the output of lsusb would also be interesting. i can only think of three possible problems: your flashrom version is too old (unlikely with ubuntu 12.04), or the programmer has different IDs than flashrom expects, or there is a communication problem that flashrom/libftdi does not diagnose correctly. > Stefan Tauner wrote: > > On Thu, 24 May 2012 22:04:50 -0400 > Bicks Factory wrote: > > > > > > >? Trying to use an external programmer, specifically the > > TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA). > > Running from a live cd of parted magic. Using flashrom v0.9.5.2-r1515. > > Run command: flashrom -p ft2232_spi:type=tumpa > > get back: unknown programmer ft2232_spi:type=tumpa. > > Motherboard is a MSI G41M-F. > > Flashrom can see the flash chip on the board. Intel ich7 > > Not really used to using command prompt or linux. > > I'm assuming I'm missing some usb drivers. > > > > > > Any help would be greatly appreciated. > > hello! > > that's not your fault (and admittedly the error message could be a bit > better). the problem seems to be that flashrom was compiled without > support for the ft2232_spi programmer in parted magic to safe space. > so you need to get another live cd or build flashrom yourself (not > really recommended when you dont know linux and the command line :) > > i am not aware of any live cd that ships a full build of flashrom (i > was not aware yet, that they actually strip them down. it is not the > default to do so, so they did it on consciously). > the livecds of the bigger distributions such as ubuntu should be able > to install packages after boot, which is necessary because flashrom is > not added to the cds themselves and they should be the complete version. > this requires either internet access after boot or some manual > preparation though... > hth -- Kind regards/Mit freundlichen Gr??en, Stefan Tauner