#include <linux/cleanup.h>
#include <linux/clk.h>
#include <linux/device.h>
#include <linux/gpio/consumer.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_graph.h>
#include <linux/platform_device.h>
#include <linux/string.h>
#include <sound/graph_card.h>
#define DPCM_SELECTABLE …
#define ep_to_port(ep) …
static struct device_node *port_to_ports(struct device_node *port)
{ … }
static int graph_outdrv_event(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol,
int event)
{ … }
static const struct snd_soc_dapm_widget graph_dapm_widgets[] = …;
static const struct snd_soc_ops graph_ops = …;
static bool soc_component_is_pcm(struct snd_soc_dai_link_component *dlc)
{ … }
static void graph_parse_convert(struct device *dev,
struct device_node *ep,
struct simple_util_data *adata)
{ … }
static int graph_parse_node(struct simple_util_priv *priv,
struct device_node *ep,
struct link_info *li,
int *cpu)
{ … }
static int graph_link_init(struct simple_util_priv *priv,
struct device_node *ep_cpu,
struct device_node *ep_codec,
struct link_info *li,
char *name)
{ … }
static int graph_dai_link_of_dpcm(struct simple_util_priv *priv,
struct device_node *cpu_ep,
struct device_node *codec_ep,
struct link_info *li)
{ … }
static int graph_dai_link_of(struct simple_util_priv *priv,
struct device_node *cpu_ep,
struct device_node *codec_ep,
struct link_info *li)
{ … }
static inline bool parse_as_dpcm_link(struct simple_util_priv *priv,
struct device_node *codec_port,
struct simple_util_data *adata)
{ … }
static int __graph_for_each_link(struct simple_util_priv *priv,
struct link_info *li,
int (*func_noml)(struct simple_util_priv *priv,
struct device_node *cpu_ep,
struct device_node *codec_ep,
struct link_info *li),
int (*func_dpcm)(struct simple_util_priv *priv,
struct device_node *cpu_ep,
struct device_node *codec_ep,
struct link_info *li))
{ … }
static int graph_for_each_link(struct simple_util_priv *priv,
struct link_info *li,
int (*func_noml)(struct simple_util_priv *priv,
struct device_node *cpu_ep,
struct device_node *codec_ep,
struct link_info *li),
int (*func_dpcm)(struct simple_util_priv *priv,
struct device_node *cpu_ep,
struct device_node *codec_ep,
struct link_info *li))
{ … }
static int graph_count_noml(struct simple_util_priv *priv,
struct device_node *cpu_ep,
struct device_node *codec_ep,
struct link_info *li)
{ … }
static int graph_count_dpcm(struct simple_util_priv *priv,
struct device_node *cpu_ep,
struct device_node *codec_ep,
struct link_info *li)
{ … }
static int graph_get_dais_count(struct simple_util_priv *priv,
struct link_info *li)
{ … }
int audio_graph_parse_of(struct simple_util_priv *priv, struct device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
static int graph_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id graph_of_match[] = …;
MODULE_DEVICE_TABLE(of, graph_of_match);
static struct platform_driver graph_card = …;
module_platform_driver(…) …;
MODULE_ALIAS(…) …;
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;