[PATCH v2 0/4] Amstrad Delta: access MODEM_RESET GPIO pin over a regulator

From: Janusz Krzysztofik
Date: Thu Dec 29 2011 - 22:07:38 EST


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 and update both drivers to manipulate that regulator, not the
GPIO pin directly.

Changes against initial version:
* in both the codec and the modem callbacks, don't track the regulator
enable/disable state, compare new targert bias level (the codec case)
or power state (the modem case) with the old value instead; thanks to
Mark Brown who suggested this solution,
* a few other minor changes, mostly stylistic.

Janusz Krzysztofik (4):
ARM: OMAP1: ams-delta: set up regulator over modem reset GPIO pin
ASoC: cx20442: add bias control over a platform provided regulator
ARM: OMAP1: ams-delta: update the modem to use regulator API
ASoC: OMAP: ams-delta: drop .set_bias_level callback

arch/arm/mach-omap1/Kconfig | 2 +
arch/arm/mach-omap1/board-ams-delta.c | 94 +++++++++++++++++++--
arch/arm/plat-omap/include/plat/board-ams-delta.h | 1 -
sound/soc/codecs/cx20442.c | 48 ++++++++++-
sound/soc/omap/ams-delta.c | 34 --------
5 files changed, 133 insertions(+), 46 deletions(-)

--
1.7.3.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/