#include <linux/io.h>
#include <linux/rcupdate.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include "local.h"
#define BUFFER_BYTES_MAX …
#define PERIOD_BYTES_MIN …
#define PERIODS_MIN …
#define dw_pcm_tx_fn …
#define dw_pcm_rx_fn …
dw_pcm_tx_fn(16);
dw_pcm_tx_fn(32);
dw_pcm_rx_fn(16);
dw_pcm_rx_fn(32);
#undef dw_pcm_tx_fn
#undef dw_pcm_rx_fn
static const struct snd_pcm_hardware dw_pcm_hardware = …;
static void dw_pcm_transfer(struct dw_i2s_dev *dev, bool push)
{ … }
void dw_pcm_push_tx(struct dw_i2s_dev *dev)
{ … }
void dw_pcm_pop_rx(struct dw_i2s_dev *dev)
{ … }
static int dw_pcm_open(struct snd_soc_component *component,
struct snd_pcm_substream *substream)
{ … }
static int dw_pcm_close(struct snd_soc_component *component,
struct snd_pcm_substream *substream)
{ … }
static int dw_pcm_hw_params(struct snd_soc_component *component,
struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *hw_params)
{ … }
static int dw_pcm_trigger(struct snd_soc_component *component,
struct snd_pcm_substream *substream, int cmd)
{ … }
static snd_pcm_uframes_t dw_pcm_pointer(struct snd_soc_component *component,
struct snd_pcm_substream *substream)
{ … }
static int dw_pcm_new(struct snd_soc_component *component,
struct snd_soc_pcm_runtime *rtd)
{ … }
static const struct snd_soc_component_driver dw_pcm_component = …;
int dw_pcm_register(struct platform_device *pdev)
{ … }