#include <linux/clk.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/pm_runtime.h>
#include <linux/iio/iio.h>
#include <linux/iio/consumer.h>
#include <linux/iio/adc/stm32-dfsdm-adc.h>
#include <sound/pcm.h>
#include <sound/soc.h>
#define STM32_ADFSDM_DRV_NAME …
#define DFSDM_MAX_PERIOD_SIZE …
#define DFSDM_MAX_PERIODS …
struct stm32_adfsdm_priv { … };
static const struct snd_pcm_hardware stm32_adfsdm_pcm_hw = …;
static void stm32_adfsdm_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai)
{ … }
static int stm32_adfsdm_dai_prepare(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai)
{ … }
static int stm32_adfsdm_set_sysclk(struct snd_soc_dai *dai, int clk_id,
unsigned int freq, int dir)
{ … }
static const struct snd_soc_dai_ops stm32_adfsdm_dai_ops = …;
static const struct snd_soc_dai_driver stm32_adfsdm_dai = …;
static const struct snd_soc_component_driver stm32_adfsdm_dai_component = …;
static void stm32_memcpy_32to16(void *dest, const void *src, size_t n)
{ … }
static int stm32_afsdm_pcm_cb(const void *data, size_t size, void *private)
{ … }
static int stm32_adfsdm_trigger(struct snd_soc_component *component,
struct snd_pcm_substream *substream, int cmd)
{ … }
static int stm32_adfsdm_pcm_open(struct snd_soc_component *component,
struct snd_pcm_substream *substream)
{ … }
static int stm32_adfsdm_pcm_close(struct snd_soc_component *component,
struct snd_pcm_substream *substream)
{ … }
static snd_pcm_uframes_t stm32_adfsdm_pcm_pointer(
struct snd_soc_component *component,
struct snd_pcm_substream *substream)
{ … }
static int stm32_adfsdm_pcm_hw_params(struct snd_soc_component *component,
struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params)
{ … }
static int stm32_adfsdm_pcm_new(struct snd_soc_component *component,
struct snd_soc_pcm_runtime *rtd)
{ … }
static int stm32_adfsdm_dummy_cb(const void *data, void *private)
{ … }
static void stm32_adfsdm_cleanup(void *data)
{ … }
static struct snd_soc_component_driver stm32_adfsdm_soc_platform = …;
static const struct of_device_id stm32_adfsdm_of_match[] = …;
MODULE_DEVICE_TABLE(of, stm32_adfsdm_of_match);
static int stm32_adfsdm_probe(struct platform_device *pdev)
{ … }
static void stm32_adfsdm_remove(struct platform_device *pdev)
{ … }
static struct platform_driver stm32_adfsdm_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;