| /* |
| * Samsung Exynos SoC series VIPx driver |
| * |
| * Copyright (c) 2018 Samsung Electronics Co., Ltd |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| */ |
| |
| #include "vipx-log.h" |
| #include "vipx-debug.h" |
| #include "vipx-io.h" |
| |
| void *vipx_io_copy_mem2io(void *dst, void *src, size_t size) |
| { |
| unsigned char *src8; |
| unsigned char *dst8; |
| |
| src8 = (unsigned char *)(src); |
| dst8 = (unsigned char *)(dst); |
| |
| /* first copy byte by byte till the source first alignment |
| * this step is necessary to ensure we do not even try to access |
| * data which is before the source buffer, hence it is not ours. |
| */ |
| /* complete the left overs */ |
| while (size--) { |
| IOW8(*dst8, *src8); |
| dst8++; |
| src8++; |
| } |
| |
| return dst; |
| } |
| |
| void *vipx_io_copy_io2mem(void *dst, void *src, size_t size) |
| { |
| unsigned char *src8; |
| unsigned char *dst8; |
| |
| src8 = (unsigned char *)(src); |
| dst8 = (unsigned char *)(dst); |
| |
| while (size--) { |
| *dst8 = IOR8(*src8); |
| dst8++; |
| src8++; |
| } |
| |
| return dst; |
| } |