Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 230448
b: refs/heads/master
c: 9d01df0
h: refs/heads/master
v: v3
  • Loading branch information
Takashi Iwai committed Dec 22, 2010
1 parent 9d0edf2 commit b30813d
Show file tree
Hide file tree
Showing 13 changed files with 57 additions and 6,177 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: 8b08c0fe95060bba87e98ae6308b90441698a878
refs/heads/master: 9d01df063e70260d6c0aabd58dd5507db151aa51
7 changes: 0 additions & 7 deletions trunk/sound/soc/codecs/88pm860x-codec.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
#include <sound/tlv.h>
#include <sound/initval.h>
#include <sound/jack.h>
#include <trace/events/asoc.h>

#include "88pm860x-codec.h"

Expand Down Expand Up @@ -1263,12 +1262,6 @@ static irqreturn_t pm860x_codec_handler(int irq, void *data)
mask = pm860x->det.hs_shrt | pm860x->det.hook_det | pm860x->det.lo_shrt
| pm860x->det.hp_det;

#ifndef CONFIG_SND_SOC_88PM860X
if (status & (HEADSET_STATUS | MIC_STATUS | SHORT_HS1 | SHORT_HS2 |
SHORT_LO1 | SHORT_LO2))
trace_snd_soc_jack_irq(dev_name(pm860x->codec->dev));
#endif

if ((pm860x->det.hp_det & SND_JACK_HEADPHONE)
&& (status & HEADSET_STATUS))
report |= SND_JACK_HEADPHONE;
Expand Down
4 changes: 0 additions & 4 deletions trunk/sound/soc/codecs/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ config SND_SOC_ALL_CODECS
select SND_SOC_WM8990 if I2C
select SND_SOC_WM8993 if I2C
select SND_SOC_WM8994 if MFD_WM8994
select SND_SOC_WM8995 if SND_SOC_I2C_AND_SPI
select SND_SOC_WM9081 if I2C
select SND_SOC_WM9090 if I2C
select SND_SOC_WM9705 if SND_SOC_AC97_BUS
Expand Down Expand Up @@ -307,9 +306,6 @@ config SND_SOC_WM8993
config SND_SOC_WM8994
tristate

config SND_SOC_WM8995
tristate

config SND_SOC_WM9081
tristate

Expand Down
2 changes: 0 additions & 2 deletions trunk/sound/soc/codecs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ snd-soc-wm8988-objs := wm8988.o
snd-soc-wm8990-objs := wm8990.o
snd-soc-wm8993-objs := wm8993.o
snd-soc-wm8994-objs := wm8994.o wm8994-tables.o
snd-soc-wm8995-objs := wm8995.o
snd-soc-wm9081-objs := wm9081.o
snd-soc-wm9705-objs := wm9705.o
snd-soc-wm9712-objs := wm9712.o
Expand Down Expand Up @@ -141,7 +140,6 @@ obj-$(CONFIG_SND_SOC_WM8988) += snd-soc-wm8988.o
obj-$(CONFIG_SND_SOC_WM8990) += snd-soc-wm8990.o
obj-$(CONFIG_SND_SOC_WM8993) += snd-soc-wm8993.o
obj-$(CONFIG_SND_SOC_WM8994) += snd-soc-wm8994.o
obj-$(CONFIG_SND_SOC_WM8995) += snd-soc-wm8995.o
obj-$(CONFIG_SND_SOC_WM9081) += snd-soc-wm9081.o
obj-$(CONFIG_SND_SOC_WM9705) += snd-soc-wm9705.o
obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o
Expand Down
71 changes: 19 additions & 52 deletions trunk/sound/soc/codecs/wm8350.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
#include <sound/soc.h>
#include <sound/initval.h>
#include <sound/tlv.h>
#include <trace/events/asoc.h>

#include "wm8350.h"

Expand Down Expand Up @@ -54,7 +53,6 @@ struct wm8350_output {

struct wm8350_jack_data {
struct snd_soc_jack *jack;
struct delayed_work work;
int report;
int short_report;
};
Expand Down Expand Up @@ -1337,69 +1335,45 @@ static int wm8350_resume(struct snd_soc_codec *codec)
return 0;
}

static void wm8350_hp_work(struct wm8350_data *priv,
struct wm8350_jack_data *jack,
u16 mask)
{
struct wm8350 *wm8350 = priv->codec.control_data;
u16 reg;
int report;

reg = wm8350_reg_read(wm8350, WM8350_JACK_PIN_STATUS);
if (reg & mask)
report = jack->report;
else
report = 0;

snd_soc_jack_report(jack->jack, report, jack->report);

}

static void wm8350_hpl_work(struct work_struct *work)
{
struct wm8350_data *priv =
container_of(work, struct wm8350_data, hpl.work.work);

wm8350_hp_work(priv, &priv->hpl, WM8350_JACK_L_LVL);
}

static void wm8350_hpr_work(struct work_struct *work)
{
struct wm8350_data *priv =
container_of(work, struct wm8350_data, hpr.work.work);

wm8350_hp_work(priv, &priv->hpr, WM8350_JACK_R_LVL);
}

