On Friday 17 April 2009 17:26:42 ext Mark Brown wrote:
On Fri, Apr 17, 2009 at 03:55:08PM +0300, Peter Ujfalusi wrote:
- snd_pcm_hw_constraint_minmax(slv_substream->runtime,
SNDRV_PCM_HW_PARAM_RATE,
twl4030->rate,
twl4030->rate);
You did note this yourself but there's support for this in the core; it'd be good to switch over to that (and push handling for the other constraints into core).
Yes it would be better to move these constraints handling to the core over time. As I explained it in the introduction mail, I think that the way the core handles the constraint for the rate is not without issues (you also noted that). I have been thinking of implementing this in core in a similar manner as I have implemented in the twl4030 codec, but I'm not sure that the assumption of having a maximum of two streams (one for playback and one for capture) holds for all codec/machine pairs. If it does, I can improve the core's constraint handling with the approach taken in the twl4030 codec. With my limited tests it passed all cases that I could come up...
- snd_pcm_hw_constraint_minmax(slv_substream->runtime,
SNDRV_PCM_HW_PARAM_SAMPLE_BITS,
twl4030->sample_bits,
twl4030->sample_bits);
- snd_pcm_hw_constraint_minmax(slv_substream->runtime,
SNDRV_PCM_HW_PARAM_CHANNELS,
twl4030->channels,
twl4030->channels);
Are you sure that these need to match exactly and don't set maxima?
These settings are for the audio interface (HiFi interface), which means they are changing the interface format for both playback and capture. On top of that in 2 channel mode the interface has to be in I2S mode, in 4 channel mode it has to be in DSP_A mode. So I think they have to be exact match in order to not to break the existing stream.
Your overall approach in the patch looks good so I'll apply it - it's an improvement on the current situation.