[flashrom] [PATCH] experimental patch for HP branded Tyan S2915

Michael Karcher flashrom at mkarcher.dialup.fu-berlin.de
Thu Jan 28 16:36:50 CET 2010


This patch may or may not help the HP xw9400 workstation with the
undetected flash chip. Please test.

Signed-off-by: Michael Karcher <flashrom at mkarcher.dialup.fu-berlin.de>
---
 board_enable.c |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/board_enable.c b/board_enable.c
index 2c836a9..6970be2 100644
--- a/board_enable.c
+++ b/board_enable.c
@@ -478,6 +478,7 @@ static int nvidia_mcp_gpio_set(int gpio, int raise)
 	    dev = pci_dev_find_vendorclass(0x10DE, 0x0C05);
 	    switch (dev->device_id) {
 	    case 0x0264: /* MCP51 */
+	    case 0x0364: /* MCP55 */
 		break;
 	    default:
 		fprintf(stderr,
@@ -513,6 +514,26 @@ static int nvidia_mcp_gpio2_raise(const char *name)
  */
 static int nvidia_mcp_gpio5_raise(const char *name)
 {
+	/* experimental stuff - maybe it helps the hidden flash
+	   chip problem on Tyan S2915-E */
+	struct pci_dev * dev;
+	uint16_t base;
+	uint16_t tmp;
+	dev = pci_dev_find(0x10de,0x0364);
+	if(!dev) {
+		fprintf(stderr, "SMBus bridge not found?!\n");
+		return -1;
+	}
+	base = pci_read_long(dev,0x60) & 0xFF00;
+	if(base < 0x400) {
+		fprintf(stderr, "bogus I/O base %04x\n", base);
+		return -1;
+	}
+	tmp = INW(base+2);
+	tmp &= 0xFEFF;
+	OUTW(tmp, base+2);
+
+	/* Obvious stuff for the HP variant */
 	return nvidia_mcp_gpio_set(0x05, 1);
 }
 
-- 
1.6.5





More information about the flashrom mailing list