Patchwork Add board enable for AOpen D2544-B1 (used in FCS ESPRIMO Q5010)

login
register
about
Submitter Stefan Tauner
Date 2012-01-16 14:19:11
Message ID <1326723551-4960-1-git-send-email-stefan.tauner@student.tuwien.ac.at>
Download mbox | patch
Permalink /patch/3505/
State Accepted
Commit r1486
Headers show

Comments

Stefan Tauner - 2012-01-16 14:19:11
Typical AWARD enable structure with an ICH GPIO board enable.

Signed-off-by: Stefan Tauner <stefan.tauner@student.tuwien.ac.at>
---
The chip status register shows #TBL and #WP as active, so this code
may not be everything we need. Check probe output for both *not* active
before trying to write!

 board_enable.c |   11 +++++++++++
 print.c        |    1 +
 2 files changed, 12 insertions(+), 0 deletions(-)
Oliver Rath - 2012-01-19 16:58:53
Hi stefan,

Ive added a verbose log of flash the esprimo machine. The flashing with
the modified bios runs, but the additional functionality seems hidden.

Regards,
Oliver
flashrom v0.9.4-r1485 on Linux 3.2.0-7-generic (i686), built with libpci 3.1.8, GCC 4.6.2, little endian
flashrom is free software, get the source code at http://www.flashrom.org

