Skip to content

Commit a756041

Browse files
committed
Finished decoding of DMI type 38 (IPMI).
1 parent 0720e6d commit a756041

File tree

2 files changed

+28
-10
lines changed

2 files changed

+28
-10
lines changed

CHANGELOG

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
1+
2003-03-08 Jean Delvare <[email protected]>
2+
3+
* dmidecode.c: Decoded more fields according to the IPMI specification
4+
(DMI case 38).
5+
16
2003-03-07 Jean Delvare <[email protected]>
27

38
Fixed IPMI device information (DMI case 38). Thanks to Richard Sharpe
49
for pointing the bugs out.
510

611
* dmidecode.c: Fixed IPMI interface type being shifted by one.
712
* dmidecode.c: Fixed NV storage device being improperly displayed.
8-
* dmidecode.c: Reword IPMI specification revision into specification
13+
* dmidecode.c: Reworded IPMI specification revision into specification
914
version, as suggested in the IPMI specification itself.
1015
* dmidecode.c: Added a reference to the IPMI specification.
1116
* dmidecode.c: Show I2C address as hexadecimal.
1217
* dmidecode.c: Base address is a QWORD, not DWORD.
13-
* dmidecode.c: Decode some extra fields according to the IPMI
18+
* dmidecode.c: Decoded some extra fields according to the IPMI
1419
specification.
1520

1621
2003-03-06 Jean Delvare <[email protected]>

dmidecode.c

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3668,14 +3668,14 @@ static void dmi_decode(u8 *data, u16 ver)
36683668
dmi_memory_channel_devices(data[0x06], data+0x07, "\t\t\t");
36693669
break;
36703670

3671-
/*
3672-
* We use the word "Version" instead of "Revision", conforming to
3673-
* IPMI 1.5 specification. This specification isn't very clear
3674-
* regarding the I2C slave address. I couldn't understand wether
3675-
* or not we are supposed to shift it by one bit to the right, so
3676-
* I leave it untouched. Beware it might be wrong.
3677-
*/
36783671
case 38: /* 3.3.39 IPMI Device Information */
3672+
/*
3673+
* We use the word "Version" instead of "Revision", conforming to
3674+
* the IPMI 1.5 specification. This specification isn't very clear
3675+
* regarding the I2C slave address. I couldn't understand wether
3676+
* or not we are supposed to shift it by one bit to the right, so
3677+
* I leave it untouched. Beware it might be wrong.
3678+
*/
36793679
printf("\tIPMI Device Information\n");
36803680
if(h->length<0x10) break;
36813681
printf("\t\tInterface Type: %s\n",
@@ -3697,10 +3697,23 @@ static void dmi_decode(u8 *data, u16 ver)
36973697
break;
36983698
}
36993699
printf("\t\tBase Address: 0x%08X%08X (%s)\n",
3700-
QWORD(data+0x08).h, (QWORD(data+0x08).l&~1)|((data[0x10]>>5)&1),
3700+
QWORD(data+0x08).h,
3701+
(QWORD(data+0x08).l&~1)|((data[0x10]>>5)&1),
37013702
QWORD(data+0x08).l&1?"I/O":"Memory-mapped");
37023703
printf("\t\tRegister Spacing: %s\n",
37033704
dmi_ipmi_register_spacing(data[0x10]>>6));
3705+
if(data[0x10]&(1<<3))
3706+
{
3707+
printf("\t\tInterrupt Polarity: %s\n",
3708+
data[0x10]&(1<<1)?"Active High":"Active Low");
3709+
printf("\t\tInterrupt Trigger Mode: %s\n",
3710+
data[0x10]&(1<<0)?"Level":"Edge");
3711+
}
3712+
if(data[0x11]!=0x00)
3713+
{
3714+
printf("\t\tInterrupt Number: %x\n",
3715+
data[0x11]);
3716+
}
37043717
break;
37053718

37063719
case 39: /* 3.3.40 System Power Supply */

0 commit comments

Comments
 (0)