Commit 643a4a85 authored by Ben Walker's avatar Ben Walker Committed by Vinod Koul
Browse files

dmaengine: hidma: In hidma_prep_dma_memset treat value as a single byte



The value parameter is a single byte, so duplicate it to the 8 byte
range that is used as the pattern.

Signed-off-by: default avatarBen Walker <benjamin.walker@intel.com>
Cc: Sinan Kaya <okaya@kernel.org>
Link: https://lore.kernel.org/r/20220301182551.883474-5-benjamin.walker@intel.com


Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 3e0c0696
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -431,6 +431,7 @@ hidma_prep_dma_memset(struct dma_chan *dmach, dma_addr_t dest, int value,
	struct hidma_desc *mdesc = NULL;
	struct hidma_dev *mdma = mchan->dmadev;
	unsigned long irqflags;
	u64 byte_pattern, fill_pattern;

	/* Get free descriptor */
	spin_lock_irqsave(&mchan->lock, irqflags);
@@ -443,9 +444,19 @@ hidma_prep_dma_memset(struct dma_chan *dmach, dma_addr_t dest, int value,
	if (!mdesc)
		return NULL;

	byte_pattern = (char)value;
	fill_pattern =	(byte_pattern << 56) |
			(byte_pattern << 48) |
			(byte_pattern << 40) |
			(byte_pattern << 32) |
			(byte_pattern << 24) |
			(byte_pattern << 16) |
			(byte_pattern << 8) |
			byte_pattern;

	mdesc->desc.flags = flags;
	hidma_ll_set_transfer_params(mdma->lldev, mdesc->tre_ch,
				     value, dest, len, flags,
				     fill_pattern, dest, len, flags,
				     HIDMA_TRE_MEMSET);

	/* Place descriptor in prepared list */