Lines Matching refs:params
285 struct snd_pcm_hw_params *params) in constrain_mask_params() argument
295 m = hw_param_mask(params, k); in constrain_mask_params()
300 if (!(params->rmask & PARAM_MASK_BIT(k))) in constrain_mask_params()
314 params->cmask |= PARAM_MASK_BIT(k); in constrain_mask_params()
321 struct snd_pcm_hw_params *params) in constrain_interval_params() argument
331 i = hw_param_interval(params, k); in constrain_interval_params()
336 if (!(params->rmask & PARAM_MASK_BIT(k))) in constrain_interval_params()
350 params->cmask |= PARAM_MASK_BIT(k); in constrain_interval_params()
357 struct snd_pcm_hw_params *params) in constrain_params_by_rules() argument
392 vstamps[k] = (params->rmask & PARAM_MASK_BIT(k)) ? 1 : 0; in constrain_params_by_rules()
408 if (r->cond && !(r->cond & params->flags)) in constrain_params_by_rules()
430 old_mask = *hw_param_mask(params, r->var); in constrain_params_by_rules()
434 old_interval = *hw_param_interval(params, r->var); in constrain_params_by_rules()
437 changed = r->func(params, r); in constrain_params_by_rules()
450 hw_param_mask(params, r->var)); in constrain_params_by_rules()
455 hw_param_interval(params, r->var)); in constrain_params_by_rules()
458 params->cmask |= PARAM_MASK_BIT(r->var); in constrain_params_by_rules()
474 struct snd_pcm_hw_params *params) in fixup_unreferenced_params() argument
481 if (!params->msbits) { in fixup_unreferenced_params()
482 i = hw_param_interval_c(params, SNDRV_PCM_HW_PARAM_SAMPLE_BITS); in fixup_unreferenced_params()
484 params->msbits = snd_interval_value(i); in fixup_unreferenced_params()
485 m = hw_param_mask_c(params, SNDRV_PCM_HW_PARAM_FORMAT); in fixup_unreferenced_params()
488 params->msbits = snd_pcm_format_width(format); in fixup_unreferenced_params()
492 if (params->msbits) { in fixup_unreferenced_params()
493 m = hw_param_mask_c(params, SNDRV_PCM_HW_PARAM_FORMAT); in fixup_unreferenced_params()
498 snd_pcm_format_width(format) != params->msbits) { in fixup_unreferenced_params()
499 m_rw = hw_param_mask(params, SNDRV_PCM_HW_PARAM_SUBFORMAT); in fixup_unreferenced_params()
508 if (!params->rate_den) { in fixup_unreferenced_params()
509 i = hw_param_interval_c(params, SNDRV_PCM_HW_PARAM_RATE); in fixup_unreferenced_params()
511 params->rate_num = snd_interval_value(i); in fixup_unreferenced_params()
512 params->rate_den = 1; in fixup_unreferenced_params()
516 if (!params->fifo_size) { in fixup_unreferenced_params()
517 m = hw_param_mask_c(params, SNDRV_PCM_HW_PARAM_FORMAT); in fixup_unreferenced_params()
518 i = hw_param_interval_c(params, SNDRV_PCM_HW_PARAM_CHANNELS); in fixup_unreferenced_params()
522 params); in fixup_unreferenced_params()
528 if (!params->info) { in fixup_unreferenced_params()
529 params->info = substream->runtime->hw.info; in fixup_unreferenced_params()
530 params->info &= ~(SNDRV_PCM_INFO_FIFO_IN_FRAMES | in fixup_unreferenced_params()
533 params->info &= ~(SNDRV_PCM_INFO_MMAP | in fixup_unreferenced_params()
539 params); in fixup_unreferenced_params()
547 struct snd_pcm_hw_params *params) in snd_pcm_hw_refine() argument
551 params->info = 0; in snd_pcm_hw_refine()
552 params->fifo_size = 0; in snd_pcm_hw_refine()
553 if (params->rmask & PARAM_MASK_BIT(SNDRV_PCM_HW_PARAM_SAMPLE_BITS)) in snd_pcm_hw_refine()
554 params->msbits = 0; in snd_pcm_hw_refine()
555 if (params->rmask & PARAM_MASK_BIT(SNDRV_PCM_HW_PARAM_RATE)) { in snd_pcm_hw_refine()
556 params->rate_num = 0; in snd_pcm_hw_refine()
557 params->rate_den = 0; in snd_pcm_hw_refine()
560 err = constrain_mask_params(substream, params); in snd_pcm_hw_refine()
564 err = constrain_interval_params(substream, params); in snd_pcm_hw_refine()
568 err = constrain_params_by_rules(substream, params); in snd_pcm_hw_refine()
572 params->rmask = 0; in snd_pcm_hw_refine()
581 struct snd_pcm_hw_params *params __free(kfree) = NULL; in snd_pcm_hw_refine_user()
584 params = memdup_user(_params, sizeof(*params)); in snd_pcm_hw_refine_user()
585 if (IS_ERR(params)) in snd_pcm_hw_refine_user()
586 return PTR_ERR(params); in snd_pcm_hw_refine_user()
588 err = snd_pcm_hw_refine(substream, params); in snd_pcm_hw_refine_user()
592 err = fixup_unreferenced_params(substream, params); in snd_pcm_hw_refine_user()
596 if (copy_to_user(_params, params, sizeof(*params))) in snd_pcm_hw_refine_user()
658 struct snd_pcm_hw_params *params) in snd_pcm_hw_params_choose() argument
680 old_mask = *hw_param_mask(params, *v); in snd_pcm_hw_params_choose()
684 old_interval = *hw_param_interval(params, *v); in snd_pcm_hw_params_choose()
687 changed = snd_pcm_hw_param_first(pcm, params, *v, NULL); in snd_pcm_hw_params_choose()
689 changed = snd_pcm_hw_param_last(pcm, params, *v, NULL); in snd_pcm_hw_params_choose()
698 hw_param_mask(params, *v)); in snd_pcm_hw_params_choose()
702 hw_param_interval(params, *v)); in snd_pcm_hw_params_choose()
745 struct snd_pcm_hw_params *params) in snd_pcm_hw_params() argument
777 params->rmask = ~0U; in snd_pcm_hw_params()
778 err = snd_pcm_hw_refine(substream, params); in snd_pcm_hw_params()
782 err = snd_pcm_hw_params_choose(substream, params); in snd_pcm_hw_params()
786 err = fixup_unreferenced_params(substream, params); in snd_pcm_hw_params()
792 params_buffer_bytes(params)); in snd_pcm_hw_params()
799 err = substream->ops->hw_params(substream, params); in snd_pcm_hw_params()
804 runtime->access = params_access(params); in snd_pcm_hw_params()
805 runtime->format = params_format(params); in snd_pcm_hw_params()
806 runtime->subformat = params_subformat(params); in snd_pcm_hw_params()
807 runtime->channels = params_channels(params); in snd_pcm_hw_params()
808 runtime->rate = params_rate(params); in snd_pcm_hw_params()
809 runtime->period_size = params_period_size(params); in snd_pcm_hw_params()
810 runtime->periods = params_periods(params); in snd_pcm_hw_params()
811 runtime->buffer_size = params_buffer_size(params); in snd_pcm_hw_params()
812 runtime->info = params->info; in snd_pcm_hw_params()
813 runtime->rate_num = params->rate_num; in snd_pcm_hw_params()
814 runtime->rate_den = params->rate_den; in snd_pcm_hw_params()
816 (params->info & SNDRV_PCM_INFO_NO_PERIOD_WAKEUP) && in snd_pcm_hw_params()
817 (params->flags & SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP); in snd_pcm_hw_params()
882 struct snd_pcm_hw_params *params __free(kfree) = NULL; in snd_pcm_hw_params_user()
885 params = memdup_user(_params, sizeof(*params)); in snd_pcm_hw_params_user()
886 if (IS_ERR(params)) in snd_pcm_hw_params_user()
887 return PTR_ERR(params); in snd_pcm_hw_params_user()
889 err = snd_pcm_hw_params(substream, params); in snd_pcm_hw_params_user()
893 if (copy_to_user(_params, params, sizeof(*params))) in snd_pcm_hw_params_user()
944 struct snd_pcm_sw_params *params) in snd_pcm_sw_params() argument
957 if (params->tstamp_mode < 0 || in snd_pcm_sw_params()
958 params->tstamp_mode > SNDRV_PCM_TSTAMP_LAST) in snd_pcm_sw_params()
960 if (params->proto >= SNDRV_PROTOCOL_VERSION(2, 0, 12) && in snd_pcm_sw_params()
961 params->tstamp_type > SNDRV_PCM_TSTAMP_TYPE_LAST) in snd_pcm_sw_params()
963 if (params->avail_min == 0) in snd_pcm_sw_params()
965 if (params->silence_size >= runtime->boundary) { in snd_pcm_sw_params()
966 if (params->silence_threshold != 0) in snd_pcm_sw_params()
969 if (params->silence_size > params->silence_threshold) in snd_pcm_sw_params()
971 if (params->silence_threshold > runtime->buffer_size) in snd_pcm_sw_params()
976 runtime->tstamp_mode = params->tstamp_mode; in snd_pcm_sw_params()
977 if (params->proto >= SNDRV_PROTOCOL_VERSION(2, 0, 12)) in snd_pcm_sw_params()
978 runtime->tstamp_type = params->tstamp_type; in snd_pcm_sw_params()
979 runtime->period_step = params->period_step; in snd_pcm_sw_params()
980 runtime->control->avail_min = params->avail_min; in snd_pcm_sw_params()
981 runtime->start_threshold = params->start_threshold; in snd_pcm_sw_params()
982 runtime->stop_threshold = params->stop_threshold; in snd_pcm_sw_params()
983 runtime->silence_threshold = params->silence_threshold; in snd_pcm_sw_params()
984 runtime->silence_size = params->silence_size; in snd_pcm_sw_params()
985 params->boundary = runtime->boundary; in snd_pcm_sw_params()
999 struct snd_pcm_sw_params params; in snd_pcm_sw_params_user() local
1001 if (copy_from_user(¶ms, _params, sizeof(params))) in snd_pcm_sw_params_user()
1003 err = snd_pcm_sw_params(substream, ¶ms); in snd_pcm_sw_params_user()
1004 if (copy_to_user(_params, ¶ms, sizeof(params))) in snd_pcm_sw_params_user()
2347 static int snd_pcm_hw_rule_mul(struct snd_pcm_hw_params *params, in snd_pcm_hw_rule_mul() argument
2351 snd_interval_mul(hw_param_interval_c(params, rule->deps[0]), in snd_pcm_hw_rule_mul()
2352 hw_param_interval_c(params, rule->deps[1]), &t); in snd_pcm_hw_rule_mul()
2353 return snd_interval_refine(hw_param_interval(params, rule->var), &t); in snd_pcm_hw_rule_mul()
2356 static int snd_pcm_hw_rule_div(struct snd_pcm_hw_params *params, in snd_pcm_hw_rule_div() argument
2360 snd_interval_div(hw_param_interval_c(params, rule->deps[0]), in snd_pcm_hw_rule_div()
2361 hw_param_interval_c(params, rule->deps[1]), &t); in snd_pcm_hw_rule_div()
2362 return snd_interval_refine(hw_param_interval(params, rule->var), &t); in snd_pcm_hw_rule_div()
2365 static int snd_pcm_hw_rule_muldivk(struct snd_pcm_hw_params *params, in snd_pcm_hw_rule_muldivk() argument
2369 snd_interval_muldivk(hw_param_interval_c(params, rule->deps[0]), in snd_pcm_hw_rule_muldivk()
2370 hw_param_interval_c(params, rule->deps[1]), in snd_pcm_hw_rule_muldivk()
2372 return snd_interval_refine(hw_param_interval(params, rule->var), &t); in snd_pcm_hw_rule_muldivk()
2375 static int snd_pcm_hw_rule_mulkdiv(struct snd_pcm_hw_params *params, in snd_pcm_hw_rule_mulkdiv() argument
2379 snd_interval_mulkdiv(hw_param_interval_c(params, rule->deps[0]), in snd_pcm_hw_rule_mulkdiv()
2381 hw_param_interval_c(params, rule->deps[1]), &t); in snd_pcm_hw_rule_mulkdiv()
2382 return snd_interval_refine(hw_param_interval(params, rule->var), &t); in snd_pcm_hw_rule_mulkdiv()
2385 static int snd_pcm_hw_rule_format(struct snd_pcm_hw_params *params, in snd_pcm_hw_rule_format() argument
2390 hw_param_interval_c(params, rule->deps[0]); in snd_pcm_hw_rule_format()
2392 struct snd_mask *mask = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT); in snd_pcm_hw_rule_format()
2407 static int snd_pcm_hw_rule_sample_bits(struct snd_pcm_hw_params *params, in snd_pcm_hw_rule_sample_bits() argument
2419 if (!snd_mask_test_format(hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT), k)) in snd_pcm_hw_rule_sample_bits()
2430 return snd_interval_refine(hw_param_interval(params, rule->var), &t); in snd_pcm_hw_rule_sample_bits()
2451 static int snd_pcm_hw_rule_rate(struct snd_pcm_hw_params *params, in snd_pcm_hw_rule_rate() argument
2455 return snd_interval_list(hw_param_interval(params, rule->var), in snd_pcm_hw_rule_rate()
2460 static int snd_pcm_hw_rule_buffer_bytes_max(struct snd_pcm_hw_params *params, in snd_pcm_hw_rule_buffer_bytes_max() argument
2470 return snd_interval_refine(hw_param_interval(params, rule->var), &t); in snd_pcm_hw_rule_buffer_bytes_max()
2473 static int snd_pcm_hw_rule_subformats(struct snd_pcm_hw_params *params, in snd_pcm_hw_rule_subformats() argument
2476 struct snd_mask *sfmask = hw_param_mask(params, SNDRV_PCM_HW_PARAM_SUBFORMAT); in snd_pcm_hw_rule_subformats()
2477 struct snd_mask *fmask = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT); in snd_pcm_hw_rule_subformats()
4058 static void snd_pcm_hw_convert_from_old_params(struct snd_pcm_hw_params *params, in snd_pcm_hw_convert_from_old_params() argument
4063 memset(params, 0, sizeof(*params)); in snd_pcm_hw_convert_from_old_params()
4064 params->flags = oparams->flags; in snd_pcm_hw_convert_from_old_params()
4066 params->masks[i].bits[0] = oparams->masks[i]; in snd_pcm_hw_convert_from_old_params()
4067 memcpy(params->intervals, oparams->intervals, sizeof(oparams->intervals)); in snd_pcm_hw_convert_from_old_params()
4068 params->rmask = __OLD_TO_NEW_MASK(oparams->rmask); in snd_pcm_hw_convert_from_old_params()
4069 params->cmask = __OLD_TO_NEW_MASK(oparams->cmask); in snd_pcm_hw_convert_from_old_params()
4070 params->info = oparams->info; in snd_pcm_hw_convert_from_old_params()
4071 params->msbits = oparams->msbits; in snd_pcm_hw_convert_from_old_params()
4072 params->rate_num = oparams->rate_num; in snd_pcm_hw_convert_from_old_params()
4073 params->rate_den = oparams->rate_den; in snd_pcm_hw_convert_from_old_params()
4074 params->fifo_size = oparams->fifo_size; in snd_pcm_hw_convert_from_old_params()
4078 struct snd_pcm_hw_params *params) in snd_pcm_hw_convert_to_old_params() argument
4083 oparams->flags = params->flags; in snd_pcm_hw_convert_to_old_params()
4085 oparams->masks[i] = params->masks[i].bits[0]; in snd_pcm_hw_convert_to_old_params()
4086 memcpy(oparams->intervals, params->intervals, sizeof(oparams->intervals)); in snd_pcm_hw_convert_to_old_params()
4087 oparams->rmask = __NEW_TO_OLD_MASK(params->rmask); in snd_pcm_hw_convert_to_old_params()
4088 oparams->cmask = __NEW_TO_OLD_MASK(params->cmask); in snd_pcm_hw_convert_to_old_params()
4089 oparams->info = params->info; in snd_pcm_hw_convert_to_old_params()
4090 oparams->msbits = params->msbits; in snd_pcm_hw_convert_to_old_params()
4091 oparams->rate_num = params->rate_num; in snd_pcm_hw_convert_to_old_params()
4092 oparams->rate_den = params->rate_den; in snd_pcm_hw_convert_to_old_params()
4093 oparams->fifo_size = params->fifo_size; in snd_pcm_hw_convert_to_old_params()
4099 struct snd_pcm_hw_params *params __free(kfree) = NULL; in snd_pcm_hw_refine_old_user()
4103 params = kmalloc(sizeof(*params), GFP_KERNEL); in snd_pcm_hw_refine_old_user()
4104 if (!params) in snd_pcm_hw_refine_old_user()
4110 snd_pcm_hw_convert_from_old_params(params, oparams); in snd_pcm_hw_refine_old_user()
4111 err = snd_pcm_hw_refine(substream, params); in snd_pcm_hw_refine_old_user()
4115 err = fixup_unreferenced_params(substream, params); in snd_pcm_hw_refine_old_user()
4119 snd_pcm_hw_convert_to_old_params(oparams, params); in snd_pcm_hw_refine_old_user()
4128 struct snd_pcm_hw_params *params __free(kfree) = NULL; in snd_pcm_hw_params_old_user()
4132 params = kmalloc(sizeof(*params), GFP_KERNEL); in snd_pcm_hw_params_old_user()
4133 if (!params) in snd_pcm_hw_params_old_user()
4140 snd_pcm_hw_convert_from_old_params(params, oparams); in snd_pcm_hw_params_old_user()
4141 err = snd_pcm_hw_params(substream, params); in snd_pcm_hw_params_old_user()
4145 snd_pcm_hw_convert_to_old_params(oparams, params); in snd_pcm_hw_params_old_user()