mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 06:33:34 +00:00
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: Ben 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: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
3e0c06964b
commit
643a4a85b0
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user