[coreboot] Problem with M57SLI and newly installed MX25L4005

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Wed Feb 6 03:44:58 CET 2008


On 06.02.2008 02:09, Carl-Daniel Hailfinger wrote:
> On 04.02.2008 22:04, Chris Lingard wrote:
>   
>> I recently found someone who could do the work of modifying the 
>> motherboard, Harald kindly posted me the chip.
>>
>> The machine came back and it would not boot with the switch up
>>
>> I then probably made a mistake, I used the BIOS itself to dump the 
>> factory BIOS to several floppies; then flipped the switch and wrote the 
>> factory BIOS to the new chip.  The machine now boots from either BIOS.
>>
>> Using flashrom to detect the chip I get:
>>
>> Calibrating delay loop... 853M loops per second. OK.
>> No coreboot table found.
>> Found chipset "NVIDIA MCP55", enabling flash write... OK.
>> Found board "GIGABYTE GA-M57SLI-S4": enabling flash write... Serial 
>> flash segment 0xfffe0000-0xffffffff enabled
>> Serial flash segment 0x000e0000-0x000fffff enabled
>> Serial flash segment 0xffee0000-0xffefffff disabled
>> Serial flash segment 0xfff80000-0xfffeffff enabled
>> LPC write to serial flash enabled
>> serial flash pin 29
>> OK.
>>
>> <snip>
>>
>> Probing for MX25L4005, 512 KB
>> RDID returned 7f 9d 7e.
>> probe_spi: id1 0x7f, id2 0x9d7e
>>
>> <snip>
>>
>> No EEPROM/flash device found.
>>
>> The factory BIOS is the same except that it returns
>>
>> Probing for MX25L4005, 512 KB
>> RDID returned 7f 9d 7e.
>>
>> <snip>
>>
>> No EEPROM/flash device found.
>>   
>>     
>
> Please specify which flash chips you are using. The snipped logs are
> extremely misleading, especially because the RDID output contradicts the
> MX25L4005 claim in the mail subject.
> The RDID you are seeing is from a Pm25LV040 (7f 9d 7e).
>
>   
>> The block diagram shows the BIOS connected directly to the 570-SLI and 
>> not via the 8716
>>   
>>     
>
> That block diagram is correct for v1.x of the board.
>
>   
>> Could someone please give me a clue of either what I have missed out, or 
>> how to proceed?
>>   
>>     
>
> We need to know the exact flash chip types before we can proceed.
>   

Can you try the patch below? We need full output from flashrom -V.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>

Index: flashrom-spi_pm25/flash.h
===================================================================
--- flashrom-spi_pm25/flash.h	(Revision 3086)
+++ flashrom-spi_pm25/flash.h	(Arbeitskopie)
@@ -158,7 +158,8 @@
 /* Programmable Micro Corp is listed in JEP106W in bank 2, so it should have
  * a 0x7F continuation code prefix.
  */
-#define PMC_ID			0x9D	/* PMC */
+#define PMC_ID			0x7F9D	/* PMC */
+#define PMC_ID_NOPREFIX		0x9D	/* PMC, missing 0x7F prefix */
 #define PMC_49FL002		0x6D
 #define PMC_49FL004		0x6E
 
Index: flashrom-spi_pm25/flashchips.c
===================================================================
--- flashrom-spi_pm25/flashchips.c	(Revision 3086)
+++ flashrom-spi_pm25/flashchips.c	(Arbeitskopie)
@@ -100,9 +100,9 @@
 	 probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
 	{"SST49LF160C", SST_ID,		SST_49LF160C, 	2048, 4 * 1024 ,
 	 probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
-	{"Pm49FL002",	PMC_ID,		PMC_49FL002,	256, 16 * 1024,
+	{"Pm49FL002",	PMC_ID_NOPREFIX,	PMC_49FL002,	256, 16 * 1024,
 	 probe_jedec,	erase_chip_jedec, write_49fl004},
-	{"Pm49FL004",	PMC_ID,		PMC_49FL004,	512, 64 * 1024,
+	{"Pm49FL004",	PMC_ID_NOPREFIX,	PMC_49FL004,	512, 64 * 1024,
 	 probe_jedec,	erase_chip_jedec, write_49fl004},
 	{"W29C011",	WINBOND_ID,	W_29C011,	128, 128,
 	 probe_jedec,	erase_chip_jedec, write_jedec},
@@ -205,6 +205,8 @@
 	 probe_spi,	NULL,	NULL},
 	{"MX unknown SPI chip",	MX_ID,	GENERIC_DEVICE_ID,	0, 0,
 	 probe_spi,	NULL,	NULL},
+	{"PMC unknown SPI chip",	PMC_ID,	GENERIC_DEVICE_ID,	0, 0,
+	 probe_spi,	NULL,	NULL},
 	{"SST unknown SPI chip",	SST_ID,	GENERIC_DEVICE_ID,	0, 0,
 	 probe_spi,	NULL,	NULL},
 	{"ST unknown SPI chip",	ST_ID,	GENERIC_DEVICE_ID,	0, 0,
Index: flashrom-spi_pm25/spi.c
===================================================================
--- flashrom-spi_pm25/spi.c	(Revision 3086)
+++ flashrom-spi_pm25/spi.c	(Arbeitskopie)
@@ -281,8 +281,14 @@
 	uint8_t manuf_id;
 	uint16_t model_id;
 	if (!generic_spi_rdid(readarr)) {
-		manuf_id = readarr[0];
-		model_id = (readarr[1] << 8) | readarr[2];
+		/* Check if this is a continuation vendor ID */
+		if (readarr[0] == 0x7f) {
+			manuf_id = (readarr[0] << 8) | readarr[1];
+			model_id = readarr[2];
+		} else {
+			manuf_id = readarr[0];
+			model_id = (readarr[1] << 8) | readarr[2];
+		}
 		printf_debug("%s: id1 0x%x, id2 0x%x\n", __FUNCTION__, manuf_id, model_id);
 		if (manuf_id == flash->manufacture_id &&
 		    model_id == flash->model_id) {






More information about the coreboot mailing list