Skip to contentSkip to conversation

hda: Add dmux to STAC 9228

PATCH Applied Matthew Ranostay 3 participants 6 messages Oct 18, 2007 – Oct 19, 2007

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 hda: Add dmux to STAC 9228

Added a dmux to the STAC9228 cards with DMIC support. And added a STAC_DIGITAL_INPUT_SOURCE macro for repeating mixer code.
---

pci/hda/patch_sigmatel.c +13 -8
diff -r 821a4558dd47 pci/hda/patch_sigmatel.c
@@ -430,6 +430,16 @@ static struct hda_verb stac9205_core_ini
 	{}
 };
 
+#define STAC_DIGITAL_INPUT_SOURCE(cnt) \
+	{ \
+		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, \
+		.name = "Digital Input Source", \
+		.count = cnt, \
+		.info = stac92xx_dmux_enum_info, \
+		.get = stac92xx_dmux_enum_get, \
+		.put = stac92xx_dmux_enum_put,\
+	}
+
 #define STAC_INPUT_SOURCE(cnt) \
 	{ \
 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, \
@@ -482,14 +492,7 @@ static struct snd_kcontrol_new stac925x_
 };
 
 static struct snd_kcontrol_new 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,
-	},
+	STAC_DIGITAL_INPUT_SOURCE(1),
 	STAC_INPUT_SOURCE(2),
 	STAC_ANALOG_LOOPBACK(0xFE0, 0x7E0),
 	STAC_VOLKNOB(0x24),
