#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/err.h>
#include <linux/gpio/consumer.h>
#include <linux/gpio.h>
#include <linux/input.h>
#include <linux/pm_runtime.h>
#include <linux/property.h>
#include <linux/regulator/consumer.h>
#include <sound/jack.h>
#include <sound/soc.h>
#include <linux/mfd/arizona/core.h>
#include <linux/mfd/arizona/pdata.h>
#include <linux/mfd/arizona/registers.h>
#include <dt-bindings/mfd/arizona.h>
#include "arizona.h"
#define ARIZONA_MAX_MICD_RANGE …
#define ARIZONA_MAX_MICD_BUTTONS …
#define ARIZONA_MICD_CLAMP_MODE_JDL …
#define ARIZONA_MICD_CLAMP_MODE_JDH …
#define ARIZONA_MICD_CLAMP_MODE_JDL_GP5H …
#define ARIZONA_MICD_CLAMP_MODE_JDH_GP5H …
#define ARIZONA_TST_CAP_DEFAULT …
#define ARIZONA_TST_CAP_CLAMP …
#define ARIZONA_HPDET_MAX …
#define HPDET_DEBOUNCE …
#define DEFAULT_MICD_TIMEOUT …
#define ARIZONA_HPDET_WAIT_COUNT …
#define ARIZONA_HPDET_WAIT_DELAY_MS …
#define QUICK_HEADPHONE_MAX_OHM …
#define MICROPHONE_MIN_OHM …
#define MICROPHONE_MAX_OHM …
#define MICD_DBTIME_TWO_READINGS …
#define MICD_DBTIME_FOUR_READINGS …
#define MICD_LVL_1_TO_7 …
#define MICD_LVL_0_TO_7 …
#define MICD_LVL_0_TO_8 …
static const struct arizona_micd_config micd_default_modes[] = …;
static const struct arizona_micd_range micd_default_ranges[] = …;
#define ARIZONA_NUM_MICD_BUTTON_LEVELS …
static const int arizona_micd_levels[] = …;
static void arizona_start_hpdet_acc_id(struct arizona_priv *info);
static void arizona_extcon_hp_clamp(struct arizona_priv *info,
bool clamp)
{ … }
static void arizona_extcon_set_mode(struct arizona_priv *info, int mode)
{ … }
static const char *arizona_extcon_get_micbias(struct arizona_priv *info)
{ … }
static void arizona_extcon_pulse_micbias(struct arizona_priv *info)
{ … }
static void arizona_start_mic(struct arizona_priv *info)
{ … }
static void arizona_stop_mic(struct arizona_priv *info)
{ … }
static struct { … } arizona_hpdet_b_ranges[] = …;
#define ARIZONA_HPDET_B_RANGE_MAX …
static struct { … } arizona_hpdet_c_ranges[] = …;
static int arizona_hpdet_read(struct arizona_priv *info)
{ … }
static int arizona_hpdet_do_id(struct arizona_priv *info, int *reading,
bool *mic)
{ … }
static irqreturn_t arizona_hpdet_irq(int irq, void *data)
{ … }
static void arizona_identify_headphone(struct arizona_priv *info)
{ … }
static void arizona_start_hpdet_acc_id(struct arizona_priv *info)
{ … }
static void arizona_micd_timeout_work(struct work_struct *work)
{ … }
static int arizona_micd_adc_read(struct arizona_priv *info)
{ … }
static int arizona_micd_read(struct arizona_priv *info)
{ … }
static int arizona_micdet_reading(void *priv)
{ … }
static int arizona_button_reading(void *priv)
{ … }
static void arizona_micd_detect(struct work_struct *work)
{ … }
static irqreturn_t arizona_micdet(int irq, void *data)
{ … }
static void arizona_hpdet_work(struct work_struct *work)
{ … }
static int arizona_hpdet_wait(struct arizona_priv *info)
{ … }
static irqreturn_t arizona_jackdet(int irq, void *data)
{ … }
static void arizona_micd_set_level(struct arizona *arizona, int index,
unsigned int level)
{ … }
static int arizona_extcon_get_micd_configs(struct device *dev,
struct arizona *arizona)
{ … }
static int arizona_extcon_device_get_pdata(struct device *dev,
struct arizona *arizona)
{ … }
int arizona_jack_codec_dev_probe(struct arizona_priv *info, struct device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
int arizona_jack_codec_dev_remove(struct arizona_priv *info)
{ … }
EXPORT_SYMBOL_GPL(…);
static int arizona_jack_enable_jack_detect(struct arizona_priv *info,
struct snd_soc_jack *jack)
{ … }
static int arizona_jack_disable_jack_detect(struct arizona_priv *info)
{ … }
int arizona_jack_set_jack(struct snd_soc_component *component,
struct snd_soc_jack *jack, void *data)
{ … }
EXPORT_SYMBOL_GPL(…);