msm_otg: always allow forcing mode via /sys/kernel/debug/msm_otg/mode; prevent !ID host mode from going into suspended state because it gets "stuck"

Conflicts:
	drivers/usb/otg/msm_otg.c
msm_otg: hack to allow externally powered usb host mode

Force ID_A (host mode + charging) on detection of proprietary charger (Apple-compatible charger with voltage on D+/D-).
Unforce ID_A on PMIC: BSV clear (detection of loss of charger).
Simulate ACA since using ID_A for host mode (prevents host from getting stuck in suspended state).
Two test cases for detection of actual proprietary charger (extra debug output for now).
Remove charge current limit in host mode (ID_A).
Enable debugfs /sys/kernel/debug/msm_otg/mode for manual otg mode manipulation.
Always force requested mode (debugfs).

Note: ID pin detection not working (perhaps due to Slimport), hence the "alternate" triggers used to switch to/from host mode.

Conflicts:
	drivers/usb/otg/msm_otg.c
sched: fix rq->lock recursion

Enabling SCHED_HRTICK currently results in rq->lock recursion and a hard
hang at bootup.  Essentially try_to_wakeup() grabs rq->lock and tries
arming a hrtimer via hrtimer_restart(), which deep down tries waking up
ksoftirqd, which leads to a recursive call to try_to_wakeup() and thus
attempt to take rq->lock recursively!!

This is fixed by having scheduler queue hrtimer via
__hrtimer_start_range_ns() which avoids waking up ksoftirqd.

Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
Change-Id: I11a13be1d9db3a749614ccf3d4f5fb7bf6f18fa1
O3 Optimization