1 /* SPDX-License-Identifier: GPL-2.0+ */
3 * Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.
9 #include <linux/soundwire/sdw.h>
14 struct acp_sdw_pdata {
16 /* mutex to protect acp common register access */
17 struct mutex *acp_sdw_lock;
20 struct sdw_manager_reg_mask {
21 u32 sw_pad_enable_mask;
22 u32 sw_pad_pulldown_mask;
23 u32 acp_sdw_intr_mask;
27 * struct sdw_amd_dai_runtime: AMD sdw dai runtime data
29 * @name: SoundWire stream name
30 * @stream: stream runtime
32 * @stream_type: Stream type
34 struct sdw_amd_dai_runtime {
36 struct sdw_stream_runtime *stream;
38 enum sdw_stream_type stream_type;
42 * struct amd_sdw_manager - amd manager driver context
45 * @mmio: SoundWire registers mmio base
46 * @acp_mmio: acp registers mmio base
47 * @reg_mask: register mask structure per manager instance
48 * @probe_work: SoundWire manager probe workqueue
49 * @acp_sdw_lock: mutex to protect acp share register access
50 * @num_din_ports: number of input ports
51 * @num_dout_ports: number of output ports
52 * @cols_index: Column index in frame shape
53 * @rows_index: Rows index in frame shape
54 * @instance: SoundWire manager instance
55 * @quirks: SoundWire manager quirks
56 * @wake_en_mask: wake enable mask per SoundWire manager
57 * @power_mode_mask: flag interprets amd SoundWire manager power mode
58 * @dai_runtime_array: dai runtime array
60 struct amd_sdw_manager {
65 void __iomem *acp_mmio;
67 struct sdw_manager_reg_mask *reg_mask;
68 struct work_struct probe_work;
69 /* mutex to protect acp common register access */
70 struct mutex *acp_sdw_lock;
83 struct sdw_amd_dai_runtime **dai_runtime_array;