xref: /linux/sound/soc/amd/acp/soc_amd_sdw_common.h (revision c93913c70809898aa5e450e4aad0b99750d9f082)
1 /* SPDX-License-Identifier: GPL-2.0-only
2  *  Copyright (c) 2024 Advanced Micro Devices, Inc. All rights reserved
3  */
4 
5 /*
6  *  soc_amd_sdw_common.h - prototypes for common helpers
7  */
8 
9 #ifndef SOC_AMD_SDW_COMMON_H
10 #define SOC_AMD_SDW_COMMON_H
11 
12 #include <linux/bits.h>
13 #include <linux/types.h>
14 #include <sound/soc.h>
15 #include <sound/soc_sdw_utils.h>
16 
17 #define ACP63_SDW_MAX_CPU_DAIS		8
18 #define ACP63_SDW_MAX_LINKS		2
19 
20 #define AMD_SDW_MAX_GROUPS		9
21 #define ACP63_PCI_REV			0x63
22 #define ACP70_PCI_REV			0x70
23 #define ACP71_PCI_REV			0x71
24 #define ACP72_PCI_REV			0x72
25 
26 #define SOC_JACK_JDSRC(quirk)		((quirk) & GENMASK(3, 0))
27 #define ASOC_SDW_FOUR_SPK		BIT(4)
28 #define ASOC_SDW_ACP_DMIC		BIT(5)
29 #define ASOC_SDW_CODEC_SPKR		BIT(15)
30 
31 #define AMD_SDW0	0
32 #define AMD_SDW1	1
33 #define ACP63_SW0_AUDIO0_TX	0
34 #define ACP63_SW0_AUDIO1_TX	1
35 #define ACP63_SW0_AUDIO2_TX	2
36 
37 #define ACP63_SW0_AUDIO0_RX	3
38 #define ACP63_SW0_AUDIO1_RX	4
39 #define ACP63_SW0_AUDIO2_RX	5
40 
41 #define ACP63_SW1_AUDIO0_TX	0
42 #define ACP63_SW1_AUDIO0_RX	1
43 
44 #define ACP_DMIC_BE_ID		4
45 
46 #define ACP70_SW_AUDIO0_TX	0
47 #define ACP70_SW_AUDIO1_TX	1
48 #define ACP70_SW_AUDIO2_TX	2
49 
50 #define ACP70_SW_AUDIO0_RX	3
51 #define ACP70_SW_AUDIO1_RX	4
52 #define ACP70_SW_AUDIO2_RX	5
53 
54 struct amd_mc_ctx {
55 	unsigned int acp_rev;
56 	unsigned int max_sdw_links;
57 };
58 
59 int get_acp63_cpu_pin_id(u32 sdw_link_id, int be_id, int *cpu_pin_id, struct device *dev);
60 int get_acp70_cpu_pin_id(u32 sdw_link_id, int be_id, int *cpu_pin_id, struct device *dev);
61 
62 #endif
63