#include <linux/clk.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
#include <linux/sizes.h>
#include <sound/asoundef.h>
#include <sound/soc.h>
#include <sound/pcm_params.h>
#define DRV_NAME …
#define XLNX_S2MM_OFFSET …
#define XLNX_MM2S_OFFSET …
#define XLNX_AUD_CORE_CONFIG …
#define XLNX_AUD_CTRL …
#define XLNX_AUD_STS …
#define AUD_CTRL_RESET_MASK …
#define AUD_CFG_MM2S_MASK …
#define AUD_CFG_S2MM_MASK …
#define XLNX_AUD_FS_MULTIPLIER …
#define XLNX_AUD_PERIOD_CONFIG …
#define XLNX_AUD_BUFF_ADDR_LSB …
#define XLNX_AUD_BUFF_ADDR_MSB …
#define XLNX_AUD_XFER_COUNT …
#define XLNX_AUD_CH_STS_START …
#define XLNX_BYTES_PER_CH …
#define XLNX_AUD_ALIGN_BYTES …
#define AUD_STS_IOC_IRQ_MASK …
#define AUD_STS_CH_STS_MASK …
#define AUD_CTRL_IOC_IRQ_MASK …
#define AUD_CTRL_TOUT_IRQ_MASK …
#define AUD_CTRL_DMA_EN_MASK …
#define CFG_MM2S_CH_MASK …
#define CFG_MM2S_CH_SHIFT …
#define CFG_MM2S_XFER_MASK …
#define CFG_MM2S_XFER_SHIFT …
#define CFG_MM2S_PKG_MASK …
#define CFG_S2MM_CH_MASK …
#define CFG_S2MM_CH_SHIFT …
#define CFG_S2MM_XFER_MASK …
#define CFG_S2MM_XFER_SHIFT …
#define CFG_S2MM_PKG_MASK …
#define AUD_CTRL_DATA_WIDTH_SHIFT …
#define AUD_CTRL_ACTIVE_CH_SHIFT …
#define PERIOD_CFG_PERIODS_SHIFT …
#define PERIODS_MIN …
#define PERIODS_MAX …
#define PERIOD_BYTES_MIN …
#define PERIOD_BYTES_MAX …
#define XLNX_PARAM_UNKNOWN …
enum bit_depth { … };
struct xlnx_pcm_drv_data { … };
struct xlnx_pcm_stream_param { … };
static const struct snd_pcm_hardware xlnx_pcm_hardware = …;
enum { … };
static void xlnx_parse_aes_params(u32 chsts_reg1_val, u32 chsts_reg2_val,
struct device *dev)
{ … }
static int xlnx_formatter_pcm_reset(void __iomem *mmio_base)
{ … }
static void xlnx_formatter_disable_irqs(void __iomem *mmio_base, int stream)
{ … }
static irqreturn_t xlnx_mm2s_irq_handler(int irq, void *arg)
{ … }
static irqreturn_t xlnx_s2mm_irq_handler(int irq, void *arg)
{ … }
static int xlnx_formatter_set_sysclk(struct snd_soc_component *component,
int clk_id, int source, unsigned int freq, int dir)
{ … }
static int xlnx_formatter_pcm_open(struct snd_soc_component *component,
struct snd_pcm_substream *substream)
{ … }
static int xlnx_formatter_pcm_close(struct snd_soc_component *component,
struct snd_pcm_substream *substream)
{ … }
static snd_pcm_uframes_t
xlnx_formatter_pcm_pointer(struct snd_soc_component *component,
struct snd_pcm_substream *substream)
{ … }
static int xlnx_formatter_pcm_hw_params(struct snd_soc_component *component,
struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params)
{ … }
static int xlnx_formatter_pcm_trigger(struct snd_soc_component *component,
struct snd_pcm_substream *substream,
int cmd)
{ … }
static int xlnx_formatter_pcm_new(struct snd_soc_component *component,
struct snd_soc_pcm_runtime *rtd)
{ … }
static const struct snd_soc_component_driver xlnx_asoc_component = …;
static int xlnx_formatter_pcm_probe(struct platform_device *pdev)
{ … }
static void xlnx_formatter_pcm_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id xlnx_formatter_pcm_of_match[] = …;
MODULE_DEVICE_TABLE(of, xlnx_formatter_pcm_of_match);
static struct platform_driver xlnx_formatter_pcm_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;