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

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Sat May 22 10:04:50 CEST 2010


Hi,

On 28.01.2010 16:36, Michael Karcher wrote:
> This patch may or may not help the HP xw9400 workstation [...]
>
> Signed-off-by: Michael Karcher <flashrom at mkarcher.dialup.fu-berlin.de>
>   

Turns out that this patch was not needed for flash detection, but it may
be needed as board enable for writing.
Besides that, it allows MCP55 GPIO access which we need anyway.

> 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);
>  }
>  
>   

Regards,
Carl-Daniel

-- 
http://www.hailfinger.org/





More information about the flashrom mailing list