#include <linux/module.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/platform_device.h>
#include <linux/interrupt.h>
#include <linux/err.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/io.h>
#include <linux/slab.h>
#include "omap-mcbsp.h"
#include "omap-mcbsp-priv.h"
#define OMAP_ST_REG_REV …
#define OMAP_ST_REG_SYSCONFIG …
#define OMAP_ST_REG_IRQSTATUS …
#define OMAP_ST_REG_IRQENABLE …
#define OMAP_ST_REG_SGAINCR …
#define OMAP_ST_REG_SFIRCR …
#define OMAP_ST_REG_SSELCR …
#define SIDETONEEN …
#define ST_AUTOIDLE …
#define ST_CH0GAIN(value) …
#define ST_CH1GAIN(value) …
#define ST_FIRCOEFF(value) …
#define ST_SIDETONEEN …
#define ST_COEFFWREN …
#define ST_COEFFWRDONE …
struct omap_mcbsp_st_data { … };
static void omap_mcbsp_st_write(struct omap_mcbsp *mcbsp, u16 reg, u32 val)
{ … }
static int omap_mcbsp_st_read(struct omap_mcbsp *mcbsp, u16 reg)
{ … }
#define MCBSP_ST_READ(mcbsp, reg) …
#define MCBSP_ST_WRITE(mcbsp, reg, val) …
static void omap_mcbsp_st_on(struct omap_mcbsp *mcbsp)
{ … }
static void omap_mcbsp_st_off(struct omap_mcbsp *mcbsp)
{ … }
static void omap_mcbsp_st_fir_write(struct omap_mcbsp *mcbsp, s16 *fir)
{ … }
static void omap_mcbsp_st_chgain(struct omap_mcbsp *mcbsp)
{ … }
static int omap_mcbsp_st_set_chgain(struct omap_mcbsp *mcbsp, int channel,
s16 chgain)
{ … }
static int omap_mcbsp_st_get_chgain(struct omap_mcbsp *mcbsp, int channel,
s16 *chgain)
{ … }
static int omap_mcbsp_st_enable(struct omap_mcbsp *mcbsp)
{ … }
static int omap_mcbsp_st_disable(struct omap_mcbsp *mcbsp)
{ … }
static int omap_mcbsp_st_is_enabled(struct omap_mcbsp *mcbsp)
{ … }
static ssize_t st_taps_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t st_taps_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t size)
{ … }
static DEVICE_ATTR_RW(st_taps);
static const struct attribute *sidetone_attrs[] = …;
static const struct attribute_group sidetone_attr_group = …;
int omap_mcbsp_st_start(struct omap_mcbsp *mcbsp)
{ … }
int omap_mcbsp_st_stop(struct omap_mcbsp *mcbsp)
{ … }
int omap_mcbsp_st_init(struct platform_device *pdev)
{ … }
static int omap_mcbsp_st_info_volsw(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo)
{ … }
#define OMAP_MCBSP_ST_CHANNEL_VOLUME(channel) …
OMAP_MCBSP_ST_CHANNEL_VOLUME(…)
OMAP_MCBSP_ST_CHANNEL_VOLUME(…)
static int omap_mcbsp_st_put_mode(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int omap_mcbsp_st_get_mode(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
#define OMAP_MCBSP_SOC_SINGLE_S16_EXT(xname, xmin, xmax, \
xhandler_get, xhandler_put) …
#define OMAP_MCBSP_ST_CONTROLS(port) …
OMAP_MCBSP_ST_CONTROLS(2);
OMAP_MCBSP_ST_CONTROLS(3);
int omap_mcbsp_st_add_controls(struct snd_soc_pcm_runtime *rtd, int port_id)
{ … }
EXPORT_SYMBOL_GPL(…);