linux/sound/soc/kirkwood/kirkwood-i2s.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * kirkwood-i2s.c
 *
 * (c) 2010 Arnaud Patard <[email protected]>
 * (c) 2010 Arnaud Patard <[email protected]>
 */

#include <linux/init.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/slab.h>
#include <linux/mbus.h>
#include <linux/delay.h>
#include <linux/clk.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include <linux/platform_data/asoc-kirkwood.h>
#include <linux/of.h>

#include "kirkwood.h"

#define KIRKWOOD_I2S_FORMATS

#define KIRKWOOD_SPDIF_FORMATS

/* These registers are relative to the second register region -
 * audio pll configuration.
 */
#define A38X_PLL_CONF_REG0
#define A38X_PLL_FB_CLK_DIV_OFFSET
#define A38X_PLL_FB_CLK_DIV_MASK
#define A38X_PLL_CONF_REG1
#define A38X_PLL_FREQ_OFFSET_MASK
#define A38X_PLL_FREQ_OFFSET_VALID
#define A38X_PLL_SW_RESET
#define A38X_PLL_CONF_REG2
#define A38X_PLL_AUDIO_POSTDIV_MASK

/* Bit below belongs to SoC control register corresponding to the third
 * register region.
 */
#define A38X_SPDIF_MODE_ENABLE

static int armada_38x_i2s_init_quirk(struct platform_device *pdev,
				     struct kirkwood_dma_data *priv,
				     struct snd_soc_dai_driver *dai_drv)
{}

static inline void armada_38x_set_pll(void __iomem *base, unsigned long rate)
{}

static int kirkwood_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
		unsigned int fmt)
{}

static inline void kirkwood_set_dco(void __iomem *io, unsigned long rate)
{}

static void kirkwood_set_rate(struct snd_soc_dai *dai,
	struct kirkwood_dma_data *priv, unsigned long rate)
{}

static int kirkwood_i2s_startup(struct snd_pcm_substream *substream,
		struct snd_soc_dai *dai)
{}

static int kirkwood_i2s_hw_params(struct snd_pcm_substream *substream,
				 struct snd_pcm_hw_params *params,
				 struct snd_soc_dai *dai)
{}

static unsigned kirkwood_i2s_play_mute(unsigned ctl)
{}

static int kirkwood_i2s_play_trigger(struct snd_pcm_substream *substream,
				int cmd, struct snd_soc_dai *dai)
{}

static int kirkwood_i2s_rec_trigger(struct snd_pcm_substream *substream,
				int cmd, struct snd_soc_dai *dai)
{}

static int kirkwood_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
			       struct snd_soc_dai *dai)
{}

static int kirkwood_i2s_init(struct kirkwood_dma_data *priv)
{}

static const struct snd_soc_dai_ops kirkwood_i2s_dai_ops =;

static struct snd_soc_dai_driver kirkwood_i2s_dai[2] =;

static struct snd_soc_dai_driver kirkwood_i2s_dai_extclk[2] =;

static int kirkwood_i2s_dev_probe(struct platform_device *pdev)
{}

static void kirkwood_i2s_dev_remove(struct platform_device *pdev)
{}

#ifdef CONFIG_OF
static const struct of_device_id mvebu_audio_of_match[] =;
MODULE_DEVICE_TABLE(of, mvebu_audio_of_match);
#endif

static struct platform_driver kirkwood_i2s_driver =;

module_platform_driver();

/* Module information */
MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();
MODULE_ALIAS();