[alsa-devel] [PATCH RFC 2/3] ASoC: hdmi-codec: add support for bclk_ratio

Jyri Sarha jsarha at ti.com
Mon Mar 4 18:32:49 CET 2019


On 04/03/2019 18:59, Sven Van Asbroeck wrote:
> On Fri, Mar 1, 2019 at 7:36 AM Mark Brown <broonie at kernel.org> wrote:
>>
>>
>> As Russell outlined there's quite a bit of hopeful assumption in how
>> ASoC handles the mapping of memory formats onto wire formats which works
>> almost all the time but not always and definitely not through robust
>> design
> 
> Yes, many of the painful tradeoffs in this discussion would go away, if the
> alsa negotiation infrastructure was 'bclk_ratio aware'.
> 
> They say that a 100-line patch is often better than 1000 words. To help kick-
> start a discussion, I offer a simple patch which adds bclk_ratio to
> hw_params, which lets alsa 'negotiate' it the same way as the format,
> channels, etc.
> 
> Obviously this is completely flawed, as it exposes bclk_ratio to userspace thru
> snd_pcm_hw_params. Userspace has no business even knowing about this on-wire
> property.
> 
> It may be flawed in a lot of other ways I can't see rn :)
> 
> As far as a flawed suggestion goes, it seems to behave quite well on my system.
> The bclk_ratio is nicely constrained within the cpu and codec's supported
> ranges and rules, and the lowest supported value is picked before hw_params()
> gets called. Which is at least channels * sample_width.
> 
> Would there be a way to hide the bclk_ratio from userspace?
> 
> Is it even worth taking this forward? How likely is it for alsa components
> to care about the bclk_ratio? Maybe this is a tda998x one-off?
> 

I am not the right person say if this should be taken forward.

However, if we are going forward, I think we need to add bclk_rate to
snd_pcm_hw_params too, since the available bclks affects the choice of
bclk_ratios that are available. For instance if the bclk is generated
from static clock with a simple divider then following equatios should
always be satisfied:

bclk_rate = clk_source_rate / clk_divider, where clk_divider = 0, 1, ..n
sample_rate = bclk_rate / bclk_ratio

The good news is that snd_pcm_hw_rule_add() should be able to cope with
such cross dependencies.

BR,
Jyri

-- 
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki


More information about the Alsa-devel mailing list