This patch may or may not help the HP xw9400 workstation with the undetected flash chip. Please test.
Signed-off-by: Michael Karcher flashrom@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); }