Smbus Access - MSI MS-98M9 Manual

Industrial computer board
Table of Contents

Advertisement

GPIO WDT Programming

SMBus Access

3. SMBus Access
The base address of SMBus must know before access. The relevant bus and device
information are as following.
#define IO_SC
#define IO_DA
#define PCIBASEADDRESS
#define PCI_BUS_NUM
#define PCI_DEV_NUM
#define PCI_FUN_NUM
3.1
Get SMBus Base Address
int SMBUS_BASE;
int DATA_ADDR = PCIBASEADDRESS + (PCI_BUS_NUM<<16) +
Outportl
SMBUS_BASE =
3.2
SMBus_ReadByte (char DEVID, char offset)
Read the value of OFFSET from SMBus device DEVID.
Outportb (LOWORD (
Outportb (LOWORD (
Outportb (LOWORD (
Outportb (LOWORD (
mdelay (20);
while ((Inportl (
_DATA = Inportb (LOWORD (
SMB
3.3
SMBus_WriteByte (char DEVID, char offset, char DATA)
Write DATA to OFFSET on SMBus device DEVID.
Outportb (LOWORD (
Outportb (LOWORD (
Outportb (LOWORD (
Outportb (LOWORD (
Outportb (LOWORD (
mdelay (20);
A-6
0xCF8
0xCFC
0x80000000
0
31
4
(DATA_ADDR + 0x20, IO_SC);
Inportl
(IO_DA) & 0xfffffff0;
), 0xFE);
SMBUS_BASE
) + 0x04, DEVID + 1);
SMBUS_BASE
) + 0x03, OFFSET);
SMBUS_BASE
) + 0x02, 0x48);
SMBUS_BASE
) & 0x01) != 0);
SMBUS_BASE
SMBUS_BASE
), 0xFE);
SMBUS_BASE
) + 0x04, DEVID);
SMBUS_BASE
) + 0x03, OFFSET);
SMBUS_BASE
) + 0x05, DATA);
SMBUS_BASE
) + 0x02, 0x48);
SMBUS_BASE
(PCI_DEV_NUM<<11) +
(PCI_FUN_NUM<<8);
//out Base + 04, (DEVID + 1)
//out Base + 03, OFFSET
//out Base + 02, 48H
//delay 20ms to let data ready
//wait SMBus ready
) + 0x05);
//input Base + 05
//out Base + 04, (DEVID)
//out Base + 03, OFFSET
//out Base + 05, DATA
//out Base + 02, 48H
//wait 20ms

Advertisement

Table of Contents
loading

Table of Contents