Keresés

Új hozzászólás Aktív témák

  • Fiery

    veterán

    válasz Geller72 #291 üzenetére

    A regisztereket alaplaponkent kell kalibralni. Csak epp egy-egy ilyen kalibracio eleg hosszadalmas, bonyolult es korulmenyes is lehet. Izelitoul itt az Asus Maximuse:

    Procedure MBSPEC_ASUS_MAXIMUS_EXTREME(Var sir:SensorInfoRec);

    // Asus ACPI Verified

    Var
    i,i_47,i_4b,i_5d,f1div,f2div,f3div : Integer;

    Begin
    With sir Do
    Begin
    MoboSupport:='Asus Maximus Extreme / Formula';

    //-------------------------------------------------
    // Chip1 is W83627DHG at ISA 290h
    //-------------------------------------------------

    Temp_Aux:=0;

    Fan_CPU :=f2;
    Fan_Chassis1:=f3;
    Fan_Chassis2:=Fan_Aux;
    Fan_Chassis :=0;
    Fan_Power :=0;
    Fan_System :=0;
    Fan_Aux :=0;

    Volt_P12V :=Volt_CPUCore1*3.5;
    Volt_CPUIO :=ReadLM78Reg($23)*0.016;
    Volt_P5V :=ReadLM78Reg($25)*0.016*1.5;
    Volt_CPUCore1:=0;
    Volt_M12V :=0;
    Volt_M5V :=0;
    Volt_VBAT :=0;

    //-------------------------------------------------
    // Chip2 is W83791D at SMBus 2Ch
    //-------------------------------------------------

    If SMBus_Port(0)<>0 Then
    Begin
    i:=SMBus_ReadByteData(0,$2C,$27);
    If i<>$D0 Then
    Begin
    If i>127 Then i:=-256+i;
    Temp_Undefined[3]:=i; // OPT3
    End;

    i:=SMBus_ReadByteData(0,$2C,$C0);
    If i<>$D0 Then
    Begin
    If i>127 Then i:=-256+i;
    Temp_Undefined[1]:=i; // OPT1
    End;

    i:=SMBus_ReadByteData(0,$2C,$C8);
    If i<>$D0 Then
    Begin
    If i>127 Then i:=-256+i;
    Temp_Undefined[2]:=i; // OPT2
    End;

    i_47:=SMBus_ReadByteData(0,$2C,$47);
    i_4b:=SMBus_ReadByteData(0,$2C,$4B);
    i_5d:=SMBus_ReadByteData(0,$2C,$5D);

    f1div:=1 Shl ((i_47 Shr 4 And 3) Or (i_5d Shr 3 And 4));
    f2div:=1 Shl ((i_47 Shr 6 And 3) Or (i_5d Shr 4 And 4));
    f3div:=1 Shl ((i_4b Shr 6 And 3) Or (i_5d Shr 5 And 4));

    i:=SMBus_ReadByteData(0,$2C,$28);
    If (i<>0) And (i<>255) And (f1div<>0) Then Fan_3:=Round(1350000/(i*f1div));

    i:=SMBus_ReadByteData(0,$2C,$29);
    If (i<>0) And (i<>255) And (f2div<>0) Then Fan_1:=Round(1350000/(i*f2div));

    i:=SMBus_ReadByteData(0,$2C,$2A);
    If (i<>0) And (i<>255) And (f3div<>0) Then Fan_2:=Round(1350000/(i*f3div));

    i:=SMBus_ReadByteData(0,$2C,$20);
    If i<>255 Then Volt_SBCore:=i*0.016;

    i:=SMBus_ReadByteData(0,$2C,$21);
    If i<>255 Then Volt_SBPLL:=i*0.016;

    i:=SMBus_ReadByteData(0,$2C,$22);
    If i<>255 Then Volt_FSBVTT:=i*0.016;

    i:=SMBus_ReadByteData(0,$2C,$24);
    If i<>255 Then Volt_DIMMVTT:=i*0.016;

    i:=SMBus_ReadByteData(0,$2C,$26);
    If i<>255 Then Volt_NBCore:=i*0.016;

    i:=SMBus_ReadByteData(0,$2C,$B2);
    If i<>255 Then Volt_DIMM:=i*0.016;

    //-------------------------------------------------
    // Chip3 is ADT7475 at SMBus 2Eh
    //-------------------------------------------------

    smbus_lm85:=0;
    smdev_lm85:=$2E;

    i:=SMBus_ReadByteData(smbus_lm85,smdev_lm85,$25);
    If i<>255 Then
    Begin
    i:=i-64;
    If i<127 Then Temp_SB:=i;
    End;

    i:=SMBus_ReadByteData(smbus_lm85,smdev_lm85,$27);
    If i<>255 Then
    Begin
    i:=i-64;
    If i<127 Then Temp_NB:=i;
    End;

    Fan_Chassis3:=LM85_Fan(0);

    //-------------------------------------------------
    // Chip4 is ADP3228 at SMBus 20h
    //-------------------------------------------------

    i:=Integer(SMBus_ReadByteData(0,$20,$51))+
    Integer(SMBus_ReadByteData(0,$20,$52))*256;

    If (i>$F0) And (i<$FFFA) Then Fan_Power:=((90000*60) Div i);

    SensorMethod:=Format('ISA %xh, SMB %.2xh/%.2xh/%.2xh',[base_lm78,$2C,$2E,$20]);
    SensorType:=SENSOR_ASUS_MAXIMUS;
    End;
    End;
    End;

Új hozzászólás Aktív témák