From: Tony Lindgren <tony@atomide.com>
To: Peter Ujfalusi <peter.ujfalusi@ti.com>
Cc: alsa-devel@alsa-project.org, linux-omap@vger.kernel.org,
Liam Girdwood <lgirdwood@gmail.com>,
Merlijn Wajer <merlijn@wizzup.org>,
linux-kernel@vger.kernel.org, Takashi Iwai <tiwai@suse.com>,
Mark Brown <broonie@kernel.org>, Pavel Machek <pavel@ucw.cz>,
Sebastian Reichel <sre@kernel.org>,
"Arthur D ." <spinal.by@gmail.com>,
Jarkko Nikula <jarkko.nikula@bitmer.com>
Subject: Re: [alsa-devel] [PATCH] ASoC: cpcap: Implement set_tdm_slot for voice call support
Date: Wed, 12 Feb 2020 06:46:20 -0800 [thread overview]
Message-ID: <20200212144620.GJ64767@atomide.com> (raw)
In-Reply-To: <ae2b7d9e-d05e-54ac-4f18-27cc8c4e81a0@ti.com>
* Peter Ujfalusi <peter.ujfalusi@ti.com> [200212 09:18]:
> On 11/02/2020 20.10, Tony Lindgren wrote:
> > +static int cpcap_voice_set_tdm_slot(struct snd_soc_dai *dai,
> > + unsigned int tx_mask, unsigned int rx_mask,
> > + int slots, int slot_width)
> > +{
> > + struct snd_soc_component *component = dai->component;
> > + struct cpcap_audio *cpcap = snd_soc_component_get_drvdata(component);
> > + int err, ts_mask, mask;
> > + bool voice_call;
> > +
> > + /*
> > + * Primitive test for voice call, probably needs more checks
> > + * later on for 16-bit calls detected, Bluetooth headset etc.
> > + */
> > + if (tx_mask == 0 && rx_mask == 1 && slot_width == 8)
> > + voice_call = true;
> > + else
> > + voice_call = false;
>
> You only have voice call if only rx slot0 is in use?
Yeah so it seems. Then there's the modem to wlcore bluetooth path that
I have not looked at. But presumably that's again just configuring some
tdm slot on the PMIC.
> If you record mono on the voice DAI, then rx_mask is also 1, no?
It is above :) But maybe I don't follow what you're asking here and
maybe you have some better check in mind.
I have no idea where we would implement recording voice calls for
example, I guess mcbsp could do that somewhere to dump out a tdm slot
specific traffic.
> > +
> > + ts_mask = 0x7 << CPCAP_BIT_MIC2_TIMESLOT0;
> > + ts_mask |= 0x7 << CPCAP_BIT_MIC1_RX_TIMESLOT0;
> > +
> > + mask = (tx_mask & 0x7) << CPCAP_BIT_MIC2_TIMESLOT0;
> > + mask |= (rx_mask & 0x7) << CPCAP_BIT_MIC1_RX_TIMESLOT0;
> > +
> > + err = regmap_update_bits(cpcap->regmap, CPCAP_REG_CDI,
> > + ts_mask, mask);
> > + if (err)
> > + return err;
> > +
> > + err = cpcap_set_samprate(cpcap, CPCAP_DAI_VOICE, slot_width * 1000);
> > + if (err)
> > + return err;
>
> You will also set the sampling rate for voice in
> cpcap_voice_hw_params(), but that is for normal playback/capture, right?
Yeah so normal playback/capture is already working with cpcap codec driver
with mainline Linux. The voice call needs to set rate to 8000.
> > +
> > + err = cpcap_voice_call(cpcap, dai, voice_call);
> > + if (err)
> > + return err;
>
> It feels like that these should be done via DAPM with codec to codec route?
Sure if you have some better way of doing it :) Do you have an example to
point me to?
Regards,
Tony
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
WARNING: multiple messages have this Message-ID (diff)
From: Tony Lindgren <tony@atomide.com>
To: Peter Ujfalusi <peter.ujfalusi@ti.com>
Cc: Mark Brown <broonie@kernel.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org,
linux-omap@vger.kernel.org, "Arthur D ." <spinal.by@gmail.com>,
Merlijn Wajer <merlijn@wizzup.org>, Pavel Machek <pavel@ucw.cz>,
Sebastian Reichel <sre@kernel.org>,
Jarkko Nikula <jarkko.nikula@bitmer.com>
Subject: Re: [PATCH] ASoC: cpcap: Implement set_tdm_slot for voice call support
Date: Wed, 12 Feb 2020 06:46:20 -0800 [thread overview]
Message-ID: <20200212144620.GJ64767@atomide.com> (raw)
In-Reply-To: <ae2b7d9e-d05e-54ac-4f18-27cc8c4e81a0@ti.com>
* Peter Ujfalusi <peter.ujfalusi@ti.com> [200212 09:18]:
> On 11/02/2020 20.10, Tony Lindgren wrote:
> > +static int cpcap_voice_set_tdm_slot(struct snd_soc_dai *dai,
> > + unsigned int tx_mask, unsigned int rx_mask,
> > + int slots, int slot_width)
> > +{
> > + struct snd_soc_component *component = dai->component;
> > + struct cpcap_audio *cpcap = snd_soc_component_get_drvdata(component);
> > + int err, ts_mask, mask;
> > + bool voice_call;
> > +
> > + /*
> > + * Primitive test for voice call, probably needs more checks
> > + * later on for 16-bit calls detected, Bluetooth headset etc.
> > + */
> > + if (tx_mask == 0 && rx_mask == 1 && slot_width == 8)
> > + voice_call = true;
> > + else
> > + voice_call = false;
>
> You only have voice call if only rx slot0 is in use?
Yeah so it seems. Then there's the modem to wlcore bluetooth path that
I have not looked at. But presumably that's again just configuring some
tdm slot on the PMIC.
> If you record mono on the voice DAI, then rx_mask is also 1, no?
It is above :) But maybe I don't follow what you're asking here and
maybe you have some better check in mind.
I have no idea where we would implement recording voice calls for
example, I guess mcbsp could do that somewhere to dump out a tdm slot
specific traffic.
> > +
> > + ts_mask = 0x7 << CPCAP_BIT_MIC2_TIMESLOT0;
> > + ts_mask |= 0x7 << CPCAP_BIT_MIC1_RX_TIMESLOT0;
> > +
> > + mask = (tx_mask & 0x7) << CPCAP_BIT_MIC2_TIMESLOT0;
> > + mask |= (rx_mask & 0x7) << CPCAP_BIT_MIC1_RX_TIMESLOT0;
> > +
> > + err = regmap_update_bits(cpcap->regmap, CPCAP_REG_CDI,
> > + ts_mask, mask);
> > + if (err)
> > + return err;
> > +
> > + err = cpcap_set_samprate(cpcap, CPCAP_DAI_VOICE, slot_width * 1000);
> > + if (err)
> > + return err;
>
> You will also set the sampling rate for voice in
> cpcap_voice_hw_params(), but that is for normal playback/capture, right?
Yeah so normal playback/capture is already working with cpcap codec driver
with mainline Linux. The voice call needs to set rate to 8000.
> > +
> > + err = cpcap_voice_call(cpcap, dai, voice_call);
> > + if (err)
> > + return err;
>
> It feels like that these should be done via DAPM with codec to codec route?
Sure if you have some better way of doing it :) Do you have an example to
point me to?
Regards,
Tony
next prev parent reply other threads:[~2020-02-12 14:47 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-11 18:10 [alsa-devel] [PATCH] ASoC: cpcap: Implement set_tdm_slot for voice call support Tony Lindgren
2020-02-11 18:10 ` Tony Lindgren
2020-02-12 9:17 ` [alsa-devel] " Peter Ujfalusi
2020-02-12 9:17 ` Peter Ujfalusi
2020-02-12 9:17 ` Peter Ujfalusi
2020-02-12 14:46 ` Tony Lindgren [this message]
2020-02-12 14:46 ` Tony Lindgren
2020-02-14 13:29 ` [alsa-devel] " Peter Ujfalusi
2020-02-14 13:29 ` Peter Ujfalusi
2020-02-17 23:23 ` Tony Lindgren
2020-02-17 23:23 ` Tony Lindgren
2020-02-18 15:15 ` Peter Ujfalusi
2020-02-18 15:15 ` Peter Ujfalusi
2020-02-18 15:32 ` Tony Lindgren
2020-02-18 15:32 ` Tony Lindgren
2020-02-18 16:44 ` Mark Brown
2020-02-18 16:44 ` Mark Brown
2020-02-18 17:06 ` Sebastian Reichel
2020-02-18 17:06 ` Sebastian Reichel
2020-02-18 17:42 ` Mark Brown
2020-02-18 17:42 ` Mark Brown
2020-02-19 17:39 ` Tony Lindgren
2020-02-19 17:39 ` Tony Lindgren
2020-02-19 17:46 ` Mark Brown
2020-02-19 17:46 ` Mark Brown
2020-02-19 18:49 ` Tony Lindgren
2020-02-19 18:49 ` Tony Lindgren
2020-02-19 18:53 ` Tony Lindgren
2020-02-19 18:53 ` Tony Lindgren
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=20200212144620.GJ64767@atomide.com \
--to=tony@atomide.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=jarkko.nikula@bitmer.com \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=merlijn@wizzup.org \
--cc=pavel@ucw.cz \
--cc=peter.ujfalusi@ti.com \
--cc=spinal.by@gmail.com \
--cc=sre@kernel.org \
--cc=tiwai@suse.com \
/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.