msm_serial_hs: Improve UART Shutdown path

For uart port close operation, serial core calls msm_hs_stop_rx_locked()
which sends discard flush request to ADM driver after changing rx.flush
state machine from FLUSH_NONE to FLUSH_STOP value. Next serial core
calls msm_hs_shutdown()and it waits for discard flush completion with
rx.flush state machine to be set as FLUSH_SHUTDOWN to complete uart
port close operation. With this approach, transfer termination is not
known by UART Core which may still allow UART core to make CRCI request
with ADM Core if new data is being received from remote uart. Hence
invoke Force RxStale from msm_hs_stop_rx_locked() which informs UART
core to terminate current Rx transfer and do not make any new CRCI
request with ADM core for any new incoming data. On receiving RxStale
interrupt, it sends discard flush request to ADM driver to terminate
transfer with ADM hardware.

This new programming sequence is required to get both UART and ADM
hardwares in-sync for termination of transfer.

CRs-Fixed: 475230
Change-Id: I802a456294d4fd2fa51a5f4e918a4f4f22bc5ee3
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
msm_serial_hs: Use RFR GPIO to communicate remote uart
msm_serial_hs: let bluesleep control uart clock

Change-Id: Ic2664734504085378099c14fe428cf8db2b23725
rpm-regulator: unprepare the clock when disabling it

This commit make massive locking changes which cause kernel
panics (scheduling in an atomic context) and a small change
to actually unprepare the tcxo clock.  Manually apply the
small change.

commit d86ca8a2805349c75b84b27f42c4644caf9a8647
Author: David Collins <collinsd@codeaurora.org>
Date:   Wed Oct 17 17:02:11 2012 -0700

    msm: rpm-regulator: Replace spinlocks with mutex locks

    All calls of rpm_vreg_set_voltage() now take place in process
    context.  Clock driver code on all targets has been written so
    that atomic regulator control is no longer needed.

    Refactor the rpm-regulator driver so that a mutex locks are used
    in place of a spinlocks for sleep-selectable regulators which are
    controlled via the rpm_vreg_set_voltage() function.

    At the same time, move clk_prepare() and clk_unprepare calls in
    the TCXO workaround so that these functions are correctly called
    during each workaround invocation.  This is needed so that TCXO
    isn't kept on forever after a single clk_prepare() call.

    Change-Id: I07caed041dac6da073a0644271df2227b6c5a96e
    Signed-off-by: David Collins <collinsd@codeaurora.org>