/* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright(c) 2021 Intel Corporation. All rights reserved. * * Authors: Cezary Rojewski <cezary.rojewski@intel.com> * Amadeusz Slawinski <amadeuszx.slawinski@linux.intel.com> */ #ifndef __SOUND_SOC_INTEL_AVS_PATH_H #define __SOUND_SOC_INTEL_AVS_PATH_H #include <linux/list.h> #include "avs.h" #include "topology.h" struct avs_path { u32 dma_id; struct list_head ppl_list; u32 state; struct avs_tplg_path *template; struct avs_dev *owner; /* device path management */ struct list_head node; }; struct avs_path_pipeline { u8 instance_id; struct list_head mod_list; struct list_head binding_list; struct avs_tplg_pipeline *template; struct avs_path *owner; /* path pipelines management */ struct list_head node; }; struct avs_path_module { u16 module_id; u8 instance_id; union avs_gtw_attributes gtw_attrs; struct avs_tplg_module *template; struct avs_path_pipeline *owner; /* pipeline modules management */ struct list_head node; }; struct avs_path_binding { struct avs_path_module *source; u8 source_pin; struct avs_path_module *sink; u8 sink_pin; struct avs_tplg_binding *template; struct avs_path_pipeline *owner; /* pipeline bindings management */ struct list_head node; }; void avs_path_free(struct avs_path *path); struct avs_path *avs_path_create(struct avs_dev *adev, u32 dma_id, struct avs_tplg_path_template *template, struct snd_pcm_hw_params *fe_params, struct snd_pcm_hw_params *be_params); int avs_path_bind(struct avs_path *path); int avs_path_unbind(struct avs_path *path); int avs_path_reset(struct avs_path *path); int avs_path_pause(struct avs_path *path); int avs_path_run(struct avs_path *path, int trigger); #endif