bool GmaSensors::willReadSensorValue(FakeSMCSensor *sensor, float *outValue) { if (sensor->getGroup() == kFakeSMCTemperatureSensor) { short value = 0; if (mmio_base) { OUTVID(TIC1, 3); // if ((INVID16(TSC1) & (1<<15)) && !(INVID16(TSC1) & (1<<8)))//enabled and ready for (int i=0; i<1000; i++) { //attempts to ready if (INVID16(TSS1) & (1<<10)) //valid? break; IOSleep(10); } value = INVID8(TR1); } *outValue = (float)(150 - value); } return true; }
float X3100monitor::getSensorValue(FakeSMCSensor *sensor) { if (sensor->getGroup() == kFakeSMCTemperatureSensor) { short value = 0; if (mmio_base) { OUTVID(TIC1, 3); // if ((INVID16(TSC1) & (1<<15)) && !(INVID16(TSC1) & (1<<8)))//enabled and ready for (int i=0; i<1000; i++) { //attempts to ready if (INVID16(TSS1) & (1<<10)) //valid? break; IOSleep(10); } value = INVID8(TR1); } return 150 - value; } return 0; }
IOReturn X3100monitor::callPlatformFunction(const OSSymbol *functionName, bool waitForFunction, void *param1, void *param2, void *param3, void *param4 ) { UInt16 t; if (functionName->isEqualTo(kFakeSMCGetValueCallback)) { const char* name = (const char*)param1; void* data = param2; if (name && data) { if (OSNumber *number = OSDynamicCast(OSNumber, sensors->getObject(name))) { UInt32 index = number->unsigned16BitValue(); if (index != numCard) { return kIOReturnBadArgument; } } short value; if (mmio_base) { OUTVID(TIC1, 3); // if ((INVID16(TSC1) & (1<<15)) && !(INVID16(TSC1) & (1<<8)))//enabled and ready for (int i=0; i<1000; i++) { //attempts to ready if (INVID16(TSS1) & (1<<10)) //valid? break; IOSleep(10); } value = INVID8(TR1); } t = 140 - value; bcopy(&t, data, 2); return kIOReturnSuccess; } //DebugLog("bad argument key name or data"); return kIOReturnBadArgument; } return super::callPlatformFunction(functionName, waitForFunction, param1, param2, param3, param4); }