All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tobin Davis <tdavis@dsl-only.net>
To: Matt Porter <mporter@embeddedalley.com>
Cc: tiwai@suse.de, alsa-devel@alsa-project.org
Subject: Re: [PATCH] hda: add sigmatel dig mic support and	refactor 9227
Date: Wed, 25 Oct 2006 13:53:56 -0700	[thread overview]
Message-ID: <1161809636.18211.65.camel@razman> (raw)
In-Reply-To: <20061025202110.GA351@matthew-porters-computer.local>

Couple of things, which version is this against?  I tried patching
against the tip and all areas were rejected.

Also, the original 9227 and 927x code was written specifically for Intel
D965 board support.  The information I had was from the Stac 9227
developers reference and several systems I was working with at the time
(I was a contractor at Intel).  From what I can tell, your patch removes
the 3stack configuration and replaces it with the ref config, which
could break the 3-stack systems.  Has this patch been tested on these
systems?


Tobin Davis

On Wed, 2006-10-25 at 16:21 -0400, Matt Porter wrote:
> Adds support for digital microphone pin widgets on SigmaTel codecs.
> Also refactor 9227 support out of the 927x support since the 9227
> codecs have some differing pin widgets.
> 
> Signed-off-by: Matt Porter <mporter@embeddedalley.com>
> 
> diff -r c4d2375b7e9e pci/hda/patch_sigmatel.c
> --- a/pci/hda/patch_sigmatel.c	Tue Oct 24 19:49:39 2006 +0200
> +++ b/pci/hda/patch_sigmatel.c	Wed Oct 25 13:04:04 2006 -0700
> @@ -41,10 +41,8 @@
>  #define STAC_D945GTP3		1
>  #define STAC_D945GTP5		2
>  #define STAC_MACMINI		3
> -#define STAC_922X_MODELS	4	/* number of 922x models */
>  #define STAC_D965_3ST		4
>  #define STAC_D965_5ST		5
> -#define STAC_927X_MODELS	6	/* number of 922x models */
>  
>  struct sigmatel_spec {
>  	struct snd_kcontrol_new *mixers[4];
> @@ -67,6 +65,9 @@ struct sigmatel_spec {
>  	unsigned int num_adcs;
>  	hda_nid_t *mux_nids;
>  	unsigned int num_muxes;
> +	hda_nid_t *dmic_nids;
> +	unsigned int num_dmics;
> +	hda_nid_t dmux_nid;
>  	hda_nid_t dig_in_nid;
>  
>  	/* pin widgets */
> @@ -80,6 +81,8 @@ struct sigmatel_spec {
>  	struct snd_kcontrol_new *mixer;
>  
>  	/* capture source */
> +	struct hda_input_mux *dinput_mux;
> +	unsigned int cur_dmux;
>  	struct hda_input_mux *input_mux;
>  	unsigned int cur_mux[3];
>  
> @@ -92,6 +95,7 @@ struct sigmatel_spec {
>  	struct auto_pin_cfg autocfg;
>  	unsigned int num_kctl_alloc, num_kctl_used;
>  	struct snd_kcontrol_new *kctl_alloc;
> +	struct hda_input_mux private_dimux;
>  	struct hda_input_mux private_imux;
>  };
>  
> @@ -123,12 +127,32 @@ static hda_nid_t stac927x_mux_nids[3] = 
>          0x15, 0x16, 0x17
>  };
>  
> +static hda_nid_t stac927x_dmic_nids[3] = {
> +        0x13, 0x14, 0
> +};
> +
> +static hda_nid_t stac9227_adc_nids[3] = {
> +        0x07, 0x08, 0x09
> +};
> +
> +static hda_nid_t stac9227_mux_nids[3] = {
> +        0x15, 0x16, 0x17
> +};
> +
> +static hda_nid_t stac9227_dmic_nids[3] = {
> +        0x13, 0x14, 0
> +};
> +
>  static hda_nid_t stac9205_adc_nids[2] = {
>          0x12, 0x13
>  };
>  
>  static hda_nid_t stac9205_mux_nids[2] = {
>          0x19, 0x1a
> +};
> +
> +static hda_nid_t stac9205_dmic_nids[3] = {
> +        0x17, 0x18, 0
>  };
>  
>  static hda_nid_t stac9200_pin_nids[8] = {
> @@ -145,6 +169,13 @@ static hda_nid_t stac927x_pin_nids[14] =
>  	0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
>  	0x0f, 0x10, 0x11, 0x12, 0x13,
>  	0x14, 0x21, 0x22, 0x23,
> +};
> +
> +static hda_nid_t stac9227_pin_nids[16] = {
> +	0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
> +	0x0f, 0x10, 0x11, 0x12, 0x13,
> +	0x14, 0x1e, 0x20, 0x21, 0x22,
> +	0x23,
>  };
>  
>  static hda_nid_t stac9205_pin_nids[12] = {
> @@ -153,6 +184,31 @@ static hda_nid_t stac9205_pin_nids[12] =
>  	0x21, 0x22,
>  	
>  };
> +
> +static int stac92xx_dmux_enum_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo)
> +{
> +	struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
> +	struct sigmatel_spec *spec = codec->spec;
> +	return snd_hda_input_mux_info(spec->dinput_mux, uinfo);
> +}
> +
> +static int stac92xx_dmux_enum_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
> +{
> +	struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
> +	struct sigmatel_spec *spec = codec->spec;
> +
> +	ucontrol->value.enumerated.item[0] = spec->cur_dmux;
> +	return 0;
> +}
> +
> +static int stac92xx_dmux_enum_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
> +{
> +	struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
> +	struct sigmatel_spec *spec = codec->spec;
> +
> +	return snd_hda_input_mux_put(codec, spec->dinput_mux, ucontrol,
> +				     spec->dmux_nid, &spec->cur_dmux);
> +}
>  
>  static int stac92xx_mux_enum_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo)
>  {
> @@ -204,6 +260,12 @@ static struct hda_verb d965_core_init[] 
>  };
>  
>  static struct hda_verb stac927x_core_init[] = {
> +	/* set master volume and direct control */	
> +	{ 0x24, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff},
> +	{}
> +};
> +
> +static struct hda_verb stac9227_core_init[] = {
>  	/* set master volume and direct control */	
>  	{ 0x24, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff},
>  	{}
> @@ -252,6 +314,14 @@ static struct snd_kcontrol_new stac9227_
>  static struct snd_kcontrol_new stac9227_mixer[] = {
>  	{
>  		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
> +		.name = "Digital Input Source",
> +		.count = 1,
> +		.info = stac92xx_dmux_enum_info,
> +		.get = stac92xx_dmux_enum_get,
> +		.put = stac92xx_dmux_enum_put,
> +	},
> +	{
> +		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
>  		.name = "Input Source",
>  		.count = 1,
>  		.info = stac92xx_mux_enum_info,
> @@ -259,11 +329,20 @@ static struct snd_kcontrol_new stac9227_
>  		.put = stac92xx_mux_enum_put,
>  	},
>  	HDA_CODEC_VOLUME("Capture Volume", 0x15, 0x0, HDA_OUTPUT),
> +	HDA_CODEC_VOLUME("InVol Capture Volume", 0x18, 0x0, HDA_INPUT),
>  	HDA_CODEC_MUTE("Capture Switch", 0x1b, 0x0, HDA_OUTPUT),
>  	{ } /* end */
>  };
>  
>  static snd_kcontrol_new_t stac927x_mixer[] = {
> +	{
> +		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
> +		.name = "Digital Input Source",
> +		.count = 1,
> +		.info = stac92xx_dmux_enum_info,
> +		.get = stac92xx_dmux_enum_get,
> +		.put = stac92xx_dmux_enum_put,
> +	},
>  	{
>  		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
>  		.name = "Input Source",
> @@ -281,6 +360,14 @@ static snd_kcontrol_new_t stac9205_mixer
>  static snd_kcontrol_new_t stac9205_mixer[] = {
>  	{
>  		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
> +		.name = "Digital Input Source",
> +		.count = 1,
> +		.info = stac92xx_dmux_enum_info,
> +		.get = stac92xx_dmux_enum_get,
> +		.put = stac92xx_dmux_enum_put,
> +	},
> +	{
> +		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
>  		.name = "Input Source",
>  		.count = 1,
>  		.info = stac92xx_mux_enum_info,
> @@ -357,7 +444,7 @@ static unsigned int d945gtp5_pin_configs
>  	0x02a19320, 0x40000100,
>  };
>  
> -static unsigned int *stac922x_brd_tbl[STAC_922X_MODELS] = {
> +static unsigned int *stac922x_brd_tbl[] = {
>  	[STAC_REF] =	ref922x_pin_configs,
>  	[STAC_D945GTP3] = d945gtp3_pin_configs,
>  	[STAC_D945GTP5] = d945gtp5_pin_configs,
> @@ -458,31 +545,38 @@ static unsigned int ref927x_pin_configs[
>  static unsigned int ref927x_pin_configs[14] = {
>  	0x02214020, 0x02a19080, 0x0181304e, 0x01014010,
>  	0x01a19040, 0x01011012, 0x01016011, 0x0101201f, 
> -	0x183301f0, 0x18a001f0, 0x18a001f0, 0x01442070,
> +	0x183301f0, 0x90a000f0, 0x90a000f0, 0x01442070,
>  	0x01c42190, 0x40000100,
>  };
>  
> -static unsigned int d965_3st_pin_configs[14] = {
> +static unsigned int ref9227_pin_configs[16] = {
> +	0x02214020, 0x02a19080, 0x0181304e, 0x01014010,
> +	0x01a19040, 0x01011012, 0x01016011, 0x0101201f, 
> +	0x183301f0, 0x90a000f0, 0x90a000f0, 0x01442070,
> +	0x01c42190, 0x40000100, 0x40000100, 0x40000100,
> +};
> +
> +static unsigned int d965_3st_pin_configs[16] = {
>  	0x0221401f, 0x02a19120, 0x40000100, 0x01014011,
>  	0x01a19021, 0x01813024, 0x40000100, 0x40000100,
>  	0x40000100, 0x40000100, 0x40000100, 0x40000100,
> -	0x40000100, 0x40000100
> -};
> -
> -static unsigned int d965_5st_pin_configs[14] = {
> +	0x40000100, 0x40000100, 0x40000100, 0x40000100,
> +};
> +
> +static unsigned int d965_5st_pin_configs[16] = {
>  	0x02214020, 0x02a19080, 0x0181304e, 0x01014010,
>  	0x01a19040, 0x01011012, 0x01016011, 0x40000100,
>  	0x40000100, 0x40000100, 0x40000100, 0x01442070,
> -	0x40000100, 0x40000100
> -};
> -
> -static unsigned int *stac927x_brd_tbl[STAC_927X_MODELS] = {
> -	[STAC_REF] =	ref927x_pin_configs,
> +	0x40000100, 0x40000100, 0x40000100, 0x40000100,
> +};
> +
> +static unsigned int *stac9227_brd_tbl[] = {
> +	[STAC_REF] =	ref9227_pin_configs,
>  	[STAC_D965_3ST] = d965_3st_pin_configs,
>  	[STAC_D965_5ST] = d965_5st_pin_configs,
>  };
>  
> -static struct hda_board_config stac927x_cfg_tbl[] = {
> +static struct hda_board_config stac9227_cfg_tbl[] = {
>  	{ .modelname = "5stack", .config = STAC_D965_5ST },
>  	{ .modelname = "3stack", .config = STAC_D965_3ST },
>  	{ .modelname = "ref",
> @@ -576,10 +670,22 @@ static struct hda_board_config stac927x_
>  	{} /* terminator */
>  };
>  
> +static unsigned int *stac927x_brd_tbl[] = {
> +	[STAC_REF] =	ref927x_pin_configs,
> +};
> +
> +static struct hda_board_config stac927x_cfg_tbl[] = {
> +	{ .modelname = "ref",
> +	  .pci_subvendor = PCI_VENDOR_ID_INTEL,
> +	  .pci_subdevice = 0x2668,	/* DFI LanParty */
> +	  .config = STAC_REF },		/* SigmaTel reference board */
> +	{} /* terminator */
> +};
> +
>  static unsigned int ref9205_pin_configs[12] = {
>  	0x40000100, 0x40000100, 0x01016011, 0x01014010,
> -	0x01813122, 0x01a19021, 0x40000100, 0x40000100, 
> -	0x40000100, 0x40000100, 0x01441030, 0x01c41030
> +	0x01813122, 0x01a19021, 0x40000100, 0x40000100,
> +	0x90a000f0, 0x90a000f0, 0x01441030, 0x01c41030
>  };
>  
>  static unsigned int *stac9205_brd_tbl[] = {
> @@ -1154,6 +1260,49 @@ static int stac92xx_auto_create_hp_ctls(
>  	return 0;
>  }
>  
> +/* labels for dmic mux inputs */
> +const char *stac92xx_dmic_labels[5] = {
> +	        "Analog Inputs", "Digital Mic 1", "Digital Mic 2", "Digital Mic 3", "Digital Mic 4"
> +};
> +
> +/* create playback/capture controls for input pins on dmic capable codecs */
> +static int stac92xx_auto_create_dmic_input_ctls(struct hda_codec *codec, const struct auto_pin_cfg *cfg)
> +{
> +	struct sigmatel_spec *spec = codec->spec;
> +	struct hda_input_mux *dimux = &spec->private_dimux;
> +	hda_nid_t con_lst[HDA_MAX_NUM_INPUTS];
> +	int i, j;
> +
> +	dimux->items[dimux->num_items].label = stac92xx_dmic_labels[0];
> +	dimux->items[dimux->num_items].index = 0;
> +	dimux->num_items++;
> +
> +	for (i = 0; i < spec->num_dmics; i++) {
> +		int index;
> +		int num_cons;
> +		unsigned int def_conf = snd_hda_codec_read(codec, spec->dmic_nids[i], 0, AC_VERB_GET_CONFIG_DEFAULT, 0);
> +		if (get_defcfg_connect(def_conf) == AC_JACK_PORT_NONE)
> +			continue;
> +
> +		num_cons = snd_hda_get_connections(codec,
> +				spec->dmux_nid,
> +				con_lst,
> +				HDA_MAX_NUM_INPUTS);
> +		for (j = 0; j < num_cons; j++)
> +			if (con_lst[j] == spec->dmic_nids[i]) {
> +				index = j;
> +				goto found;
> +			}
> +		continue;
> +found:
> +		dimux->items[dimux->num_items].label = stac92xx_dmic_labels[dimux->num_items];
> +		dimux->items[dimux->num_items].index = index;
> +		dimux->num_items++;
> +	}
> +
> +	return 0;
> +}
> +
>  /* create playback/capture controls for input pins */
>  static int stac92xx_auto_create_analog_input_ctls(struct hda_codec *codec, const struct auto_pin_cfg *cfg)
>  {
> @@ -1238,7 +1387,7 @@ static int stac92xx_parse_auto_config(st
>  	struct sigmatel_spec *spec = codec->spec;
>  	int err;
>  
> -	if ((err = snd_hda_parse_pin_def_config(codec, &spec->autocfg, NULL)) < 0)
> +	if ((err = snd_hda_parse_pin_def_config(codec, &spec->autocfg, spec->dmic_nids)) < 0)
>  		return err;
>  	if (! spec->autocfg.line_outs)
>  		return 0; /* can't find valid pin config */
> @@ -1254,6 +1403,10 @@ static int stac92xx_parse_auto_config(st
>  	    (err = stac92xx_auto_create_analog_input_ctls(codec, &spec->autocfg)) < 0)
>  		return err;
>  
> +	if (spec->num_dmics > 0)
> +		if ((err = stac92xx_auto_create_dmic_input_ctls(codec, &spec->autocfg)) < 0)
> +			return err;
> +
>  	spec->multiout.max_channels = spec->multiout.num_dacs * 2;
>  	if (spec->multiout.max_channels > 2)
>  		spec->surr_switch = 1;
> @@ -1267,6 +1420,7 @@ static int stac92xx_parse_auto_config(st
>  		spec->mixers[spec->num_mixers++] = spec->kctl_alloc;
>  
>  	spec->input_mux = &spec->private_imux;
> +	spec->dinput_mux = &spec->private_dimux;
>  
>  	return 1;
>  }
> @@ -1366,6 +1520,7 @@ static int stac9200_parse_auto_config(st
>  		spec->mixers[spec->num_mixers++] = spec->kctl_alloc;
>  
>  	spec->input_mux = &spec->private_imux;
> +	spec->dinput_mux = &spec->private_dimux;
>  
>  	return 1;
>  }
> @@ -1448,6 +1603,11 @@ static int stac92xx_init(struct hda_code
>  			stac92xx_auto_set_pinctl(codec, nid, pinctl);
>  		}
>  	}
> +	if (spec->num_dmics > 0)
> +		for (i = 0; i < spec->num_dmics; i++)
> +			stac92xx_auto_set_pinctl(codec, spec->dmic_nids[i],
> +					 AC_PINCTL_IN_EN);
> +
>  	if (cfg->dig_out_pin)
>  		stac92xx_auto_set_pinctl(codec, cfg->dig_out_pin,
>  					 AC_PINCTL_OUT_EN);
> @@ -1618,6 +1778,7 @@ static int patch_stac9200(struct hda_cod
>  	spec->adc_nids = stac9200_adc_nids;
>  	spec->mux_nids = stac9200_mux_nids;
>  	spec->num_muxes = 1;
> +	spec->num_dmics = 0;
>  
>  	spec->init = stac9200_core_init;
>  	spec->mixer = stac9200_mixer;
> @@ -1663,6 +1824,7 @@ static int patch_stac922x(struct hda_cod
>  	spec->adc_nids = stac922x_adc_nids;
>  	spec->mux_nids = stac922x_mux_nids;
>  	spec->num_muxes = 2;
> +	spec->num_dmics = 0;
>  
>  	spec->init = stac922x_core_init;
>  	spec->mixer = stac922x_mixer;
> @@ -1677,6 +1839,73 @@ static int patch_stac922x(struct hda_cod
>  
>  	if (spec->board_config == STAC_MACMINI)
>  		spec->gpio_mute = 1;
> +
> +	codec->patch_ops = stac92xx_patch_ops;
> +
> +	return 0;
> +}
> +
> +static int patch_stac9227(struct hda_codec *codec)
> +{
> +	struct sigmatel_spec *spec;
> +	int err;
> +
> +	spec  = kzalloc(sizeof(*spec), GFP_KERNEL);
> +	if (spec == NULL)
> +		return -ENOMEM;
> +
> +	codec->spec = spec;
> +	spec->num_pins = 14;
> +	spec->pin_nids = stac9227_pin_nids;
> +	spec->board_config = snd_hda_check_board_config(codec, stac9227_cfg_tbl);
> +	if (spec->board_config < 0) {
> +                snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC9227, using BIOS defaults\n");
> +		err = stac92xx_save_bios_config_regs(codec);
> +		if (err < 0) {
> +			stac92xx_free(codec);
> +			return err;
> +		}
> +		spec->pin_configs = spec->bios_pin_configs;
> +	} else if (stac9227_brd_tbl[spec->board_config] != NULL) {
> +		spec->pin_configs = stac9227_brd_tbl[spec->board_config];
> +		stac92xx_set_config_regs(codec);
> +	}
> +
> +	switch (spec->board_config) {
> +	case STAC_D965_3ST:
> +		spec->adc_nids = stac9227_adc_nids;
> +		spec->mux_nids = stac9227_mux_nids;
> +		spec->num_muxes = 3;
> +		spec->num_dmics = 0;
> +		spec->init = d965_core_init;
> +		spec->mixer = stac9227_mixer;
> +		break;
> +	case STAC_D965_5ST:
> +		spec->adc_nids = stac9227_adc_nids;
> +		spec->mux_nids = stac9227_mux_nids;
> +		spec->num_muxes = 3;
> +		spec->num_dmics = 0;
> +		spec->init = d965_core_init;
> +		spec->mixer = stac9227_mixer;
> +		break;
> +	default:
> +		spec->adc_nids = stac9227_adc_nids;
> +		spec->mux_nids = stac9227_mux_nids;
> +		spec->num_muxes = 3;
> +		spec->dmic_nids = stac9227_dmic_nids;
> +		spec->num_dmics = 2;
> +		spec->dmux_nid = 0x1b;
> +		spec->init = stac9227_core_init;
> +		spec->mixer = stac9227_mixer;
> +	}
> +
> +	spec->multiout.dac_nids = spec->dac_nids;
> +
> +	err = stac92xx_parse_auto_config(codec, 0x1e, 0x20);
> +	if (err < 0) {
> +		stac92xx_free(codec);
> +		return err;
> +	}
>  
>  	codec->patch_ops = stac92xx_patch_ops;
>  
> @@ -1709,28 +1938,14 @@ static int patch_stac927x(struct hda_cod
>  		stac92xx_set_config_regs(codec);
>  	}
>  
> -	switch (spec->board_config) {
> -	case STAC_D965_3ST:
> -		spec->adc_nids = stac927x_adc_nids;
> -		spec->mux_nids = stac927x_mux_nids;
> -		spec->num_muxes = 3;
> -		spec->init = d965_core_init;
> -		spec->mixer = stac9227_mixer;
> -		break;
> -	case STAC_D965_5ST:
> -		spec->adc_nids = stac927x_adc_nids;
> -		spec->mux_nids = stac927x_mux_nids;
> -		spec->num_muxes = 3;
> -		spec->init = d965_core_init;
> -		spec->mixer = stac9227_mixer;
> -		break;
> -	default:
> -		spec->adc_nids = stac927x_adc_nids;
> -		spec->mux_nids = stac927x_mux_nids;
> -		spec->num_muxes = 3;
> -		spec->init = stac927x_core_init;
> -		spec->mixer = stac927x_mixer;
> -	}
> +	spec->adc_nids = stac927x_adc_nids;
> +	spec->mux_nids = stac927x_mux_nids;
> +	spec->num_muxes = 3;
> +	spec->dmic_nids = stac927x_dmic_nids;
> +	spec->num_dmics = 2;
> +	spec->dmux_nid = 0x1b;
> +	spec->init = stac927x_core_init;
> +	spec->mixer = stac927x_mixer;
>  
>  	spec->multiout.dac_nids = spec->dac_nids;
>  
> @@ -1773,7 +1988,10 @@ static int patch_stac9205(struct hda_cod
>  
>  	spec->adc_nids = stac9205_adc_nids;
>  	spec->mux_nids = stac9205_mux_nids;
> -	spec->num_muxes = 3;
> +	spec->num_muxes = 2;
> +	spec->dmic_nids = stac9205_dmic_nids;
> +	spec->num_dmics = 2;
> +	spec->dmux_nid = 0x1d;
>  
>  	spec->init = stac9205_core_init;
>  	spec->mixer = stac9205_mixer;
> @@ -2039,12 +2257,12 @@ struct hda_codec_preset snd_hda_preset_s
>   	{ .id = 0x83847681, .name = "STAC9220D/9223D A2", .patch = patch_stac922x },
>   	{ .id = 0x83847682, .name = "STAC9221 A2", .patch = patch_stac922x },
>   	{ .id = 0x83847683, .name = "STAC9221D A2", .patch = patch_stac922x },
> - 	{ .id = 0x83847618, .name = "STAC9227", .patch = patch_stac927x },
> - 	{ .id = 0x83847619, .name = "STAC9227", .patch = patch_stac927x },
> - 	{ .id = 0x83847616, .name = "STAC9228", .patch = patch_stac927x },
> - 	{ .id = 0x83847617, .name = "STAC9228", .patch = patch_stac927x },
> - 	{ .id = 0x83847614, .name = "STAC9229", .patch = patch_stac927x },
> - 	{ .id = 0x83847615, .name = "STAC9229", .patch = patch_stac927x },
> + 	{ .id = 0x83847618, .name = "STAC9227", .patch = patch_stac9227 },
> + 	{ .id = 0x83847619, .name = "STAC9227", .patch = patch_stac9227 },
> + 	{ .id = 0x83847616, .name = "STAC9228", .patch = patch_stac9227 },
> + 	{ .id = 0x83847617, .name = "STAC9228", .patch = patch_stac9227 },
> + 	{ .id = 0x83847614, .name = "STAC9229", .patch = patch_stac9227 },
> + 	{ .id = 0x83847615, .name = "STAC9229", .patch = patch_stac9227 },
>   	{ .id = 0x83847620, .name = "STAC9274", .patch = patch_stac927x },
>   	{ .id = 0x83847621, .name = "STAC9274D", .patch = patch_stac927x },
>   	{ .id = 0x83847622, .name = "STAC9273X", .patch = patch_stac927x },
> 
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/alsa-devel
-- 
Tobin Davis <tdavis@dsl-only.net>


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642

  parent reply	other threads:[~2006-10-25 20:53 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-25 20:21 [PATCH] hda: add sigmatel dig mic support and refactor 9227 Matt Porter
2006-10-25 20:38 ` Lee Revell
2006-10-25 21:00   ` Matt Porter
2006-10-25 20:53 ` Tobin Davis [this message]
2006-10-25 21:41   ` Matt Porter
2006-10-25 22:32     ` Tobin Davis
2006-10-26 13:38   ` Matt Porter
2006-10-26 13:40     ` Takashi Iwai
2006-10-26 14:54       ` Tobin Davis
2006-10-26 15:08         ` Takashi Iwai
2006-10-26 11:02 ` Takashi Iwai
2006-10-26 14:36   ` Matt Porter
2006-10-26 15:03     ` Tobin Davis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1161809636.18211.65.camel@razman \
    --to=tdavis@dsl-only.net \
    --cc=alsa-devel@alsa-project.org \
    --cc=mporter@embeddedalley.com \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.