cregit-Linux how code gets into the kernel

Release 4.12 include/sound/pcm_params.h

Directory: include/sound
#ifndef __SOUND_PCM_PARAMS_H

#define __SOUND_PCM_PARAMS_H

/*
 *  PCM params helpers
 *  Copyright (c) by Abramo Bagnara <abramo@alsa-project.org>
 *
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 *
 */

#include <sound/pcm.h>

int snd_pcm_hw_param_first(struct snd_pcm_substream *pcm, 
			   struct snd_pcm_hw_params *params,
			   snd_pcm_hw_param_t var, int *dir);
int snd_pcm_hw_param_last(struct snd_pcm_substream *pcm, 
			  struct snd_pcm_hw_params *params,
			  snd_pcm_hw_param_t var, int *dir);
int snd_pcm_hw_param_value(const struct snd_pcm_hw_params *params,
			   snd_pcm_hw_param_t var, int *dir);


#define SNDRV_MASK_BITS	64	
/* we use so far 64bits only */

#define SNDRV_MASK_SIZE	(SNDRV_MASK_BITS / 32)

#define MASK_OFS(i)	((i) >> 5)

#define MASK_BIT(i)	(1U << ((i) & 31))


static inline size_t snd_mask_sizeof(void) { return sizeof(struct snd_mask); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela1275.00%133.33%
Takashi Iwai425.00%266.67%
Total16100.00%3100.00%


static inline void snd_mask_none(struct snd_mask *mask) { memset(mask, 0, sizeof(*mask)); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela2184.00%250.00%
Takashi Iwai416.00%250.00%
Total25100.00%4100.00%


static inline void snd_mask_any(struct snd_mask *mask) { memset(mask, 0xff, SNDRV_MASK_SIZE * sizeof(u_int32_t)); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela2284.62%250.00%
Takashi Iwai415.38%250.00%
Total26100.00%4100.00%


static inline int snd_mask_empty(const struct snd_mask *mask) { int i; for (i = 0; i < SNDRV_MASK_SIZE; i++) if (mask->bits[i]) return 0; return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela4090.91%250.00%
Takashi Iwai49.09%250.00%
Total44100.00%4100.00%


static inline unsigned int snd_mask_min(const struct snd_mask *mask) { int i; for (i = 0; i < SNDRV_MASK_SIZE; i++) { if (mask->bits[i]) return __ffs(mask->bits[i]) + (i << 5); } return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela5691.80%240.00%
Takashi Iwai46.56%240.00%
Lars-Peter Clausen11.64%120.00%
Total61100.00%5100.00%


static inline unsigned int snd_mask_max(const struct snd_mask *mask) { int i; for (i = SNDRV_MASK_SIZE - 1; i >= 0; i--) { if (mask->bits[i]) return __fls(mask->bits[i]) + (i << 5); } return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela5892.06%240.00%
Takashi Iwai46.35%240.00%
Lars-Peter Clausen11.59%120.00%
Total63100.00%5100.00%


static inline void snd_mask_set(struct snd_mask *mask, unsigned int val) { mask->bits[MASK_OFS(val)] |= MASK_BIT(val); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela2787.10%250.00%
Takashi Iwai412.90%250.00%
Total31100.00%4100.00%


static inline void snd_mask_reset(struct snd_mask *mask, unsigned int val) { mask->bits[MASK_OFS(val)] &= ~MASK_BIT(val); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela2887.50%250.00%
Takashi Iwai412.50%250.00%
Total32100.00%4100.00%


static inline void snd_mask_set_range(struct snd_mask *mask, unsigned int from, unsigned int to) { unsigned int i; for (i = from; i <= to; i++) mask->bits[MASK_OFS(i)] |= MASK_BIT(i); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela4892.31%360.00%
Takashi Iwai47.69%240.00%
Total52100.00%5100.00%


static inline void snd_mask_reset_range(struct snd_mask *mask, unsigned int from, unsigned int to) { unsigned int i; for (i = from; i <= to; i++) mask->bits[MASK_OFS(i)] &= ~MASK_BIT(i); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela4992.45%360.00%
Takashi Iwai47.55%240.00%
Total53100.00%5100.00%


static inline void snd_mask_leave(struct snd_mask *mask, unsigned int val) { unsigned int v; v = mask->bits[MASK_OFS(val)] & MASK_BIT(val); snd_mask_none(mask); mask->bits[MASK_OFS(val)] = v; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela5092.59%250.00%
Takashi Iwai47.41%250.00%
Total54100.00%4100.00%


static inline void snd_mask_intersect(struct snd_mask *mask, const struct snd_mask *v) { int i; for (i = 0; i < SNDRV_MASK_SIZE; i++) mask->bits[i] &= v->bits[i]; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela4287.50%250.00%
Takashi Iwai612.50%250.00%
Total48100.00%4100.00%


static inline int snd_mask_eq(const struct snd_mask *mask, const struct snd_mask *v) { return ! memcmp(mask, v, SNDRV_MASK_SIZE * sizeof(u_int32_t)); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela2982.86%250.00%
Takashi Iwai617.14%250.00%
Total35100.00%4100.00%


static inline void snd_mask_copy(struct snd_mask *mask, const struct snd_mask *v) { *mask = *v; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela1875.00%250.00%
Takashi Iwai625.00%250.00%
Total24100.00%4100.00%


static inline int snd_mask_test(const struct snd_mask *mask, unsigned int val) { return mask->bits[MASK_OFS(val)] & MASK_BIT(val); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela2987.88%250.00%
Takashi Iwai412.12%250.00%
Total33100.00%4100.00%


static inline int snd_mask_single(const struct snd_mask *mask) { int i, c = 0; for (i = 0; i < SNDRV_MASK_SIZE; i++) { if (! mask->bits[i]) continue; if (mask->bits[i] & (mask->bits[i] - 1)) return 0; if (c) return 0; c++; } return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela7895.12%250.00%
Takashi Iwai44.88%250.00%
Total82100.00%4100.00%


static inline int snd_mask_refine(struct snd_mask *mask, const struct snd_mask *v) { struct snd_mask old; snd_mask_copy(&old, mask); snd_mask_intersect(mask, v); if (snd_mask_empty(mask)) return -EINVAL; return !snd_mask_eq(mask, &old); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela5086.21%133.33%
Takashi Iwai813.79%266.67%
Total58100.00%3100.00%


static inline int snd_mask_refine_first(struct snd_mask *mask) { if (snd_mask_single(mask)) return 0; snd_mask_leave(mask, snd_mask_min(mask)); return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela3188.57%133.33%
Takashi Iwai411.43%266.67%
Total35100.00%3100.00%


static inline int snd_mask_refine_last(struct snd_mask *mask) { if (snd_mask_single(mask)) return 0; snd_mask_leave(mask, snd_mask_max(mask)); return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela3188.57%133.33%
Takashi Iwai411.43%266.67%
Total35100.00%3100.00%


static inline int snd_mask_refine_min(struct snd_mask *mask, unsigned int val) { if (snd_mask_min(mask) >= val) return 0; snd_mask_reset_range(mask, 0, val - 1); if (snd_mask_empty(mask)) return -EINVAL; return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela4992.45%133.33%
Takashi Iwai47.55%266.67%
Total53100.00%3100.00%


static inline int snd_mask_refine_max(struct snd_mask *mask, unsigned int val) { if (snd_mask_max(mask) <= val) return 0; snd_mask_reset_range(mask, val + 1, SNDRV_MASK_BITS); if (snd_mask_empty(mask)) return -EINVAL; return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela4992.45%250.00%
Takashi Iwai47.55%250.00%
Total53100.00%4100.00%


static inline int snd_mask_refine_set(struct snd_mask *mask, unsigned int val) { int changed; changed = !snd_mask_single(mask); snd_mask_leave(mask, val); if (snd_mask_empty(mask)) return -EINVAL; return changed; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela4491.67%133.33%
Takashi Iwai48.33%266.67%
Total48100.00%3100.00%


static inline int snd_mask_value(const struct snd_mask *mask) { return snd_mask_min(mask); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela1578.95%133.33%
Takashi Iwai421.05%266.67%
Total19100.00%3100.00%


static inline void snd_interval_any(struct snd_interval *i) { i->min = 0; i->openmin = 0; i->max = UINT_MAX; i->openmax = 0; i->integer = 0; i->empty = 0; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela4491.67%133.33%
Takashi Iwai48.33%266.67%
Total48100.00%3100.00%


static inline void snd_interval_none(struct snd_interval *i) { i->empty = 1; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela1477.78%133.33%
Takashi Iwai422.22%266.67%
Total18100.00%3100.00%


static inline int snd_interval_checkempty(const struct snd_interval *i) { return (i->min > i->max || (i->min == i->max && (i->openmin || i->openmax))); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela4090.91%133.33%
Takashi Iwai49.09%266.67%
Total44100.00%3100.00%


static inline int snd_interval_empty(const struct snd_interval *i) { return i->empty; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela1477.78%133.33%
Takashi Iwai422.22%266.67%
Total18100.00%3100.00%


static inline int snd_interval_single(const struct snd_interval *i) { return (i->min == i->max || (i->min + 1 == i->max && i->openmax)); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela3690.00%133.33%
Takashi Iwai410.00%266.67%
Total40100.00%3100.00%


static inline int snd_interval_value(const struct snd_interval *i) { return i->min; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela1477.78%133.33%
Takashi Iwai422.22%266.67%
Total18100.00%3100.00%


static inline int snd_interval_min(const struct snd_interval *i) { return i->min; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela1477.78%133.33%
Takashi Iwai422.22%266.67%
Total18100.00%3100.00%


static inline int snd_interval_max(const struct snd_interval *i) { unsigned int v; v = i->max; if (i->openmax) v--; return v; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela3188.57%133.33%
Takashi Iwai411.43%266.67%
Total35100.00%3100.00%


static inline int snd_interval_test(const struct snd_interval *i, unsigned int val) { return !((i->min > val || (i->min == val && i->openmin) || i->max < val || (i->max == val && i->openmax))); }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela5593.22%133.33%
Takashi Iwai46.78%266.67%
Total59100.00%3100.00%


static inline void snd_interval_copy(struct snd_interval *d, const struct snd_interval *s) { *d = *s; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela1875.00%133.33%
Takashi Iwai625.00%266.67%
Total24100.00%3100.00%


static inline int snd_interval_setinteger(struct snd_interval *i) { if (i->integer) return 0; if (i->openmin && i->openmax && i->min == i->max) return -EINVAL; i->integer = 1; return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela4892.31%133.33%
Takashi Iwai47.69%266.67%
Total52100.00%3100.00%


static inline int snd_interval_eq(const struct snd_interval *i1, const struct snd_interval *i2) { if (i1->empty) return i2->empty; if (i2->empty) return i1->empty; return i1->min == i2->min && i1->openmin == i2->openmin && i1->max == i2->max && i1->openmax == i2->openmax; }

Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela6891.89%133.33%
Takashi Iwai68.11%266.67%
Total74100.00%3100.00%

/** * params_access - get the access type from the hw params * @p: hw params */
static inline snd_pcm_access_t params_access(const struct snd_pcm_hw_params *p) { return (__force snd_pcm_access_t)snd_mask_min(hw_param_mask_c(p, SNDRV_PCM_HW_PARAM_ACCESS)); }

Contributors

PersonTokensPropCommitsCommitProp
Lars-Peter Clausen2485.71%150.00%
Takashi Iwai414.29%150.00%
Total28100.00%2100.00%

/** * params_format - get the sample format from the hw params * @p: hw params */
static inline snd_pcm_format_t params_format(const struct snd_pcm_hw_params *p) { return (__force snd_pcm_format_t)snd_mask_min(hw_param_mask_c(p, SNDRV_PCM_HW_PARAM_FORMAT)); }

Contributors

PersonTokensPropCommitsCommitProp
Lars-Peter Clausen2485.71%150.00%
Takashi Iwai414.29%150.00%
Total28100.00%2100.00%

/** * params_subformat - get the sample subformat from the hw params * @p: hw params */
static inline snd_pcm_subformat_t params_subformat(const struct snd_pcm_hw_params *p) { return (__force snd_pcm_subformat_t)snd_mask_min(hw_param_mask_c(p, SNDRV_PCM_HW_PARAM_SUBFORMAT)); }

Contributors

PersonTokensPropCommitsCommitProp
Lars-Peter Clausen2485.71%150.00%
Takashi Iwai414.29%150.00%
Total28100.00%2100.00%

/** * params_period_bytes - get the period size (in bytes) from the hw params * @p: hw params */
static inline unsigned int params_period_bytes(const struct snd_pcm_hw_params *p) { return hw_param_interval_c(p, SNDRV_PCM_HW_PARAM_PERIOD_BYTES)->min; }

Contributors

PersonTokensPropCommitsCommitProp
Takashi Iwai1979.17%150.00%
Lars-Peter Clausen520.83%150.00%
Total24100.00%2100.00%

/** * params_width - get the number of bits of the sample format from the hw params * @p: hw params * * This function returns the number of bits per sample that the selected sample * format of the hw params has. */
static inline int params_width(const struct snd_pcm_hw_params *p) { return snd_pcm_format_width(params_format(p)); }

Contributors

PersonTokensPropCommitsCommitProp
Mark Brown22100.00%1100.00%
Total22100.00%1100.00%

/* * params_physical_width - get the storage size of the sample format from the hw params * @p: hw params * * This functions returns the number of bits per sample that the selected sample * format of the hw params takes up in memory. This will be equal or larger than * params_width(). */
static inline int params_physical_width(const struct snd_pcm_hw_params *p) { return snd_pcm_format_physical_width(params_format(p)); }

Contributors

PersonTokensPropCommitsCommitProp
Mark Brown22100.00%1100.00%
Total22100.00%1100.00%


static inline void params_set_format(struct snd_pcm_hw_params *p, snd_pcm_format_t fmt) { snd_mask_set(hw_param_mask(p, SNDRV_PCM_HW_PARAM_FORMAT), (__force int)fmt); }

Contributors

PersonTokensPropCommitsCommitProp
Fang, Yang A31100.00%1100.00%
Total31100.00%1100.00%

#endif /* __SOUND_PCM_PARAMS_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Jaroslav Kysela134778.68%320.00%
Takashi Iwai20211.80%426.67%
Lars-Peter Clausen854.96%533.33%
Mark Brown472.75%213.33%
Fang, Yang A311.81%16.67%
Total1712100.00%15100.00%
Directory: include/sound
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.