Contribute
Register

Need Help With Battery patch for my laptop please

Status
Not open for further replies.
i notice that the dsdt use hex(i hope I'm correct) so in the _BIF 0x0FA=4000 with is what is displayed as my max cap. but the battery is actually 4400 so i changed it to 0x10CC=4300(just to b safe)....is the change i did a bad thing?
 
i notice that the dsdt use hex(i hope I'm correct) so in the _BIF 0x0FA=4000 with is what is displayed as my max cap. but the battery is actually 4400 so i changed it to 0x10CC=4300(just to b safe)....is the change i did a bad thing?

0xFA is 250. 4000 is 0xFA0.

Usually the data is read from the EC. The data you might see in a Package declared inside the DSDT is just a default.
 
so it all goes back to Embed Control. is that where the problem is since it could not know that the battery is actually 4400mah......would that mean that once it reached 4000 it stopped charging the battery?
 
so it all goes back to Embed Control. is that where the problem is since it could not know that the battery is actually 4400mah......would that mean that once it reached 4000 it stopped charging the battery?

DSDT does not really control charging of the battery. The EC itself does (it is a separate microcontroller on the motherboard). DSDT just communicates with the EC and serves as a conduit for the information about battery status between the EC and the OS via ACPI standards.
 
oh ok i stumbled into a stop i found 3 ex fields....one of them says system memory so I'm guessing i can just ignore that one since it looks like it relates to system mem and the field is called eram the other 2 are ECPR and ECRM.

ECPR:
OperationRegion (ECPR, EmbeddedControl, Zero, 0xFF) Field (ECPR, ByteAcc, Lock, Preserve)
{
}


Method (_Q11, 0, NotSerialized) // _Qxx: EC Query
{
Store (One, Index (^^^WMID.FEBC, Zero))
Store (HTBN, Index (^^^WMID.FEBC, One))
Notify (WMID, 0xBC)
If (LGreaterEqual (OSYS, 0x07D6))
{
If (LEqual (^^^IGPU.OBV, 0xFF))
{
Notify (^^^PEG0.PEGP.DD01, 0x87)
}
Else
{
Notify (^^^IGPU.DD02, 0x87)
}
}
(quick look)

and ECRM:
OperationRegion (ECRM, EmbeddedControl, Zero, 0xFF)
Field (ECRM, ByteAcc, Lock, Preserve)
{
Offset (0x5D),
ERIB, 16,
ERBD, 8,
Offset (0xAA),
Offset (0xAB),
Offset (0xAD),
, 4,
Offset (0xAE),
PTVL, 4,
Offset (0xB0),
Offset (0xB1),
Offset (0xB2),
Offset (0xB3),
Offset (0xB4),
Offset (0xB5),
Offset (0xBC),
Offset (0xBD)
}


Mutex (FAMX, 0x00)
Method (FANG, 1, NotSerialized)
{
Acquire (FAMX, 0xFFFF)
Store (Arg0, ERIB)
Store (ERBD, Local0)
Release (FAMX)
Return (Local0)
}
if I'm correct isn't the ecru the one I'm looking for?
 
oh ok i stumbled into a stop i found 3 ex fields....one of them says system memory so I'm guessing i can just ignore that one since it looks like it relates to system mem and the field is called eram the other 2 are ECPR and ECRM.

ECPR:
OperationRegion (ECPR, EmbeddedControl, Zero, 0xFF) Field (ECPR, ByteAcc, Lock, Preserve)
{
}


Method (_Q11, 0, NotSerialized) // _Qxx: EC Query
{
Store (One, Index (^^^WMID.FEBC, Zero))
Store (HTBN, Index (^^^WMID.FEBC, One))
Notify (WMID, 0xBC)
If (LGreaterEqual (OSYS, 0x07D6))
{
If (LEqual (^^^IGPU.OBV, 0xFF))
{
Notify (^^^PEG0.PEGP.DD01, 0x87)
}
Else
{
Notify (^^^IGPU.DD02, 0x87)
}
}
(quick look)

and ECRM:
OperationRegion (ECRM, EmbeddedControl, Zero, 0xFF)
Field (ECRM, ByteAcc, Lock, Preserve)
{
Offset (0x5D),
ERIB, 16,
ERBD, 8,
Offset (0xAA),
Offset (0xAB),
Offset (0xAD),
, 4,
Offset (0xAE),
PTVL, 4,
Offset (0xB0),
Offset (0xB1),
Offset (0xB2),
Offset (0xB3),
Offset (0xB4),
Offset (0xB5),
Offset (0xBC),
Offset (0xBD)
}


Mutex (FAMX, 0x00)
Method (FANG, 1, NotSerialized)
{
Acquire (FAMX, 0xFFFF)
Store (Arg0, ERIB)
Store (ERBD, Local0)
Release (FAMX)
Return (Local0)
}
if I'm correct isn't the ecru the one I'm looking for?

You should probably post your files and a description of what you're trying to accomplish.
 
Im trying to make my battery accurate. Ive been at this for about a week and i can't figure this out.....before the battery status would be around 17-30% and the laptop just shutoff meaning it was not reading the battery correctly...then after applying the os check fix it would go down all the way to zero but the laptop would run for another 10-20minutes. from what i understand theres a communication problem.

Please HELP!!
 

Attachments

  • current dsdt.aml
    46 KB · Views: 82
Im trying to make my battery accurate. Ive been at this for about a week and i can't figure this out.....before the battery status would be around 17-30% and the laptop just shutoff meaning it was not reading the battery correctly...then after applying the os check fix it would go down all the way to zero but the laptop would run for another 10-20minutes. from what i understand theres a communication problem.

Please HELP!!

No one can tell by just looking at the code in your DSDT.

You need to test it/debug it, etc. There are some tools you can use:
- debug version of ACPIBatteryManager.kext: outputs results of ACPI calls to system.log
- ACPIDebug.kext: allows you to output logs/variables/etc from DSDT code to system.log
 
one question....where should I add the
\RMDT.PUSH in the dsdt to give the outputs needed?
 
one question....where should I add the
\RMDT.PUSH in the dsdt to give the outputs needed?

You place the calls to \RMDT.PUSH (or P1, P2, P3, etc) where you want to output a trace or get the value of a particular variable.
 
Status
Not open for further replies.
Back
Top