mirror of https://github.com/torvalds/linux.git
ASoC: dmaengine_pcm: Add port_window_size to DAI dma data struct
The port_window_size is a struct member of dma slave channel runtime config. It's the length of the register area in words the data need to be accessed on the device side. It is only used for devices which is using an area instead of a single register to send or receive the data. Typically the DMA loops in this area in order to transfer the data. It's useful for cases that reading/writing multiple registers in DMA transactions. Signed-off-by: Chancel Liu <chancel.liu@nxp.com> Link: https://patch.msgid.link/20250808061741.187414-1-chancel.liu@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
605d902bb6
commit
32dffd4c3e
|
|
@ -69,6 +69,10 @@ struct dma_chan *snd_dmaengine_pcm_get_chan(struct snd_pcm_substream *substream)
|
|||
* @peripheral_config: peripheral configuration for programming peripheral
|
||||
* for dmaengine transfer
|
||||
* @peripheral_size: peripheral configuration buffer size
|
||||
* @port_window_size: The length of the register area in words the data need
|
||||
* to be accessed on the device side. It is only used for devices which is using
|
||||
* an area instead of a single register to send/receive the data. Typically the
|
||||
* DMA loops in this area in order to transfer the data.
|
||||
*/
|
||||
struct snd_dmaengine_dai_dma_data {
|
||||
dma_addr_t addr;
|
||||
|
|
@ -80,6 +84,7 @@ struct snd_dmaengine_dai_dma_data {
|
|||
unsigned int flags;
|
||||
void *peripheral_config;
|
||||
size_t peripheral_size;
|
||||
u32 port_window_size;
|
||||
};
|
||||
|
||||
void snd_dmaengine_pcm_set_config_from_dai_data(
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@ void snd_dmaengine_pcm_set_config_from_dai_data(
|
|||
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||
slave_config->dst_addr = dma_data->addr;
|
||||
slave_config->dst_maxburst = dma_data->maxburst;
|
||||
slave_config->dst_port_window_size = dma_data->port_window_size;
|
||||
if (dma_data->flags & SND_DMAENGINE_PCM_DAI_FLAG_PACK)
|
||||
slave_config->dst_addr_width =
|
||||
DMA_SLAVE_BUSWIDTH_UNDEFINED;
|
||||
|
|
@ -119,6 +120,7 @@ void snd_dmaengine_pcm_set_config_from_dai_data(
|
|||
} else {
|
||||
slave_config->src_addr = dma_data->addr;
|
||||
slave_config->src_maxburst = dma_data->maxburst;
|
||||
slave_config->src_port_window_size = dma_data->port_window_size;
|
||||
if (dma_data->flags & SND_DMAENGINE_PCM_DAI_FLAG_PACK)
|
||||
slave_config->src_addr_width =
|
||||
DMA_SLAVE_BUSWIDTH_UNDEFINED;
|
||||
|
|
|
|||
Loading…
Reference in New Issue