#include <sound/core.h>
#include <sound/soc.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/soc-dapm.h>
#include <sound/jack.h>
#include <sound/soc-acpi.h>
#include <linux/clk.h>
#include <linux/gpio.h>
#include <linux/gpio/consumer.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/input.h>
#include <linux/io.h>
#include <linux/acpi.h>
#include <linux/dmi.h>
#include "../acp-mach.h"
#include "acp3x-es83xx.h"
#define get_mach_priv(card) …
#define DUAL_CHANNEL …
#define ES83XX_ENABLE_DMIC …
#define ES83XX_48_MHZ_MCLK …
struct acp3x_es83xx_private { … };
static const unsigned int channels[] = …;
static const struct snd_pcm_hw_constraint_list constraints_channels = …;
#define ES83xx_12288_KHZ_MCLK_FREQ …
#define ES83xx_48_MHZ_MCLK_FREQ …
static int acp3x_es83xx_headphone_power_event(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol, int event);
static int acp3x_es83xx_speaker_power_event(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol, int event);
static int acp3x_es83xx_codec_startup(struct snd_pcm_substream *substream)
{ … }
static struct snd_soc_jack es83xx_jack;
static struct snd_soc_jack_pin es83xx_jack_pins[] = …;
static const struct snd_soc_dapm_widget acp3x_es83xx_widgets[] = …;
static const struct snd_soc_dapm_route acp3x_es83xx_audio_map[] = …;
static const struct snd_kcontrol_new acp3x_es83xx_controls[] = …;
static int acp3x_es83xx_configure_widgets(struct snd_soc_card *card)
{ … }
static int acp3x_es83xx_headphone_power_event(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol, int event)
{ … }
static int acp3x_es83xx_speaker_power_event(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol, int event)
{ … }
static int acp3x_es83xx_suspend_pre(struct snd_soc_card *card)
{ … }
static int acp3x_es83xx_resume_post(struct snd_soc_card *card)
{ … }
static int acp3x_es83xx_configure_gpios(struct acp3x_es83xx_private *priv)
{ … }
static int acp3x_es83xx_configure_mics(struct acp3x_es83xx_private *priv)
{ … }
static int acp3x_es83xx_init(struct snd_soc_pcm_runtime *runtime)
{ … }
static const struct snd_soc_ops acp3x_es83xx_ops = …;
SND_SOC_DAILINK_DEF(codec,
DAILINK_COMP_ARRAY(COMP_CODEC("i2c-ESSX8336:00", "ES8316 HiFi")));
static const struct dmi_system_id acp3x_es83xx_dmi_table[] = …;
static int acp3x_es83xx_configure_link(struct snd_soc_card *card, struct snd_soc_dai_link *link)
{ … }
static int acp3x_es83xx_probe(struct snd_soc_card *card)
{ … }
void acp3x_es83xx_init_ops(struct acp_mach_ops *ops)
{ … }