Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 157828
b: refs/heads/master
c: ed20825
h: refs/heads/master
v: v3
  • Loading branch information
Takashi Iwai committed Jul 7, 2009
1 parent 25647d8 commit a049e6c
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 14 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: a6bae20559bb0371e89ebc46689e9cf4e7816813
refs/heads/master: ed208255e700073c34b0ef8d2045ac030ac28971
49 changes: 36 additions & 13 deletions trunk/sound/pci/hda/patch_cirrus.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ struct cs_spec {

struct hda_bind_ctls *capture_bind[2];

unsigned int gpio_mask;
unsigned int gpio_dir;
unsigned int gpio_data;

struct hda_pcm pcm_rec[2]; /* PCM information */

unsigned int hp_detect:1;
Expand Down Expand Up @@ -981,6 +985,16 @@ static int cs_init(struct hda_codec *codec)
struct cs_spec *spec = codec->spec;

snd_hda_sequence_write(codec, cs_coef_init_verbs);

if (spec->gpio_mask) {
snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_MASK,
spec->gpio_mask);
snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DIRECTION,
spec->gpio_dir);
snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA,
spec->gpio_data);
}

init_output(codec);
init_input(codec);
init_digital(codec);
Expand Down Expand Up @@ -1041,6 +1055,19 @@ static int cs_parse_auto_config(struct hda_codec *codec)
int err;

err = snd_hda_parse_pin_def_config(codec, &spec->autocfg, NULL);
if (err < 0)
return err;

err = parse_output(codec);
if (err < 0)
return err;
err = parse_input(codec);
if (err < 0)
return err;
err = parse_digital_output(codec);
if (err < 0)
return err;
err = parse_digital_input(codec);
if (err < 0)
return err;
return 0;
Expand Down Expand Up @@ -1106,20 +1133,16 @@ static int patch_cs420x(struct hda_codec *codec)
if (spec->board_config >= 0)
fix_pincfg(codec, spec->board_config);

err = cs_parse_auto_config(codec);
if (err < 0)
goto error;
switch (spec->board_config) {
case CS420X_MBP55:
/* GPIO3 = EAPD? */
spec->gpio_mask = 0x08;
spec->gpio_dir = 0x08;
spec->gpio_data = 0x08;
break;
}

err = parse_output(codec);
if (err < 0)
goto error;
err = parse_input(codec);
if (err < 0)
goto error;
err = parse_digital_output(codec);
if (err < 0)
goto error;
err = parse_digital_input(codec);
err = cs_parse_auto_config(codec);
if (err < 0)
goto error;

Expand Down

0 comments on commit a049e6c

Please sign in to comment.