#include <linux/bitfield.h>
#include <linux/mfd/cs40l50.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#define CS40L50_REFCLK_INPUT …
#define CS40L50_ASP_CONTROL2 …
#define CS40L50_ASP_DATA_CONTROL5 …
#define CS40L50_PLL_REFCLK_BCLK …
#define CS40L50_PLL_REFCLK_MCLK …
#define CS40L50_PLL_REEFCLK_MCLK_CFG …
#define CS40L50_PLL_REFCLK_LOOP_MASK …
#define CS40L50_PLL_REFCLK_OPEN_LOOP …
#define CS40L50_PLL_REFCLK_CLOSED_LOOP …
#define CS40L50_PLL_REFCLK_LOOP_SHIFT …
#define CS40L50_PLL_REFCLK_FREQ_MASK …
#define CS40L50_PLL_REFCLK_FREQ_SHIFT …
#define CS40L50_PLL_REFCLK_SEL_MASK …
#define CS40L50_BCLK_RATIO_DEFAULT …
#define CS40L50_ASP_RX_WIDTH_SHIFT …
#define CS40L50_ASP_RX_WIDTH_MASK …
#define CS40L50_ASP_RX_WL_MASK …
#define CS40L50_ASP_FSYNC_INV_MASK …
#define CS40L50_ASP_BCLK_INV_MASK …
#define CS40L50_ASP_FMT_MASK …
#define CS40L50_ASP_FMT_I2S …
struct cs40l50_pll_config { … };
struct cs40l50_codec { … };
static const struct cs40l50_pll_config cs40l50_pll_cfg[] = …;
static int cs40l50_get_clk_config(const unsigned int freq, unsigned int *cfg)
{ … }
static int cs40l50_swap_ext_clk(struct cs40l50_codec *codec, const unsigned int clk_src)
{ … }
static int cs40l50_clk_en(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol,
int event)
{ … }
static const struct snd_soc_dapm_widget cs40l50_dapm_widgets[] = …;
static const struct snd_soc_dapm_route cs40l50_dapm_routes[] = …;
static int cs40l50_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
{ … }
static int cs40l50_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params,
struct snd_soc_dai *dai)
{ … }
static int cs40l50_set_dai_bclk_ratio(struct snd_soc_dai *dai, unsigned int ratio)
{ … }
static const struct snd_soc_dai_ops cs40l50_dai_ops = …;
static struct snd_soc_dai_driver cs40l50_dai[] = …;
static int cs40l50_codec_probe(struct snd_soc_component *component)
{ … }
static const struct snd_soc_component_driver soc_codec_dev_cs40l50 = …;
static int cs40l50_codec_driver_probe(struct platform_device *pdev)
{ … }
static const struct platform_device_id cs40l50_id[] = …;
MODULE_DEVICE_TABLE(platform, cs40l50_id);
static struct platform_driver cs40l50_codec_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;