mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	iosys-map: Add offset to iosys_map_memcpy_to()
In certain situations it's useful to be able to write to an offset of the mapping. Add a dst_offset to iosys_map_memcpy_to(). Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Christian König <christian.koenig@amd.com> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Christian König <christian.koenig@amd.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220216174147.3073235-2-lucas.demarchi@intel.com
This commit is contained in:
		
							parent
							
								
									2f8a6699c9
								
							
						
					
					
						commit
						cccd73d607
					
				
					 3 changed files with 11 additions and 10 deletions
				
			
		| 
						 | 
				
			
			@ -221,7 +221,7 @@ static void memcpy_fallback(struct iosys_map *dst,
 | 
			
		|||
	if (!dst->is_iomem && !src->is_iomem) {
 | 
			
		||||
		memcpy(dst->vaddr, src->vaddr, len);
 | 
			
		||||
	} else if (!src->is_iomem) {
 | 
			
		||||
		iosys_map_memcpy_to(dst, src->vaddr, len);
 | 
			
		||||
		iosys_map_memcpy_to(dst, 0, src->vaddr, len);
 | 
			
		||||
	} else if (!dst->is_iomem) {
 | 
			
		||||
		memcpy_fromio(dst->vaddr, src->vaddr_iomem, len);
 | 
			
		||||
	} else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -385,7 +385,7 @@ static void drm_fb_helper_damage_blit_real(struct drm_fb_helper *fb_helper,
 | 
			
		|||
	iosys_map_incr(dst, offset); /* go to first pixel within clip rect */
 | 
			
		||||
 | 
			
		||||
	for (y = clip->y1; y < clip->y2; y++) {
 | 
			
		||||
		iosys_map_memcpy_to(dst, src, len);
 | 
			
		||||
		iosys_map_memcpy_to(dst, 0, src, len);
 | 
			
		||||
		iosys_map_incr(dst, fb->pitches[0]);
 | 
			
		||||
		src += fb->pitches[0];
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -220,22 +220,23 @@ static inline void iosys_map_clear(struct iosys_map *map)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * iosys_map_memcpy_to - Memcpy into iosys mapping
 | 
			
		||||
 * iosys_map_memcpy_to - Memcpy into offset of iosys_map
 | 
			
		||||
 * @dst:	The iosys_map structure
 | 
			
		||||
 * @dst_offset:	The offset from which to copy
 | 
			
		||||
 * @src:	The source buffer
 | 
			
		||||
 * @len:	The number of byte in src
 | 
			
		||||
 *
 | 
			
		||||
 * Copies data into a iosys mapping. The source buffer is in system
 | 
			
		||||
 * memory. Depending on the buffer's location, the helper picks the correct
 | 
			
		||||
 * method of accessing the memory.
 | 
			
		||||
 * Copies data into a iosys_map with an offset. The source buffer is in
 | 
			
		||||
 * system memory. Depending on the buffer's location, the helper picks the
 | 
			
		||||
 * correct method of accessing the memory.
 | 
			
		||||
 */
 | 
			
		||||
static inline void iosys_map_memcpy_to(struct iosys_map *dst, const void *src,
 | 
			
		||||
				       size_t len)
 | 
			
		||||
static inline void iosys_map_memcpy_to(struct iosys_map *dst, size_t dst_offset,
 | 
			
		||||
				       const void *src, size_t len)
 | 
			
		||||
{
 | 
			
		||||
	if (dst->is_iomem)
 | 
			
		||||
		memcpy_toio(dst->vaddr_iomem, src, len);
 | 
			
		||||
		memcpy_toio(dst->vaddr_iomem + dst_offset, src, len);
 | 
			
		||||
	else
 | 
			
		||||
		memcpy(dst->vaddr, src, len);
 | 
			
		||||
		memcpy(dst->vaddr + dst_offset, src, len);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue