FILE
path.h
File preview with syntax highlighting.
linux-6.19.14/sound/soc/intel/avs/path.h
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * Copyright(c) 2021 Intel Corporation 4 * 5 * Authors: Cezary Rojewski <cezary.rojewski@intel.com> 6 * Amadeusz Slawinski <amadeuszx.slawinski@linux.intel.com> 7 */ 8 9#ifndef __SOUND_SOC_INTEL_AVS_PATH_H 10#define __SOUND_SOC_INTEL_AVS_PATH_H 11 12#include <linux/list.h> 13#include "avs.h" 14#include "topology.h" 15 16#define AVS_COND_TYPE_NONE 0 17#define AVS_COND_TYPE_AECREF 1 18 19struct avs_path { 20 u32 dma_id; 21 struct list_head ppl_list; 22 u32 state; 23 24 /* condpath navigation for standard paths */ 25 struct list_head source_list; 26 struct list_head sink_list; 27 28 /* conditional path fields */ 29 struct avs_path *source; 30 struct avs_path *sink; 31 struct list_head source_node; 32 struct list_head sink_node; 33 34 struct avs_tplg_path *template; 35 struct avs_dev *owner; 36 /* device path management */ 37 struct list_head node; 38}; 39 40struct avs_path_pipeline { 41 u8 instance_id; 42 struct list_head mod_list; 43 struct list_head binding_list; 44 45 struct avs_tplg_pipeline *template; 46 struct avs_path *owner; 47 /* path pipelines management */ 48 struct list_head node; 49}; 50 51struct avs_path_module { 52 u16 module_id; 53 u8 instance_id; 54 union avs_gtw_attributes gtw_attrs; 55 56 struct avs_tplg_module *template; 57 struct avs_path_pipeline *owner; 58 /* pipeline modules management */ 59 struct list_head node; 60}; 61 62struct avs_path_binding { 63 struct avs_path_module *source; 64 u8 source_pin; 65 struct avs_path_module *sink; 66 u8 sink_pin; 67 68 struct avs_tplg_binding *template; 69 struct avs_path_pipeline *owner; 70 /* pipeline bindings management */ 71 struct list_head node; 72}; 73 74void avs_path_free(struct avs_path *path); 75struct avs_path *avs_path_create(struct avs_dev *adev, u32 dma_id, 76 struct avs_tplg_path_template *template, 77 struct snd_pcm_hw_params *fe_params, 78 struct snd_pcm_hw_params *be_params); 79int avs_path_bind(struct avs_path *path); 80int avs_path_unbind(struct avs_path *path); 81int avs_path_reset(struct avs_path *path); 82int avs_path_pause(struct avs_path *path); 83int avs_path_run(struct avs_path *path, int trigger); 84 85int avs_path_set_constraint(struct avs_dev *adev, struct avs_tplg_path_template *template, 86 struct snd_pcm_hw_constraint_list *rate_list, 87 struct snd_pcm_hw_constraint_list *channels_list, 88 struct snd_pcm_hw_constraint_list *sample_bits_list); 89 90int avs_peakvol_set_volume(struct avs_dev *adev, struct avs_path_module *mod, 91 struct soc_mixer_control *mc, long *input); 92int avs_peakvol_set_mute(struct avs_dev *adev, struct avs_path_module *mod, 93 struct soc_mixer_control *mc, long *input); 94 95#endif
~/
Read-only file preview.