@@ -521,6 +524,7 @@ static struct snd_kcontrol_new stac922x_
 
 
 static struct snd_kcontrol_new stac927x_mixer[] = {
+	STAC_DIGITAL_INPUT_SOURCE(1),
 	STAC_INPUT_SOURCE(3),
 	STAC_VOLKNOB(0x24),
 	STAC_ANALOG_LOOPBACK(0xFEB, 0x7EB),
@@ -2773,6 +2777,7 @@ static int patch_stac927x(struct hda_cod
 	case 0x10280209: /* STAC 9228 */
 		spec->dmic_nids = stac927x_dmic_nids;
 		spec->num_dmics = STAC927X_NUM_DMICS;
+		spec->dmux_nid = 0x1c;
 		break;
 	default:
 		spec->num_dmics = 0;	

_______________________________________________
Alsa-devel mailing list
[email protected]
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

Applied
#1 lore raw

At Thu, 18 Oct 2007 17:36:32 -0400,

Quoted 5 lines · Matthew Ranostay

Added a dmux to the STAC9228 cards with DMIC support. And added a STAC_DIGITAL_INPUT_SOURCE macro for repeating mixer code.
---

Thanks, applied to HG tree now.

Takashi

#2 lore raw
In reply to Matthew Ranostay
Quoted 3 lines · Matthew Ranostay

Added a dmux to the STAC9228 cards with DMIC support. And added a STAC_DIGITAL_INPUT_SOURCE macro for repeating mixer code.
---

I'm not having any luck with this patch on my XPS M1330. I built against Ubuntu Gutsy (2.6.22 which requires some PIT_TICK_RATE futzing in pcsp.h) from current ALSA repo bits after Takashi applied it to HG. I also removed Gusty l-u-m which contains a conflicting snd-hda-intel.

Audio output works fine. The only record source that appears to work is the external microphone (front input), though it is very faint even with mux 1 cranked to the max.

Can you describe your environment and record applications? Perhaps I'm just missing some assumption.

Signature · 1 line
Tim Gardner [email protected]
#3 lore raw
Quoted 12 lines · Tim Gardner
Quoted 4 lines · Matthew Ranostay

Added a dmux to the STAC9228 cards with DMIC support. And added a STAC_DIGITAL_INPUT_SOURCE macro for repeating mixer code.
---

I'm not having any luck with this patch on my XPS M1330. I built against Ubuntu Gutsy (2.6.22 which requires some PIT_TICK_RATE futzing in pcsp.h) from current ALSA repo bits after Takashi applied it to HG. I also removed Gusty l-u-m which contains a conflicting snd-hda-intel.

Quoted 8 lines

Audio output works fine. The only record source that appears to work is the external microphone (front input), though it is very faint even with mux 1 cranked to the max.

Can you describe your environment and record applications? Perhaps I'm just missing some assumption.

I think the problem is that I set the dmux to ADC1MUX instead of ADC0MUX, could you test this patch to confirm? Please let me know your results.

Thanks,

Matt Ranostay

pci/hda/patch_sigmatel.c +1 -1
diff -r 7cf5e23f804e pci/hda/patch_sigmatel.c
@@ -2777,7 +2777,7 @@ static int patch_stac927x(struct hda_cod
 	case 0x10280209: /* STAC 9228 */
 		spec->dmic_nids = stac927x_dmic_nids;
 		spec->num_dmics = STAC927X_NUM_DMICS;
-		spec->dmux_nid = 0x1c;
+		spec->dmux_nid = 0x1b;
 		break;
 	default:
 		spec->num_dmics = 0;	

_______________________________________________
Alsa-devel mailing list
[email protected]
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

#4 lore raw

This doesn't seem to make a lot of difference. The external microphone is marginally better, but still not really usable (recognizable but distorted). The Gnome ALSA mixer shows 3 capture sources plus digital and 3 mux's. Only the first capture source records anything. I verified that you must have an external mic plugged in just to make sure the built-in mic wasn't recording.

rtg

Quoted 31 lines · Matthew Ranostay

I think the problem is that I set the dmux to ADC1MUX instead of ADC0MUX, could you test this patch to confirm?
Please let me know your results.

Thanks,

Matt Ranostay

------------------------------------------------------------------------

diff -r 7cf5e23f804e pci/hda/patch_sigmatel.c

pci/hda/patch_sigmatel.c +1 -2
@@ -2777,7 +2777,7 @@ static int patch_stac927x(struct hda_cod
 	case 0x10280209: /* STAC 9228 */
 		spec->dmic_nids = stac927x_dmic_nids;
 		spec->num_dmics = STAC927X_NUM_DMICS;
-		spec->dmux_nid = 0x1c;
+		spec->dmux_nid = 0x1b;
 		break;
 	default:
 		spec->num_dmics = 0;	
 
 
------------------------------------------------------------------------

_______________________________________________
Alsa-devel mailing list
[email protected]
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

Signature · 1 line
Tim Gardner [email protected]
#5 lore raw
Quoted 36 lines · Tim Gardner

This doesn't seem to make a lot of difference. The external microphone is marginally better, but still not really usable (recognizable but distorted). The Gnome ALSA mixer shows 3 capture sources plus digital and 3 mux's. Only the first capture source records anything. I verified that you must have an external mic plugged in just to make sure the built-in mic wasn't recording.

rtg

Quoted 25 lines · Matthew Ranostay

I think the problem is that I set the dmux to ADC1MUX instead of ADC0MUX, could you test this patch to confirm?
Please let me know your results.

Thanks,

Matt Ranostay

------------------------------------------------------------------------

diff -r 7cf5e23f804e pci/hda/patch_sigmatel.c

pci/hda/patch_sigmatel.c +1 -1
@@ -2777,7 +2777,7 @@ static int patch_stac927x(struct hda_cod
 	case 0x10280209: /* STAC 9228 */
 		spec->dmic_nids = stac927x_dmic_nids;
 		spec->num_dmics = STAC927X_NUM_DMICS;
-		spec->dmux_nid = 0x1c;
+		spec->dmux_nid = 0x1b;
 		break;
 	default:
 		spec->num_dmics = 0;	
Quoted 10 lines
Quoted 7 lines

------------------------------------------------------------------------

_______________________________________________
Alsa-devel mailing list
[email protected]
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

Ok it is true that there are 3 mux capture sources, but as of the moment we are only using one of them,
ADC0MUX(which will be the first capture source control).

The reason that you can barely hear any sound recording from a DMIC is that there is no hardware db gain, the
only way you can currently get measurable results is from software gain.

Hope that answers your questions.

Thanks,

Matt Ranostay