summaryrefslogtreecommitdiff
path: root/util/ipmidir.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/ipmidir.c')
-rw-r--r--util/ipmidir.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/util/ipmidir.c b/util/ipmidir.c
index 2aeb6f3..12b379c 100644
--- a/util/ipmidir.c
+++ b/util/ipmidir.c
@@ -415,13 +415,13 @@ int ipmi_open_direct(int fdebugcmd)
g_DriverType = DRV_SMB;
mBMC_baseAddr = mybase;
} else { /*0x01==KCS*/
- g_DriverType = DRV_KCS;
+ g_DriverType = DRV_KCS;
+ BMC_base = mybase;
if (sa == 0x20 && mybase != 0) { /*valid*/
kcsBaseAddress = mybase;
kcs_inc = inc;
}
}
- BMC_base = mybase;
DBGP("smbios: Driver=%d(%s), sa=%02x, Base=0x%04x, Spacing=%d\n",
g_DriverType,BmcDesc(g_DriverType),sa,mybase,inc);
} else {
@@ -1207,7 +1207,7 @@ int ImbInit_dir(void)
uchar iftype, iver, sa, inc;
int mybase, status;
char *ifstr;
- status = get_IpmiStruct(&iftype,&iver,&sa,&mybase,&inc);
+ status = get_IpmiStruct(&iftype,&iver,&sa,&mybase,&inc);
if (status == 0) {
if (iftype == 0x04) {
g_DriverType = DRV_SMB;
@@ -1215,13 +1215,13 @@ int ImbInit_dir(void)
mBMC_baseAddr = mybase;
} else /*0x01==KCS*/ {
g_DriverType = DRV_KCS;
+ BMC_base = mybase;
ifstr = "KCS";
if (sa == BMC_SA && mybase != 0) { /*valid*/
kcsBaseAddress = mybase;
kcs_inc = inc;
}
}
- BMC_base = mybase;
DBGP("SMBIOS IPMI Record found: type=%s sa=%02x base=0x%04x spacing=%d\n",
ifstr, sa, mybase, inc);
}
@@ -1230,9 +1230,14 @@ int ImbInit_dir(void)
/* Use KCS here. There are no known SMBus implementations on 64-bit */
if (BMC_base == 0) {
DBGP("No IPMI Data Structure Found in SMBIOS Table,\n");
+#ifdef TRY_KCS
g_DriverType = DRV_KCS;
- BMC_base = kcsBaseAddress;
+ BMC_base = kcsBaseAddress;
DBGP("Continuing with KCS on Default Port 0x%04x\n",kcsBaseAddress);
+#else
+ printf("No IPMI interface detected...Exiting\n");
+ return ERR_NO_DRV;
+#endif
}
#if defined(BSD) || defined(MACOS) || defined(HPUX)
iofd = open("/dev/io",O_RDWR);
@@ -1242,14 +1247,14 @@ int ImbInit_dir(void)
}
#endif
if (g_DriverType == DRV_SMB) {
- /* Perhaps add controller type in ipmi_if.txt (?)*/
- /* Intel SSIF: 0x0540=SJR, 0x0400=STP */
- if (mBMC_baseAddr == 0x540 || mBMC_baseAddr == 0x400)
- SMBChar.Controller = INTEL_SMBC;
- else /*else try ServerWorks*/
- SMBChar.Controller = SW_SMBC;
- SMBChar.baseAddr = mBMC_baseAddr;
- DBGP("BMC SSIF/SMBus Interface at i2c=%02x base=0x%04x\n",
+ /* Perhaps add controller type in ipmi_if.txt (?)*/
+ /* Intel SSIF: 0x0540=SJR, 0x0400=STP */
+ if (mBMC_baseAddr == 0x540 || mBMC_baseAddr == 0x400)
+ SMBChar.Controller = INTEL_SMBC;
+ else /*else try ServerWorks*/
+ SMBChar.Controller = SW_SMBC;
+ SMBChar.baseAddr = mBMC_baseAddr;
+ DBGP("BMC SSIF/SMBus Interface at i2c=%02x base=0x%04x\n",
mBMCADDR,mBMC_baseAddr);
}
if (g_DriverType == DRV_KCS) {