Calibrating delay loop... OS timer resolution is 1 usecs, 1077M loops per second, 10 myus = 10 us, 100 myus = 101 us, 1000 myus = 1016 us, 10000 myus = 9729 us, 4 myus = 5 us, OK.
Initializing internal programmer
No coreboot table found.
DMI string system-manufacturer: "FUJITSU SIEMENS"
DMI string system-product-name: "ESPRIMO Q5010"
DMI string system-version: " "
DMI string baseboard-manufacturer: "AOpen"
DMI string baseboard-product-name: "D2544-B1"
DMI string baseboard-version: "S26361-D2544-B1"
DMI string chassis-type: "Desktop"
Found chipset "Intel ICH7M" with PCI ID 8086:27b9. Enabling flash write... 
0xfff80000/0xffb80000 FWH IDSEL: 0x0
0xfff00000/0xffb00000 FWH IDSEL: 0x0
0xffe80000/0xffa80000 FWH IDSEL: 0x1
0xffe00000/0xffa00000 FWH IDSEL: 0x1
0xffd80000/0xff980000 FWH IDSEL: 0x2
0xffd00000/0xff900000 FWH IDSEL: 0x2
0xffc80000/0xff880000 FWH IDSEL: 0x3
0xffc00000/0xff800000 FWH IDSEL: 0x3
0xff700000/0xff300000 FWH IDSEL: 0x4
0xff600000/0xff200000 FWH IDSEL: 0x5
0xff500000/0xff100000 FWH IDSEL: 0x6
0xff400000/0xff000000 FWH IDSEL: 0x7
0xfff80000/0xffb80000 FWH decode enabled
0xfff00000/0xffb00000 FWH decode enabled
0xffe80000/0xffa80000 FWH decode disabled
0xffe00000/0xffa00000 FWH decode disabled
0xffd80000/0xff980000 FWH decode disabled
0xffd00000/0xff900000 FWH decode disabled
0xffc80000/0xff880000 FWH decode disabled
0xffc00000/0xff800000 FWH decode disabled
0xff700000/0xff300000 FWH decode disabled
0xff600000/0xff200000 FWH decode disabled
0xff500000/0xff100000 FWH decode disabled
0xff400000/0xff000000 FWH decode disabled
Maximum FWH chip size: 0x100000 bytes
BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0
Root Complex Register Block address = 0xfed1c000
GCS = 0x10c64: BIOS Interface Lock-Down: disabled, Boot BIOS Straps: 0x3 (LPC)
Top Swap : not enabled
OK.
Disabling flash write protection for board "AOpen D2544-B1"... 
Intel ICH LPC bridge: Raising GPIO38.
OK.
The following protocols are supported: FWH.
Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0xc3, id2 0x5b, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0x49, id2 0x4d, id1 is normal flash content, id2 is normal flash content
Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0x49, id2 0x4d, id1 is normal flash content, id2 is normal flash content
Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0xda, id2 0x34
Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xda, id2 0x34
Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0x49, id2 0x4d, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0xda, id2 0x34
Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xda, id2 0x34
Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xda, id2 0x34
Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0x49, id2 0x4d, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0xda, id2 0x34
Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0x49, id2 0x4d, 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 0x49, id2 0x4d, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0x49, id2 0x4d, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0x49, id2 0x4d, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0x49, id2 0x4d, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0xc3, id2 0x5b, 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 0x49, id2 0x4d, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0x49, id2 0x4d, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xda, id2 0x34
Found Winbond flash chip "W39V040FA" (512 kB, FWH) at physical address 0xfff80000.
Lockout bits:
Hardware bootblock locking (#TBL) is not active.
Hardware remaining chip locking (#WP) is not active..
Software 64 kB bootblock locking is not active.
Software 16 kB bootblock locking is not active.
Lock status of block at 0x00000000 is Write Lock (Default State).
Lock status of block at 0x00010000 is Write Lock (Default State).
Lock status of block at 0x00020000 is Write Lock (Default State).
Lock status of block at 0x00030000 is Write Lock (Default State).
Lock status of block at 0x00040000 is Write Lock (Default State).
Lock status of block at 0x00050000 is Write Lock (Default State).
Lock status of block at 0x00060000 is Write Lock (Default State).
Lock status of block at 0x00070000 is Write Lock (Default State).
Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xda, id2 0x34
Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xda, id2 0x34
Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0xda, id2 0x34
Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0xda, id2 0x34
Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xda, id2 0x34
Found Winbond flash chip "W39V040FA" (512 kB, FWH).
Lock status for 0x000000 (size 0x010000) is 01, write locked
Trying to clear lock for 0x000000... Lock status for 0x000000 (size 0x010000) is 00, full access
OK
Lock status for 0x010000 (size 0x010000) is 01, write locked
Trying to clear lock for 0x010000... Lock status for 0x010000 (size 0x010000) is 00, full access
OK
Lock status for 0x020000 (size 0x010000) is 01, write locked
Trying to clear lock for 0x020000... Lock status for 0x020000 (size 0x010000) is 00, full access
OK
Lock status for 0x030000 (size 0x010000) is 01, write locked
Trying to clear lock for 0x030000... Lock status for 0x030000 (size 0x010000) is 00, full access
OK
Lock status for 0x040000 (size 0x010000) is 01, write locked
Trying to clear lock for 0x040000... Lock status for 0x040000 (size 0x010000) is 00, full access
OK
Lock status for 0x050000 (size 0x010000) is 01, write locked
Trying to clear lock for 0x050000... Lock status for 0x050000 (size 0x010000) is 00, full access
OK
Lock status for 0x060000 (size 0x010000) is 01, write locked
Trying to clear lock for 0x060000... Lock status for 0x060000 (size 0x010000) is 00, full access
OK
Lock status for 0x070000 (size 0x010000) is 01, write locked
Trying to clear lock for 0x070000... Lock status for 0x070000 (size 0x010000) is 00, full access
OK
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:EW, 0x040000-0x040fff:EW, 0x041000-0x041fff:EW, 0x042000-0x042fff:EW, 0x043000-0x043fff:EW, 0x044000-0x044fff:EW, 0x045000-0x045fff:EW, 0x046000-0x046fff:EW, 0x047000-0x047fff:EW, 0x048000-0x048fff:EW, 0x049000-0x049fff:EW, 0x04a000-0x04afff:EW, 0x04b000-0x04bfff:EW, 0x04c000-0x04cfff:EW, 0x04d000-0x04dfff:EW, 0x04e000-0x04efff:EW, 0x04f000-0x04ffff:EW, 0x050000-0x050fff:EW, 0x051000-0x051fff:EW, 0x052000-0x052fff:EW, 0x053000-0x053fff:E, 0x054000-0x054fff:E, 0x055000-0x055fff:E, 0x056000-0x056fff:E, 0x057000-0x057fff:E, 0x058000-0x058fff:E, 0x059000-0x059fff:E, 0x05a000-0x05afff:E, 0x05b000-0x05bfff:E, 0x05c000-0x05cfff:E, 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:EW, 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
Erase/write done.
Verifying flash... VERIFIED.          
Restoring PCI config space for 00:1f:0 reg 0xdc
Stefan Tauner - 2012-01-19 17:54:18
On Thu, 19 Jan 2012 17:58:53 +0100
Oliver Rath <rath@mglug.de> wrote:

> Hi stefan,
> 
> Ive added a verbose log of flash the esprimo machine. The flashing with
> the modified bios runs, but the additional functionality seems hidden.
> 
> Regards,
> Oliver
> 

thanks for testing!
i have committed the board enable with some slight modifications in
r1486:
- removed the DMI pattern in case there are non-FCS boards around. the
  pci ids should be enough to match the board uniquely i hope.
- changed the naming a bit... aopen's name seems to be i945GMx-VFX not
  D2544-B1 as i thought.
- removed the FCS url

Patch

diff --git a/board_enable.c b/board_enable.c
index 2229f8b..05ac1d9 100644
--- a/board_enable.c
+++ b/board_enable.c
@@ -1560,6 +1560,16 @@  static int intel_ich_gpio34_raise(void)
 
 /*
  * Suited for:
+ *  - AOpen D2544-B1: Intel 945GM + ICH7-M used in ...
+ *    - FCS (e.g. ESPRIMO Q5010)
+ */
+static int intel_ich_gpio38_raise(void)
+{
+	return intel_ich_gpio_set(38, 1);
+}
+
+/*
+ * Suited for:
  *  - ASUS M6Ne (laptop): socket 479M (guessed) + Intel 855PM + ICH4-M
  */
 static int intel_ich_gpio43_raise(void)
@@ -2098,6 +2108,7 @@  const struct board_match board_matches[] = {
 	{0x1106, 0x3177, 0x17F2, 0x3177,  0x1106, 0x3148, 0x17F2, 0x3148, NULL,         NULL, NULL,           P3, "Albatron",    "PM266A Pro",            0,   OK, w836xx_memw_enable_2e},
 	{0x1022, 0x2090,      0,      0,  0x1022, 0x2080,      0,      0, NULL,        "artecgroup", "dbe61", P3, "Artec Group", "DBE61",                 0,   OK, board_artecgroup_dbe6x},
 	{0x1022, 0x2090,      0,      0,  0x1022, 0x2080,      0,      0, NULL,        "artecgroup", "dbe62", P3, "Artec Group", "DBE62",                 0,   OK, board_artecgroup_dbe6x},
+	{0x8086, 0x27b9, 0xa0a0, 0x0632,  0x8086, 0x27da, 0xa0a0, 0x0632, "^D2544-B1",  NULL, NULL,           P3, "AOpen",       "D2544-B1",              0,   OK, intel_ich_gpio38_raise},
 	{0x8086, 0x277c, 0xa0a0, 0x060b,  0x8086, 0x27da, 0xa0a0, 0x060b, NULL,         NULL, NULL,           P3, "AOpen",       "i975Xa-YDG",            0,   OK, board_aopen_i975xa_ydg},
 	{0x8086, 0x27b8, 0x1849, 0x27b8,  0x8086, 0x27da, 0x1849, 0x27da, "^ConRoeXFire-eSATA2", NULL, NULL,  P3, "ASRock",      "ConRoeXFire-eSATA2",    0,   OK, intel_ich_gpio16_raise},
 	{0x1039, 0x0741, 0x1849, 0x0741,  0x1039, 0x5513, 0x1849, 0x5513, "^K7S41 $",   NULL, NULL,           P3, "ASRock",      "K7S41",                 0,   OK, w836xx_memw_enable_2e},
diff --git a/print.c b/print.c
index db7ed65..5804bcb 100644
--- a/print.c
+++ b/print.c
@@ -556,6 +556,7 @@  const struct board_info boards_known[] = {
 	B("Advantech",	"PCM-5820",		1, "http://www.emacinc.com/sbc_pc_compatible/pcm_5820.htm", NULL),
 	B("agami",	"Aruma",		1, "http://web.archive.org/web/20080212111524/http://www.agami.com/site/ais-6000-series", NULL),
 	B("Albatron",	"PM266A Pro",		1, "http://www.albatron.com.tw/English/Product/MB/pro_detail.asp?rlink=Overview&no=56", NULL), /* FIXME */
+	B("AOpen",	"D2544-B1",		1, "http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/professionalpc/ESPRIMO/Q/EsprimoQ50x0.htm", "This is an OEM board from FCS (e.g. ESPRIMO Q5010)."),
 	B("AOpen",	"vKM400Am-S",		1, "http://usa.aopen.com/products_detail.aspx?Auno=824", NULL),
 	B("Artec Group","DBE61",		1, "http://wiki.thincan.org/DBE61", NULL),
 	B("Artec Group","DBE62",		1, "http://wiki.thincan.org/DBE62", NULL),