beautypg.com

AAEON EMB-H61B User Manual

Page 69

background image

I n d u s t r i a l M o t h e r b o a r d

E M B - H 6 1 B

Appendix A Programming the Watchdog Timer A-6

************************************************************************************

VOID

SIOEnterMBPnPMode()

{

IOWriteByte(SIOIndex, 0x87);

IOWriteByte(SIOIndex, 0x87);

}

VOID

SIOExitMBPnPMode()

{

IOWriteByte(SIOIndex, 0xAA);

}

VOID

SIOSelectLDN(byte LDN)

{

IOWriteByte(SIOIndex, 0x07);

// SIO LDN Register Offset = 0x07

IOWriteByte(SIOData,

LDN

);

}

VOID

SIOBitSet(byte LDN, byte Register, byte BitNum, byte Value)

{

Byte TmpValue;

SIOEnterMBPnPMode();

SIOSelectLDN(byte

LDN

);

IOWriteByte(SIOIndex, Register);

TmpValue = IOReadByte(SIOData);

TmpValue &= ~(1 << BitNum);

TmpValue |= (Value << BitNum);

IOWriteByte(SIOData, TmpValue);

SIOExitMBPnPMode();

}

VOID

SIOByteSet(byte LDN, byte Register, byte Value)

{

SIOEnterMBPnPMode();

SIOSelectLDN(LDN);

IOWriteByte(SIOIndex, Register);

IOWriteByte(SIOData,

Value

);

SIOExitMBPnPMode();

}

************************************************************************************