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:
parent
c351992895
commit
01f6d7d15d
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user