All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Add sequence parsing for speaker-outs in snd_hda_parse_pin_def_config()
@ 2007-05-03 17:40 Steve Longerbeam
  2007-05-05 18:16 ` Steve Longerbeam
  0 siblings, 1 reply; 3+ messages in thread
From: Steve Longerbeam @ 2007-05-03 17:40 UTC (permalink / raw)
  To: alsa-devel

[-- Attachment #1: Type: text/plain, Size: 1 bytes --]



[-- Attachment #2: speaker-seq.patch --]
[-- Type: text/x-patch, Size: 5253 bytes --]

changeset:   5028:01537f056c79
tag:         tip
user:        stevel@embeddedalley.com
date:        Thu May 03 10:30:04 2007 -0700
summary:     Add speaker pin sequencing to hda_codec.c:snd_hda_parse_pin_def_config().

Some verb tables (such as an Asus VT sent by IDT) contain only speaker
outs in the default pin configs, and no line-outs. In such a case the
speaker sequence numbers have to be used to order the speaker out
pins, just as is being done for line-out pins. Then, when speaker-outs
are copied to line-outs, the line-outs will be ordered properly.

Signed-off-by: Steve Longerbeam <stevel@embeddedalley.com>

diff -r c7366efee611 -r 01537f056c79 pci/hda/hda_codec.c
--- a/pci/hda/hda_codec.c	Thu May 03 10:24:35 2007 -0700
+++ b/pci/hda/hda_codec.c	Thu May 03 10:30:04 2007 -0700
@@ -2112,6 +2112,32 @@ static int __devinit is_in_nid_list(hda_
 	return 0;
 }
 
+
+/*
+ * Sort an associated group of pins according to their sequence numbers.
+ */
+static void sort_pins_by_sequence(hda_nid_t * pins, short * sequences,
+				  int num_pins)
+{
+	int i, j;
+	short seq;
+	hda_nid_t nid;
+	
+	for (i = 0; i < num_pins; i++) {
+		for (j = i + 1; j < num_pins; j++) {
+			if (sequences[i] > sequences[j]) {
+				seq = sequences[i];
+				sequences[i] = sequences[j];
+				sequences[j] = seq;
+				nid = pins[i];
+				pins[i] = pins[j];
+				pins[j] = nid;
+			}
+		}
+	}
+}
+
+
 /*
  * Parse all pin widgets and store the useful pin nids to cfg
  *
@@ -2134,13 +2160,16 @@ int __devinit snd_hda_parse_pin_def_conf
 					   hda_nid_t *ignore_nids)
 {
 	hda_nid_t nid, nid_start;
-	int i, j, nodes;
-	short seq, assoc_line_out, sequences[ARRAY_SIZE(cfg->line_out_pins)];
+	int nodes;
+	short seq, assoc_line_out, assoc_speaker;
+	short sequences_line_out[ARRAY_SIZE(cfg->line_out_pins)];
+	short sequences_speaker[ARRAY_SIZE(cfg->speaker_pins)];
 
 	memset(cfg, 0, sizeof(*cfg));
 
-	memset(sequences, 0, sizeof(sequences));
-	assoc_line_out = 0;
+	memset(sequences_line_out, 0, sizeof(sequences_line_out));
+	memset(sequences_speaker, 0, sizeof(sequences_speaker));
+	assoc_line_out = assoc_speaker = 0;
 
 	nodes = snd_hda_get_sub_nodes(codec, codec->afg, &nid_start);
 	for (nid = nid_start; nid < nodes + nid_start; nid++) {
@@ -2175,13 +2204,22 @@ int __devinit snd_hda_parse_pin_def_conf
 			if (cfg->line_outs >= ARRAY_SIZE(cfg->line_out_pins))
 				continue;
 			cfg->line_out_pins[cfg->line_outs] = nid;
-			sequences[cfg->line_outs] = seq;
+			sequences_line_out[cfg->line_outs] = seq;
 			cfg->line_outs++;
 			break;
 		case AC_JACK_SPEAKER:
+			seq = get_defcfg_sequence(def_conf);
+			assoc = get_defcfg_association(def_conf);
+			if (! assoc)
+				continue;
+			if (! assoc_speaker)
+				assoc_speaker = assoc;
+			else if (assoc_speaker != assoc)
+				continue;
 			if (cfg->speaker_outs >= ARRAY_SIZE(cfg->speaker_pins))
 				continue;
 			cfg->speaker_pins[cfg->speaker_outs] = nid;
+			sequences_speaker[cfg->speaker_outs] = seq;
 			cfg->speaker_outs++;
 			break;
 		case AC_JACK_HP_OUT:
@@ -2227,16 +2265,32 @@ int __devinit snd_hda_parse_pin_def_conf
 	}
 
 	/* sort by sequence */
-	for (i = 0; i < cfg->line_outs; i++)
-		for (j = i + 1; j < cfg->line_outs; j++)
-			if (sequences[i] > sequences[j]) {
-				seq = sequences[i];
-				sequences[i] = sequences[j];
-				sequences[j] = seq;
-				nid = cfg->line_out_pins[i];
-				cfg->line_out_pins[i] = cfg->line_out_pins[j];
-				cfg->line_out_pins[j] = nid;
-			}
+	sort_pins_by_sequence(cfg->line_out_pins, sequences_line_out,
+			      cfg->line_outs);
+	sort_pins_by_sequence(cfg->speaker_pins, sequences_speaker,
+			      cfg->speaker_outs);
+	
+	/*
+	 * FIX-UP: if no line-outs are detected, try to use speaker or HP pin
+	 * as a primary output
+	 */
+	if (!cfg->line_outs) {
+		if (cfg->speaker_outs) {
+			cfg->line_outs = cfg->speaker_outs;
+			memcpy(cfg->line_out_pins, cfg->speaker_pins,
+			       sizeof(cfg->speaker_pins));
+			cfg->speaker_outs = 0;
+			memset(cfg->speaker_pins, 0, sizeof(cfg->speaker_pins));
+			cfg->line_out_type = AUTO_PIN_SPEAKER_OUT;
+		} else if (cfg->hp_outs) {
+			cfg->line_outs = cfg->hp_outs;
+			memcpy(cfg->line_out_pins, cfg->hp_pins,
+			       sizeof(cfg->hp_pins));
+			cfg->hp_outs = 0;
+			memset(cfg->hp_pins, 0, sizeof(cfg->hp_pins));
+			cfg->line_out_type = AUTO_PIN_HP_OUT;
+		}
+	}
 
 	/* Reorder the surround channels
 	 * ALSA sequence is front/surr/clfe/side
@@ -2278,28 +2332,6 @@ int __devinit snd_hda_parse_pin_def_conf
 		   cfg->input_pins[AUTO_PIN_CD],
 		   cfg->input_pins[AUTO_PIN_AUX]);
 
-	/*
-	 * FIX-UP: if no line-outs are detected, try to use speaker or HP pin
-	 * as a primary output
-	 */
-	if (!cfg->line_outs) {
-		if (cfg->speaker_outs) {
-			cfg->line_outs = cfg->speaker_outs;
-			memcpy(cfg->line_out_pins, cfg->speaker_pins,
-			       sizeof(cfg->speaker_pins));
-			cfg->speaker_outs = 0;
-			memset(cfg->speaker_pins, 0, sizeof(cfg->speaker_pins));
-			cfg->line_out_type = AUTO_PIN_SPEAKER_OUT;
-		} else if (cfg->hp_outs) {
-			cfg->line_outs = cfg->hp_outs;
-			memcpy(cfg->line_out_pins, cfg->hp_pins,
-			       sizeof(cfg->hp_pins));
-			cfg->hp_outs = 0;
-			memset(cfg->hp_pins, 0, sizeof(cfg->hp_pins));
-			cfg->line_out_type = AUTO_PIN_HP_OUT;
-		}
-	}
-
 	return 0;
 }
 


[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Add sequence parsing for speaker-outs in snd_hda_parse_pin_def_config()
  2007-05-03 17:40 [PATCH] Add sequence parsing for speaker-outs in snd_hda_parse_pin_def_config() Steve Longerbeam
@ 2007-05-05 18:16 ` Steve Longerbeam
  2007-05-07  8:08   ` Takashi Iwai
  0 siblings, 1 reply; 3+ messages in thread
From: Steve Longerbeam @ 2007-05-05 18:16 UTC (permalink / raw)
  To: alsa-devel

Any comments on this patch? It really is needed because some BIOS's only 
define speaker-out's in the HDA codec default pin configs, and no 
line-outs. So speaker-out's must be sequenced just as is being done for 
line-out's, otherwise the surround pin assignments will be wrong.

Steve


Steve Longerbeam wrote:
>
> ------------------------------------------------------------------------
>
> changeset:   5028:01537f056c79
> tag:         tip
> user:        stevel@embeddedalley.com
> date:        Thu May 03 10:30:04 2007 -0700
> summary:     Add speaker pin sequencing to hda_codec.c:snd_hda_parse_pin_def_config().
>
> Some verb tables (such as an Asus VT sent by IDT) contain only speaker
> outs in the default pin configs, and no line-outs. In such a case the
> speaker sequence numbers have to be used to order the speaker out
> pins, just as is being done for line-out pins. Then, when speaker-outs
> are copied to line-outs, the line-outs will be ordered properly.
>
> Signed-off-by: Steve Longerbeam <stevel@embeddedalley.com>
>
> diff -r c7366efee611 -r 01537f056c79 pci/hda/hda_codec.c
> --- a/pci/hda/hda_codec.c	Thu May 03 10:24:35 2007 -0700
> +++ b/pci/hda/hda_codec.c	Thu May 03 10:30:04 2007 -0700
> @@ -2112,6 +2112,32 @@ static int __devinit is_in_nid_list(hda_
>  	return 0;
>  }
>  
> +
> +/*
> + * Sort an associated group of pins according to their sequence numbers.
> + */
> +static void sort_pins_by_sequence(hda_nid_t * pins, short * sequences,
> +				  int num_pins)
> +{
> +	int i, j;
> +	short seq;
> +	hda_nid_t nid;
> +	
> +	for (i = 0; i < num_pins; i++) {
> +		for (j = i + 1; j < num_pins; j++) {
> +			if (sequences[i] > sequences[j]) {
> +				seq = sequences[i];
> +				sequences[i] = sequences[j];
> +				sequences[j] = seq;
> +				nid = pins[i];
> +				pins[i] = pins[j];
> +				pins[j] = nid;
> +			}
> +		}
> +	}
> +}
> +
> +
>  /*
>   * Parse all pin widgets and store the useful pin nids to cfg
>   *
> @@ -2134,13 +2160,16 @@ int __devinit snd_hda_parse_pin_def_conf
>  					   hda_nid_t *ignore_nids)
>  {
>  	hda_nid_t nid, nid_start;
> -	int i, j, nodes;
> -	short seq, assoc_line_out, sequences[ARRAY_SIZE(cfg->line_out_pins)];
> +	int nodes;
> +	short seq, assoc_line_out, assoc_speaker;
> +	short sequences_line_out[ARRAY_SIZE(cfg->line_out_pins)];
> +	short sequences_speaker[ARRAY_SIZE(cfg->speaker_pins)];
>  
>  	memset(cfg, 0, sizeof(*cfg));
>  
> -	memset(sequences, 0, sizeof(sequences));
> -	assoc_line_out = 0;
> +	memset(sequences_line_out, 0, sizeof(sequences_line_out));
> +	memset(sequences_speaker, 0, sizeof(sequences_speaker));
> +	assoc_line_out = assoc_speaker = 0;
>  
>  	nodes = snd_hda_get_sub_nodes(codec, codec->afg, &nid_start);
>  	for (nid = nid_start; nid < nodes + nid_start; nid++) {
> @@ -2175,13 +2204,22 @@ int __devinit snd_hda_parse_pin_def_conf
>  			if (cfg->line_outs >= ARRAY_SIZE(cfg->line_out_pins))
>  				continue;
>  			cfg->line_out_pins[cfg->line_outs] = nid;
> -			sequences[cfg->line_outs] = seq;
> +			sequences_line_out[cfg->line_outs] = seq;
>  			cfg->line_outs++;
>  			break;
>  		case AC_JACK_SPEAKER:
> +			seq = get_defcfg_sequence(def_conf);
> +			assoc = get_defcfg_association(def_conf);
> +			if (! assoc)
> +				continue;
> +			if (! assoc_speaker)
> +				assoc_speaker = assoc;
> +			else if (assoc_speaker != assoc)
> +				continue;
>  			if (cfg->speaker_outs >= ARRAY_SIZE(cfg->speaker_pins))
>  				continue;
>  			cfg->speaker_pins[cfg->speaker_outs] = nid;
> +			sequences_speaker[cfg->speaker_outs] = seq;
>  			cfg->speaker_outs++;
>  			break;
>  		case AC_JACK_HP_OUT:
> @@ -2227,16 +2265,32 @@ int __devinit snd_hda_parse_pin_def_conf
>  	}
>  
>  	/* sort by sequence */
> -	for (i = 0; i < cfg->line_outs; i++)
> -		for (j = i + 1; j < cfg->line_outs; j++)
> -			if (sequences[i] > sequences[j]) {
> -				seq = sequences[i];
> -				sequences[i] = sequences[j];
> -				sequences[j] = seq;
> -				nid = cfg->line_out_pins[i];
> -				cfg->line_out_pins[i] = cfg->line_out_pins[j];
> -				cfg->line_out_pins[j] = nid;
> -			}
> +	sort_pins_by_sequence(cfg->line_out_pins, sequences_line_out,
> +			      cfg->line_outs);
> +	sort_pins_by_sequence(cfg->speaker_pins, sequences_speaker,
> +			      cfg->speaker_outs);
> +	
> +	/*
> +	 * FIX-UP: if no line-outs are detected, try to use speaker or HP pin
> +	 * as a primary output
> +	 */
> +	if (!cfg->line_outs) {
> +		if (cfg->speaker_outs) {
> +			cfg->line_outs = cfg->speaker_outs;
> +			memcpy(cfg->line_out_pins, cfg->speaker_pins,
> +			       sizeof(cfg->speaker_pins));
> +			cfg->speaker_outs = 0;
> +			memset(cfg->speaker_pins, 0, sizeof(cfg->speaker_pins));
> +			cfg->line_out_type = AUTO_PIN_SPEAKER_OUT;
> +		} else if (cfg->hp_outs) {
> +			cfg->line_outs = cfg->hp_outs;
> +			memcpy(cfg->line_out_pins, cfg->hp_pins,
> +			       sizeof(cfg->hp_pins));
> +			cfg->hp_outs = 0;
> +			memset(cfg->hp_pins, 0, sizeof(cfg->hp_pins));
> +			cfg->line_out_type = AUTO_PIN_HP_OUT;
> +		}
> +	}
>  
>  	/* Reorder the surround channels
>  	 * ALSA sequence is front/surr/clfe/side
> @@ -2278,28 +2332,6 @@ int __devinit snd_hda_parse_pin_def_conf
>  		   cfg->input_pins[AUTO_PIN_CD],
>  		   cfg->input_pins[AUTO_PIN_AUX]);
>  
> -	/*
> -	 * FIX-UP: if no line-outs are detected, try to use speaker or HP pin
> -	 * as a primary output
> -	 */
> -	if (!cfg->line_outs) {
> -		if (cfg->speaker_outs) {
> -			cfg->line_outs = cfg->speaker_outs;
> -			memcpy(cfg->line_out_pins, cfg->speaker_pins,
> -			       sizeof(cfg->speaker_pins));
> -			cfg->speaker_outs = 0;
> -			memset(cfg->speaker_pins, 0, sizeof(cfg->speaker_pins));
> -			cfg->line_out_type = AUTO_PIN_SPEAKER_OUT;
> -		} else if (cfg->hp_outs) {
> -			cfg->line_outs = cfg->hp_outs;
> -			memcpy(cfg->line_out_pins, cfg->hp_pins,
> -			       sizeof(cfg->hp_pins));
> -			cfg->hp_outs = 0;
> -			memset(cfg->hp_pins, 0, sizeof(cfg->hp_pins));
> -			cfg->line_out_type = AUTO_PIN_HP_OUT;
> -		}
> -	}
> -
>  	return 0;
>  }
>  
>
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>   

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Add sequence parsing for speaker-outs in snd_hda_parse_pin_def_config()
  2007-05-05 18:16 ` Steve Longerbeam
