File Index
Files and directories
Sign in
FILE

acp-sdw-mach-common.c

File preview with syntax highlighting.

linux-6.19.14/sound/soc/amd/acp/acp-sdw-mach-common.c C
 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
13int 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}
60EXPORT_SYMBOL_NS_GPL(get_acp63_cpu_pin_id, "SND_SOC_AMD_SDW_MACH");
61
62int 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}
94EXPORT_SYMBOL_NS_GPL(get_acp70_cpu_pin_id, "SND_SOC_AMD_SDW_MACH");
95
96MODULE_DESCRIPTION("AMD SoundWire Common Machine driver");
97MODULE_AUTHOR("Vijendar Mukunda <Vijendar.Mukunda@amd.com>");
98MODULE_LICENSE("GPL");
~/ Read-only file preview.