Re: [RFC PATCH 0/3] Separate BE DAI HW constraints from FE ones

From: Pierre-Louis Bossart
Date: Wed Mar 24 2021 - 11:29:21 EST



I am using hw_params_fixup, but it's not enough. The first thing I do is
to not add the BE HW constraint rules in runtime->hw_constraints,
because this will potentially affect the FE HW params. If the FE does
sampling rate conversion, for example, applying the sampling rate
constrain rules from a BE codec on FE is useless. The second thing I do
is to apply these BE HW constraint rules to the BE HW params. It's true
that the BE HW params can be fine tuned via hw_params_fixup (topology,
device-tree or even static parameters) and set in such a way that avoid
the BE HW constraints, so we could ignore the constraint rules added by
their drivers. It's not every elegant and running the BE HW constraint
rules for the fixup BE HW params can be a sanity check. Also, I am
thinking that if the FE does no conversion (be_hw_params_fixup missing)
and more than one BEs are available, applying the HW constraint rules on
the same set of BE HW params could rule out the incompatible BE DAI
links and start the compatible ones only. I am not sure this is a real
usecase.

Even after a second cup of coffee I was not able to follow why the hw_params_fixup was not enough? That paragraph is rather dense.

And to be frank I don't fully understand the problem statement above: "separate the FE HW constraints from the BE HW constraints". We have existing solutions with a DSP-based SRC adjusting FE rates to what is required by the BE dailink.

Maybe it would help to show examples of what you can do today and what you cannot, so that we are on the same wavelength on what the limitations are and how to remove them?