Advantech ITA-5831 Series User Manual page 81

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

Advertisement

/////////////////////////////////////////////////////////////////////
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;
}
if (data & 0x04)
{
// If bit 2 is set (which means error occurs on
SMBUS), error occurs on SMBUS which is rarely the case
result = 1;
break;
}
}
return result;
}
//SMBUS ready
//SMBUS error
71
ITA-5831 User Manual

Advertisement

Table of Contents
loading

Table of Contents