162306a36Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2020 BayLibre, SAS. 462306a36Sopenharmony_ci * Author: Jerome Brunet <jbrunet@baylibre.com> 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#ifndef _MESON_AIU_FIFO_H 862306a36Sopenharmony_ci#define _MESON_AIU_FIFO_H 962306a36Sopenharmony_ci 1062306a36Sopenharmony_cistruct snd_pcm_hardware; 1162306a36Sopenharmony_cistruct snd_soc_component_driver; 1262306a36Sopenharmony_cistruct snd_soc_dai_driver; 1362306a36Sopenharmony_cistruct clk; 1462306a36Sopenharmony_cistruct snd_pcm_ops; 1562306a36Sopenharmony_cistruct snd_pcm_substream; 1662306a36Sopenharmony_cistruct snd_soc_dai; 1762306a36Sopenharmony_cistruct snd_pcm_hw_params; 1862306a36Sopenharmony_cistruct platform_device; 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_cistruct aiu_fifo { 2162306a36Sopenharmony_ci struct snd_pcm_hardware *pcm; 2262306a36Sopenharmony_ci unsigned int mem_offset; 2362306a36Sopenharmony_ci unsigned int fifo_block; 2462306a36Sopenharmony_ci struct clk *pclk; 2562306a36Sopenharmony_ci int irq; 2662306a36Sopenharmony_ci}; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ciint aiu_fifo_dai_probe(struct snd_soc_dai *dai); 2962306a36Sopenharmony_ciint aiu_fifo_dai_remove(struct snd_soc_dai *dai); 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_cisnd_pcm_uframes_t aiu_fifo_pointer(struct snd_soc_component *component, 3262306a36Sopenharmony_ci struct snd_pcm_substream *substream); 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ciint aiu_fifo_trigger(struct snd_pcm_substream *substream, int cmd, 3562306a36Sopenharmony_ci struct snd_soc_dai *dai); 3662306a36Sopenharmony_ciint aiu_fifo_prepare(struct snd_pcm_substream *substream, 3762306a36Sopenharmony_ci struct snd_soc_dai *dai); 3862306a36Sopenharmony_ciint aiu_fifo_hw_params(struct snd_pcm_substream *substream, 3962306a36Sopenharmony_ci struct snd_pcm_hw_params *params, 4062306a36Sopenharmony_ci struct snd_soc_dai *dai); 4162306a36Sopenharmony_ciint aiu_fifo_hw_free(struct snd_pcm_substream *substream, 4262306a36Sopenharmony_ci struct snd_soc_dai *dai); 4362306a36Sopenharmony_ciint aiu_fifo_startup(struct snd_pcm_substream *substream, 4462306a36Sopenharmony_ci struct snd_soc_dai *dai); 4562306a36Sopenharmony_civoid aiu_fifo_shutdown(struct snd_pcm_substream *substream, 4662306a36Sopenharmony_ci struct snd_soc_dai *dai); 4762306a36Sopenharmony_ciint aiu_fifo_pcm_new(struct snd_soc_pcm_runtime *rtd, 4862306a36Sopenharmony_ci struct snd_soc_dai *dai); 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci#endif /* _MESON_AIU_FIFO_H */ 51