bianbu-linux-6.6/sound/soc/intel/avs/path.h
Cezary Rojewski 274d79e518
ASoC: Intel: avs: Configure modules according to their type
Each module on DSP side serves a processing purpose. Depending on its
purpose, it needs different information during its initialization. Add
functions responsible for creating instances of specific module types
given the information coming from the topology file.

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-15-cezary.rojewski@intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2022-04-19 12:04:04 +01:00

72 lines
1.7 KiB
C

/* 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;
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