Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/sound/soc/amd/acp/acp-sdw-mach-common.c
26481 views
1
// SPDX-License-Identifier: GPL-2.0-only
2
// Copyright(c) 2024 Advanced Micro Devices, Inc.
3
4
/*
5
* acp-sdw-mach-common - Common machine driver helper functions for
6
* legacy(No DSP) stack and SOF stack.
7
*/
8
9
#include <linux/device.h>
10
#include <linux/module.h>
11
#include "soc_amd_sdw_common.h"
12
13
int get_acp63_cpu_pin_id(u32 sdw_link_id, int be_id, int *cpu_pin_id, struct device *dev)
14
{
15
switch (sdw_link_id) {
16
case AMD_SDW0:
17
switch (be_id) {
18
case SOC_SDW_JACK_OUT_DAI_ID:
19
*cpu_pin_id = ACP63_SW0_AUDIO0_TX;
20
break;
21
case SOC_SDW_JACK_IN_DAI_ID:
22
*cpu_pin_id = ACP63_SW0_AUDIO0_RX;
23
break;
24
case SOC_SDW_AMP_OUT_DAI_ID:
25
*cpu_pin_id = ACP63_SW0_AUDIO1_TX;
26
break;
27
case SOC_SDW_AMP_IN_DAI_ID:
28
*cpu_pin_id = ACP63_SW0_AUDIO1_RX;
29
break;
30
case SOC_SDW_DMIC_DAI_ID:
31
*cpu_pin_id = ACP63_SW0_AUDIO2_RX;
32
break;
33
default:
34
dev_err(dev, "Invalid be id:%d\n", be_id);
35
return -EINVAL;
36
}
37
break;
38
case AMD_SDW1:
39
switch (be_id) {
40
case SOC_SDW_JACK_OUT_DAI_ID:
41
case SOC_SDW_AMP_OUT_DAI_ID:
42
*cpu_pin_id = ACP63_SW1_AUDIO0_TX;
43
break;
44
case SOC_SDW_JACK_IN_DAI_ID:
45
case SOC_SDW_AMP_IN_DAI_ID:
46
case SOC_SDW_DMIC_DAI_ID:
47
*cpu_pin_id = ACP63_SW1_AUDIO0_RX;
48
break;
49
default:
50
dev_err(dev, "invalid be_id:%d\n", be_id);
51
return -EINVAL;
52
}
53
break;
54
default:
55
dev_err(dev, "Invalid link id:%d\n", sdw_link_id);
56
return -EINVAL;
57
}
58
return 0;
59
}
60
EXPORT_SYMBOL_NS_GPL(get_acp63_cpu_pin_id, "SND_SOC_AMD_SDW_MACH");
61
62
int get_acp70_cpu_pin_id(u32 sdw_link_id, int be_id, int *cpu_pin_id, struct device *dev)
63
{
64
switch (sdw_link_id) {
65
case AMD_SDW0:
66
case AMD_SDW1:
67
switch (be_id) {
68
case SOC_SDW_JACK_OUT_DAI_ID:
69
*cpu_pin_id = ACP70_SW_AUDIO0_TX;
70
break;
71
case SOC_SDW_JACK_IN_DAI_ID:
72
*cpu_pin_id = ACP70_SW_AUDIO0_RX;
73
break;
74
case SOC_SDW_AMP_OUT_DAI_ID:
75
*cpu_pin_id = ACP70_SW_AUDIO1_TX;
76
break;
77
case SOC_SDW_AMP_IN_DAI_ID:
78
*cpu_pin_id = ACP70_SW_AUDIO1_RX;
79
break;
80
case SOC_SDW_DMIC_DAI_ID:
81
*cpu_pin_id = ACP70_SW_AUDIO2_RX;
82
break;
83
default:
84
dev_err(dev, "Invalid be id:%d\n", be_id);
85
return -EINVAL;
86
}
87
break;
88
default:
89
return -EINVAL;
90
}
91
dev_dbg(dev, "sdw_link_id:%d, be_id:%d, cpu_pin_id:%d\n", sdw_link_id, be_id, *cpu_pin_id);
92
return 0;
93
}
94
EXPORT_SYMBOL_NS_GPL(get_acp70_cpu_pin_id, "SND_SOC_AMD_SDW_MACH");
95
96
MODULE_DESCRIPTION("AMD SoundWire Common Machine driver");
97
MODULE_AUTHOR("Vijendar Mukunda <[email protected]>");
98
MODULE_LICENSE("GPL");
99
100