Advantech ITA-5231 Series User Manual page 79

Fanless embedded industrial computer with 6th gen intel core i processor for railway applications
Hide thumbs Also See for ITA-5231 Series:
Table of Contents

Advertisement

moredelay();
for (i = 0; i <= 0x100; i++)
{
newiodelay();//longerdelay
}
chk_smbus_ready(); //wheater SMBUS is ready
}
/////////////////////////////////////////////////////////////////////
int
chk_smbus_ready()
// To decide whether SMBUS is ready or has completed the action, you
should wait for a long time to check whether SMBUS has successfully
transmitted the command.
Since error may rarely occurs, BIOS code does not make judgement on
the return value of this function in read and write of SUMBUS byte.
{
int i, result = 1;
BYTE data;
for (i = 0; i <= 0x800; i++)
{
//SMB_BASE + 0 is the value of SMBUS status
data = inportb(SMBUS_PORT);//Read SMBUS status value once
data = check_data(SMBUS_PORT);//Read SMBUS status value
several time
outportb(SMBUS_PORT, data); // Write back SMBUS status
value which will clear status value (Write 1 to the corresponding bit
means clearing status
if (data & 0x02)
{
// If bit 1 is set (which means the command is
completed), SMBUS is ready
result = 0;//SMBUS ready
break;
}
if (!(data & 0xBF))
{
// If all bits are 0 except bit 2 (which means error
occurs on SMBUS), SMBUS is ready
result = 0;
break;
//longerdelay
//SMBUS ready
69
ITA-5231 User Manual

Advertisement

Table of Contents
loading

Table of Contents