Subject: [PATCH v3 1/3] ARM: OMAP1: ams-delta: set up regulator over modem reset GPIO pin

From: [email-masked] (Tony Lindgren)
Date: Mon, 5 Mar 2012 11:27:43 -0800

* Janusz Krzysztofik <[email-masked]> [120305 07:35]:
> The Amstrad Delta on-board latch2 bit named MODEM_NRESET, now available
> as a GPIO pin AMS_DELTA_GPIO_PIN_NMODEM_RESET, is used to power up/down
> (bring into/out of a reset state) two distinct on-board devices
> simultaneously: the modem, and the voice codec. As a consequence, that
> bit is, or can be, manipulated concurrently by two drivers, or their
> platform provided hooks.
> 
> Instead of updating those drivers to use the gpiolib API as a new method
> of controlling the MODEM_NRESET pin state, like it was done to other
> drivers accessing latch2 pins, and still being vulnerable to potential
> concurrency conflicts, or trying to solve that sharing issue with a
> custom piece of code, set up a fixed regulator device on top of that
> GPIO pin, with the intention of updating both drivers to manipulate that
> regulator, not the GPIO pin directly.
> 
> Before the ASoC driver is updated and the modem platform data expanded
> with a power management callback for switching its power, the
> ams_delta_latch_write() function, which still provides the old API for
> accessing latch2 functionality from not updated drivers, is modified to
> toggle the regulator instead of the MODEM_NRESET GPIO pin.  A helper
> function provided for balancing the regulator enable/disable operations,
> together with the consumer data needed for tracking the regulator state,
> will be removed once the drivers are updated.
> 
> Depends on patch series "ARM: OMAP1: ams-delta: replace custom I/O with
> GPIO".
> 
> Signed-off-by: Janusz Krzysztofik <[email-masked]>
> ---
> v2 -> v3 changes:
> * fix section mismatch isue.
> 
> Changes against initial version:
> * rename consumer setup elements to match their final, modem only
>   related purpose,
> * initialize the regulator pointer and mutex before first use, then
>   omit testing that pointer against NULL value

Thanks, applying all three into ams-delta branch.

Regards,

Tony