#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/i2c.h>
#include <linux/slab.h>
#include <linux/of.h>
#include <linux/of_graph.h>
#include <linux/module.h>
#include <linux/regmap.h>
#include <sound/soc.h>
#include <sound/pcm_params.h>
#include <sound/tlv.h>
#define PW_MGMT1 …
#define PW_MGMT2 …
#define PW_MGMT3 …
#define CTRL1 …
#define CTRL2 …
#define DEMP1 …
#define DEMP2 …
#define OFD …
#define ZRD …
#define ICTRL …
#define OCTRL …
#define LOUT1 …
#define ROUT1 …
#define LOUT2 …
#define ROUT2 …
#define LOUT3 …
#define ROUT3 …
#define LOUT4 …
#define ROUT4 …
#define LOUT5 …
#define ROUT5 …
#define LOUT6 …
#define ROUT6 …
#define RSTN …
#define PMDAC …
#define PMADC …
#define PMVR …
#define PMAD_ALL …
#define PMDA_ALL …
#define DIF0 …
#define DIF1 …
#define DIF2 …
#define TDM0 …
#define TDM1 …
#define NO_FMT …
#define FMT_MASK …
#define DFS_MASK …
#define DFS_NORMAL_SPEED …
#define DFS_DOUBLE_SPEED …
#define DFS_QUAD_SPEED …
#define ICTRL_MASK …
#define OCTRL_MASK …
#define AK4613_CONFIG_SET(priv, x) …
#define AK4613_CONFIG_GET(priv, x) …
#define AK4613_CONFIG_SDTI_MASK …
#define AK4613_CONFIG_SDTI(x) …
#define AK4613_CONFIG_SDTI_set(priv, x) …
#define AK4613_CONFIG_SDTI_get(priv) …
#define AK4613_CONFIG_MODE_MASK …
#define AK4613_CONFIG_MODE_STEREO …
#define AK4613_CONFIG_MODE_TDM512 …
#define AK4613_CONFIG_MODE_TDM256 …
#define AK4613_CONFIG_MODE_TDM128 …
struct ak4613_interface { … };
struct ak4613_priv { … };
static const DECLARE_TLV_DB_SCALE(out_tlv, -12750, 50, 1);
static const struct snd_kcontrol_new ak4613_snd_controls[] = …;
static const struct reg_default ak4613_reg[] = …;
#define AUDIO_IFACE(_dif, _width, _fmt) …
static const struct ak4613_interface ak4613_iface[] = …;
#define AK4613_CTRL1_TO_MODE(priv) …
static const struct regmap_config ak4613_regmap_cfg = …;
static const struct of_device_id ak4613_of_match[] = …;
MODULE_DEVICE_TABLE(of, ak4613_of_match);
static const struct i2c_device_id ak4613_i2c_id[] = …;
MODULE_DEVICE_TABLE(i2c, ak4613_i2c_id);
static const struct snd_soc_dapm_widget ak4613_dapm_widgets[] = …;
static const struct snd_soc_dapm_route ak4613_intercon[] = …;
static void ak4613_dai_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai)
{ … }
static void ak4613_hw_constraints(struct ak4613_priv *priv,
struct snd_pcm_substream *substream)
{ … }
static int ak4613_dai_startup(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai)
{ … }
static int ak4613_dai_set_sysclk(struct snd_soc_dai *codec_dai,
int clk_id, unsigned int freq, int dir)
{ … }
static int ak4613_dai_set_fmt(struct snd_soc_dai *dai, unsigned int format)
{ … }
static int ak4613_dai_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params,
struct snd_soc_dai *dai)
{ … }
static int ak4613_set_bias_level(struct snd_soc_component *component,
enum snd_soc_bias_level level)
{ … }
static void ak4613_dummy_write(struct work_struct *work)
{ … }
static int ak4613_dai_trigger(struct snd_pcm_substream *substream, int cmd,
struct snd_soc_dai *dai)
{ … }
static const u64 ak4613_dai_formats = …;
static const struct snd_soc_dai_ops ak4613_dai_ops = …;
#define AK4613_PCM_RATE …
#define AK4613_PCM_FMTBIT …
static struct snd_soc_dai_driver ak4613_dai = …;
static int ak4613_suspend(struct snd_soc_component *component)
{ … }
static int ak4613_resume(struct snd_soc_component *component)
{ … }
static const struct snd_soc_component_driver soc_component_dev_ak4613 = …;
static void ak4613_parse_of(struct ak4613_priv *priv,
struct device *dev)
{ … }
static int ak4613_i2c_probe(struct i2c_client *i2c)
{ … }
static struct i2c_driver ak4613_i2c_driver = …;
module_i2c_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;