bool LPCSensors::addVoltageSensors(OSDictionary *configuration) { HWSensorsDebugLog("adding voltage sensors..."); for (int i = 0; i < voltageSensorsLimit(); i++) { char key[5]; snprintf(key, 5, "VIN%X", i); if (OSObject* node = configuration->getObject(key)) { if (!addSensorFromNode(node, kFakeSMCCategoryVoltage, kFakeSMCVoltageSensor, i)) { if (checkConfigurationNode(configuration, "GPU Core")) { if (gpuIndex < 0) gpuIndex = takeVacantGPUIndex(); else continue; snprintf(key, 5, KEY_FORMAT_GPU_VOLTAGE, gpuIndex); if (!addSensorFromConfigurationNode(node, key, TYPE_FP2E, TYPE_FPXX_SIZE, kFakeSMCVoltageSensor, i)) { releaseGPUIndex(gpuIndex); gpuIndex = -1; } } } } } return true; }
bool SuperIOPlugin::addVoltageSensors(OSDictionary *configuration) { HWSensorsDebugLog("adding voltage sensors..."); for (int i = 0; i < voltageSensorsLimit(); i++) { char key[5]; snprintf(key, 5, "VIN%X", i); if (OSObject* node = configuration->getObject(key)) { for (int j = 0; j < FakeSMCVolatgeCount; j++) { if (addSensorFromConfigurationNode(node, FakeSMCVolatge[j].name, FakeSMCVolatge[j].key, FakeSMCVolatge[j].type, FakeSMCVolatge[j].size, kFakeSMCVoltageSensor, i)) break; } if (gpuIndex < 0) gpuIndex = takeVacantGPUIndex(); if (gpuIndex >= 0) { snprintf(key, 5, KEY_FORMAT_GPU_VOLTAGE, gpuIndex); if (!addSensorFromConfigurationNode(node, "GPU", key, TYPE_FP2E, TYPE_FPXX_SIZE, kFakeSMCVoltageSensor, i)) { releaseGPUIndex(gpuIndex); gpuIndex = -1; } } } } return true; }
bool SuperIOMonitor::addVoltageSensors(OSDictionary *configuration) { HWSensorsDebugLog("adding voltage sensors..."); for (int i = 0; i < voltageSensorsLimit(); i++) { char key[5]; OSString* name; float reference = 0.0f; float gain = 0.0f; float offset = 0.0f; snprintf(key, 5, "VIN%X", i); if (process_sensor_entry(configuration->getObject(key), &name, &reference, &gain, &offset)) { if (name->isEqualTo("CPU")) { if (!addSensor(KEY_CPU_VOLTAGE, TYPE_FP2E, TYPE_FPXX_SIZE, kSuperIOVoltageSensor, i, reference, gain, offset)) HWSensorsWarningLog("can't add CPU voltage sensor"); } else if (name->isEqualTo("Memory")) { if (!addSensor(KEY_MEMORY_VOLTAGE, TYPE_FP2E, TYPE_FPXX_SIZE, kSuperIOVoltageSensor, i, reference, gain, offset)) HWSensorsWarningLog("can't add Memory voltage sensor"); } else if (name->isEqualTo("Main 12V")) { if (!addSensor(KEY_MAIN_12V_VOLTAGE, TYPE_FP4C, TYPE_FPXX_SIZE, kSuperIOVoltageSensor, i, reference, gain, offset)) HWSensorsWarningLog("can't add Main 12V voltage sensor"); } else if (name->isEqualTo("PCIe 12V")) { if (!addSensor(KEY_PCIE_12V_VOLTAGE, TYPE_FP4C, TYPE_FPXX_SIZE, kSuperIOVoltageSensor, i, reference, gain, offset)) HWSensorsWarningLog("can't add PCIe 12V voltage sensor"); } else if (name->isEqualTo("Main 5V")) { if (!addSensor(KEY_MAIN_5V_VOLTAGE, TYPE_FP4C, TYPE_FPXX_SIZE, kSuperIOVoltageSensor, i, reference, gain, offset)) HWSensorsWarningLog("can't add Main 5V voltage sensor"); } else if (name->isEqualTo("Standby 5V")) { if (!addSensor(KEY_STANDBY_5V_VOLTAGE, TYPE_FP4C, TYPE_FPXX_SIZE, kSuperIOVoltageSensor, i, reference, gain, offset)) HWSensorsWarningLog("can't add Standby 5V voltage sensor"); } else if (name->isEqualTo("Main 3V")) { if (!addSensor(KEY_MAIN_3V3_VOLTAGE, TYPE_FP2E, TYPE_FPXX_SIZE, kSuperIOVoltageSensor, i, reference, gain, offset)) HWSensorsWarningLog("can't add Main 3V voltage sensor"); } else if (name->isEqualTo("Auxiliary 3V")) { if (!addSensor(KEY_AUXILIARY_3V3V_VOLTAGE, TYPE_FP2E, TYPE_FPXX_SIZE, kSuperIOVoltageSensor, i, reference, gain, offset)) HWSensorsWarningLog("can't add Auxiliary 3V voltage sensor"); } else if (name->isEqualTo("Power/Battery")) { if (!addSensor(KEY_POWERBATTERY_VOLTAGE, TYPE_FP2E, TYPE_FPXX_SIZE, kSuperIOVoltageSensor, i, reference, gain, offset)) HWSensorsWarningLog("can't add Power/Battery voltage sensor"); } else if (name->isEqualTo("GPU")) { SInt8 index = getVacantGPUIndex(); if (index > -1) { snprintf(key, 5, KEY_FORMAT_GPU_VOLTAGE, index); if (!addSensor(key, TYPE_FP2E, TYPE_FPXX_SIZE, kSuperIOVoltageSensor, i, reference, gain, offset)) HWSensorsWarningLog("can't add GPU voltage sensor"); } else HWSensorsWarningLog("failed to obtain vacant GPU index"); } for (int j = 0; j <= 0xf; j++) { char caption[32]; snprintf(caption, 15, "Power Supply %X", j); if (name->isEqualTo(caption)) { snprintf(key, 5, KEY_FORMAT_POWERSUPPLY_VOLTAGE, j); if (!addSensor(key, TYPE_FP4C, TYPE_FPXX_SIZE, kSuperIOVoltageSensor, i, reference, gain, offset)) HWSensorsWarningLog("can't add PWR%X voltage sensor", j); } else { snprintf(caption, 17, "CPU VRM Supply %X", j); if (name->isEqualTo(caption)) { snprintf(key, 5, KEY_FORMAT_CPU_VRMSUPPLY_VOLTAGE, j); if (!addSensor(key, TYPE_FP4C, TYPE_FPXX_SIZE, kSuperIOVoltageSensor, i, reference, gain, offset)) HWSensorsWarningLog("can't add VRM%X voltage sensor", j); } } } } } return true; }