ASoC: SOF: Intel: export hda_sdw_bpt_get_buf_size_aligment
The dma buffer need to be a multiple of data block size and the fifo size. Export a function to return the LCM of data block size and the fifo size. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Link: https://patch.msgid.link/20251014031450.3781789-6-yung-chuan.liao@linux.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>master
parent
57b3a7b27e
commit
167efc6dfd
|
|
@ -30,6 +30,8 @@ int hda_sdw_bpt_wait(struct device *dev, struct hdac_ext_stream *bpt_tx_stream,
|
|||
int 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);
|
||||
|
||||
unsigned int hda_sdw_bpt_get_buf_size_alignment(unsigned int dma_bandwidth);
|
||||
#else
|
||||
static inline int hda_sdw_bpt_open(struct device *dev, int link_id,
|
||||
struct hdac_ext_stream **bpt_tx_stream,
|
||||
|
|
@ -64,6 +66,11 @@ static inline int hda_sdw_bpt_close(struct device *dev, struct hdac_ext_stream *
|
|||
WARN_ONCE(1, "SoundWire BPT is disabled");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static inline unsigned int hda_sdw_bpt_get_buf_size_alignment(unsigned int dma_bandwidth)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __HDA_SDW_BPT_H */
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
* Hardware interface for SoundWire BPT support with HDA DMA
|
||||
*/
|
||||
|
||||
#include <linux/lcm.h>
|
||||
#include <sound/hdaudio_ext.h>
|
||||
#include <sound/hda-mlink.h>
|
||||
#include <sound/hda-sdw-bpt.h>
|
||||
|
|
@ -236,6 +237,18 @@ static int hda_sdw_bpt_dma_disable(struct device *dev, struct hdac_ext_stream *s
|
|||
return ret;
|
||||
}
|
||||
|
||||
#define FIFO_ALIGNMENT 64
|
||||
|
||||
unsigned int hda_sdw_bpt_get_buf_size_alignment(unsigned int dma_bandwidth)
|
||||
{
|
||||
unsigned int num_channels = DIV_ROUND_UP(dma_bandwidth, BPT_FREQUENCY * 32);
|
||||
unsigned int data_block = num_channels * 4;
|
||||
unsigned int alignment = lcm(data_block, FIFO_ALIGNMENT);
|
||||
|
||||
return alignment;
|
||||
}
|
||||
EXPORT_SYMBOL_NS(hda_sdw_bpt_get_buf_size_alignment, "SND_SOC_SOF_INTEL_HDA_SDW_BPT");
|
||||
|
||||
int 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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue