i'm not worrying and relaxing. :-)
how driver working:
1. when system ask for power status driver ask battery IC for voltage.
2. this battery IC return some ADC value (this is voltage value, but indirect, in some relation measurement units)
3. after than driver try to calculate "compensated" value - it did not have current that device consume, but try to understand wassup (phone on, wifi on, gps on) and compensate this value.
4. after that driver calculate average ADC value (sum last 15 values and divide it by 15).
5. after that driver compare this average ADC against constant values of ADC and return real battery % value.
so, i patch step 4: right now driver use 64 or 256 (see post#1) values to calculate average ADC (15 is not enough, you'll see a lot of % changing up and down).
also i patch step 5: instead of fixing compare and return fixed 100/80/60/40/20... - i substract by 100 and return in 1% step values.
Possible problems with power drain
seems, that in some firmware's or some OS builds - system/some programs/i dunno who - perform some recalculations when battery % is changed.
because in this patched driver % really changed very often - this can happen massive power drain if case of massive recalculations.
When have some free time i can do following:
1. Increase sum of average values from 64/256 to much more value, like 1024/2048 - up to 65535.
2. Decrease accuracy and use 5% instead of 1%.
both steps will cause to slow % changing (and hit accuracy of coz) and _CAN_ (but not sure, that WILL) reduce power drain.
sorry, i did not have i910 and cannot test or see wassup.
suggestions are welcome