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