Lines Matching refs:dlp
111 static inline void dlp_activate(struct dmaengine_dlp *dlp) in dlp_activate() argument
113 spin_lock(&dlp->lock); in dlp_activate()
114 dlp->component.active++; in dlp_activate()
115 spin_unlock(&dlp->lock); in dlp_activate()
118 static inline void dlp_deactivate(struct dmaengine_dlp *dlp) in dlp_deactivate() argument
120 spin_lock(&dlp->lock); in dlp_deactivate()
121 dlp->component.active--; in dlp_deactivate()
122 spin_unlock(&dlp->lock); in dlp_deactivate()
125 static inline bool dlp_mode_channels_match(struct dmaengine_dlp *dlp, in dlp_mode_channels_match() argument
130 switch (dlp->mode) { in dlp_mode_channels_match()
205 static struct device *dmaengine_dma_dev(struct dmaengine_dlp *dlp, in dmaengine_dma_dev() argument
208 if (!dlp->chan[substream->stream]) in dmaengine_dma_dev()
211 return dlp->chan[substream->stream]->device->dev; in dmaengine_dma_dev()
385 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in dmaengine_dlp_hw_params() local
394 if (!is_playback && !dlp_mode_channels_match(dlp, ch_req, &ch_exp)) { in dmaengine_dlp_hw_params()
395 dev_err(dlp->dev, in dmaengine_dlp_hw_params()
397 ch_req, ch_exp, dlp->mode); in dmaengine_dlp_hw_params()
428 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in dmaengine_pcm_set_runtime_hwparams() local
429 struct device *dma_dev = dmaengine_dma_dev(dlp, substream); in dmaengine_pcm_set_runtime_hwparams()
430 struct dma_chan *chan = dlp->chan[substream->stream]; in dmaengine_pcm_set_runtime_hwparams()
468 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in dmaengine_dlp_open() local
469 struct dma_chan *chan = dlp->chan[substream->stream]; in dmaengine_dlp_open()
493 prtd->parent = dlp; in dmaengine_dlp_open()
499 dlp_activate(dlp); in dmaengine_dlp_open()
517 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in free_ref_list() local
520 spin_lock(&dlp->lock); in free_ref_list()
521 list_for_each_entry_safe(prtd, _pt, &dlp->ref_list, node) { in free_ref_list()
525 spin_unlock(&dlp->lock); in free_ref_list()
531 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in dmaengine_dlp_close() local
543 dlp_deactivate(dlp); in dmaengine_dlp_close()
569 struct dmaengine_dlp *dlp = prtd->parent; in dmaengine_dlp_dma_complete() local
574 spin_lock(&dlp->lock); in dmaengine_dlp_dma_complete()
577 spin_unlock(&dlp->lock); in dmaengine_dlp_dma_complete()
612 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in dmaengine_dlp_setup() local
618 struct dmaengine_dlp_runtime_data *pref = dlp->pref; in dmaengine_dlp_setup()
623 if (dlp->mode == DLP_MODE_DISABLED) in dmaengine_dlp_setup()
626 fifo_a = dlp->config->get_fifo_count(dlp->dev, substream->stream); in dmaengine_dlp_setup()
630 fifo_b = dlp->config->get_fifo_count(dlp->dev, bstream); in dmaengine_dlp_setup()
633 spin_lock(&dlp->lock); in dmaengine_dlp_setup()
635 spin_unlock(&dlp->lock); in dmaengine_dlp_setup()
650 list_add_tail(&pref->node, &dlp->ref_list); in dmaengine_dlp_setup()
652 spin_unlock(&dlp->lock); in dmaengine_dlp_setup()
668 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in dmaengine_dlp_release() local
670 struct dmaengine_dlp_runtime_data *pref = dlp->pref; in dmaengine_dlp_release()
674 if (dlp->mode == DLP_MODE_DISABLED) in dmaengine_dlp_release()
680 spin_lock(&dlp->lock); in dmaengine_dlp_release()
686 spin_unlock(&dlp->lock); in dmaengine_dlp_release()
697 spin_lock(&dlp->pref_lock); in dmaengine_dlp_release()
699 dlp->pref = NULL; in dmaengine_dlp_release()
700 spin_unlock(&dlp->pref_lock); in dmaengine_dlp_release()
753 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in dmaengine_dlp_new() local
767 if (!dlp->chan[i]) { in dmaengine_dlp_new()
775 dmaengine_dma_dev(dlp, substream), in dmaengine_dlp_new()
791 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in get_ref() local
794 spin_lock(&dlp->lock); in get_ref()
795 if (!list_empty(&dlp->ref_list)) { in get_ref()
796 pref = list_first_entry(&dlp->ref_list, struct dmaengine_dlp_runtime_data, node); in get_ref()
799 spin_unlock(&dlp->lock); in get_ref()
809 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in process_capture() local
830 ret = dlp_get_offset_size(prtd, dlp->mode, &ofs_cap, &size_cap, NULL); in process_capture()
851 ret = dlp_get_offset_size(pref, dlp->mode, &ofs_play, &size_play, &mix); in process_capture()
940 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in process_playback() local
945 spin_lock(&dlp->pref_lock); in process_playback()
946 pref = dlp->pref; in process_playback()
963 spin_unlock(&dlp->pref_lock); in process_playback()
973 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in dmaengine_dlp_process() local
976 if (dlp->mode == DLP_MODE_DISABLED) in dmaengine_dlp_process()
1020 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in dmaengine_dlp_mode_get() local
1022 ucontrol->value.enumerated.item[0] = dlp->mode; in dmaengine_dlp_mode_get()
1031 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in dmaengine_dlp_mode_put() local
1038 if (mode == dlp->mode) in dmaengine_dlp_mode_put()
1041 dlp->mode = mode; in dmaengine_dlp_mode_put()
1055 struct dmaengine_dlp *dlp = soc_component_to_dlp(component); in dmaengine_dlp_prepare() local
1073 spin_lock(&dlp->pref_lock); in dmaengine_dlp_prepare()
1074 dlp->pref = pref; in dmaengine_dlp_prepare()
1075 spin_unlock(&dlp->pref_lock); in dmaengine_dlp_prepare()
1105 static int dmaengine_pcm_request_chan_of(struct dmaengine_dlp *dlp, in dmaengine_pcm_request_chan_of() argument
1123 dlp->chan[i] = NULL; in dmaengine_pcm_request_chan_of()
1125 dlp->chan[i] = chan; in dmaengine_pcm_request_chan_of()
1132 static void dmaengine_pcm_release_chan(struct dmaengine_dlp *dlp) in dmaengine_pcm_release_chan() argument
1137 if (!dlp->chan[i]) in dmaengine_pcm_release_chan()
1139 dma_release_channel(dlp->chan[i]); in dmaengine_pcm_release_chan()
1152 struct dmaengine_dlp *dlp; in snd_dmaengine_dlp_register() local
1155 dlp = kzalloc(sizeof(*dlp), GFP_KERNEL); in snd_dmaengine_dlp_register()
1156 if (!dlp) in snd_dmaengine_dlp_register()
1159 dlp->dev = dev; in snd_dmaengine_dlp_register()
1160 dlp->config = config; in snd_dmaengine_dlp_register()
1162 INIT_LIST_HEAD(&dlp->ref_list); in snd_dmaengine_dlp_register()
1163 spin_lock_init(&dlp->lock); in snd_dmaengine_dlp_register()
1164 spin_lock_init(&dlp->pref_lock); in snd_dmaengine_dlp_register()
1167 dlp->component.debugfs_prefix = "dma"; in snd_dmaengine_dlp_register()
1169 ret = dmaengine_pcm_request_chan_of(dlp, dev, NULL); in snd_dmaengine_dlp_register()
1175 ret = snd_soc_component_initialize(&dlp->component, driver, dev); in snd_dmaengine_dlp_register()
1179 ret = snd_soc_add_component(&dlp->component, NULL, 0); in snd_dmaengine_dlp_register()
1186 dmaengine_pcm_release_chan(dlp); in snd_dmaengine_dlp_register()
1187 kfree(dlp); in snd_dmaengine_dlp_register()
1201 struct dmaengine_dlp *dlp; in snd_dmaengine_dlp_unregister() local
1207 dlp = soc_component_to_dlp(component); in snd_dmaengine_dlp_unregister()
1210 dmaengine_pcm_release_chan(dlp); in snd_dmaengine_dlp_unregister()
1211 kfree(dlp); in snd_dmaengine_dlp_unregister()