@ 2007-05-07  8:08   ` Takashi Iwai
  0 siblings, 0 replies; 3+ messages in thread
From: Takashi Iwai @ 2007-05-07  8:08 UTC (permalink / raw)
  To: Steve Longerbeam; +Cc: alsa-devel

Hi Steve,

At Sat, 05 May 2007 11:16:44 -0700,
Steve Longerbeam wrote:
> 
> Any comments on this patch? It really is needed because some BIOS's only 
> define speaker-out's in the HDA codec default pin configs, and no 
> line-outs. So speaker-out's must be sequenced just as is being done for 
> line-out's, otherwise the surround pin assignments will be wrong.

I've been (and am still) sick since the last week, so I couldn't check
posts on ML but only private mails.  At the next time, if you'd like a
patch review for merge, please add my address to Cc so that it'll
reach to me certainly.

Your patch looks nice, but unfortunately I have no test machines with
HD-audio around my bed...  Will test and merge to the upstream soon
after I'm recovered :)


Thanks,

Takashi



> 
> Steve
> 
> 
> Steve Longerbeam wrote:
> >
> > ------------------------------------------------------------------------
> >
> > changeset:   5028:01537f056c79
> > tag:         tip
> > user:        stevel@embeddedalley.com
> > date:        Thu May 03 10:30:04 2007 -0700
> > summary:     Add speaker pin sequencing to hda_codec.c:snd_hda_parse_pin_def_config().
> >
> > Some verb tables (such as an Asus VT sent by IDT) contain only speaker
> > outs in the default pin configs, and no line-outs. In such a case the
> > speaker sequence numbers have to be used to order the speaker out
> > pins, just as is being done for line-out pins. Then, when speaker-outs
> > are copied to line-outs, the line-outs will be ordered properly.
> >
> > Signed-off-by: Steve Longerbeam <stevel@embeddedalley.com>
> >
> > diff -r c7366efee611 -r 01537f056c79 pci/hda/hda_codec.c
> > --- a/pci/hda/hda_codec.c	Thu May 03 10:24:35 2007 -0700
> > +++ b/pci/hda/hda_codec.c	Thu May 03 10:30:04 2007 -0700
> > @@ -2112,6 +2112,32 @@ static int __devinit is_in_nid_list(hda_
> >  	return 0;
> >  }
> >  
> > +
> > +/*
> > + * Sort an associated group of pins according to their sequence numbers.
> > + */
> > +static void sort_pins_by_sequence(hda_nid_t * pins, short * sequences,
> > +				  int num_pins)
> > +{
> > +	int i, j;
> > +	short seq;
> > +	hda_nid_t nid;
> > +	
> > +	for (i = 0; i < num_pins; i++) {
> > +		for (j = i + 1; j < num_pins; j++) {
> > +			if (sequences[i] > sequences[j]) {
> > +				seq = sequences[i];
> > +				sequences[i] = sequences[j];
> > +				sequences[j] = seq;
> > +				nid = pins[i];
> > +				pins[i] = pins[j];
> > +				pins[j] = nid;
> > +			}
> > +		}
> > +	}
> > +}
> > +
> > +
> >  /*
> >   * Parse all pin widgets and store the useful pin nids to cfg
> >   *
> > @@ -2134,13 +2160,16 @@ int __devinit snd_hda_parse_pin_def_conf
> >  					   hda_nid_t *ignore_nids)
> >  {
> >  	hda_nid_t nid, nid_start;
> > -	int i, j, nodes;
> > -	short seq, assoc_line_out, sequences[ARRAY_SIZE(cfg->line_out_pins)];
> > +	int nodes;
> > +	short seq, assoc_line_out, assoc_speaker;
> > +	short sequences_line_out[ARRAY_SIZE(cfg->line_out_pins)];
> > +	short sequences_speaker[ARRAY_SIZE(cfg->speaker_pins)];
> >  
> >  	memset(cfg, 0, sizeof(*cfg));
> >  
> > -	memset(sequences, 0, sizeof(sequences));
> > -	assoc_line_out = 0;
> > +	memset(sequences_line_out, 0, sizeof(sequences_line_out));
> > +	memset(sequences_speaker, 0, sizeof(sequences_speaker));
> > +	assoc_line_out = assoc_speaker = 0;
> >  
> >  	nodes = snd_hda_get_sub_nodes(codec, codec->afg, &nid_start);
> >  	for (nid = nid_start; nid < nodes + nid_start; nid++) {
> > @@ -2175,13 +2204,22 @@ int __devinit snd_hda_parse_pin_def_conf
> >  			if (cfg->line_outs >= ARRAY_SIZE(cfg->line_out_pins))
> >  				continue;
> >  			cfg->line_out_pins[cfg->line_outs] = nid;
> > -			sequences[cfg->line_outs] = seq;
> > +			sequences_line_out[cfg->line_outs] = seq;
> >  			cfg->line_outs++;
> >  			break;
> >  		case AC_JACK_SPEAKER:
> > +			seq = get_defcfg_sequence(def_conf);
> > +			assoc = get_defcfg_association(def_conf);
> > +			if (! assoc)
> > +				continue;
> > +			if (! assoc_speaker)
> > +				assoc_speaker = assoc;
> > +			else if (assoc_speaker != assoc)
> > +				continue;
> >  			if (cfg->speaker_outs >= ARRAY_SIZE(cfg->speaker_pins))
> >  				continue;
> >  			cfg->speaker_pins[cfg->speaker_outs] = nid;
> > +			sequences_speaker[cfg->speaker_outs] = seq;
> >  			cfg->speaker_outs++;
> >  			break;
> >  		case AC_JACK_HP_OUT:
> > @@ -2227,16 +2265,32 @@ int __devinit snd_hda_parse_pin_def_conf
> >  	}
> >  
> >  	/* sort by sequence */
> > -	for (i = 0; i < cfg->line_outs; i++)
> > -		for (j = i + 1; j < cfg->line_outs; j++)
> > -			if (sequences[i] > sequences[j]) {
> > -				seq = sequences[i];
> > -				sequences[i] = sequences[j];
> > -				sequences[j] = seq;
> > -				nid = cfg->line_out_pins[i];
> > -				cfg->line_out_pins[i] = cfg->line_out_pins[j];
> > -				cfg->line_out_pins[j] = nid;
> > -			}
> > +	sort_pins_by_sequence(cfg->line_out_pins, sequences_line_out,
> > +			      cfg->line_outs);
> > +	sort_pins_by_sequence(cfg->speaker_pins, sequences_speaker,
> > +			      cfg->speaker_outs);
> > +	
> > +	/*
> > +	 * FIX-UP: if no line-outs are detected, try to use speaker or HP pin
> > +	 * as a primary output
> > +	 */
> > +	if (!cfg->line_outs) {
> > +		if (cfg->speaker_outs) {
> > +			cfg->line_outs = cfg->speaker_outs;
> > +			memcpy(cfg->line_out_pins, cfg->speaker_pins,
> > +			       sizeof(cfg->speaker_pins));
> > +			cfg->speaker_outs = 0;
> > +			memset(cfg->speaker_pins, 0, sizeof(cfg->speaker_pins));
> > +			cfg->line_out_type = AUTO_PIN_SPEAKER_OUT;
> > +		} else if (cfg->hp_outs) {
> > +			cfg->line_outs = cfg->hp_outs;
> > +			memcpy(cfg->line_out_pins, cfg->hp_pins,
> > +			       sizeof(cfg->hp_pins));
> > +			cfg->hp_outs = 0;
> > +			memset(cfg->hp_pins, 0, sizeof(cfg->hp_pins));
> > +			cfg->line_out_type = AUTO_PIN_HP_OUT;
> > +		}
> > +	}
> >  
> >  	/* Reorder the surround channels
> >  	 * ALSA sequence is front/surr/clfe/side
> > @@ -2278,28 +2332,6 @@ int __devinit snd_hda_parse_pin_def_conf
> >  		   cfg->input_pins[AUTO_PIN_CD],
> >  		   cfg->input_pins[AUTO_PIN_AUX]);
> >  
> > -	/*
> > -	 * FIX-UP: if no line-outs are detected, try to use speaker or HP pin
> > -	 * as a primary output
> > -	 */
> > -	if (!cfg->line_outs) {
> > -		if (cfg->speaker_outs) {
> > -			cfg->line_outs = cfg->speaker_outs;
> > -			memcpy(cfg->line_out_pins, cfg->speaker_pins,
> > -			       sizeof(cfg->speaker_pins));
> > -			cfg->speaker_outs = 0;
> > -			memset(cfg->speaker_pins, 0, sizeof(cfg->speaker_pins));
> > -			cfg->line_out_type = AUTO_PIN_SPEAKER_OUT;
> > -		} else if (cfg->hp_outs) {
> > -			cfg->line_outs = cfg->hp_outs;
> > -			memcpy(cfg->line_out_pins, cfg->hp_pins,
> > -			       sizeof(cfg->hp_pins));
> > -			cfg->hp_outs = 0;
> > -			memset(cfg->hp_pins, 0, sizeof(cfg->hp_pins));
> > -			cfg->line_out_type = AUTO_PIN_HP_OUT;
> > -		}
> > -	}
> > -
> >  	return 0;
> >  }
> >  
> >
> >   
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Alsa-devel mailing list
> > Alsa-devel@alsa-project.org
> > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> >   
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-05-07  8:08 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-03 17:40 [PATCH] Add sequence parsing for speaker-outs in snd_hda_parse_pin_def_config() Steve Longerbeam
2007-05-05 18:16 ` Steve Longerbeam
2007-05-07  8:08   ` Takashi Iwai

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.