1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
2 /*
3  * This file is provided under a dual BSD/GPLv2 license.  When using or
4  * redistributing this file, you may do so under either license.
5  *
6  * Copyright(c) 2025 Intel Corporation.
7  */
8 
9 #ifndef __HDA_SDW_BPT_H
10 #define __HDA_SDW_BPT_H
11 
12 #include <linux/device.h>
13 
14 struct hdac_ext_stream;
15 struct snd_dma_buffer;
16 
17 #if IS_ENABLED(CONFIG_SND_SOF_SOF_HDA_SDW_BPT)
18 int hda_sdw_bpt_open(struct device *dev, int link_id, struct hdac_ext_stream **bpt_tx_stream,
19 		     struct snd_dma_buffer *dmab_tx_bdl, u32 bpt_tx_num_bytes,
20 		     u32 tx_dma_bandwidth, struct hdac_ext_stream **bpt_rx_stream,
21 		     struct snd_dma_buffer *dmab_rx_bdl, u32 bpt_rx_num_bytes,
22 		     u32 rx_dma_bandwidth);
23 
24 int hda_sdw_bpt_send_async(struct device *dev, struct hdac_ext_stream *bpt_tx_stream,
25 			   struct hdac_ext_stream *bpt_rx_stream);
26 
27 int hda_sdw_bpt_wait(struct device *dev, struct hdac_ext_stream *bpt_tx_stream,
28 		     struct hdac_ext_stream *bpt_rx_stream);
29 
30 int hda_sdw_bpt_close(struct device *dev, struct hdac_ext_stream *bpt_tx_stream,
31 		      struct snd_dma_buffer *dmab_tx_bdl, struct hdac_ext_stream *bpt_rx_stream,
32 		      struct snd_dma_buffer *dmab_rx_bdl);
33 #else
hda_sdw_bpt_open(struct device * dev,int link_id,struct hdac_ext_stream ** bpt_tx_stream,struct snd_dma_buffer * dmab_tx_bdl,u32 bpt_tx_num_bytes,u32 tx_dma_bandwidth,struct hdac_ext_stream ** bpt_rx_stream,struct snd_dma_buffer * dmab_rx_bdl,u32 bpt_rx_num_bytes,u32 rx_dma_bandwidth)34 static inline int hda_sdw_bpt_open(struct device *dev, int link_id,
35 				   struct hdac_ext_stream **bpt_tx_stream,
36 				   struct snd_dma_buffer *dmab_tx_bdl, u32 bpt_tx_num_bytes,
37 				   u32 tx_dma_bandwidth, struct hdac_ext_stream **bpt_rx_stream,
38 				   struct snd_dma_buffer *dmab_rx_bdl, u32 bpt_rx_num_bytes,
39 				   u32 rx_dma_bandwidth)
40 {
41 	WARN_ONCE(1, "SoundWire BPT is disabled");
42 	return -EOPNOTSUPP;
43 }
44 
hda_sdw_bpt_send_async(struct device * dev,struct hdac_ext_stream * bpt_tx_stream,struct hdac_ext_stream * bpt_rx_stream)45 static inline int hda_sdw_bpt_send_async(struct device *dev, struct hdac_ext_stream *bpt_tx_stream,
46 					 struct hdac_ext_stream *bpt_rx_stream)
47 {
48 	WARN_ONCE(1, "SoundWire BPT is disabled");
49 	return -EOPNOTSUPP;
50 }
51 
hda_sdw_bpt_wait(struct device * dev,struct hdac_ext_stream * bpt_tx_stream,struct hdac_ext_stream * bpt_rx_stream)52 static inline int hda_sdw_bpt_wait(struct device *dev, struct hdac_ext_stream *bpt_tx_stream,
53 				   struct hdac_ext_stream *bpt_rx_stream)
54 {
55 	WARN_ONCE(1, "SoundWire BPT is disabled");
56 	return -EOPNOTSUPP;
57 }
58 
hda_sdw_bpt_close(struct device * dev,struct hdac_ext_stream * bpt_tx_stream,struct snd_dma_buffer * dmab_tx_bdl,struct hdac_ext_stream * bpt_rx_stream,struct snd_dma_buffer * dmab_rx_bdl)59 static inline int hda_sdw_bpt_close(struct device *dev, struct hdac_ext_stream *bpt_tx_stream,
60 				    struct snd_dma_buffer *dmab_tx_bdl,
61 				    struct hdac_ext_stream *bpt_rx_stream,
62 				    struct snd_dma_buffer *dmab_rx_bdl)
63 {
64 	WARN_ONCE(1, "SoundWire BPT is disabled");
65 	return -EOPNOTSUPP;
66 }
67 #endif
68 
69 #endif /* __HDA_SDW_BPT_H */
70