ASoC: SOF: Intel: hda-dai: Introduce DAI widget ops
Introduce a new ops structure for HDA DAI widget DMA ops and add a new field to struct snd_sof_dai that will be used to set the ops pointer for DAI widgets. Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20230307140435.2808-8-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
be7f4f8d0b
commit
2ae49c6fe0
@@ -928,4 +928,35 @@ extern struct sdw_intel_ops sdw_callback;
|
||||
struct sof_ipc4_fw_library;
|
||||
int hda_dsp_ipc4_load_library(struct snd_sof_dev *sdev,
|
||||
struct sof_ipc4_fw_library *fw_lib, bool reload);
|
||||
|
||||
/**
|
||||
* struct hda_dai_widget_dma_ops - DAI DMA ops optional by default unless specified otherwise
|
||||
* @get_hext_stream: Mandatory function pointer to get the saved pointer to struct hdac_ext_stream
|
||||
* @assign_hext_stream: Function pointer to assign a hdac_ext_stream
|
||||
* @release_hext_stream: Function pointer to release the hdac_ext_stream
|
||||
* @setup_hext_stream: Function pointer for hdac_ext_stream setup
|
||||
* @reset_hext_stream: Function pointer for hdac_ext_stream reset
|
||||
* @pre_trigger: Function pointer for DAI DMA pre-trigger actions
|
||||
* @trigger: Function pointer for DAI DMA trigger actions
|
||||
* @post_trigger: Function pointer for DAI DMA post-trigger actions
|
||||
*/
|
||||
struct hda_dai_widget_dma_ops {
|
||||
struct hdac_ext_stream *(*get_hext_stream)(struct snd_sof_dev *sdev,
|
||||
struct snd_soc_dai *cpu_dai,
|
||||
struct snd_pcm_substream *substream);
|
||||
struct hdac_ext_stream *(*assign_hext_stream)(struct snd_sof_dev *sdev,
|
||||
struct snd_soc_dai *cpu_dai,
|
||||
struct snd_pcm_substream *substream);
|
||||
void (*release_hext_stream)(struct snd_sof_dev *sdev, struct snd_soc_dai *cpu_dai,
|
||||
struct snd_pcm_substream *substream);
|
||||
void (*setup_hext_stream)(struct snd_sof_dev *sdev, struct hdac_ext_stream *hext_stream,
|
||||
unsigned int format_val);
|
||||
void (*reset_hext_stream)(struct snd_sof_dev *sdev, struct hdac_ext_stream *hext_sream);
|
||||
int (*pre_trigger)(struct snd_sof_dev *sdev, struct snd_soc_dai *cpu_dai,
|
||||
struct snd_pcm_substream *substream, int cmd);
|
||||
int (*trigger)(struct snd_sof_dev *sdev, struct snd_soc_dai *cpu_dai,
|
||||
struct snd_pcm_substream *substream, int cmd);
|
||||
int (*post_trigger)(struct snd_sof_dev *sdev, struct snd_soc_dai *cpu_dai,
|
||||
struct snd_pcm_substream *substream, int cmd);
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -502,6 +502,8 @@ struct snd_sof_dai {
|
||||
int number_configs;
|
||||
int current_config;
|
||||
struct list_head list; /* list in sdev dai list */
|
||||
/* core should not touch this */
|
||||
const void *platform_private;
|
||||
void *private;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user