diff options
Diffstat (limited to 'sound/core/pcm_lib.c')
-rw-r--r-- | sound/core/pcm_lib.c | 24 |
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 | */ |
803 | int snd_interval_ratnum(struct snd_interval *i, | 803 | int 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 | */ |
922 | static int snd_interval_ratden(struct snd_interval *i, | 922 | static 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); | |||
1339 | static int snd_pcm_hw_rule_ratnums(struct snd_pcm_hw_params *params, | 1340 | static 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, | |||
1363 | int snd_pcm_hw_constraint_ratnums(struct snd_pcm_runtime *runtime, | 1364 | int 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); | |||
1375 | static int snd_pcm_hw_rule_ratdens(struct snd_pcm_hw_params *params, | 1376 | static 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, | |||
1398 | int snd_pcm_hw_constraint_ratdens(struct snd_pcm_runtime *runtime, | 1399 | int 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 | ||