/* =====================================================␊ |
Firmware Volume Description (Apple Specific - Type 128)␊ |
======================================================= */␊ |
#define kSMBFirmwareVolumeFirmwareFeaturesKey "SMfirmwarefeatures" //␊ |
#define kSMBFirmwareVolumeFirmwareFeaturesMaskKey "SMfirmwarefeaturesmask" //␊ |
␊ |
/* =========================================␊ |
Memory SPD Data (Apple Specific - Type 130)␊ |
|
␊ |
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;␊ |
|
␊ |
␉// 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␊ |
|
//#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"␊ |
|
␉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␊ |
␉{␊ |
|
============================================= */␊ |
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;␊ |
}␊ |
␊ |