Fix PIIX4 GPO set

Intel datasheet says "byte accesses only". Looks like they mean it.
Also fix use of or instead of and for lowering GPOs.

Corresponding to flashrom svn r910.

Signed-off-by: Michael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>
Acked-by: Luc Verhaegen <libv@skynet.be>
diff --git a/board_enable.c b/board_enable.c
index 2de5fd7..4278b6d 100644
--- a/board_enable.c
+++ b/board_enable.c
@@ -578,6 +578,7 @@
  */
 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 @@
 	/* 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;
 }