Re: Re: [PATCH v3 03/10] ASoC: tegra: add Tegra210 based DMIC driver

From: Sameer Pujar
Date: Mon Feb 24 2020 - 07:29:45 EST




On 2/24/2020 5:14 PM, Mark Brown wrote:
On Mon, Feb 24, 2020 at 11:28:57AM +0000, Jon Hunter wrote:
On 21/02/2020 16:55, Mark Brown wrote:
The ideal thing in a component model would be to represent those sample
rate convertors directly to usrspace so the routing and rewriting is
explicit.
I assume that it would be OK for the sample rate converter itself to
expose mixer controls to configure its input and output rates so the
user could configure as needed?
I don't think so, I'd not expect the individual drivers to be doing
anything user visible here - if we know what a digital transformation
looks like the framework should be offering anything that's needed to
users (and hiding controls that don't have any practical control in a
given system).

Are you suggesting to have some alternate way of users configuring sample rates (and other params) and not use mixer control method?

This is a typical use case we see,
- [stream-1] Lets say high resolution audio is playing (96kHz, 24-bit, stereo)
- [stream-2] Randomly system notifications of small durations come (48kHz, 16-bit, stereo)
The requirement is, both streams should be mixed and played.

Tegra Audio HW has Mixer module for mixing multiple streams. In above case, stream-2 requires upsampling to 96kHz (employ SRC) and 24-bit. Then mix with stream1 and play. This needs to be configured at runtime. In another session, mixing for 192kHz and 48kHz might be required with the same audio path. Idea was to allow users to setup their custom path for specific audio applications. In the current series, I am focussing on I/O modules (where overrides do not demonstrate the above use case) and does not include other HW accelerators that Tegra Audio HW offers. Things would be more complicated when user wants to use multiplexers and demultiplexers. For simple use cases overrides are not used.

Is there a better way for user to configure custom audio paths?


Is there any *need* for these to be user configurable? What's normally
happening at the minute is that either the external DAIs are fixed
configuration and the DSP just converts everything or there's no format
conversion done and things get passed through.
I can see that in most cases there are a finite set of configurations
that the end user may use. However, we would like to make the
configuration flexible as possible and this also allow us to test lots
of different configurations for verification purposes as well.
Internal testing often requires things that can't be exposed to users,
the extreme examples are things like battery chargers with health and
safety issues if the full range of control is available.