Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 342965
b: refs/heads/master
c: 98869f6
h: refs/heads/master
i:
  342963: 3f73df2
v: v3
  • Loading branch information
Mark Brown committed Dec 3, 2012
1 parent 5dc8d6b commit ec64bb0
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 9 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: e874de436f6c7ddbcca1e1fb7edd4d05ad274048
refs/heads/master: 98869f68f2f68a9f238f5e96dbc3f838a0ff7136
22 changes: 16 additions & 6 deletions trunk/sound/soc/codecs/wm8994.c
Original file line number Diff line number Diff line change
Expand Up @@ -3432,8 +3432,9 @@ static void wm8958_button_det(struct snd_soc_codec *codec, u16 status)
wm8994->btn_mask);
}

static void wm8958_mic_id(struct snd_soc_codec *codec, u16 status)
static void wm8958_mic_id(void *data, u16 status)
{
struct snd_soc_codec *codec = data;
struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);

/* Either nothing present or just starting detection */
Expand Down Expand Up @@ -3629,7 +3630,8 @@ static void wm1811_jackdet_bootstrap(struct work_struct *work)
* detection algorithm.
*/
int wm8958_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,
wm1811_micdet_cb cb, void *cb_data)
wm1811_micdet_cb det_cb, void *det_cb_data,
wm1811_mic_id_cb id_cb, void *id_cb_data)
{
struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
struct wm8994 *control = wm8994->wm8994;
Expand All @@ -3649,14 +3651,22 @@ int wm8958_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,

wm8994->micdet[0].jack = jack;

if (cb) {
wm8994->micd_cb = cb;
wm8994->micd_cb_data = cb_data;
if (det_cb) {
wm8994->micd_cb = det_cb;
wm8994->micd_cb_data = det_cb_data;
} else {
wm8994->mic_detecting = true;
wm8994->jack_mic = false;
}

if (id_cb) {
wm8994->mic_id_cb = id_cb;
wm8994->mic_id_cb_data = id_cb_data;
} else {
wm8994->mic_id_cb = wm8958_mic_id;
wm8994->mic_id_cb_data = codec;
}

wm8958_micd_set_rate(codec);

/* Detect microphones and short circuits by default */
Expand Down Expand Up @@ -3768,7 +3778,7 @@ static irqreturn_t wm8958_mic_irq(int irq, void *data)
}

if (wm8994->mic_detecting)
wm8958_mic_id(codec, reg);
wm8994->mic_id_cb(wm8994->mic_id_cb_data, reg);
else
wm8958_button_det(codec, reg);

Expand Down
6 changes: 5 additions & 1 deletion trunk/sound/soc/codecs/wm8994.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,13 @@ enum wm8994_vmid_mode {
};

typedef void (*wm1811_micdet_cb)(void *data);
typedef void (*wm1811_mic_id_cb)(void *data, u16 status);

int wm8994_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,
int micbias);
int wm8958_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,
wm1811_micdet_cb cb, void *cb_data);
wm1811_micdet_cb cb, void *det_cb_data,
wm1811_mic_id_cb id_cb, void *id_cb_data);

int wm8994_vmid_mode(struct snd_soc_codec *codec, enum wm8994_vmid_mode mode);

Expand Down Expand Up @@ -140,6 +142,8 @@ struct wm8994_priv {
int micdet_irq;
wm1811_micdet_cb micd_cb;
void *micd_cb_data;
wm1811_mic_id_cb mic_id_cb;
void *mic_id_cb_data;

int revision;

Expand Down
2 changes: 1 addition & 1 deletion trunk/sound/soc/samsung/littlemill.c
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ static int littlemill_late_probe(struct snd_soc_card *card)
return ret;

/* This will check device compatibility itself */
wm8958_mic_detect(codec, &littlemill_headset, NULL, NULL);
wm8958_mic_detect(codec, &littlemill_headset, NULL, NULL, NULL, NULL);

/* As will this */
wm8994_mic_detect(codec, &littlemill_headset, 1);
Expand Down

0 comments on commit ec64bb0

Please sign in to comment.