static irqreturn_t wm8350_hp_jack_handler(int irq, void *data)
{
struct wm8350_data *priv = data;
struct wm8350 *wm8350 = priv->codec.control_data;
u16 reg;
int report;
int mask;
struct wm8350_jack_data *jack = NULL;

switch (irq - wm8350->irq_base) {
case WM8350_IRQ_CODEC_JCK_DET_L:
#ifndef CONFIG_SND_SOC_WM8350_MODULE
trace_snd_soc_jack_irq("WM8350 HPL");
#endif
jack = &priv->hpl;
mask = WM8350_JACK_L_LVL;
break;

case WM8350_IRQ_CODEC_JCK_DET_R:
#ifndef CONFIG_SND_SOC_WM8350_MODULE
trace_snd_soc_jack_irq("WM8350 HPR");
#endif
jack = &priv->hpr;
mask = WM8350_JACK_R_LVL;
break;

default:
BUG();
}

if (device_may_wakeup(wm8350->dev))
pm_wakeup_event(wm8350->dev, 250);
if (!jack->jack) {
dev_warn(wm8350->dev, "Jack interrupt called with no jack\n");
return IRQ_NONE;
}

schedule_delayed_work(&jack->work, 200);
/* Debounce */
msleep(200);

reg = wm8350_reg_read(wm8350, WM8350_JACK_PIN_STATUS);
if (reg & mask)
report = jack->report;
else
report = 0;

snd_soc_jack_report(jack->jack, report, jack->report);

return IRQ_HANDLED;
}
Expand Down Expand Up @@ -1463,8 +1437,6 @@ static irqreturn_t wm8350_mic_handler(int irq, void *data)
u16 reg;
int report = 0;

trace_snd_soc_jack_irq("WM8350 mic");

reg = wm8350_reg_read(wm8350, WM8350_JACK_PIN_STATUS);
if (reg & WM8350_JACK_MICSCD_LVL)
report |= priv->mic.short_report;
Expand Down Expand Up @@ -1580,8 +1552,6 @@ static int wm8350_codec_probe(struct snd_soc_codec *codec)
wm8350_clear_bits(wm8350, WM8350_POWER_MGMT_5, WM8350_CODEC_ENA);

INIT_DELAYED_WORK(&codec->dapm.delayed_work, wm8350_pga_work);
INIT_DELAYED_WORK(&priv->hpl.work, wm8350_hpl_work);
INIT_DELAYED_WORK(&priv->hpr.work, wm8350_hpr_work);

/* Enable the codec */
wm8350_set_bits(wm8350, WM8350_POWER_MGMT_5, WM8350_CODEC_ENA);
Expand Down Expand Up @@ -1671,9 +1641,6 @@ static int wm8350_codec_remove(struct snd_soc_codec *codec)
priv->hpr.jack = NULL;
priv->mic.jack = NULL;

cancel_delayed_work_sync(&priv->hpl.work);
cancel_delayed_work_sync(&priv->hpr.work);

/* if there was any work waiting then we run it now and
* wait for its completion */
flush_delayed_work_sync(&codec->dapm.delayed_work);
Expand Down
26 changes: 14 additions & 12 deletions trunk/sound/soc/codecs/wm8903.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
#include <sound/soc.h>
#include <sound/initval.h>
#include <sound/wm8903.h>
#include <trace/events/asoc.h>

#include "wm8903.h"

