On Fri, Feb 21, 2020 at 02:31:05PM +0000, Jon Hunter wrote:
On 21/02/2020 13:00, Mark Brown wrote:
- srate = params_rate(params);
- if (dmic->srate_override)
srate = dmic->srate_override;
How does this work for userspace? If we just ignore the sample rate we were asked for I'd expect that the application would get upset.
Tegra has a hardware sample rate converter (though driver not yet upstream or part of this initial series) and if using the sample-rate converter, then the actual rate captured by the DMIC interface could be different from the resulting sample-rate.
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.
So we want a way to indicate to the DMIC it is capturing at rate X, while the resulting sample-rate is Y.
I am not sure if there is a better way to do this? Ideally, the DMIC would query the rate from the upstream MUX it is connected to, but I am not sure if there is a way to do that. So right now it is a manual process and the user has to configure these which are not ideal.
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.