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
|
@ -221,7 +221,7 @@ static void memcpy_fallback(struct iosys_map *dst,
|
||||||
if (!dst->is_iomem && !src->is_iomem) {
|
if (!dst->is_iomem && !src->is_iomem) {
|
||||||
memcpy(dst->vaddr, src->vaddr, len);
|
memcpy(dst->vaddr, src->vaddr, len);
|
||||||
} else if (!src->is_iomem) {
|
} 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) {
|
} else if (!dst->is_iomem) {
|
||||||
memcpy_fromio(dst->vaddr, src->vaddr_iomem, len);
|
memcpy_fromio(dst->vaddr, src->vaddr_iomem, len);
|
||||||
} else {
|
} 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 */
|
iosys_map_incr(dst, offset); /* go to first pixel within clip rect */
|
||||||
|
|
||||||
for (y = clip->y1; y < clip->y2; y++) {
|
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]);
|
iosys_map_incr(dst, fb->pitches[0]);
|
||||||
src += 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: The iosys_map structure
|
||||||
|
* @dst_offset: The offset from which to copy
|
||||||
* @src: The source buffer
|
* @src: The source buffer
|
||||||
* @len: The number of byte in src
|
* @len: The number of byte in src
|
||||||
*
|
*
|
||||||
* Copies data into a iosys mapping. The source buffer is in system
|
* Copies data into a iosys_map with an offset. The source buffer is in
|
||||||
* memory. Depending on the buffer's location, the helper picks the correct
|
* system memory. Depending on the buffer's location, the helper picks the
|
||||||
* method of accessing the memory.
|
* correct method of accessing the memory.
|
||||||
*/
|
*/
|
||||||
static inline void iosys_map_memcpy_to(struct iosys_map *dst, const void *src,
|
static inline void iosys_map_memcpy_to(struct iosys_map *dst, size_t dst_offset,
|
||||||
size_t len)
|
const void *src, size_t len)
|
||||||
{
|
{
|
||||||
if (dst->is_iomem)
|
if (dst->is_iomem)
|
||||||
memcpy_toio(dst->vaddr_iomem, src, len);
|
memcpy_toio(dst->vaddr_iomem + dst_offset, src, len);
|
||||||
else
|
else
|
||||||
memcpy(dst->vaddr, src, len);
|
memcpy(dst->vaddr + dst_offset, src, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue