cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ad73311.c (2018B)


      1// SPDX-License-Identifier: GPL-2.0-or-later
      2/*
      3 * ad73311.c  --  ALSA Soc AD73311 codec support
      4 *
      5 * Copyright:	Analog Devices Inc.
      6 * Author:	Cliff Cai <cliff.cai@analog.com>
      7 */
      8
      9#include <linux/init.h>
     10#include <linux/slab.h>
     11#include <linux/module.h>
     12#include <linux/kernel.h>
     13#include <linux/device.h>
     14#include <sound/core.h>
     15#include <sound/pcm.h>
     16#include <sound/ac97_codec.h>
     17#include <sound/initval.h>
     18#include <sound/soc.h>
     19
     20#include "ad73311.h"
     21
     22static const struct snd_soc_dapm_widget ad73311_dapm_widgets[] = {
     23SND_SOC_DAPM_INPUT("VINP"),
     24SND_SOC_DAPM_INPUT("VINN"),
     25SND_SOC_DAPM_OUTPUT("VOUTN"),
     26SND_SOC_DAPM_OUTPUT("VOUTP"),
     27};
     28
     29static const struct snd_soc_dapm_route ad73311_dapm_routes[] = {
     30	{ "Capture", NULL, "VINP" },
     31	{ "Capture", NULL, "VINN" },
     32
     33	{ "VOUTN", NULL, "Playback" },
     34	{ "VOUTP", NULL, "Playback" },
     35};
     36
     37static struct snd_soc_dai_driver ad73311_dai = {
     38	.name = "ad73311-hifi",
     39	.playback = {
     40		.stream_name = "Playback",
     41		.channels_min = 1,
     42		.channels_max = 1,
     43		.rates = SNDRV_PCM_RATE_8000,
     44		.formats = SNDRV_PCM_FMTBIT_S16_LE, },
     45	.capture = {
     46		.stream_name = "Capture",
     47		.channels_min = 1,
     48		.channels_max = 1,
     49		.rates = SNDRV_PCM_RATE_8000,
     50		.formats = SNDRV_PCM_FMTBIT_S16_LE, },
     51};
     52
     53static const struct snd_soc_component_driver soc_component_dev_ad73311 = {
     54	.dapm_widgets		= ad73311_dapm_widgets,
     55	.num_dapm_widgets	= ARRAY_SIZE(ad73311_dapm_widgets),
     56	.dapm_routes		= ad73311_dapm_routes,
     57	.num_dapm_routes	= ARRAY_SIZE(ad73311_dapm_routes),
     58	.idle_bias_on		= 1,
     59	.use_pmdown_time	= 1,
     60	.endianness		= 1,
     61	.non_legacy_dai_naming	= 1,
     62};
     63
     64static int ad73311_probe(struct platform_device *pdev)
     65{
     66	return devm_snd_soc_register_component(&pdev->dev,
     67			&soc_component_dev_ad73311, &ad73311_dai, 1);
     68}
     69
     70static struct platform_driver ad73311_codec_driver = {
     71	.driver = {
     72			.name = "ad73311",
     73	},
     74
     75	.probe = ad73311_probe,
     76};
     77
     78module_platform_driver(ad73311_codec_driver);
     79
     80MODULE_DESCRIPTION("ASoC ad73311 driver");
     81MODULE_AUTHOR("Cliff Cai ");
     82MODULE_LICENSE("GPL");