Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 295923
b: refs/heads/master
c: 0379c1f
h: refs/heads/master
i:
  295921: 99761e1
  295919: 4fe1cd0
v: v3
  • Loading branch information
Janusz Krzysztofik authored and Tony Lindgren committed Mar 5, 2012
1 parent 754c759 commit 2dfe7ac
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 69 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: aabf31737a6a5eb0c4d73857409cd5bcc914d5f5
refs/heads/master: 0379c1f55b734d9d112f535e12f4508b90a1bab1
42 changes: 7 additions & 35 deletions trunk/arch/arm/mach-omap1/board-ams-delta.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/leds.h>
#include <linux/mutex.h>
#include <linux/platform_device.h>
#include <linux/regulator/consumer.h>
#include <linux/regulator/fixed.h>
Expand Down Expand Up @@ -291,35 +290,8 @@ static struct platform_device modem_nreset_device = {

struct modem_private_data {
struct regulator *regulator;
struct {
struct mutex lock;
bool enabled;
} consumer;
};

static int regulator_toggle(struct modem_private_data *priv, bool enable)
{
int err = 0;

mutex_lock(&priv->consumer.lock);
if (IS_ERR(priv->regulator)) {
err = PTR_ERR(priv->regulator);
} else if (enable) {
if (!priv->consumer.enabled) {
err = regulator_enable(priv->regulator);
priv->consumer.enabled = true;
}
} else {
if (priv->consumer.enabled) {
err = regulator_disable(priv->regulator);
priv->consumer.enabled = false;
}
}
mutex_unlock(&priv->consumer.lock);

return err;
}

static struct modem_private_data modem_priv;

void ams_delta_latch_write(int base, int ngpio, u16 mask, u16 value)
Expand All @@ -330,8 +302,6 @@ void ams_delta_latch_write(int base, int ngpio, u16 mask, u16 value)
for (; bit < ngpio; bit++, bitpos = bitpos << 1) {
if (!(mask & bitpos))
continue;
else if (base + bit == AMS_DELTA_GPIO_PIN_MODEM_NRESET)
regulator_toggle(&modem_priv, (value & bitpos) != 0);
else
gpio_set_value(base + bit, (value & bitpos) != 0);
}
Expand Down Expand Up @@ -530,10 +500,16 @@ static void modem_pm(struct uart_port *port, unsigned int state, unsigned old)
{
struct modem_private_data *priv = port->private_data;

if (IS_ERR(priv->regulator))
return;

if (state == old)
return;

regulator_toggle(priv, state == 0);
if (state == 0)
regulator_enable(priv->regulator);
else if (old == 0)
regulator_disable(priv->regulator);
}

static struct plat_serial8250_port ams_delta_modem_ports[] = {
Expand Down Expand Up @@ -593,7 +569,6 @@ static int __init late_init(void)
gpio_direction_input(AMS_DELTA_GPIO_PIN_MODEM_IRQ);

/* Initialize the modem_nreset regulator consumer before use */
mutex_init(&modem_priv.consumer.lock);
modem_priv.regulator = ERR_PTR(-ENODEV);

ams_delta_latch2_write(AMS_DELTA_LATCH2_MODEM_CODEC,
Expand All @@ -606,9 +581,6 @@ static int __init late_init(void)
/*
* Once the modem device is registered, the modem_nreset
* regulator can be requested on behalf of that device.
* In addition to the modem .pm callback, that regulator
* is still used via the ams_delta_latch_write() wrapper
* by the ASoC driver until updated.
*/
modem_priv.regulator = regulator_get(&ams_delta_modem_device.dev,
"RESET#");
Expand Down
1 change: 0 additions & 1 deletion trunk/arch/arm/plat-omap/include/plat/board-ams-delta.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@

#define AMD_DELTA_LATCH2_SCARD_RSTIN 0x0400
#define AMD_DELTA_LATCH2_SCARD_CMDVCC 0x0800
#define AMS_DELTA_LATCH2_MODEM_NRESET 0x1000
#define AMS_DELTA_LATCH2_MODEM_CODEC 0x2000

#define AMS_DELTA_GPIO_PIN_KEYBRD_DATA 0
Expand Down
32 changes: 0 additions & 32 deletions trunk/sound/soc/omap/ams-delta.c
Original file line number Diff line number Diff line change
Expand Up @@ -426,29 +426,6 @@ static struct snd_soc_ops ams_delta_ops = {
};


/* Board specific codec bias level control */
static int ams_delta_set_bias_level(struct snd_soc_card *card,
struct snd_soc_dapm_context *dapm,
enum snd_soc_bias_level level)
{
switch (level) {
case SND_SOC_BIAS_ON:
case SND_SOC_BIAS_PREPARE:
case SND_SOC_BIAS_STANDBY:
if (card->dapm.bias_level == SND_SOC_BIAS_OFF)
ams_delta_latch2_write(AMS_DELTA_LATCH2_MODEM_NRESET,
AMS_DELTA_LATCH2_MODEM_NRESET);
break;
case SND_SOC_BIAS_OFF:
if (card->dapm.bias_level != SND_SOC_BIAS_OFF)
ams_delta_latch2_write(AMS_DELTA_LATCH2_MODEM_NRESET,
0);
}
card->dapm.bias_level = level;

return 0;
}

/* Digital mute implemented using modem/CPU multiplexer.
* Shares hardware with codec config pulse generation */
static bool ams_delta_muted = 1;
Expand Down Expand Up @@ -512,9 +489,6 @@ static int ams_delta_cx20442_init(struct snd_soc_pcm_runtime *rtd)
ams_delta_ops.shutdown = ams_delta_shutdown;
}

/* Set codec bias level */
ams_delta_set_bias_level(card, dapm, SND_SOC_BIAS_STANDBY);

/* Add hook switch - can be used to control the codec from userspace
* even if line discipline fails */
ret = snd_soc_jack_new(rtd->codec, "hook_switch",
Expand Down Expand Up @@ -598,7 +572,6 @@ static struct snd_soc_card ams_delta_audio_card = {
.owner = THIS_MODULE,
.dai_link = &ams_delta_dai_link,
.num_links = 1,
.set_bias_level = ams_delta_set_bias_level,
};

/* Module init/exit */
Expand Down Expand Up @@ -647,11 +620,6 @@ static void __exit ams_delta_module_exit(void)
ARRAY_SIZE(ams_delta_hook_switch_gpios),
ams_delta_hook_switch_gpios);

/* Keep modem power on */
ams_delta_set_bias_level(&ams_delta_audio_card,
&ams_delta_audio_card.rtd[0].codec->dapm,
SND_SOC_BIAS_STANDBY);

platform_device_unregister(cx20442_platform_device);
platform_device_unregister(ams_delta_audio_platform_device);
}
Expand Down

0 comments on commit 2dfe7ac

Please sign in to comment.