[flashrom] [PATCH] Fix PIIX4 GPO set

Luc Verhaegen libv at skynet.be
Thu Feb 11 20:06:30 CET 2010


On Thu, Feb 11, 2010 at 07:48:15PM +0100, Michael Karcher wrote:
> Intel datasheet says "byte accesses only". Looks like they mean it.
> 
> Signed-off-by: Michael Karcher <flashrom at mkarcher.dialup.fu-berlin.de>
> ---
>  board_enable.c |   11 +++++++----
>  1 files changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/board_enable.c b/board_enable.c
> index 5d89929..76b5a6a 100644
> --- a/board_enable.c
> +++ b/board_enable.c
> @@ -578,6 +578,7 @@ static int board_artecgroup_dbe6x(const char *name)
>   */
>  static int intel_piix4_gpo_set(unsigned int gpo, int raise)
>  {
> +	unsigned int gpo_byte, gpo_bit;
>  	struct pci_dev *dev;
>  	uint32_t tmp, base;
>  
> @@ -632,12 +633,14 @@ static int intel_piix4_gpo_set(unsigned int gpo, int raise)
>  	/* PM IO base */
>  	base = pci_read_long(dev, 0x40) & 0x0000FFC0;
>  
> -	tmp = INL(base + 0x34); /* GPO register */
> +	gpo_byte = gpo >> 3;
> +	gpo_bit = gpo & 7;
> +	tmp = INB(base + 0x34 + gpo_byte); /* GPO register */
>  	if (raise)
> -		tmp |= 0x01 << gpo;
> +		tmp |= 0x01 << gpo_bit;
>  	else
> -		tmp |= ~(0x01 << gpo);
> -	OUTL(tmp, base + 0x34);
> +		tmp |= ~(0x01 << gpo_bit);
> +	OUTB(tmp, base + 0x34 + gpo_byte);
>  
>  	return 0;
>  }
> -- 
> 1.6.5

Acked-by: Luc Verhaegen <libv at skynet.be>

Luc Verhaegen.




More information about the flashrom mailing list