#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 …
#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 …
#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_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;