File Index
Files and directories
Sign in
FILE

usb_offload_utils.c

File preview with syntax highlighting.

linux-6.19.14/sound/soc/qcom/usb_offload_utils.c C
 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
12int 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}
32EXPORT_SYMBOL_GPL(qcom_snd_usb_offload_jack_setup);
33
34int 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}
54EXPORT_SYMBOL_GPL(qcom_snd_usb_offload_jack_remove);
55MODULE_DESCRIPTION("ASoC Q6 USB offload controls");
56MODULE_LICENSE("GPL");
~/ Read-only file preview.