1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-04-27 23:22:37 +02:00

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>
This commit is contained in:
Michael Karcher 2010-02-24 00:00:21 +00:00
parent c351992895
commit 01f6d7d15d

View File

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