Lines Matching refs:pair
210 static int fsl_asrc_request_pair(int channels, struct fsl_asrc_pair *pair) in fsl_asrc_request_pair() argument
213 struct fsl_asrc *asrc = pair->asrc; in fsl_asrc_request_pair()
221 if (asrc->pair[i] != NULL) in fsl_asrc_request_pair()
238 asrc->pair[index] = pair; in fsl_asrc_request_pair()
239 pair->channels = channels; in fsl_asrc_request_pair()
240 pair->index = index; in fsl_asrc_request_pair()
254 static void fsl_asrc_release_pair(struct fsl_asrc_pair *pair) in fsl_asrc_release_pair() argument
256 struct fsl_asrc *asrc = pair->asrc; in fsl_asrc_release_pair()
257 enum asrc_pair_index index = pair->index; in fsl_asrc_release_pair()
266 asrc->channel_avail += pair->channels; in fsl_asrc_release_pair()
267 asrc->pair[index] = NULL; in fsl_asrc_release_pair()
268 pair->error = 0; in fsl_asrc_release_pair()
279 static void fsl_asrc_set_watermarks(struct fsl_asrc_pair *pair, u32 in, u32 out) in fsl_asrc_set_watermarks() argument
281 struct fsl_asrc *asrc = pair->asrc; in fsl_asrc_set_watermarks()
282 enum asrc_pair_index index = pair->index; in fsl_asrc_set_watermarks()
300 static u32 fsl_asrc_cal_asrck_divisor(struct fsl_asrc_pair *pair, u32 div) in fsl_asrc_cal_asrck_divisor() argument
319 static int fsl_asrc_set_ideal_ratio(struct fsl_asrc_pair *pair, in fsl_asrc_set_ideal_ratio() argument
322 struct fsl_asrc *asrc = pair->asrc; in fsl_asrc_set_ideal_ratio()
323 enum asrc_pair_index index = pair->index; in fsl_asrc_set_ideal_ratio()
373 static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair, bool use_ideal_rate) in fsl_asrc_config_pair() argument
375 struct fsl_asrc_pair_priv *pair_priv = pair->private; in fsl_asrc_config_pair()
377 struct fsl_asrc *asrc = pair->asrc; in fsl_asrc_config_pair()
379 enum asrc_pair_index index = pair->index; in fsl_asrc_config_pair()
525 indiv = fsl_asrc_cal_asrck_divisor(pair, div[IN]); in fsl_asrc_config_pair()
526 outdiv = fsl_asrc_cal_asrck_divisor(pair, div[OUT]); in fsl_asrc_config_pair()
545 fsl_asrc_set_watermarks(pair, ASRC_INPUTFIFO_THRESHOLD, in fsl_asrc_config_pair()
569 return fsl_asrc_set_ideal_ratio(pair, inrate, outrate); in fsl_asrc_config_pair()
578 static void fsl_asrc_start_pair(struct fsl_asrc_pair *pair) in fsl_asrc_start_pair() argument
580 struct fsl_asrc *asrc = pair->asrc; in fsl_asrc_start_pair()
581 enum asrc_pair_index index = pair->index; in fsl_asrc_start_pair()
597 for (i = 0; i < pair->channels * 4; i++) in fsl_asrc_start_pair()
608 static void fsl_asrc_stop_pair(struct fsl_asrc_pair *pair) in fsl_asrc_stop_pair() argument
610 struct fsl_asrc *asrc = pair->asrc; in fsl_asrc_stop_pair()
611 enum asrc_pair_index index = pair->index; in fsl_asrc_stop_pair()
623 static struct dma_chan *fsl_asrc_get_dma_channel(struct fsl_asrc_pair *pair, in fsl_asrc_get_dma_channel() argument
626 struct fsl_asrc *asrc = pair->asrc; in fsl_asrc_get_dma_channel()
627 enum asrc_pair_index index = pair->index; in fsl_asrc_get_dma_channel()
653 struct fsl_asrc_pair *pair, in fsl_asrc_select_clk() argument
657 struct fsl_asrc_pair_priv *pair_priv = pair->private; in fsl_asrc_select_clk()
696 struct fsl_asrc_pair *pair = runtime->private_data; in fsl_asrc_dai_hw_params() local
697 struct fsl_asrc_pair_priv *pair_priv = pair->private; in fsl_asrc_dai_hw_params()
703 ret = fsl_asrc_request_pair(channels, pair); in fsl_asrc_dai_hw_params()
711 config.pair = pair->index; in fsl_asrc_dai_hw_params()
726 fsl_asrc_select_clk(asrc_priv, pair, in fsl_asrc_dai_hw_params()
730 ret = fsl_asrc_config_pair(pair, false); in fsl_asrc_dai_hw_params()
743 struct fsl_asrc_pair *pair = runtime->private_data; in fsl_asrc_dai_hw_free() local
745 if (pair) in fsl_asrc_dai_hw_free()
746 fsl_asrc_release_pair(pair); in fsl_asrc_dai_hw_free()
755 struct fsl_asrc_pair *pair = runtime->private_data; in fsl_asrc_dai_trigger() local
761 fsl_asrc_start_pair(pair); in fsl_asrc_dai_trigger()
766 fsl_asrc_stop_pair(pair); in fsl_asrc_dai_trigger()
1021 if (!asrc->pair[index]) in fsl_asrc_isr()
1025 asrc->pair[index]->error |= ASRC_TASK_Q_OVERLOAD; in fsl_asrc_isr()
1030 asrc->pair[index]->error |= ASRC_OUTPUT_TASK_OVERLOAD; in fsl_asrc_isr()
1035 asrc->pair[index]->error |= ASRC_INPUT_TASK_OVERLOAD; in fsl_asrc_isr()
1040 asrc->pair[index]->error |= ASRC_OUTPUT_BUFFER_OVERFLOW; in fsl_asrc_isr()
1045 asrc->pair[index]->error |= ASRC_INPUT_BUFFER_UNDERRUN; in fsl_asrc_isr()