Finally, after reading lm_sensors Asus article, I was able to craft right voltage sensor formulas for my Asus P5E3 motherboard that give the same values as BIOS.
First, need to decompile description tables (iasl package had to be installed):
# cat /proc/acpi/dsdt > dsdt.bin # iasl -d dsdt.bin
Deciphering all ACPI magic that is written to dsdt.dsl is not very easy. I was looking for RVLT function that gives the formula for voltage:
Method (RVLT, 1, NotSerialized) { And (Arg0, 0xFFFF, Local0) Store (VGET (Local0), Local1) Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), Zero)), Local2) Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), One)), Local3) Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), 0x02)), Local4) Multiply (Local1, Add (Local2, Local3), Local5) Divide (Local5, Local3, , Local5) Add (Local5, Local4, Local5) Return (Local5) }
Translating to normal language it does approximately the following:
Local1 = VGET(Local0); Local2 = VPAR[Local0][0]; Local3 = VPAR[Local0][1]; Local4 = VPAR[Local0][2]; return Local1 * (Local2 + Local3) / Local3 + Local4;
To find out Local parameters for each sensors, need to look at VPAR definition:
Name (VPAR, Package (0x04) { Package (0x03) { Zero, One, Zero }, Package (0x03) { 0x22, 0x22, Zero }, Package (0x03) { 0x14, 0x0A, Zero }, Package (0x03) { 0x3C, 0x0A, Zero } })
Comparing this to order of data in other places of tables (VCore, +3.3V, +12V, +5V) one can see that right coefficients for +12V is 60/10 and for +5V is 20/10.
Resulting config is here.