[alsa-devel] Cherry Trail + RT5645 devices analog microphone not working.
Hi Bard,
I've been looking into getting the microphone to work on some Cherry Trail + RT5645 devices with what appears to be a simple analog microphone.
You can see the microphone on one of the models I'm trying to get it to work on soldered onto the right side of the PCB here: https://i.imgur.com/bJzBQWe.jpg
I'm using this ucm config:
https://fedorapeople.org/~jwrdegoede/chtrt5645/
Which is basically Pierre-Louis Bossart's config from: https://github.com/plbossart/UCM
Adjusted because the devices all have a mono speaker.
I've been trying to get this to work myself and I can get some sound while recording by adding:
cset "name='RECMIXL BST2 Switch' on" cset "name='RECMIXR BST2 Switch' on"
But then I mainly get noise, I do get some sound from the microphone if I talk really really loudly, but it is barely above the noise-floor. I've the feeling that BST2 is only picking up the microphone via cross-talk and that BST1 indeed is the correct input, but for some reason I get complete silence when recording when only BST1 is selected in the RECMIXR, and yes I've checked / set the "IN1 boost volume".
TL;DR: I'm trying to get an analog mic to work on 3 different models Cherry Trail + RT5645 devices and I've been unable to get this to work. I've put a registerdump of the rt5645 with gnome-sound-recorder running here: https://fedorapeople.org/~jwrdegoede/rt5645-mic-red.dump
Any insights / help with this would be very much welcome.
Regards,
Hans
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Sunday, December 24, 2017 6:43 PM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Cherry Trail + RT5645 devices analog microphone not working.
Hi Bard,
I've been looking into getting the microphone to work on some Cherry Trail + RT5645 devices with what appears to be a simple analog microphone.
You can see the microphone on one of the models I'm trying to get it to work on soldered onto the right side of the PCB here: https://i.imgur.com/bJzBQWe.jpg
I'm using this ucm config:
https://fedorapeople.org/~jwrdegoede/chtrt5645/
Which is basically Pierre-Louis Bossart's config from: https://github.com/plbossart/UCM
Adjusted because the devices all have a mono speaker.
I've been trying to get this to work myself and I can get some sound while recording by adding:
cset "name='RECMIXL BST2 Switch' on" cset "name='RECMIXR BST2 Switch' on"
But then I mainly get noise, I do get some sound from the microphone if I talk really really loudly, but it is barely above the noise-floor. I've the feeling that BST2 is only picking up the microphone via cross-talk and that BST1 indeed is the correct input, but for some reason I get complete silence when recording when only BST1 is selected in the RECMIXR, and yes I've checked / set the "IN1 boost volume".
TL;DR: I'm trying to get an analog mic to work on 3 different models Cherry Trail + RT5645 devices and I've been unable to get this to work. I've put a registerdump of the rt5645 with gnome-sound-recorder running here: https://fedorapeople.org/~jwrdegoede/rt5645-mic-red.dump
Any insights / help with this would be very much welcome.
I don't have the schematic, but I think you probably need micbias for the capture. Please add both "micbias1" and "micbias2" in the audio route since I don't know which one is needed. for example static const struct snd_soc_dapm_route cht_rt5645_audio_map[] = { ... {"Int Mic", NULL, "micbias1"}, {"Int Mic", NULL, "micbias2"}, ... };
Regards,
Hans
------Please consider the environment before printing this e-mail.
Hi,
On 25-12-17 03:15, Bard Liao wrote:
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Sunday, December 24, 2017 6:43 PM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Cherry Trail + RT5645 devices analog microphone not working.
Hi Bard,
I've been looking into getting the microphone to work on some Cherry Trail + RT5645 devices with what appears to be a simple analog microphone.
You can see the microphone on one of the models I'm trying to get it to work on soldered onto the right side of the PCB here: https://i.imgur.com/bJzBQWe.jpg
I'm using this ucm config:
https://fedorapeople.org/~jwrdegoede/chtrt5645/
Which is basically Pierre-Louis Bossart's config from: https://github.com/plbossart/UCM
Adjusted because the devices all have a mono speaker.
I've been trying to get this to work myself and I can get some sound while recording by adding:
cset "name='RECMIXL BST2 Switch' on" cset "name='RECMIXR BST2 Switch' on"
But then I mainly get noise, I do get some sound from the microphone if I talk really really loudly, but it is barely above the noise-floor. I've the feeling that BST2 is only picking up the microphone via cross-talk and that BST1 indeed is the correct input, but for some reason I get complete silence when recording when only BST1 is selected in the RECMIXR, and yes I've checked / set the "IN1 boost volume".
TL;DR: I'm trying to get an analog mic to work on 3 different models Cherry Trail + RT5645 devices and I've been unable to get this to work. I've put a registerdump of the rt5645 with gnome-sound-recorder running here: https://fedorapeople.org/~jwrdegoede/rt5645-mic-red.dump
Any insights / help with this would be very much welcome.
I don't have the schematic, but I think you probably need micbias for the capture. Please add both "micbias1" and "micbias2" in the audio route since I don't know which one is needed. for example static const struct snd_soc_dapm_route cht_rt5645_audio_map[] = { ... {"Int Mic", NULL, "micbias1"}, {"Int Mic", NULL, "micbias2"}, ... };
Thank you for your reply. I've tested this, but unfortunately it does not help.
Do you perhaps have a cherrytrail device withrt5645 codec where you can test an analog mic input with the upstream driver + latest ucm file from Pierre-Louis with yourself ? I've the feeling that this is not specific to the 3 devices I've access to but a general problem in the driver and/or the ucm files.
Regards,
Hans
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Monday, December 25, 2017 8:03 PM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Re: Cherry Trail + RT5645 devices analog microphone not working.
Hi,
On 25-12-17 03:15, Bard Liao wrote:
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Sunday, December 24, 2017 6:43 PM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Cherry Trail + RT5645 devices analog microphone not working.
Hi Bard,
I've been looking into getting the microphone to work on some Cherry Trail + RT5645 devices with what appears to be a simple analog microphone.
You can see the microphone on one of the models I'm trying to get it to work on soldered onto the right side of the PCB here: https://i.imgur.com/bJzBQWe.jpg
I'm using this ucm config:
https://fedorapeople.org/~jwrdegoede/chtrt5645/
Which is basically Pierre-Louis Bossart's config from: https://github.com/plbossart/UCM
Adjusted because the devices all have a mono speaker.
I've been trying to get this to work myself and I can get some sound while recording by adding:
cset "name='RECMIXL BST2 Switch' on" cset "name='RECMIXR BST2 Switch' on"
But then I mainly get noise, I do get some sound from the microphone if I talk really really loudly, but it is barely above the noise-floor. I've the feeling that BST2 is only picking up the microphone via cross-talk and that BST1 indeed is the correct input, but for some reason I get complete silence when recording when only BST1 is selected in the RECMIXR, and yes I've checked / set the "IN1 boost volume".
TL;DR: I'm trying to get an analog mic to work on 3 different models Cherry Trail + RT5645 devices and I've been unable to get this to work. I've put a registerdump of the rt5645 with gnome-sound-recorder running here: https://fedorapeople.org/~jwrdegoede/rt5645-mic-red.dump
Any insights / help with this would be very much welcome.
I don't have the schematic, but I think you probably need micbias for the capture. Please add both "micbias1" and "micbias2" in the audio route since I don't know which one is needed. for example static const struct snd_soc_dapm_route cht_rt5645_audio_map[] = { ... {"Int Mic", NULL, "micbias1"}, {"Int Mic", NULL, "micbias2"}, ... };
Thank you for your reply. I've tested this, but unfortunately it does not help.
Do you perhaps have a cherrytrail device withrt5645 codec where you can test an analog mic input with the upstream driver + latest ucm file from Pierre-Louis with yourself ? I've the feeling that this is not specific to the 3 devices I've access to but a general problem in the driver and/or the ucm files.
Please try the attached patch. I don't have any cherrytrail device with rt5645 codec. But I verified the register settings on my rt5645 EVB. If the patch doesn't work, please dump register for me. Note that adding "micbias1" and "micbias2 in the audio route is also needed.
Regards,
Hans
------Please consider the environment before printing this e-mail.
Hi,
On 26-12-17 06:29, Bard Liao wrote:
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Monday, December 25, 2017 8:03 PM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Re: Cherry Trail + RT5645 devices analog microphone not working.
Hi,
On 25-12-17 03:15, Bard Liao wrote:
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Sunday, December 24, 2017 6:43 PM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Cherry Trail + RT5645 devices analog microphone not working.
Hi Bard,
I've been looking into getting the microphone to work on some Cherry Trail + RT5645 devices with what appears to be a simple analog microphone.
You can see the microphone on one of the models I'm trying to get it to work on soldered onto the right side of the PCB here: https://i.imgur.com/bJzBQWe.jpg
I'm using this ucm config:
https://fedorapeople.org/~jwrdegoede/chtrt5645/
Which is basically Pierre-Louis Bossart's config from: https://github.com/plbossart/UCM
Adjusted because the devices all have a mono speaker.
I've been trying to get this to work myself and I can get some sound while recording by adding:
cset "name='RECMIXL BST2 Switch' on" cset "name='RECMIXR BST2 Switch' on"
But then I mainly get noise, I do get some sound from the microphone if I talk really really loudly, but it is barely above the noise-floor. I've the feeling that BST2 is only picking up the microphone via cross-talk and that BST1 indeed is the correct input, but for some reason I get complete silence when recording when only BST1 is selected in the RECMIXR, and yes I've checked / set the "IN1 boost volume".
TL;DR: I'm trying to get an analog mic to work on 3 different models Cherry Trail + RT5645 devices and I've been unable to get this to work. I've put a registerdump of the rt5645 with gnome-sound-recorder running here: https://fedorapeople.org/~jwrdegoede/rt5645-mic-red.dump
Any insights / help with this would be very much welcome.
I don't have the schematic, but I think you probably need micbias for the capture. Please add both "micbias1" and "micbias2" in the audio route since I don't know which one is needed. for example static const struct snd_soc_dapm_route cht_rt5645_audio_map[] = { ... {"Int Mic", NULL, "micbias1"}, {"Int Mic", NULL, "micbias2"}, ... };
Thank you for your reply. I've tested this, but unfortunately it does not help.
Do you perhaps have a cherrytrail device withrt5645 codec where you can test an analog mic input with the upstream driver + latest ucm file from Pierre-Louis with yourself ? I've the feeling that this is not specific to the 3 devices I've access to but a general problem in the driver and/or the ucm files.
Please try the attached patch. I don't have any cherrytrail device with rt5645 codec. But I verified the register settings on my rt5645 EVB. If the patch doesn't work, please dump register for me. Note that adding "micbias1" and "micbias2 in the audio route is also needed.
Thank you, modifying the RT5645_GEN_CTRL2 reg seems to help, for some reason the patch does not work and neither MB1 and MB2 in reg 0x64 nor the RT5645_GEN_CTRL2 changes happen, but after manually applying these with i2cset I can actual use the mic, although there is still quite a bit of white noise in the background.
Attached is a regdump after making the manual changes to reg 0x64 and reg 0xfb.
I did add the micbias audio routes:
@@ -2297,6 +2297,9 @@ static const struct snd_soc_dapm_route rt5645_dapm_routes[] = { { "DMIC2", NULL, "DMIC L2" }, { "DMIC2", NULL, "DMIC R2" },
+ { "Int Mic", NULL, "micbias1" }, + { "Int Mic", NULL, "micbias2" }, + { "BST1", NULL, "IN1P" }, { "BST1", NULL, "IN1N" }, { "BST1", NULL, "JD Power" },
But I believe that your tree has some patches which are not upstream yet, the last patch you attached expects the micbias1 and micbias2 lines in the widget lists to be of the "SND_SOC_DAPM_SUPPLY" type, but here: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git/tree/sound...
They are still of the SND_SOC_DAPM_MICBIAS type.
Regards,
Hans
Regards,
Hans
------Please consider the environment before printing this e-mail.
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Thursday, December 28, 2017 3:13 AM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Re: Cherry Trail + RT5645 devices analog microphone not working.
Hi,
On 26-12-17 06:29, Bard Liao wrote:
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Monday, December 25, 2017 8:03 PM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Re: Cherry Trail + RT5645 devices analog microphone not working.
Hi,
On 25-12-17 03:15, Bard Liao wrote:
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Sunday, December 24, 2017 6:43 PM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Cherry Trail + RT5645 devices analog microphone not working.
Hi Bard,
I've been looking into getting the microphone to work on some Cherry Trail + RT5645 devices with what appears to be a simple analog microphone.
You can see the microphone on one of the models I'm trying to get it to work on soldered onto the right side of the PCB here: https://i.imgur.com/bJzBQWe.jpg
I'm using this ucm config:
https://fedorapeople.org/~jwrdegoede/chtrt5645/
Which is basically Pierre-Louis Bossart's config from: https://github.com/plbossart/UCM
Adjusted because the devices all have a mono speaker.
I've been trying to get this to work myself and I can get some sound while recording by adding:
cset "name='RECMIXL BST2 Switch' on" cset "name='RECMIXR BST2 Switch' on"
But then I mainly get noise, I do get some sound from the microphone if I talk really really loudly, but it is barely above the noise-floor. I've the feeling that BST2 is only picking up the microphone via cross-talk and that BST1 indeed is the correct input, but for some reason I get complete silence when recording when only BST1 is selected in the RECMIXR, and yes I've checked / set the "IN1 boost volume".
TL;DR: I'm trying to get an analog mic to work on 3 different models Cherry Trail + RT5645 devices and I've been unable to get this to work. I've put a registerdump of the rt5645 with gnome-sound-recorder running here: https://fedorapeople.org/~jwrdegoede/rt5645-mic-red.dump
Any insights / help with this would be very much welcome.
I don't have the schematic, but I think you probably need micbias for the capture. Please add both "micbias1" and "micbias2" in the audio route since I don't know which one is needed. for example static const struct snd_soc_dapm_route cht_rt5645_audio_map[] = { ... {"Int Mic", NULL, "micbias1"}, {"Int Mic", NULL, "micbias2"}, ... };
Thank you for your reply. I've tested this, but unfortunately it does not help.
Do you perhaps have a cherrytrail device withrt5645 codec where you can test an analog mic input with the upstream driver + latest ucm file from Pierre-Louis with yourself ? I've the feeling that this is not specific to the 3 devices I've access to but a general problem in the driver and/or the ucm files.
Please try the attached patch. I don't have any cherrytrail device with rt5645 codec. But I verified the register settings on my rt5645 EVB. If the patch doesn't work, please dump register for me. Note that adding "micbias1" and "micbias2 in the audio route is also needed.
Thank you, modifying the RT5645_GEN_CTRL2 reg seems to help, for some reason the patch does not work and neither MB1 and MB2 in reg 0x64 nor the RT5645_GEN_CTRL2 changes happen, but after manually applying these with i2cset I can actual use the mic, although there is still quite a bit of white noise in the background.
I think the reason why the patch didn't work is because "micbias1" and "micbias2" are not connected to the audio route. The white noise probably because the gain is too high. And if you are using a differential mic, please set rt5645->pdata.in2_diff = true;
Attached is a regdump after making the manual changes to reg 0x64 and reg 0xfb.
I did add the micbias audio routes:
@@ -2297,6 +2297,9 @@ static const struct snd_soc_dapm_route rt5645_dapm_routes[] = { { "DMIC2", NULL, "DMIC L2" }, { "DMIC2", NULL, "DMIC R2" },
- { "Int Mic", NULL, "micbias1" },
- { "Int Mic", NULL, "micbias2" },
- { "BST1", NULL, "IN1P" }, { "BST1", NULL, "IN1N" }, { "BST1", NULL, "JD Power" },
+ { "Int Mic", NULL, "micbias1" }, + { "Int Mic", NULL, "micbias2" }, should add in machine driver. Please make sure "Int Mic" is registered and its connected to "IN1P" and "IN1N". Like {"IN1P", NULL, "Int Mic"}, {"IN1N", NULL, "Int Mic"}, Or you can share your machine driver so I can check it.
But I believe that your tree has some patches which are not upstream yet, the last patch you attached expects the micbias1 and micbias2 lines in the widget lists to be of the "SND_SOC_DAPM_SUPPLY" type, but here: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git/tree/sound... soc/codecs/rt5645.c?h=topic/rt5645
They are still of the SND_SOC_DAPM_MICBIAS type.
Sorry, I forget to send the attached patch to upstream. Please apply it first.
Regards,
Hans
Regards,
Hans
------Please consider the environment before printing this e-mail.
Hi,
On 28-12-17 04:05, Bard Liao wrote:
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Thursday, December 28, 2017 3:13 AM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Re: Cherry Trail + RT5645 devices analog microphone not working.
Hi,
On 26-12-17 06:29, Bard Liao wrote:
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Monday, December 25, 2017 8:03 PM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Re: Cherry Trail + RT5645 devices analog microphone not working.
Hi,
On 25-12-17 03:15, Bard Liao wrote:
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Sunday, December 24, 2017 6:43 PM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Cherry Trail + RT5645 devices analog microphone not working.
Hi Bard,
I've been looking into getting the microphone to work on some Cherry Trail + RT5645 devices with what appears to be a simple analog microphone.
You can see the microphone on one of the models I'm trying to get it to work on soldered onto the right side of the PCB here: https://i.imgur.com/bJzBQWe.jpg
I'm using this ucm config:
https://fedorapeople.org/~jwrdegoede/chtrt5645/
Which is basically Pierre-Louis Bossart's config from: https://github.com/plbossart/UCM
Adjusted because the devices all have a mono speaker.
I've been trying to get this to work myself and I can get some sound while recording by adding:
cset "name='RECMIXL BST2 Switch' on" cset "name='RECMIXR BST2 Switch' on"
But then I mainly get noise, I do get some sound from the microphone if I talk really really loudly, but it is barely above the noise-floor. I've the feeling that BST2 is only picking up the microphone via cross-talk and that BST1 indeed is the correct input, but for some reason I get complete silence when recording when only BST1 is selected in the RECMIXR, and yes I've checked / set the "IN1 boost volume".
TL;DR: I'm trying to get an analog mic to work on 3 different models Cherry Trail + RT5645 devices and I've been unable to get this to work. I've put a registerdump of the rt5645 with gnome-sound-recorder running here: https://fedorapeople.org/~jwrdegoede/rt5645-mic-red.dump
Any insights / help with this would be very much welcome.
I don't have the schematic, but I think you probably need micbias for the capture. Please add both "micbias1" and "micbias2" in the audio route since I don't know which one is needed. for example static const struct snd_soc_dapm_route cht_rt5645_audio_map[] = { ... {"Int Mic", NULL, "micbias1"}, {"Int Mic", NULL, "micbias2"}, ... };
Thank you for your reply. I've tested this, but unfortunately it does not help.
Do you perhaps have a cherrytrail device withrt5645 codec where you can test an analog mic input with the upstream driver + latest ucm file from Pierre-Louis with yourself ? I've the feeling that this is not specific to the 3 devices I've access to but a general problem in the driver and/or the ucm files.
Please try the attached patch. I don't have any cherrytrail device with rt5645 codec. But I verified the register settings on my rt5645 EVB. If the patch doesn't work, please dump register for me. Note that adding "micbias1" and "micbias2 in the audio route is also needed.
Thank you, modifying the RT5645_GEN_CTRL2 reg seems to help, for some reason the patch does not work and neither MB1 and MB2 in reg 0x64 nor the RT5645_GEN_CTRL2 changes happen, but after manually applying these with i2cset I can actual use the mic, although there is still quite a bit of white noise in the background.
I think the reason why the patch didn't work is because "micbias1" and "micbias2" are not connected to the audio route. The white noise probably because the gain is too high. And if you are using a differential mic, please set rt5645->pdata.in2_diff = true;
Attached is a regdump after making the manual changes to reg 0x64 and reg 0xfb.
I did add the micbias audio routes:
@@ -2297,6 +2297,9 @@ static const struct snd_soc_dapm_route rt5645_dapm_routes[] = { { "DMIC2", NULL, "DMIC L2" }, { "DMIC2", NULL, "DMIC R2" },
- { "Int Mic", NULL, "micbias1" },
- { "Int Mic", NULL, "micbias2" },
- { "BST1", NULL, "IN1P" }, { "BST1", NULL, "IN1N" }, { "BST1", NULL, "JD Power" },
- { "Int Mic", NULL, "micbias1" },
- { "Int Mic", NULL, "micbias2" },
should add in machine driver. Please make sure "Int Mic" is registered and its connected to "IN1P" and "IN1N". Like {"IN1P", NULL, "Int Mic"}, {"IN1N", NULL, "Int Mic"}, Or you can share your machine driver so I can check it.
Ah yes, adding these in the machine driver instead of the codec driver did the trick.
Actually I ended up making some changes, as mentioned before the BST2 input seemed to be the one which had the mic, so I ended up doing this:
--- a/sound/soc/intel/boards/cht_bsw_rt5645.c +++ b/sound/soc/intel/boards/cht_bsw_rt5645.c @@ -126,6 +126,8 @@ static const struct snd_soc_dapm_widget cht_dapm_widgets[] = static const struct snd_soc_dapm_route cht_rt5645_audio_map[] = { {"IN1P", NULL, "Headset Mic"}, {"IN1N", NULL, "Headset Mic"}, + {"IN2P", NULL, "Int Mic"}, + {"IN2N", NULL, "Int Mic"}, {"DMIC L1", NULL, "Int Mic"}, {"DMIC R1", NULL, "Int Mic"}, {"Headphone", NULL, "HPOL"}, @@ -135,6 +137,7 @@ static const struct snd_soc_dapm_route cht_rt5645_audio_map[ {"Headphone", NULL, "Platform Clock"}, {"Headset Mic", NULL, "Platform Clock"}, {"Int Mic", NULL, "Platform Clock"}, + {"Int Mic", NULL, "micbias2"}, {"Ext Spk", NULL, "Platform Clock"}, };
As you can see I only need micbas2 and I routed IN2P and IN2N to Int Mic, not IN1P and IN2P, this combined with changing the ucm file to enable disable BST2 rather then BST1 in RECMIXL/R makes the analog microphone work on one of my devices (I've not yet tested the others).
When I've some more time for this I will also try this on the 2 other cht + rt5645 devices I've and I will also try the headphone mic input, I guess that that may need micbias1 enabling.
Some questions for you:
1) I think enabling micbias2 may be a problem on devices with a DMIC, could this be a problem? Currently the codec driver itself contains quirks for dmic pin-mapping, maybe we should leave micbias2 disabled if dmic pin-mapping is specified through a quirk?
2) Do headset mics normally need a bias current? Could this be headset dependent?
Regards,
Hans
But I believe that your tree has some patches which are not upstream yet, the last patch you attached expects the micbias1 and micbias2 lines in the widget lists to be of the "SND_SOC_DAPM_SUPPLY" type, but here: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git/tree/sound... soc/codecs/rt5645.c?h=topic/rt5645
They are still of the SND_SOC_DAPM_MICBIAS type.
Sorry, I forget to send the attached patch to upstream. Please apply it first.
Regards,
Hans
Regards,
Hans
------Please consider the environment before printing this e-mail.
Some questions for you:
- I think enabling micbias2 may be a problem on devices with a DMIC,
could this be a problem? Currently the codec driver itself contains quirks for dmic pin-mapping, maybe we should leave micbias2 disabled if dmic pin-mapping is specified through a quirk?
No, micbias2 and DMIC are independent and micbias2 will not be enabled if we don't add it in the audio route. So I don't think we need to disable it if dmic pin-mapping is specified.
- Do headset mics normally need a bias current? Could this be headset
dependent?
Yes, but we don't need to set specific register for that. It means you don't need to add "micbias1" in the audio route for headset mic. I think all headset mic will need a bias current.
Regards,
Hans
Hi,
On 29-12-17 03:10, Bard Liao wrote:
Some questions for you:
- I think enabling micbias2 may be a problem on devices with a DMIC,
could this be a problem? Currently the codec driver itself contains quirks for dmic pin-mapping, maybe we should leave micbias2 disabled if dmic pin-mapping is specified through a quirk?
No, micbias2 and DMIC are independent and micbias2 will not be enabled if we don't add it in the audio route. So I don't think we need to disable it if dmic pin-mapping is specified.
Right, but currently we use the "Int Mic" switch in both the DMIC and analog mic paths, and the changes to the machine driver enable micbias2 when Int Mic gets turned on. After my changes the machine driver has:
{"IN2P", NULL, "Int Mic"}, {"IN2N", NULL, "Int Mic"}, {"DMIC L1", NULL, "Int Mic"}, {"DMIC R1", NULL, "Int Mic"}, ... {"Int Mic", NULL, "micbias2"},
Since the analog mic is currently not working anyways, maybe we should use Int Mic2 for the analog mic, so make the above:
{"IN2P", NULL, "Int Mic2"}, {"IN2N", NULL, "Int Mic2"}, {"DMIC L1", NULL, "Int Mic"}, {"DMIC R1", NULL, "Int Mic"}, ... {"Int Mic2", NULL, "micbias2"},
And then use
cset "name='Int Mic Switch2' on"
In the ucm file in the analog mic enable sequence?
This way the already working dmic support stays unchanged and the analog mic support I'm adding does not enable micbias2 when using dmic inputs.
?
Regards,
Hans
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Monday, January 01, 2018 8:32 PM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Re: Cherry Trail + RT5645 devices analog microphone not working.
Hi,
On 29-12-17 03:10, Bard Liao wrote:
Some questions for you:
- I think enabling micbias2 may be a problem on devices with a DMIC,
could this be a problem? Currently the codec driver itself contains quirks for dmic pin-mapping, maybe we should leave micbias2 disabled if dmic pin-mapping is specified through a quirk?
No, micbias2 and DMIC are independent and micbias2 will not be enabled if we don't add it in the audio route. So I don't think we need to disable it if dmic pin-mapping is specified.
Right, but currently we use the "Int Mic" switch in both the DMIC and analog mic paths, and the changes to the machine driver enable micbias2 when Int Mic gets turned on. After my changes the machine driver has:
{"IN2P", NULL, "Int Mic"}, {"IN2N", NULL, "Int Mic"}, {"DMIC L1", NULL, "Int Mic"}, {"DMIC R1", NULL, "Int Mic"}, ... {"Int Mic", NULL, "micbias2"},
Since the analog mic is currently not working anyways, maybe we should use Int Mic2 for the analog mic, so make the above:
Do you mean the analog mic doesn't work with above change? Could you dump registers for me?
{"IN2P", NULL, "Int Mic2"}, {"IN2N", NULL, "Int Mic2"}, {"DMIC L1", NULL, "Int Mic"}, {"DMIC R1", NULL, "Int Mic"}, ... {"Int Mic2", NULL, "micbias2"},
And then use
cset "name='Int Mic Switch2' on"
It will be cset "name='Int Mic2 Switch' on" And you will also need to add "Int Mic2" in cht_mc_controls[].
In the ucm file in the analog mic enable sequence?
This way the already working dmic support stays unchanged and the analog mic support I'm adding does not enable micbias2 when using dmic inputs.
If you are using dmic inputs, you will need to set below switches on "Sto1 ADC MIXL ADC2 Switch" "Sto1 ADC MIXR ADC2 Switch" And below switches are for analog mics "Sto1 ADC MIXL ADC1 Switch" "Sto1 ADC MIXR ADC1 Switch" So you can select dmic or amic by rt5645's mixer. But, anyway it's a good idea to add a new widget for analog mic. However, it is better to have a more specific name for it. Something like "Int A Mic" and "Int D Mic".
?
Regards,
Hans
------Please consider the environment before printing this e-mail.
Hi Bard,
On 02-01-18 03:41, Bard Liao wrote:
-----Original Message----- From: Hans de Goede [mailto:hdegoede@redhat.com] Sent: Monday, January 01, 2018 8:32 PM To: Bard Liao Cc: Pierre-Louis Bossart; alsa-devel@alsa-project.org Subject: Re: Cherry Trail + RT5645 devices analog microphone not working.
Hi,
On 29-12-17 03:10, Bard Liao wrote:
Some questions for you:
- I think enabling micbias2 may be a problem on devices with a DMIC,
could this be a problem? Currently the codec driver itself contains quirks for dmic pin-mapping, maybe we should leave micbias2 disabled if dmic pin-mapping is specified through a quirk?
No, micbias2 and DMIC are independent and micbias2 will not be enabled if we don't add it in the audio route. So I don't think we need to disable it if dmic pin-mapping is specified.
Right, but currently we use the "Int Mic" switch in both the DMIC and analog mic paths, and the changes to the machine driver enable micbias2 when Int Mic gets turned on. After my changes the machine driver has:
{"IN2P", NULL, "Int Mic"}, {"IN2N", NULL, "Int Mic"}, {"DMIC L1", NULL, "Int Mic"}, {"DMIC R1", NULL, "Int Mic"}, ... {"Int Mic", NULL, "micbias2"},
Since the analog mic is currently not working anyways, maybe we should use Int Mic2 for the analog mic, so make the above:
Do you mean the analog mic doesn't work with above change?
It does work with the above changes, what I mean is that it does not work without the patch series which I've just send out, sorry for the confusion.
What I was trying to say is that using a new dapm widget with a new name for the analog mic will NOT break existing ucm files since on older kernels, without the latest patches it will not work because of the lacking patches.
Could you dump registers for me?
No need, everything works now, also see the series I just send out thank you for all your help!
{"IN2P", NULL, "Int Mic2"}, {"IN2N", NULL, "Int Mic2"}, {"DMIC L1", NULL, "Int Mic"}, {"DMIC R1", NULL, "Int Mic"}, ... {"Int Mic2", NULL, "micbias2"},
And then use
cset "name='Int Mic Switch2' on"
It will be cset "name='Int Mic2 Switch' on" And you will also need to add "Int Mic2" in cht_mc_controls[].
In the ucm file in the analog mic enable sequence?
This way the already working dmic support stays unchanged and the analog mic support I'm adding does not enable micbias2 when using dmic inputs.
If you are using dmic inputs, you will need to set below switches on "Sto1 ADC MIXL ADC2 Switch" "Sto1 ADC MIXR ADC2 Switch" And below switches are for analog mics "Sto1 ADC MIXL ADC1 Switch" "Sto1 ADC MIXR ADC1 Switch" So you can select dmic or amic by rt5645's mixer.
But, anyway it's a good idea to add a new widget for analog mic.
Ok, I've just send out a patch series with your fixes to the codec driver + a patch to sound/soc/intel/boards/cht_bsw_rt5645.c adding a new "Int Analog Mic" DAPM widget for this.
Regards,
Hans
participants (2)
-
Bard Liao
-
Hans de Goede