aboutsummaryrefslogtreecommitdiffstats
path: root/sound/core/pcm_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/core/pcm_lib.c')
-rw-r--r--sound/core/pcm_lib.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c
index 7d45645f10ba..6b5a811e01a5 100644
--- a/sound/core/pcm_lib.c
+++ b/sound/core/pcm_lib.c
@@ -801,7 +801,7 @@ void snd_interval_mulkdiv(const struct snd_interval *a, unsigned int k,
801 * negative error code. 801 * negative error code.
802 */ 802 */
803int snd_interval_ratnum(struct snd_interval *i, 803int snd_interval_ratnum(struct snd_interval *i,
804 unsigned int rats_count, struct snd_ratnum *rats, 804 unsigned int rats_count, const struct snd_ratnum *rats,
805 unsigned int *nump, unsigned int *denp) 805 unsigned int *nump, unsigned int *denp)
806{ 806{
807 unsigned int best_num, best_den; 807 unsigned int best_num, best_den;
@@ -920,7 +920,8 @@ EXPORT_SYMBOL(snd_interval_ratnum);
920 * negative error code. 920 * negative error code.
921 */ 921 */
922static int snd_interval_ratden(struct snd_interval *i, 922static int snd_interval_ratden(struct snd_interval *i,
923 unsigned int rats_count, struct snd_ratden *rats, 923 unsigned int rats_count,
924 const struct snd_ratden *rats,
924 unsigned int *nump, unsigned int *denp) 925 unsigned int *nump, unsigned int *denp)
925{ 926{
926 unsigned int best_num, best_diff, best_den; 927 unsigned int best_num, best_diff, best_den;
@@ -1339,7 +1340,7 @@ EXPORT_SYMBOL(snd_pcm_hw_constraint_ranges);
1339static int snd_pcm_hw_rule_ratnums(struct snd_pcm_hw_params *params, 1340static int snd_pcm_hw_rule_ratnums(struct snd_pcm_hw_params *params,
1340 struct snd_pcm_hw_rule *rule) 1341 struct snd_pcm_hw_rule *rule)
1341{ 1342{
1342 struct snd_pcm_hw_constraint_ratnums *r = rule->private; 1343 const struct snd_pcm_hw_constraint_ratnums *r = rule->private;
1343 unsigned int num = 0, den = 0; 1344 unsigned int num = 0, den = 0;
1344 int err; 1345 int err;
1345 err = snd_interval_ratnum(hw_param_interval(params, rule->var), 1346 err = snd_interval_ratnum(hw_param_interval(params, rule->var),
@@ -1363,10 +1364,10 @@ static int snd_pcm_hw_rule_ratnums(struct snd_pcm_hw_params *params,
1363int snd_pcm_hw_constraint_ratnums(struct snd_pcm_runtime *runtime, 1364int snd_pcm_hw_constraint_ratnums(struct snd_pcm_runtime *runtime,
1364 unsigned int cond, 1365 unsigned int cond,
1365 snd_pcm_hw_param_t var, 1366 snd_pcm_hw_param_t var,
1366 struct snd_pcm_hw_constraint_ratnums *r) 1367 const struct snd_pcm_hw_constraint_ratnums *r)
1367{ 1368{
1368 return snd_pcm_hw_rule_add(runtime, cond, var, 1369 return snd_pcm_hw_rule_add(runtime, cond, var,
1369 snd_pcm_hw_rule_ratnums, r, 1370 snd_pcm_hw_rule_ratnums, (void *)r,
1370 var, -1); 1371 var, -1);
1371} 1372}
1372 1373
@@ -1375,7 +1376,7 @@ EXPORT_SYMBOL(snd_pcm_hw_constraint_ratnums);
1375static int snd_pcm_hw_rule_ratdens(struct snd_pcm_hw_params *params, 1376static int snd_pcm_hw_rule_ratdens(struct snd_pcm_hw_params *params,
1376 struct snd_pcm_hw_rule *rule) 1377 struct snd_pcm_hw_rule *rule)
1377{ 1378{
1378 struct snd_pcm_hw_constraint_ratdens *r = rule->private; 1379 const struct snd_pcm_hw_constraint_ratdens *r = rule->private;
1379 unsigned int num = 0, den = 0; 1380 unsigned int num = 0, den = 0;
1380 int err = snd_interval_ratden(hw_param_interval(params, rule->var), 1381 int err = snd_interval_ratden(hw_param_interval(params, rule->var),
1381 r->nrats, r->rats, &num, &den); 1382 r->nrats, r->rats, &num, &den);
@@ -1398,10 +1399,10 @@ static int snd_pcm_hw_rule_ratdens(struct snd_pcm_hw_params *params,
1398int snd_pcm_hw_constraint_ratdens(struct snd_pcm_runtime *runtime, 1399int snd_pcm_hw_constraint_ratdens(struct snd_pcm_runtime *runtime,
1399 unsigned int cond, 1400 unsigned int cond,
1400 snd_pcm_hw_param_t var, 1401 snd_pcm_hw_param_t var,
1401 struct snd_pcm_hw_constraint_ratdens *r) 1402 const struct snd_pcm_hw_constraint_ratdens *r)
1402{ 1403{
1403 return snd_pcm_hw_rule_add(runtime, cond, var, 1404 return snd_pcm_hw_rule_add(runtime, cond, var,
1404 snd_pcm_hw_rule_ratdens, r, 1405 snd_pcm_hw_rule_ratdens, (void *)r,
1405 var, -1); 1406 var, -1);
1406} 1407}
1407 1408
@@ -1875,20 +1876,17 @@ void snd_pcm_period_elapsed(struct snd_pcm_substream *substream)
1875 return; 1876 return;
1876 runtime = substream->runtime; 1877 runtime = substream->runtime;
1877 1878
1878 if (runtime->transfer_ack_begin)
1879 runtime->transfer_ack_begin(substream);
1880
1881 snd_pcm_stream_lock_irqsave(substream, flags); 1879 snd_pcm_stream_lock_irqsave(substream, flags);
1882 if (!snd_pcm_running(substream) || 1880 if (!snd_pcm_running(substream) ||
1883 snd_pcm_update_hw_ptr0(substream, 1) < 0) 1881 snd_pcm_update_hw_ptr0(substream, 1) < 0)
1884 goto _end; 1882 goto _end;
1885 1883
1884#ifdef CONFIG_SND_PCM_TIMER
1886 if (substream->timer_running) 1885 if (substream->timer_running)
1887 snd_timer_interrupt(substream->timer, 1); 1886 snd_timer_interrupt(substream->timer, 1);
1887#endif
1888 _end: 1888 _end:
1889 snd_pcm_stream_unlock_irqrestore(substream, flags); 1889 snd_pcm_stream_unlock_irqrestore(substream, flags);
1890 if (runtime->transfer_ack_end)
1891 runtime->transfer_ack_end(substream);
1892 kill_fasync(&runtime->fasync, SIGIO, POLL_IN); 1890 kill_fasync(&runtime->fasync, SIGIO, POLL_IN);
1893} 1891}
1894 1892