#include <linux/acpi.h>
#include <linux/debugfs.h>
#include <linux/gpio/consumer.h>
#include <linux/module.h>
#include <linux/pm_runtime.h>
#include <linux/regmap.h>
#include <linux/slab.h>
#include <sound/core.h>
#include <sound/cs-amp-lib.h>
#include <sound/hda_codec.h>
#include <sound/tlv.h>
#include "cirrus_scodec.h"
#include "cs35l56_hda.h"
#include "hda_component.h"
#include "hda_cs_dsp_ctl.h"
#include "hda_generic.h"
static const struct reg_sequence cs35l56_hda_dai_config[] = …;
static void cs35l56_hda_wait_dsp_ready(struct cs35l56_hda *cs35l56)
{ … }
static void cs35l56_hda_play(struct cs35l56_hda *cs35l56)
{ … }
static void cs35l56_hda_pause(struct cs35l56_hda *cs35l56)
{ … }
static void cs35l56_hda_playback_hook(struct device *dev, int action)
{ … }
static int cs35l56_hda_runtime_suspend(struct device *dev)
{ … }
static int cs35l56_hda_runtime_resume(struct device *dev)
{ … }
static int cs35l56_hda_mixer_info(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo)
{ … }
static int cs35l56_hda_mixer_get(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int cs35l56_hda_mixer_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int cs35l56_hda_posture_info(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo)
{ … }
static int cs35l56_hda_posture_get(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int cs35l56_hda_posture_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static const struct { … } cs35l56_hda_mixer_controls[] = …;
static const DECLARE_TLV_DB_SCALE(cs35l56_hda_vol_tlv, -10000, 25, 0);
static int cs35l56_hda_vol_info(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo)
{ … }
static int cs35l56_hda_vol_get(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int cs35l56_hda_vol_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static void cs35l56_hda_create_controls(struct cs35l56_hda *cs35l56)
{ … }
static void cs35l56_hda_remove_controls(struct cs35l56_hda *cs35l56)
{ … }
static const struct cs_dsp_client_ops cs35l56_hda_client_ops = …;
static int cs35l56_hda_request_firmware_file(struct cs35l56_hda *cs35l56,
const struct firmware **firmware, char **filename,
const char *base_name, const char *system_name,
const char *amp_name,
const char *filetype)
{ … }
static void cs35l56_hda_request_firmware_files(struct cs35l56_hda *cs35l56,
unsigned int preloaded_fw_ver,
const struct firmware **wmfw_firmware,
char **wmfw_filename,
const struct firmware **coeff_firmware,
char **coeff_filename)
{ … }
static void cs35l56_hda_release_firmware_files(const struct firmware *wmfw_firmware,
char *wmfw_filename,
const struct firmware *coeff_firmware,
char *coeff_filename)
{ … }
static void cs35l56_hda_apply_calibration(struct cs35l56_hda *cs35l56)
{ … }
static void cs35l56_hda_fw_load(struct cs35l56_hda *cs35l56)
{ … }
static void cs35l56_hda_dsp_work(struct work_struct *work)
{ … }
static int cs35l56_hda_bind(struct device *dev, struct device *master, void *master_data)
{ … }
static void cs35l56_hda_unbind(struct device *dev, struct device *master, void *master_data)
{ … }
static const struct component_ops cs35l56_hda_comp_ops = …;
static int cs35l56_hda_system_suspend(struct device *dev)
{ … }
static int cs35l56_hda_system_suspend_late(struct device *dev)
{ … }
static int cs35l56_hda_system_suspend_no_irq(struct device *dev)
{ … }
static int cs35l56_hda_system_resume_no_irq(struct device *dev)
{ … }
static int cs35l56_hda_system_resume_early(struct device *dev)
{ … }
static int cs35l56_hda_system_resume(struct device *dev)
{ … }
static int cs35l56_hda_read_acpi(struct cs35l56_hda *cs35l56, int hid, int id)
{ … }
int cs35l56_hda_common_probe(struct cs35l56_hda *cs35l56, int hid, int id)
{ … }
EXPORT_SYMBOL_NS_GPL(…);
void cs35l56_hda_remove(struct device *dev)
{ … }
EXPORT_SYMBOL_NS_GPL(…);
const struct dev_pm_ops cs35l56_hda_pm_ops = …;
EXPORT_SYMBOL_NS_GPL(…);
MODULE_DESCRIPTION(…) …;
MODULE_IMPORT_NS(…);
MODULE_IMPORT_NS(…);
MODULE_IMPORT_NS(…);
MODULE_IMPORT_NS(…);
MODULE_IMPORT_NS(…);
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;