#include <linux/clk.h>
#include <linux/debugfs.h>
#include <linux/err.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include "imx-audmux.h"
#define DRIVER_NAME …
static struct clk *audmux_clk;
static void __iomem *audmux_base;
static u32 *regcache;
static u32 reg_max;
#define IMX_AUDMUX_V2_PTCR(x) …
#define IMX_AUDMUX_V2_PDCR(x) …
#ifdef CONFIG_DEBUG_FS
static struct dentry *audmux_debugfs_root;
static const char *audmux_port_string(int port)
{ … }
static ssize_t audmux_read_file(struct file *file, char __user *user_buf,
size_t count, loff_t *ppos)
{ … }
static const struct file_operations audmux_debugfs_fops = …;
static void audmux_debugfs_init(void)
{ … }
static void audmux_debugfs_remove(void)
{ … }
#else
static inline void audmux_debugfs_init(void)
{
}
static inline void audmux_debugfs_remove(void)
{
}
#endif
static enum imx_audmux_type { … } audmux_type;
static const struct of_device_id imx_audmux_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, imx_audmux_dt_ids);
static const uint8_t port_mapping[] = …;
int imx_audmux_v1_configure_port(unsigned int port, unsigned int pcr)
{ … }
EXPORT_SYMBOL_GPL(…);
int imx_audmux_v2_configure_port(unsigned int port, unsigned int ptcr,
unsigned int pdcr)
{ … }
EXPORT_SYMBOL_GPL(…);
static int imx_audmux_parse_dt_defaults(struct platform_device *pdev,
struct device_node *of_node)
{ … }
static int imx_audmux_probe(struct platform_device *pdev)
{ … }
static void imx_audmux_remove(struct platform_device *pdev)
{ … }
#ifdef CONFIG_PM_SLEEP
static int imx_audmux_suspend(struct device *dev)
{ … }
static int imx_audmux_resume(struct device *dev)
{ … }
#endif
static const struct dev_pm_ops imx_audmux_pm = …;
static struct platform_driver imx_audmux_driver = …;
static int __init imx_audmux_init(void)
{ … }
subsys_initcall(imx_audmux_init);
static void __exit imx_audmux_exit(void)
{ … }
module_exit(imx_audmux_exit);
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;