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>
monarudo-display: panel_power: order of operations based on m7

The M7 display has basically the same set of operations, but they
are performed in a slightly different order with different sleep
values.

Move code around and change the sleeps to match how the M7 turns
the panel power on and off.
monarudo-display: initialize the writeback devices properly

This is taken from the M7 kernel.
monarudo-display: do display_on like the m7 instead of our hacky way

Conflicts:
	arch/arm/mach-msm/board-monarudo-display.c

Conflicts:
	arch/arm/mach-msm/board-monarudo-display.c
msm_fb: remove the monarudo display_on hack

Now that the board-monarudo-display code is turning the display on
correctly, we no longer need these changes to the real fb code.
monarudo-display: change min pwm for backlight

The m7 kernel has some special code for backlights below 21.
To try to fix flickering issues, bump our min up to 21 so that
none of the special code (if it were required) would matter.

I don't think that this is really necessary, so we can try
reverting it later.
monarudo-display: improve the gpio / display handling

* Pull repeated code into a common helper function to make things
  clearer (backlight_gpio_enable)
* Add locking around the display operations.  This shouldn't be
  required but the performance impact is neglible and it can protect
  us if ther are race conditions turning on/off/backlight.
* Add a sleep of 1ms after turning the backlight gpio on/off.
  This matches the gpio on code of the M7

This combination of changes fixes a problem where the backlight
doesn't always get set after moving to the correct display_on
handling (previously it would occasionally end up set to a very
low backlight).

These changes and the related changes based on the M7 kernel may
or may not help improve the flickering issue.  It is too early
to tell.
Merge pull request #27 from crpalmer/flicker

Flicker