linux/sound/soc/xilinx/xlnx_formatter_pcm.c

// SPDX-License-Identifier: GPL-2.0
//
// Xilinx ASoC audio formatter support
//
// Copyright (C) 2018 Xilinx, Inc.
//
// Author: Maruthi Srinivas Bayyavarapu <[email protected]>

#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 - stream configuration
 * @mmio: base address offset
 * @interleaved: audio channels arrangement in buffer
 * @xfer_mode: data formatting mode during transfer
 * @ch_limit: Maximum channels supported
 * @buffer_size: stream ring buffer size
 */
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();