[Nexus 7 Q&A, Help & Troubleshooting] bftb0:
I took a different tactic to try and answer your question - I did a recursive (file) "find" operation in /sys to see if there were any files with names matching "*urrent*" in there. (Stock 4.2.2/JDQ39 device w/stock kernel) I only found one in the module group for the bq27541 driver:

/sys/module/bq27541_battery/parameters/battery_current

but both files in this folder ("battery_current" and "battery_remaining_capacity") always seem to have a "0" value in them.**

Alternately the files in the folder

/sys/devices/platform/tegra-i2c.4/i2c-4/4-0055/power_supply/battery/ , namely:

capacity

health

present

status

technology

temp

type

voltage_now

all seem to contain reasonable "live" values - but notice nothing about current.

The data sheet for the TI BQ27541 seems to suggest that the battery controller can indeed return the cell current. Note this is not the charger current - it is only the current entering/leaving the battery. So I guess I could conclude that the bq27541 driver does not bother to publish the value into sysfs - well, at least for the stock kernel anyway. (Note bq27541_get_psp() does nothing with POWER_SUPPLY_PROP_CURRENT_NOW)

OTOH, Metallice's mr1 Git source for bq27541_battery.c does ask for the value via i2c (blame-annotated source credit to Entropy512/Andrew Dodd in Oct '12). So there are hints that at least his kernel (possibly others?) at least requests the value from the TI battery charge controller (aka "fuel gage").

The other half of the equation is how the userland apps know where to go looking for for this current value in a portable way across a lot of different Android devices. Perhaps through a standard Android API?

I just decompiled the "Current Widget" app, and it appears to have a look at

const-string v2, "/sys/class/power_supply/ab8500_fg/current_now"
const-string v2, "/sys/class/power_supply/battery/batt_chg_current"
const-string v2, "/sys/class/power_supply/battery/batt_current"
const-string v2, "/sys/class/power_supply/battery/batt_current_adc"
const-string v2, "/sys/class/power_supply/battery/batt_current_now"
const-string v2, "/sys/class/power_supply/battery/BatteryAverageCurrent"
const-string v2, "/sys/class/power_supply/battery/charger_current"
const-string v2, "/sys/class/power_supply/battery/current_avg"
const-string v2, "/sys/class/power_supply/battery/current_now"
const-string v2, "/sys/class/power_supply/bq27520/current_now"
const-string v2, "/sys/class/power_supply/max17042-0/current_now"
const-string v2, "/sys/class/power_supply/max170xx_battery/current_now"
const-string v2, "/sys/devices/platform/cpcap_battery/power_supply/usb/current_now"
const-string v2, "/sys/devices/platform/ds2784-battery/getcurrent"
const-string v2, "/sys/devices/platform/i2c-adapter/i2c-0/0-0036/power_supply/battery/current_now"
const-string v2, "/sys/devices/platform/i2c-adapter/i2c-0/0-0036/power_supply/ds2746-battery/current_now"
const-string v2, "/sys/EcControl/BatCurrent"

... a lot of different locations - some of which are generic (/sys/class/power_supply/battery/*) and some that seem non-portable (device specific).

With the stock 4.2.2 kernel, /sys/class/power_supply/battery is a symlink to

/sys/devices/platform/tegra-i2c.4/i2c-4/4-0055/power_supply/battery

... which was previously mentioned above.

The last bit of this puzzle (for me) was understanding how the sysfs symlink gets registered by the driver - and then associated with the i2c sysfs entries. I guess (for now) I have sort of failed at that task. I took a look at Metallice's github, but couldn't figure out the sysfs registration part of it. But I surmise that if someone went to the trouble of adding the code to the driver to get the value from the TI bq27541, they probably also went to the trouble of making the data available somehow.

It seems like if you can find a kernel that has a sysfs (/sys) entry of

/sys/devices/platform/tegra-i2c.4/i2c-4/4-0055/power_supply/battery/current_now

you should probably be able to find a monitoring app.

Hope that helps.

** the stock kernel sources (for bq27541_battery.c) indeed declares these two as module parameters - but afaik, the kernel driver never writes any values here.