Index: branches/ErmaC/Enoch/i386/libsaio/smbios.c
===================================================================
--- branches/ErmaC/Enoch/i386/libsaio/smbios.c (revision 2900)
+++ branches/ErmaC/Enoch/i386/libsaio/smbios.c (revision 2901)
@@ -107,6 +107,8 @@
/* =====================================================
Firmware Volume Description (Apple Specific - Type 128)
======================================================= */
+#define kSMBFirmwareVolumeFirmwareFeaturesKey "SMfirmwarefeatures" //
+#define kSMBFirmwareVolumeFirmwareFeaturesMaskKey "SMfirmwarefeaturesmask" //
/* =========================================
Memory SPD Data (Apple Specific - Type 130)
@@ -198,8 +200,19 @@
defaultChassis_t defaultChassis;
+/* =====================================================
+ Firmware Volume Description (Apple Specific - Type 128)
+ ===================================================== */
typedef struct
{
+ uint32_t firmwareFeatures;
+ uint32_t firmwareFeaturesMask;
+} defaultFirmwareVolume_t;
+
+defaultFirmwareVolume_t defaultFirmwareVolume;
+
+typedef struct
+{
uint8_t type;
SMBValueType valueType;
uint8_t fieldOffset;
@@ -380,6 +393,10 @@
// Firmware Volume Description (Apple Specific - Type 128)
// kSMBTypeFirmwareVolume
+ {kSMBTypeFirmwareVolume, kSMBDWord, getFieldOffset(SMBFirmwareVolume, FirmwareFeatures),
+ kSMBFirmwareVolumeFirmwareFeaturesKey, NULL, (char **)&defaultFirmwareVolume.firmwareFeatures},
+ {kSMBTypeFirmwareVolume, kSMBDWord, getFieldOffset(SMBFirmwareVolume, FirmwareFeaturesMask),
+ kSMBFirmwareVolumeFirmwareFeaturesMaskKey, NULL, (char **)&defaultFirmwareVolume.firmwareFeaturesMask},
// Memory SPD Data (Apple Specific - Type 130)
// kSMBTypeMemorySPD
@@ -436,7 +453,10 @@
//#define kDefaultBoardProcessorType "11" // 0xB
#define kDefaultSystemVersion "1.0"
#define kDefaultBIOSRelease 256 // 256 = 0x0100 -> swap bytes: 0x0001 -> Release: 0.1 (see SMBIOS spec. table Type 0)
+#define kDefaultFirmwareFeatures 0xE907F537; //unknown - use oem SMBIOS value to be default
+#define kDefaultFirmwareFeaturesMask 0xFFFFFFFF; //unknown - use oem SMBIOS value to be default
+
//=========== Mac mini ===========
#define kDefaultMacMiniFamily "Napa Mac" // Macmini2,1 family = "Napa Mac" not "Mac mini"
#define kDefaultMacMini "Macmini2,1"
@@ -545,6 +565,11 @@
defaultChassis.assetTag = kDefaultAssetTag;
defaultChassis.skuNumber = kDefaultSkuNumber;
+ // set default firmware features and mask values
+ // those values will be used whenever no valid key values are found in smbios.plist
+ defaultFirmwareVolume.firmwareFeatures = kDefaultFirmwareFeatures;
+ defaultFirmwareVolume.firmwareFeaturesMask = kDefaultFirmwareFeaturesMask;
+
// if (platformCPUFeature(CPU_FEATURE_MOBILE)) Bungo: doesn't recognise correctly, need fixing
if (PlatformType == 2) // this works but it's a substitute
{
@@ -902,6 +927,28 @@
============================================= */
void addSMBFirmwareVolume(SMBStructPtrs *structPtr)
{
+ SMBFirmwareVolume *p = (SMBFirmwareVolume *)structPtr->new;
+
+ // initialise new table
+ bzero(p, sizeof(SMBFirmwareVolume));
+
+ // common rules
+ p->header.type = kSMBTypeFirmwareVolume;
+ p->header.length = sizeof(SMBFirmwareVolume);
+ p->header.handle = 0x8000;
+
+ setSMBValue(structPtr, numOfSetters - 4 , (returnType *)(void *)&(p->FirmwareFeatures));
+ setSMBValue(structPtr, numOfSetters - 3 , (returnType *)(void *)&(p->FirmwareFeaturesMask));
+
+ p->RegionCount = 1;
+ p->RegionType[0] = FW_REGION_MAIN;
+ p->FlashMap[0].StartAddress = 0xFFE00000;
+ p->FlashMap[0].EndAddress = 0xFFEFFFFF;
+
+ structPtr->new = (SMBStructHeader *)((uint8_t *)structPtr->new + sizeof(SMBFirmwareVolume) + 2);
+ tableLength += sizeof(SMBFirmwareVolume) + 2;
+ structureCount++;
+
return;
}
Index: branches/ErmaC/Enoch/package/smbios.plist
===================================================================
--- branches/ErmaC/Enoch/package/smbios.plist (revision 2900)
+++ branches/ErmaC/Enoch/package/smbios.plist (revision 2901)
@@ -75,6 +75,10 @@
SMmempart_4
0x48594D503131325336344350362D59352020
+ SMfirmwarefeatures
+ 0xE907F537
+ SMfirmwarefeaturesmask
+ 0xFFFFFFFF