Expand Down Expand Up @@ -1014,7 +1013,7 @@ static int wm8903_add_widgets(struct snd_soc_codec *codec)
static int wm8903_set_bias_level(struct snd_soc_codec *codec,
enum snd_soc_bias_level level)
{
u16 reg;
u16 reg, reg2;

switch (level) {
case SND_SOC_BIAS_ON:
Expand All @@ -1038,15 +1037,23 @@ static int wm8903_set_bias_level(struct snd_soc_codec *codec,
wm8903_run_sequence(codec, 0);
wm8903_sync_reg_cache(codec, codec->reg_cache);

/* Enable low impedence charge pump output */
reg = snd_soc_read(codec,
WM8903_CONTROL_INTERFACE_TEST_1);
snd_soc_write(codec, WM8903_CONTROL_INTERFACE_TEST_1,
reg | WM8903_TEST_KEY);
reg2 = snd_soc_read(codec, WM8903_CHARGE_PUMP_TEST_1);
snd_soc_write(codec, WM8903_CHARGE_PUMP_TEST_1,
reg2 | WM8903_CP_SW_KELVIN_MODE_MASK);
snd_soc_write(codec, WM8903_CONTROL_INTERFACE_TEST_1,
reg);

/* By default no bypass paths are enabled so
* enable Class W support.
*/
dev_dbg(codec->dev, "Enabling Class W\n");
snd_soc_update_bits(codec, WM8903_CLASS_W_0,
WM8903_CP_DYN_FREQ |
WM8903_CP_DYN_V,
WM8903_CP_DYN_FREQ |
WM8903_CP_DYN_V);
snd_soc_write(codec, WM8903_CLASS_W_0, reg |
WM8903_CP_DYN_FREQ | WM8903_CP_DYN_V);
}

reg = snd_soc_read(codec, WM8903_VMID_CONTROL_0);
Expand Down Expand Up @@ -1526,11 +1533,6 @@ static irqreturn_t wm8903_irq(int irq, void *data)
mic_report = wm8903->mic_last_report;
int_pol = snd_soc_read(codec, WM8903_INTERRUPT_POLARITY_1);

#ifndef CONFIG_SND_SOC_WM8903_MODULE
if (int_val & (WM8903_MICSHRT_EINT | WM8903_MICDET_EINT))
trace_snd_soc_jack_irq(dev_name(codec->dev));
#endif

if (int_val & WM8903_MICSHRT_EINT) {
dev_dbg(codec->dev, "Microphone short (pol=%x)\n", int_pol);

Expand Down
21 changes: 21 additions & 0 deletions trunk/sound/soc/codecs/wm8903.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ extern int wm8903_mic_detect(struct snd_soc_codec *codec,
#define WM8903_INTERRUPT_STATUS_1_MASK 0x7A
#define WM8903_INTERRUPT_POLARITY_1 0x7B
#define WM8903_INTERRUPT_CONTROL 0x7E
#define WM8903_CONTROL_INTERFACE_TEST_1 0x81
#define WM8903_CHARGE_PUMP_TEST_1 0x95
#define WM8903_CLOCK_RATE_TEST_4 0xA4
#define WM8903_ANALOGUE_OUTPUT_BIAS_0 0xAC

Expand Down Expand Up @@ -1199,6 +1201,25 @@ extern int wm8903_mic_detect(struct snd_soc_codec *codec,
#define WM8903_IRQ_POL_SHIFT 0 /* IRQ_POL */
#define WM8903_IRQ_POL_WIDTH 1 /* IRQ_POL */

/*
* R129 (0x81) - Control Interface Test 1
*/
#define WM8903_USER_KEY 0x0002 /* USER_KEY */
#define WM8903_USER_KEY_MASK 0x0002 /* USER_KEY */
#define WM8903_USER_KEY_SHIFT 1 /* USER_KEY */
#define WM8903_USER_KEY_WIDTH 1 /* USER_KEY */
#define WM8903_TEST_KEY 0x0001 /* TEST_KEY */
#define WM8903_TEST_KEY_MASK 0x0001 /* TEST_KEY */
#define WM8903_TEST_KEY_SHIFT 0 /* TEST_KEY */
#define WM8903_TEST_KEY_WIDTH 1 /* TEST_KEY */

/*
* R149 (0x95) - Charge Pump Test 1
*/
#define WM8903_CP_SW_KELVIN_MODE_MASK 0x0006 /* CP_SW_KELVIN_MODE - [2:1] */
#define WM8903_CP_SW_KELVIN_MODE_SHIFT 1 /* CP_SW_KELVIN_MODE - [2:1] */
#define WM8903_CP_SW_KELVIN_MODE_WIDTH 2 /* CP_SW_KELVIN_MODE - [2:1] */

/*
* R164 (0xA4) - Clock Rate Test 4
*/
Expand Down
5 changes: 0 additions & 5 deletions trunk/sound/soc/codecs/wm8962.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
#include <sound/initval.h>
#include <sound/tlv.h>
#include <sound/wm8962.h>
#include <trace/events/asoc.h>

#include "wm8962.h"

Expand Down Expand Up @@ -3354,10 +3353,6 @@ static irqreturn_t wm8962_irq(int irq, void *data)
if (active & (WM8962_MICSCD_EINT | WM8962_MICD_EINT)) {
dev_dbg(codec->dev, "Microphone event detected\n");

#ifndef CONFIG_SOUND_SOC_WM8962_MODULE
trace_snd_soc_jack_irq(dev_name(codec->dev));
#endif

pm_wakeup_event(codec->dev, 300);

schedule_delayed_work(&wm8962->mic_work,
Expand Down
5 changes: 0 additions & 5 deletions trunk/sound/soc/codecs/wm8994.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
#include <sound/soc.h>
#include <sound/initval.h>
#include <sound/tlv.h>
#include <trace/events/asoc.h>

#include <linux/mfd/wm8994/core.h>
#include <linux/mfd/wm8994/registers.h>
Expand Down Expand Up @@ -2756,8 +2755,6 @@ static irqreturn_t wm8994_mic_irq(int irq, void *data)
int reg;
int report;

trace_snd_soc_jack_irq(dev_name(codec->dev));

reg = snd_soc_read(codec, WM8994_INTERRUPT_RAW_STATUS_2);
if (reg < 0) {
dev_err(codec->dev, "Failed to read microphone status: %d\n",
Expand Down Expand Up @@ -2904,8 +2901,6 @@ static irqreturn_t wm8958_mic_irq(int irq, void *data)
goto out;
}

trace_snd_soc_jack_irq(dev_name(codec->dev));

if (wm8994->jack_cb)
wm8994->jack_cb(reg, wm8994->jack_cb_data);
else
Expand Down
Loading

0 comments on commit b30813d

Please sign in to comment.