[PATCH v1 0/2] Support built-in Mic on Tegra boards that use WM8903
Hello,
This small series adds audio route for built-in microphone on NVIDIA Tegra boards that use WM8903 CODEC. In particular this is needed in order to unmute internal microphone on Acer A500 tablet device. I'm planning to send out the device tree for the A500 for 5.8, so will be nice to get the microphone sorted out. Please review and apply, thanks in advance.
Dmitry Osipenko (2): dt-bindings: sound: tegra-wm8903: Document built-in microphone audio source ASoC: tegra: tegra_wm8903: Support DAPM events for built-in microphone
.../sound/nvidia,tegra-audio-wm8903.txt | 1 + sound/soc/tegra/tegra_wm8903.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+)
The internal microphone source is needed in order to be able to describe the hardware audio routing for devices that have the built-in microphone in addition to the external Mic Jack.
Signed-off-by: Dmitry Osipenko digetx@gmail.com --- .../devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt | 1 + 1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt index b795d282818d..a8f2b0c56c79 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt @@ -18,6 +18,7 @@ Required properties: * Headphone Jack * Int Spk * Mic Jack + * Int Mic
- nvidia,i2s-controller : The phandle of the Tegra I2S1 controller - nvidia,audio-codec : The phandle of the WM8903 audio codec
The enable-GPIO needs to be toggled on a DAPM event in order to turn microphone ON/OFF, otherwise microphone won't work.
Signed-off-by: Dmitry Osipenko digetx@gmail.com --- sound/soc/tegra/tegra_wm8903.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
diff --git a/sound/soc/tegra/tegra_wm8903.c b/sound/soc/tegra/tegra_wm8903.c index f08d3489c3cf..071c7d2de77c 100644 --- a/sound/soc/tegra/tegra_wm8903.c +++ b/sound/soc/tegra/tegra_wm8903.c @@ -143,14 +143,32 @@ static int tegra_wm8903_event_hp(struct snd_soc_dapm_widget *w, return 0; }
+static int tegra_wm8903_event_int_mic(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *k, int event) +{ + struct snd_soc_dapm_context *dapm = w->dapm; + struct snd_soc_card *card = dapm->card; + struct tegra_wm8903 *machine = snd_soc_card_get_drvdata(card); + + if (!gpio_is_valid(machine->gpio_int_mic_en)) + return 0; + + gpio_set_value_cansleep(machine->gpio_int_mic_en, + SND_SOC_DAPM_EVENT_ON(event)); + + return 0; +} + static const struct snd_soc_dapm_widget tegra_wm8903_dapm_widgets[] = { SND_SOC_DAPM_SPK("Int Spk", tegra_wm8903_event_int_spk), SND_SOC_DAPM_HP("Headphone Jack", tegra_wm8903_event_hp), SND_SOC_DAPM_MIC("Mic Jack", NULL), + SND_SOC_DAPM_MIC("Int Mic", tegra_wm8903_event_int_mic), };
static const struct snd_kcontrol_new tegra_wm8903_controls[] = { SOC_DAPM_PIN_SWITCH("Int Spk"), + SOC_DAPM_PIN_SWITCH("Int Mic"), };
static int tegra_wm8903_init(struct snd_soc_pcm_runtime *rtd)
On 3/20/20 2:55 PM, Dmitry Osipenko wrote:
Hello,
This small series adds audio route for built-in microphone on NVIDIA Tegra boards that use WM8903 CODEC. In particular this is needed in order to unmute internal microphone on Acer A500 tablet device. I'm planning to send out the device tree for the A500 for 5.8, so will be nice to get the microphone sorted out. Please review and apply, thanks in advance.
It's been a long time since I looked at this code, but the series looks plausible, Acked-by: Stephen Warren swarren@nvidia.com
(I wonder why machine->gpio_int_mic_en was already parse but never used!)
21.03.2020 01:30, Stephen Warren пишет:
On 3/20/20 2:55 PM, Dmitry Osipenko wrote:
Hello,
This small series adds audio route for built-in microphone on NVIDIA Tegra boards that use WM8903 CODEC. In particular this is needed in order to unmute internal microphone on Acer A500 tablet device. I'm planning to send out the device tree for the A500 for 5.8, so will be nice to get the microphone sorted out. Please review and apply, thanks in advance.
It's been a long time since I looked at this code, but the series looks plausible, Acked-by: Stephen Warren swarren@nvidia.com
Thank you!
(I wonder why machine->gpio_int_mic_en was already parse but never used!)
Perhaps there were plans to support it later on, but that never materialized.
On 20/03/2020 22:30, Stephen Warren wrote:
On 3/20/20 2:55 PM, Dmitry Osipenko wrote:
Hello,
This small series adds audio route for built-in microphone on NVIDIA Tegra boards that use WM8903 CODEC. In particular this is needed in order to unmute internal microphone on Acer A500 tablet device. I'm planning to send out the device tree for the A500 for 5.8, so will be nice to get the microphone sorted out. Please review and apply, thanks in advance.
It's been a long time since I looked at this code, but the series looks plausible, Acked-by: Stephen Warren swarren@nvidia.com
(I wonder why machine->gpio_int_mic_en was already parse but never used!)
Looking at the ventana schematics, it appears that the internal-mic signals was connected to a header and not an actual mic, so maybe we never had a proper internal-mic on any board but allowed one to be connected.
Anyway, looks good to me as well.
Acked-by: Jon Hunter jonathanh@nvidia.com
Cheers Jon
23.03.2020 18:59, Jon Hunter пишет:
On 20/03/2020 22:30, Stephen Warren wrote:
On 3/20/20 2:55 PM, Dmitry Osipenko wrote:
Hello,
This small series adds audio route for built-in microphone on NVIDIA Tegra boards that use WM8903 CODEC. In particular this is needed in order to unmute internal microphone on Acer A500 tablet device. I'm planning to send out the device tree for the A500 for 5.8, so will be nice to get the microphone sorted out. Please review and apply, thanks in advance.
It's been a long time since I looked at this code, but the series looks plausible, Acked-by: Stephen Warren swarren@nvidia.com
(I wonder why machine->gpio_int_mic_en was already parse but never used!)
Looking at the ventana schematics, it appears that the internal-mic signals was connected to a header and not an actual mic, so maybe we never had a proper internal-mic on any board but allowed one to be connected.
I guess cardhu may have a mic, judging by downstream kernel sources (I don't have cardhu schematics).
Anyway, looks good to me as well.
Acked-by: Jon Hunter jonathanh@nvidia.com
Thanks
participants (3)
-
Dmitry Osipenko
-
Jon Hunter
-
Stephen Warren