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

bt-sco.c (2897B)


      1// SPDX-License-Identifier: GPL-2.0-or-later
      2/*
      3 * Driver for generic Bluetooth SCO link
      4 * Copyright 2011 Lars-Peter Clausen <lars@metafoo.de>
      5 */
      6
      7#include <linux/init.h>
      8#include <linux/module.h>
      9#include <linux/platform_device.h>
     10
     11#include <sound/soc.h>
     12
     13static const struct snd_soc_dapm_widget bt_sco_widgets[] = {
     14	SND_SOC_DAPM_INPUT("RX"),
     15	SND_SOC_DAPM_OUTPUT("TX"),
     16	SND_SOC_DAPM_AIF_IN("BT_SCO_RX", "Playback", 0,
     17			    SND_SOC_NOPM, 0, 0),
     18	SND_SOC_DAPM_AIF_OUT("BT_SCO_TX", "Capture", 0,
     19			     SND_SOC_NOPM, 0, 0),
     20};
     21
     22static const struct snd_soc_dapm_route bt_sco_routes[] = {
     23	{ "BT_SCO_TX", NULL, "RX" },
     24	{ "TX", NULL, "BT_SCO_RX" },
     25};
     26
     27static struct snd_soc_dai_driver bt_sco_dai[] = {
     28	{
     29		.name = "bt-sco-pcm",
     30		.playback = {
     31			.stream_name = "Playback",
     32			.channels_min = 1,
     33			.channels_max = 1,
     34			.rates = SNDRV_PCM_RATE_8000,
     35			.formats = SNDRV_PCM_FMTBIT_S16_LE,
     36		},
     37		.capture = {
     38			 .stream_name = "Capture",
     39			.channels_min = 1,
     40			.channels_max = 1,
     41			.rates = SNDRV_PCM_RATE_8000,
     42			.formats = SNDRV_PCM_FMTBIT_S16_LE,
     43		},
     44	},
     45	{
     46		.name = "bt-sco-pcm-wb",
     47		.playback = {
     48			.stream_name = "Playback",
     49			.channels_min = 1,
     50			.channels_max = 1,
     51			.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
     52			.formats = SNDRV_PCM_FMTBIT_S16_LE,
     53		},
     54		.capture = {
     55			 .stream_name = "Capture",
     56			.channels_min = 1,
     57			.channels_max = 1,
     58			.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
     59			.formats = SNDRV_PCM_FMTBIT_S16_LE,
     60		},
     61	}
     62};
     63
     64static const struct snd_soc_component_driver soc_component_dev_bt_sco = {
     65	.dapm_widgets		= bt_sco_widgets,
     66	.num_dapm_widgets	= ARRAY_SIZE(bt_sco_widgets),
     67	.dapm_routes		= bt_sco_routes,
     68	.num_dapm_routes	= ARRAY_SIZE(bt_sco_routes),
     69	.idle_bias_on		= 1,
     70	.use_pmdown_time	= 1,
     71	.endianness		= 1,
     72	.non_legacy_dai_naming	= 1,
     73};
     74
     75static int bt_sco_probe(struct platform_device *pdev)
     76{
     77	return devm_snd_soc_register_component(&pdev->dev,
     78				      &soc_component_dev_bt_sco,
     79				      bt_sco_dai, ARRAY_SIZE(bt_sco_dai));
     80}
     81
     82static int bt_sco_remove(struct platform_device *pdev)
     83{
     84	return 0;
     85}
     86
     87static const struct platform_device_id bt_sco_driver_ids[] = {
     88	{
     89		.name		= "dfbmcs320",
     90	},
     91	{
     92		.name		= "bt-sco",
     93	},
     94	{},
     95};
     96MODULE_DEVICE_TABLE(platform, bt_sco_driver_ids);
     97
     98#if defined(CONFIG_OF)
     99static const struct of_device_id bt_sco_codec_of_match[] = {
    100	{ .compatible = "delta,dfbmcs320", },
    101	{ .compatible = "linux,bt-sco", },
    102	{},
    103};
    104MODULE_DEVICE_TABLE(of, bt_sco_codec_of_match);
    105#endif
    106
    107static struct platform_driver bt_sco_driver = {
    108	.driver = {
    109		.name = "bt-sco",
    110		.of_match_table = of_match_ptr(bt_sco_codec_of_match),
    111	},
    112	.probe = bt_sco_probe,
    113	.remove = bt_sco_remove,
    114	.id_table = bt_sco_driver_ids,
    115};
    116
    117module_platform_driver(bt_sco_driver);
    118
    119MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
    120MODULE_DESCRIPTION("ASoC generic bluetooth sco link driver");
    121MODULE_LICENSE("GPL");