aboutsummaryrefslogtreecommitdiffstats
path: root/board_enable.c
diff options
context:
space:
mode:
Diffstat (limited to 'board_enable.c')
-rw-r--r--board_enable.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/board_enable.c b/board_enable.c
index 2de5fd78..4278b6d3 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;
}