aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPeter Rosin <peda@axentia.se>2015-01-28 09:16:06 -0500
committerMark Brown <broonie@kernel.org>2015-01-28 14:27:15 -0500
commitf66f898e953d56779367a6cbc39cbb4808b208c0 (patch)
treed0a7c9d3d6f9349080d5beca852723cd1574a1f6 /include
parentba5295e55dd941425b10924f4f5c7af6eac4a1cb (diff)
ALSA: pcm: Add snd_interval_ranges() and snd_pcm_hw_constraint_ranges()
Add helper functions to allow drivers to specify several disjoint ranges for a variable. In particular, there is a codec (PCM512x) that has a hole in its supported range of rates, due to PLL and divider restrictions. This is like snd_pcm_hw_constraint_list(), but for ranges instead of points. Signed-off-by: Peter Rosin <peda@axentia.se> Reviewed-by: Lars-Peter Clausen <lars@metafoo.de> Reviewed-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'include')
-rw-r--r--include/sound/pcm.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/include/sound/pcm.h b/include/sound/pcm.h
index 1e7f74acc2ec..04fc037e0555 100644
--- a/include/sound/pcm.h
+++ b/include/sound/pcm.h
@@ -275,6 +275,12 @@ struct snd_pcm_hw_constraint_list {
275 unsigned int mask; 275 unsigned int mask;
276}; 276};
277 277
278struct snd_pcm_hw_constraint_ranges {
279 unsigned int count;
280 const struct snd_interval *ranges;
281 unsigned int mask;
282};
283
278struct snd_pcm_hwptr_log; 284struct snd_pcm_hwptr_log;
279 285
280struct snd_pcm_runtime { 286struct snd_pcm_runtime {
@@ -910,6 +916,8 @@ void snd_interval_mulkdiv(const struct snd_interval *a, unsigned int k,
910 const struct snd_interval *b, struct snd_interval *c); 916 const struct snd_interval *b, struct snd_interval *c);
911int snd_interval_list(struct snd_interval *i, unsigned int count, 917int snd_interval_list(struct snd_interval *i, unsigned int count,
912 const unsigned int *list, unsigned int mask); 918 const unsigned int *list, unsigned int mask);
919int snd_interval_ranges(struct snd_interval *i, unsigned int count,
920 const struct snd_interval *list, unsigned int mask);
913int snd_interval_ratnum(struct snd_interval *i, 921int snd_interval_ratnum(struct snd_interval *i,
914 unsigned int rats_count, struct snd_ratnum *rats, 922 unsigned int rats_count, struct snd_ratnum *rats,
915 unsigned int *nump, unsigned int *denp); 923 unsigned int *nump, unsigned int *denp);
@@ -934,6 +942,10 @@ int snd_pcm_hw_constraint_list(struct snd_pcm_runtime *runtime,
934 unsigned int cond, 942 unsigned int cond,
935 snd_pcm_hw_param_t var, 943 snd_pcm_hw_param_t var,
936 const struct snd_pcm_hw_constraint_list *l); 944 const struct snd_pcm_hw_constraint_list *l);
945int snd_pcm_hw_constraint_ranges(struct snd_pcm_runtime *runtime,
946 unsigned int cond,
947 snd_pcm_hw_param_t var,
948 const struct snd_pcm_hw_constraint_ranges *r);
937int snd_pcm_hw_constraint_ratnums(struct snd_pcm_runtime *runtime, 949int snd_pcm_hw_constraint_ratnums(struct snd_pcm_runtime *runtime,
938 unsigned int cond, 950 unsigned int cond,
939 snd_pcm_hw_param_t var, 951 snd_pcm_hw_param_t var,