diff options
Diffstat (limited to 'arch/arm/mach-picoxcell/io.c')
-rw-r--r-- | arch/arm/mach-picoxcell/io.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/arch/arm/mach-picoxcell/io.c b/arch/arm/mach-picoxcell/io.c new file mode 100644 index 00000000000..935a2fae62e --- /dev/null +++ b/arch/arm/mach-picoxcell/io.c | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2011 Picochip Ltd., Jamie Iles | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | * | ||
8 | * All enquiries to support@picochip.com | ||
9 | */ | ||
10 | #include <linux/io.h> | ||
11 | #include <linux/mm.h> | ||
12 | #include <linux/module.h> | ||
13 | #include <linux/of.h> | ||
14 | |||
15 | #include <asm/mach/map.h> | ||
16 | |||
17 | #include <mach/map.h> | ||
18 | #include <mach/picoxcell_soc.h> | ||
19 | |||
20 | #include "common.h" | ||
21 | |||
22 | void __init picoxcell_map_io(void) | ||
23 | { | ||
24 | struct map_desc io_map = { | ||
25 | .virtual = PHYS_TO_IO(PICOXCELL_PERIPH_BASE), | ||
26 | .pfn = __phys_to_pfn(PICOXCELL_PERIPH_BASE), | ||
27 | .length = PICOXCELL_PERIPH_LENGTH, | ||
28 | .type = MT_DEVICE, | ||
29 | }; | ||
30 | |||
31 | iotable_init(&io_map, 1); | ||
32 | } | ||
33 | |||
34 | void __iomem *picoxcell_ioremap(unsigned long p, size_t size, | ||
35 | unsigned int type) | ||
36 | { | ||
37 | if (unlikely(size == 0)) | ||
38 | return NULL; | ||
39 | |||
40 | if (p >= PICOXCELL_PERIPH_BASE && | ||
41 | p < PICOXCELL_PERIPH_BASE + PICOXCELL_PERIPH_LENGTH) | ||
42 | return IO_ADDRESS(p); | ||
43 | |||
44 | return __arm_ioremap_caller(p, size, type, | ||
45 | __builtin_return_address(0)); | ||
46 | } | ||
47 | EXPORT_SYMBOL_GPL(picoxcell_ioremap); | ||
48 | |||
49 | void picoxcell_iounmap(volatile void __iomem *addr) | ||
50 | { | ||
51 | unsigned long virt = (unsigned long)addr; | ||
52 | |||
53 | if (virt >= VMALLOC_START && virt < VMALLOC_END) | ||
54 | __iounmap(addr); | ||
55 | } | ||
56 | EXPORT_SYMBOL_GPL(picoxcell_iounmap); | ||