charger: Add support for non-standard charging interfaces

 * Certain devices may have multiple battery devices or broken uevent
   reporting when a power supply is disconnected.
 * Add a new BOARD_BATTERY_DEVICE_NAME to force which device to monitor.

Change-Id: I3045bf17a4d962cc5f0e6a951472916412ac0d0d
charger: allow custom charger res

Example: BOARD_CHARGER_RES := device/samsung/galaxys2/res/charger

Change-Id: I4cf359974475c06d219cb92c38efa2b8223ae367
charger: suspend when not animating

Suspend will save power (i.e. charge faster) by disabling unneeded
devices such as the touch-sensitive keys on galaxysmtd.

Change-Id: I9b2eae1af2e9687546af9dcb10ce1fcb4c1e1ed6
charger: make default to not suspend in charge mode

  * http://r.cyanogenmod.com/#/c/19760 made the device suspend in
    charge mode when the animation was not displayed. Previously
    the device never suspended.
  * The above change broke charging mode on some (maybe many?) devices
    that do not properly handle suspending in charge mode.
  * This change brings back the more compatible default behavior of
    not suspending in charge mode and introduces a new BoardConfig.mk
    variable called BOARD_ALLOW_SUSPEND_IN_CHARGER that, when set to
    true, will suspend in charge mode.
  * This allows devices that support suspend in charger to opt-in
    instead of having to opt-out previously working devices.

Change-Id: I5a480e34ba5946a52e371ac79a965ecee5471c5a
charger: allow home button to wake

On certain devices (e.g. galaxysmtd), the user expects the physical
home button to be able to wake the device as well as the power button.

Change-Id: If764f36aba3810dfa5233af8baf0a740b04889e0
charger: do not suspend when handling home

When using Google's suspend implementation, home press should also wake
the device from suspend

Change-Id: I51f3e45c5cb418b0b3718e7223a1336876379043
Fix gr_text() syntax until minui gets updated

Change-Id: Ie6d72013944d7ce6d2c0a244862b464e513fa389
charger: Draw battery percentage over charger screen

Let user know the exact battery capacity.

Change-Id: Ie2abaeee0e443cd2a730780488287ad4d9ea1e9a
charger: support alarm in power off charging

To implement this feature need to let the phone reboot some time
earlier than the alarm time.

CRs-fixed: 540039
Change-Id: I5001631114994f5bc29313bbd52395c43f7c4810
charger: modify usb unplugged shutdown time in power off charging

Previous value for this feature is 10 secs which is too long,
and now change it to 2 secs.

CRs-Fixed: 535857
Change-Id: If1d74a25e00f897833092262c49a9a07d18c0674
charger: press power key to turn off charging animation

When charging animation is on, press power key to turn it off.

CRs-Fixed: 535893
Change-Id: Iaac536351426a09cb23c6d77ff3229a8901aaf70
charger: Fix arguments to gr_text

 * CWM's minui is oldschool, so comment this out for now.

Change-Id: If88d2df820b164fbb02ce6c40cba42de7880e86a
charger: Allow home key on newer devices to wake device

 * On newer devices, the home key button is usually mapped
   to KEY_HOMEPAGE. Allow it to wake the device.

Change-Id: I6423e4c6fb7992c77dc052a9f0aadae1fa8055dd
charger: Underp the backlight

 * Always disable the backlight before blanking, or derp is your life.

Change-Id: I225ff0e881cf781fa3e7054c2f6dfa02a6ab23f9

Conflicts:
	charger/charger.c
trimage charger images
adb: Fix backup fallback

 * Check for existence of binary first

Change-Id: I5c1884655ae031f51cb935221ae7870b016e259d

Conflicts:
	adb/backup_service.c
adb: Check sender's socket id when receiving packets.

handle_packet() in adb.c didn't check that when an A_WRTE packet is
received, the sender's local-id matches the socket's peer id.

This meant that a compromised adbd server could sent packets to
the host adb server, spoofing the identity of another connected
device if it could "guess" the right host socket id.

This patch gets rid of the issue by enforcing even more checks
to ensure that all packets comply with the description in
protocol.txt.

+ Fix a bug where closing a local socket associated with a
  remote one would always send an A_CLSE(0, remote-id, "")
  message, though protocol.txt says that should only happen
  for failed opens.

  The issue was that local_socket_close() called
  remote_socket_close() after clearing the remote socket's
  'peer' field.

  The fix introduces a new asocket optional callback,
  named 'shutdown' that is called before that, and is
  used to send the A_CLSE() message with the right ID
  in remote_socket_shutdown().

  Also add some code in handle_packet() to detect
  invalid close commands.

Change-Id: I9098bc8c6e81f8809334b060e5dca4fc92e6fbc9
adb: configure /system file permission with fs_config

adbd changes the permissions of files uploaded by copying
owner's permission to group and other. This causes kernel
load failure if any changes are made to kernel modules
followed by ``adb push'' or ``adb sync'' because file mode
644 would become 666.

The change uses fs_config to get the target mode of files.

In addition, the SELinux file label is set incorrectly
on synced files. Set the label properly.

Change-Id: I354db848f39adfbf189d7e8d3b028e8d763c772f
Signed-off-by: Liang Cheng <licheng@nvidia.com>
Bug: 12264775
adb: do not chown/chmod files pushed to sdcard

Commit "adb: configure /system file permission with fs_config" can cause
'Operation not permitted' errors when pushing files to sdcard because
chown and chmod are not allowed. Omit chown and chmod operations if the
destination directory has sdcard in the group name.

Change-Id: I05767a2699b152392b4ff1606194826285cbcb1e
adbd: Don't close/reopen FFS ep0 on disconnect

In case of bulk read/write failure or disconnect, transport_usb
calls usb_ffs_kick in order to force the daemon to re-open the
FunctionFS ep files as a way to soft restart the kernel driver.

However, there's no reason to always close the ep0 file, as it
would need to be reopened and the descriptors rewritten--this
is unnecessary, especially in the simple/frequent case of cable
disconnect, and causes the kernel driver to unbind and bind *all*
of the function drivers. This is causing USB Chapter 9 tests to fail.

Thus, try to reuse the same ep0 file handle across reconnects. In
case there is a failure, the ep1/ep2 opens would fail and all the
file handles get dropped. For the adb root case, the entire daemon
gets restarted anyway.

CRs-fixed: 571846
Change-Id: I0840085c52a0795dcb2d751c39aa4a436c039ee2