You can also reverse engeneer the firmware if you like, but as a matter of fact, it always worked reliable with windows laptops and not one single time with linux for me (open for suggestions of stable hw). And I am not a kernel dev, but I am pretty sure drivers are in general involved with waking up and sleeping as well. There are just lots of things, that can go wrong there. One small bug somewhere can result in blocking the hibernation => result is a drained battery.
reply