ASoC: Intel: avs: Declare path and its components
authorCezary Rojewski <cezary.rojewski@intel.com>
Thu, 31 Mar 2022 13:52:41 +0000 (15:52 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 19 Apr 2022 11:03:58 +0000 (12:03 +0100)
Declare representatives for all crucial elements which stream on ADSP
side is made of. That covers pipelines and modules subject which are
presented by struct avs_path_pipeline and avs_path_module respectively.
While struct avs_path_binding and struct avs_path do not represent any
object on firmware side directly, they are needed to help track the
interconnections and membership of every pipeline and module created.

Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://lore.kernel.org/r/20220331135246.993089-10-cezary.rojewski@intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/avs/path.h [new file with mode: 0644]

diff --git a/sound/soc/intel/avs/path.h b/sound/soc/intel/avs/path.h
new file mode 100644 (file)
index 0000000..ecfb687
--- /dev/null
@@ -0,0 +1,60 @@
+/* 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;
+       u16 instance_id;
+
+       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;
+};
+
+#endif