#include <linux/io.h>
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/dmaengine.h>
#include <linux/dma-mapping.h>
#include <drm/bridge/dw_hdmi.h>
#include <drm/drm_edid.h>
#include <drm/drm_connector.h>
#include <sound/hdmi-codec.h>
#include <sound/asoundef.h>
#include <sound/core.h>
#include <sound/initval.h>
#include <sound/pcm.h>
#include <sound/pcm_drm_eld.h>
#include <sound/pcm_iec958.h>
#include <sound/dmaengine_pcm.h>
#include "dw-hdmi-audio.h"
#define DRIVER_NAME …
#define DRV_NAME …
struct snd_dw_hdmi { … };
struct dw_hdmi_channel_conf { … };
static struct dw_hdmi_channel_conf default_hdmi_channel_config[7] = …;
static int audio_hw_params(struct device *dev, void *data,
struct hdmi_codec_daifmt *daifmt,
struct hdmi_codec_params *params)
{ … }
static void audio_shutdown(struct device *dev, void *data)
{ … }
static int audio_mute_stream(struct device *dev, void *data,
bool enable, int direction)
{ … }
static int audio_get_eld(struct device *dev, void *data,
u8 *buf, size_t len)
{ … }
static int audio_hook_plugged_cb(struct device *dev, void *data,
hdmi_codec_plugged_cb fn,
struct device *codec_dev)
{ … }
static const struct hdmi_codec_ops audio_codec_ops = …;
static int snd_dw_hdmi_probe(struct platform_device *pdev)
{ … }
static void snd_dw_hdmi_remove(struct platform_device *pdev)
{ … }
static struct platform_driver snd_dw_hdmi_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;