diff options
| -rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 33 | 
1 files changed, 9 insertions, 24 deletions
| diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index edc2b7bc177c..470f6f286e81 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c @@ -227,7 +227,6 @@ struct sigmatel_spec {  	/* power management */  	unsigned int num_pwrs; -	const unsigned int *pwr_mapping;  	const hda_nid_t *pwr_nids;  	const hda_nid_t *dac_list; @@ -374,18 +373,15 @@ static const unsigned long stac92hd73xx_capvols[] = {  #define STAC92HD83_DAC_COUNT 3 -static const hda_nid_t stac92hd83xxx_pwr_nids[4] = { -	0xa, 0xb, 0xd, 0xe, +static const hda_nid_t stac92hd83xxx_pwr_nids[7] = { +	0x0a, 0x0b, 0x0c, 0xd, 0x0e, +	0x0f, 0x10  };  static const hda_nid_t stac92hd83xxx_slave_dig_outs[2] = {  	0x1e, 0,  }; -static const unsigned int stac92hd83xxx_pwr_mapping[4] = { -	0x03, 0x0c, 0x20, 0x40, -}; -  static const hda_nid_t stac92hd83xxx_dmic_nids[] = {  		0x11, 0x20,  }; @@ -4470,8 +4466,12 @@ static int stac92xx_init(struct hda_codec *codec)  				stac_toggle_power_map(codec, nid, 1);  			continue;  		} -		if (enable_pin_detect(codec, nid, STAC_PWR_EVENT)) +		if (enable_pin_detect(codec, nid, STAC_PWR_EVENT)) {  			stac_issue_unsol_event(codec, nid); +			continue; +		} +		/* none of the above, turn the port OFF */ +		stac_toggle_power_map(codec, nid, 0);  	}  	/* sync mute LED */ @@ -4727,11 +4727,7 @@ static void stac_toggle_power_map(struct hda_codec *codec, hda_nid_t nid,  	if (idx >= spec->num_pwrs)  		return; -	/* several codecs have two power down bits */ -	if (spec->pwr_mapping) -		idx = spec->pwr_mapping[idx]; -	else -		idx = 1 << idx; +	idx = 1 << idx;  	val = snd_hda_codec_read(codec, codec->afg, 0, 0x0fec, 0x0) & 0xff;  	if (enable) @@ -5629,9 +5625,6 @@ static int patch_stac92hd83xxx(struct hda_codec *codec)  		snd_hda_codec_set_pincfg(codec, 0xf, 0x2181205e);  	} -	/* reset pin power-down; Windows may leave these bits after reboot */ -	snd_hda_codec_write_cache(codec, codec->afg, 0, 0x7EC, 0); -	snd_hda_codec_write_cache(codec, codec->afg, 0, 0x7ED, 0);  	codec->no_trigger_sense = 1;  	codec->spec = spec; @@ -5641,7 +5634,6 @@ static int patch_stac92hd83xxx(struct hda_codec *codec)  	codec->slave_dig_outs = stac92hd83xxx_slave_dig_outs;  	spec->digbeep_nid = 0x21;  	spec->pwr_nids = stac92hd83xxx_pwr_nids; -	spec->pwr_mapping = stac92hd83xxx_pwr_mapping;  	spec->num_pwrs = ARRAY_SIZE(stac92hd83xxx_pwr_nids);  	spec->multiout.dac_nids = spec->dac_nids;  	spec->init = stac92hd83xxx_core_init; @@ -5658,9 +5650,6 @@ again:  		stac92xx_set_config_regs(codec,  				stac92hd83xxx_brd_tbl[spec->board_config]); -	if (spec->board_config != STAC_92HD83XXX_PWR_REF) -		spec->num_pwrs = 0; -  	codec->patch_ops = stac92xx_patch_ops;  	if (find_mute_led_gpio(codec, 0)) @@ -5869,8 +5858,6 @@ again:  		    (codec->revision_id & 0xf) == 1)  			spec->stream_delay = 40; /* 40 milliseconds */ -		/* no output amps */ -		spec->num_pwrs = 0;  		/* disable VSW */  		spec->init = stac92hd71bxx_core_init;  		unmute_init++; @@ -5885,8 +5872,6 @@ again:  		if ((codec->revision_id & 0xf) == 1)  			spec->stream_delay = 40; /* 40 milliseconds */ -		/* no output amps */ -		spec->num_pwrs = 0;  		/* fallthru */  	default:  		spec->init = stac92hd71bxx_core_init; | 
