Commit 7eeeff5c authored by Adrian Bonislawski's avatar Adrian Bonislawski Committed by Fabio Baltieri
Browse files

dma: hda: trigger link commit at dma_start



This will trigger link commit immediately after start
to fix hda start flow.
Applies to link out only.

Signed-off-by: default avatarAdrian Bonislawski <adrian.bonislawski@intel.com>
parent 8c90c40c
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -226,10 +226,15 @@ bool intel_adsp_hda_dma_chan_filter(const struct device *dev, int channel, void
int intel_adsp_hda_dma_start(const struct device *dev, uint32_t channel)
{
	const struct intel_adsp_hda_dma_cfg *const cfg = dev->config;
	uint32_t size;

	__ASSERT(channel < cfg->dma_channels, "Channel does not exist");

	intel_adsp_hda_enable(cfg->base, cfg->regblock_size, channel);
	if (cfg->direction == MEMORY_TO_PERIPHERAL) {
		size = intel_adsp_hda_get_buffer_size(cfg->base, cfg->regblock_size, channel);
		intel_adsp_hda_link_commit(cfg->base, cfg->regblock_size, channel, size);
	}

	return 0;
}
+17 −0
Original line number Diff line number Diff line
@@ -184,6 +184,23 @@ static inline int intel_adsp_hda_set_buffer(uint32_t base,
	return 0;
}

/**
 * @brief Get the buffer size
 *
 * @param hda Stream set to work with
 * @param regblock_size Register block size
 * @param sid Stream ID
 *
 * @retval buf_size Buffer size in bytes
 */
static inline uint32_t intel_adsp_hda_get_buffer_size(uint32_t base,
					    uint32_t regblock_size,
					    uint32_t sid)
{

	return *DGBS(base, regblock_size, sid);
}

/**
 * @brief Enable the stream
 *