#include <linux/firmware.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/module.h>
#include <linux/pm_runtime.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include <sound/hdaudio_ext.h>
#include <sound/hda_i915.h>
#include <sound/hda_codec.h>
#include <sound/hda_register.h>
#include "hdac_hda.h"
#define STUB_FORMATS …
#define STUB_HDMI_RATES …
#ifdef CONFIG_SND_HDA_PATCH_LOADER
static char *loadable_patch[HDA_MAX_CODECS];
module_param_array_named(…);
MODULE_PARM_DESC(…) …;
#endif
static int hdac_hda_dai_open(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai);
static void hdac_hda_dai_close(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai);
static int hdac_hda_dai_prepare(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai);
static int hdac_hda_dai_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params,
struct snd_soc_dai *dai);
static int hdac_hda_dai_hw_free(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai);
static int hdac_hda_dai_set_stream(struct snd_soc_dai *dai, void *stream,
int direction);
static struct hda_pcm *snd_soc_find_pcm_from_dai(struct hdac_hda_priv *hda_pvt,
struct snd_soc_dai *dai);
static const struct snd_soc_dai_ops hdac_hda_dai_ops = …;
static struct snd_soc_dai_driver hdac_hda_dais[] = …;
static struct snd_soc_dai_driver hdac_hda_hdmi_dais[] = …;
static int hdac_hda_dai_set_stream(struct snd_soc_dai *dai,
void *stream, int direction)
{ … }
static int hdac_hda_dai_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params,
struct snd_soc_dai *dai)
{ … }
static int hdac_hda_dai_hw_free(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai)
{ … }
static int hdac_hda_dai_prepare(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai)
{ … }
static int hdac_hda_dai_open(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai)
{ … }
static void hdac_hda_dai_close(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai)
{ … }
static struct hda_pcm *snd_soc_find_pcm_from_dai(struct hdac_hda_priv *hda_pvt,
struct snd_soc_dai *dai)
{ … }
static bool is_hdmi_codec(struct hda_codec *hcodec)
{ … }
static int hdac_hda_codec_probe(struct snd_soc_component *component)
{ … }
static void hdac_hda_codec_remove(struct snd_soc_component *component)
{ … }
static const struct snd_soc_dapm_route hdac_hda_dapm_routes[] = …;
static const struct snd_soc_dapm_widget hdac_hda_dapm_widgets[] = …;
static const struct snd_soc_component_driver hdac_hda_codec = …;
static const struct snd_soc_component_driver hdac_hda_hdmi_codec = …;
static int hdac_hda_dev_probe(struct hdac_device *hdev)
{ … }
static int hdac_hda_dev_remove(struct hdac_device *hdev)
{ … }
static struct hdac_ext_bus_ops hdac_ops = …;
struct hdac_ext_bus_ops *snd_soc_hdac_hda_get_ops(void)
{ … }
EXPORT_SYMBOL_GPL(…);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;