mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 00:34:20 +08:00
dmaengine: at_xdmac: In at_xdmac_prep_dma_memset, treat value as a single byte
The value passed in to .prep_dma_memset is to be treated as a single byte repeating pattern. Signed-off-by: Ben Walker <benjamin.walker@intel.com> Cc: Ludovic Desroches <ludovic.desroches@microchip.com> Cc: Tudor Ambarus <tudor.ambarus@microchip.com> Link: https://lore.kernel.org/r/20220301182551.883474-4-benjamin.walker@intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
ceabe10cf5
commit
3e0c06964b
@ -1202,6 +1202,7 @@ static struct at_xdmac_desc *at_xdmac_memset_create_desc(struct dma_chan *chan,
|
||||
unsigned long flags;
|
||||
size_t ublen;
|
||||
u32 dwidth;
|
||||
char pattern;
|
||||
/*
|
||||
* WARNING: The channel configuration is set here since there is no
|
||||
* dmaengine_slave_config call in this case. Moreover we don't know the
|
||||
@ -1244,10 +1245,16 @@ static struct at_xdmac_desc *at_xdmac_memset_create_desc(struct dma_chan *chan,
|
||||
|
||||
chan_cc |= AT_XDMAC_CC_DWIDTH(dwidth);
|
||||
|
||||
/* Only the first byte of value is to be used according to dmaengine */
|
||||
pattern = (char)value;
|
||||
|
||||
ublen = len >> dwidth;
|
||||
|
||||
desc->lld.mbr_da = dst_addr;
|
||||
desc->lld.mbr_ds = value;
|
||||
desc->lld.mbr_ds = (pattern << 24) |
|
||||
(pattern << 16) |
|
||||
(pattern << 8) |
|
||||
pattern;
|
||||
desc->lld.mbr_ubc = AT_XDMAC_MBR_UBC_NDV3
|
||||
| AT_XDMAC_MBR_UBC_NDEN
|
||||
| AT_XDMAC_MBR_UBC_NSEN
|
||||
|
Loading…
Reference in New Issue
Block a user