Merge remote-tracking branch 'asoc/fix/arizona' into tmp
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm64 / kernel / io.c
1 /*
2 * Based on arch/arm/kernel/io.c
3 *
4 * Copyright (C) 2012 ARM Ltd.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 #include <linux/export.h>
20 #include <linux/types.h>
21 #include <linux/io.h>
22
23 /*
24 * Copy data from IO memory space to "real" memory space.
25 */
26 void __memcpy_fromio(void *to, const volatile void __iomem *from, size_t count)
27 {
28 unsigned char *t = to;
29 while (count) {
30 count--;
31 *t = readb(from);
32 t++;
33 from++;
34 }
35 }
36 EXPORT_SYMBOL(__memcpy_fromio);
37
38 /*
39 * Copy data from "real" memory space to IO memory space.
40 */
41 void __memcpy_toio(volatile void __iomem *to, const void *from, size_t count)
42 {
43 const unsigned char *f = from;
44 while (count) {
45 count--;
46 writeb(*f, to);
47 f++;
48 to++;
49 }
50 }
51 EXPORT_SYMBOL(__memcpy_toio);
52
53 /*
54 * "memset" on IO memory space.
55 */
56 void __memset_io(volatile void __iomem *dst, int c, size_t count)
57 {
58 while (count) {
59 count--;
60 writeb(c, dst);
61 dst++;
62 }
63 }
64 EXPORT_SYMBOL(__memset_io);