Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/sound/soc/qcom/usb_offload_utils.c
26444 views
1
// SPDX-License-Identifier: GPL-2.0
2
/*
3
* Copyright (c) 2022-2025 Qualcomm Innovation Center, Inc. All rights reserved.
4
*/
5
#include <dt-bindings/sound/qcom,q6afe.h>
6
#include <linux/module.h>
7
#include <sound/jack.h>
8
#include <sound/soc-usb.h>
9
10
#include "usb_offload_utils.h"
11
12
int qcom_snd_usb_offload_jack_setup(struct snd_soc_pcm_runtime *rtd,
13
struct snd_soc_jack *jack, bool *jack_setup)
14
{
15
struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
16
struct snd_soc_dai *codec_dai = snd_soc_rtd_to_codec(rtd, 0);
17
int ret = 0;
18
19
if (cpu_dai->id != USB_RX)
20
return -EINVAL;
21
22
if (!*jack_setup) {
23
ret = snd_soc_usb_setup_offload_jack(codec_dai->component, jack);
24
if (ret)
25
return ret;
26
}
27
28
*jack_setup = true;
29
30
return 0;
31
}
32
EXPORT_SYMBOL_GPL(qcom_snd_usb_offload_jack_setup);
33
34
int qcom_snd_usb_offload_jack_remove(struct snd_soc_pcm_runtime *rtd,
35
bool *jack_setup)
36
{
37
struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
38
struct snd_soc_dai *codec_dai = snd_soc_rtd_to_codec(rtd, 0);
39
int ret = 0;
40
41
if (cpu_dai->id != USB_RX)
42
return -EINVAL;
43
44
if (*jack_setup) {
45
ret = snd_soc_component_set_jack(codec_dai->component, NULL, NULL);
46
if (ret)
47
return ret;
48
}
49
50
*jack_setup = false;
51
52
return 0;
53
}
54
EXPORT_SYMBOL_GPL(qcom_snd_usb_offload_jack_remove);
55
MODULE_DESCRIPTION("ASoC Q6 USB offload controls");
56
MODULE_LICENSE("GPL");
57
58