[alsa-devel] [PATCH v2] Introduce config for intel dg45id board

Takashi Iwai tiwai at suse.de
Tue Dec 8 12:04:21 CET 2009


At Sun,  6 Dec 2009 11:29:13 +0100,
Alexey Fisher wrote:
> 
> This patch introduce pin config and some workarounds for dg45id board.
> Currently tested Mic + Surround 7.1 on rear panel, and Mic + HP on front panel.
> SPDIF front and SPDIF rear are untested.
> Both Mics provide VREF_80 (4,05 V) in mic mode and no VREF in line-in mode.
> 
> Signed-off-by: Alexey Fisher <bug-track at fisher-privat.net>

Thanks for the patch.

But, I still don't see the reason for so many init verbs, especially
doing static routings.  Can't be they connected properly by the
parser?  If so, it's the parser to be fixed, not a quirky init table.

And, your machine has really no headphone detection?  I mean, not
about your taste but it's not physically doable?


thanks,

Takashi

> 
> modified:   sound/pci/hda/patch_sigmatel.c
> ---
>  sound/pci/hda/patch_sigmatel.c |   53 +++++++++++++++++++++++++++++++++++++++-
>  1 files changed, 52 insertions(+), 1 deletions(-)
> 
> diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
> index 6b0bc04..e604bae 100644
> --- a/sound/pci/hda/patch_sigmatel.c
> +++ b/sound/pci/hda/patch_sigmatel.c
> @@ -860,6 +860,37 @@ static struct hda_verb dell_eq_core_init[] = {
>  	{}
>  };
>  
> +static struct hda_verb intel_dg45id_init[] = {
> +	/* connect all inputs to the mixer */
> +	/* 0x0b -> mixer */
> +	{ 0x28, AC_VERB_SET_CONNECT_SEL, 0x01},
> +	/* 0x0e -> mixer */
> +	{ 0x29, AC_VERB_SET_CONNECT_SEL, 0x01},
> +	/* FIXME: if sorround51 0x0c can be used for line-in
> +	 * currently do not working */
> +	{ 0x2a, AC_VERB_SET_CONNECT_SEL, 0x01},
> +
> +	/* connect mixer to the switch */
> +	{ 0x20, AC_VERB_SET_CONNECT_SEL, 0x0b},
> +
> +	/* unmute inputs on mixer */
> +	{ 0x1d, AC_VERB_SET_AMP_GAIN_MUTE, 0x7017},
> +	{ 0x1d, AC_VERB_SET_AMP_GAIN_MUTE, 0x7117},
> +	/* TODO: make option for 0x0c to be line-in
> +	 * { 0x1d, AC_VERB_SET_AMP_GAIN_MUTE, 0x7217}, */
> +
> +	/* extra check all DACs */
> +	/* 0x18 -> 0x0c */
> +	{ 0x0c, AC_VERB_SET_CONNECT_SEL, 0x03},
> +	/* 0x15 -> 0x0d */
> +	{ 0x0d, AC_VERB_SET_CONNECT_SEL, 0x00},
> +	/* 0x16 -> 0x0f */
> +	{ 0x0f, AC_VERB_SET_CONNECT_SEL, 0x02},
> +	/* 0x17 -> 0x10 */
> +	{ 0x10, AC_VERB_SET_CONNECT_SEL, 0x01},
> +	{}
> +};
> +
>  static struct hda_verb stac92hd73xx_core_init[] = {
>  	/* set master volume and direct control */
>  	{ 0x1f, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff},
> @@ -1531,6 +1562,19 @@ static unsigned int dell_m6_pin_configs[13] = {
>  	0x4f0000f0,
>  };
>  
> +/* TODO: _config[1] (PIN 0x0a) still do not working (Front panel speaker/hp),
> + * $.ini provide some variants of this pin: 0x02214230, 0x0221421F, 0x0211421F.
> + * Def. and Seq. should make difference.
> + * Same for _config[4] (0x0d): wariants 0x01114210, 0x0121421f -should be
> + * some hove in sync with 0x0a? _config[3] (0x0c) can be switched to line-in
> + * wariant 0x0181325e. */
> +static unsigned int intel_dg45id_pin_configs[14] = {
> +	0x02214230, 0x02A19240, 0x01113214, 0x01114210,
> +	0x01A19250, 0x01111212, 0x01116211, 0x40f000f0,
> +	0x40f000f0, 0x40f000f0, 0x40f000f0, 0x014510A0,
> +	0x074510B0, 0x40f000f0
> +};
> +
>  static unsigned int alienware_m17x_pin_configs[13] = {
>  	0x0321101f, 0x0321101f, 0x03a11020, 0x03014020,
>  	0x90170110, 0x4f0000f0, 0x4f0000f0, 0x4f0000f0,
> @@ -1544,6 +1588,7 @@ static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = {
>  	[STAC_DELL_M6_DMIC]	= dell_m6_pin_configs,
>  	[STAC_DELL_M6_BOTH]	= dell_m6_pin_configs,
>  	[STAC_DELL_EQ]	= dell_m6_pin_configs,
> +	[STAC_92HD73XX_INTEL]	= intel_dg45id_pin_configs,
>  	[STAC_ALIENWARE_M17X]	= alienware_m17x_pin_configs,
>  };
>  
> @@ -5127,6 +5172,11 @@ again:
>  			break;
>  		}
>  		break;
> +	case STAC_92HD73XX_INTEL:
> +		spec->init = intel_dg45id_init;
> +		spec->num_dmics = STAC92HD73XX_NUM_DMICS;
> +		spec->num_smuxes = ARRAY_SIZE(stac92hd73xx_smux_nids);
> +		break;
>  	case STAC_ALIENWARE_M17X:
>  		spec->num_dmics = STAC92HD73XX_NUM_DMICS;
>  		spec->num_smuxes = ARRAY_SIZE(stac92hd73xx_smux_nids);
> @@ -5164,7 +5214,8 @@ again:
>  		return err;
>  	}
>  
> -	if (spec->board_config == STAC_92HD73XX_NO_JD)
> +	if (spec->board_config == STAC_92HD73XX_NO_JD ||
> +		spec->board_config == STAC_92HD73XX_INTEL)
>  		spec->hp_detect = 0;
>  
>  	codec->patch_ops = stac92xx_patch_ops;
> -- 
> 1.6.3.3
> 


More information about the Alsa-devel mailing list