diff options
author | Andrew Lunn <andrew@lunn.ch> | 2011-12-07 15:48:05 -0500 |
---|---|---|
committer | Nicolas Pitre <nico@fluxnic.net> | 2011-12-13 18:46:20 -0500 |
commit | b6d1c33a31deb1784c1d34070db6e84fd6f9d870 (patch) | |
tree | 18739a6c79b10f0fe69c01be5571e7a5af4d0e21 /arch/arm/plat-orion/include | |
parent | 527ef0550d79e3b3a0ef8f5061072075afef6aaf (diff) |
ARM: Orion: Consolidate the address map setup
Compile tested on Dove, orion5x, mv78xx0. Boot tested on Kirkwood.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Tested-by: Michael Walle <michael@walle.cc>
Acked-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
Diffstat (limited to 'arch/arm/plat-orion/include')
-rw-r--r-- | arch/arm/plat-orion/include/plat/addr-map.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/arch/arm/plat-orion/include/plat/addr-map.h b/arch/arm/plat-orion/include/plat/addr-map.h new file mode 100644 index 000000000000..55e40f43f1e6 --- /dev/null +++ b/arch/arm/plat-orion/include/plat/addr-map.h | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | * arch/arm/plat-orion/include/plat/addr-map.h | ||
3 | * | ||
4 | * Marvell Orion SoC address map handling. | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #ifndef __PLAT_ADDR_MAP_H | ||
12 | #define __PLAT_ADDR_MAP_H | ||
13 | |||
14 | struct orion_addr_map_cfg { | ||
15 | const int num_wins; /* Total number of windows */ | ||
16 | const int remappable_wins; | ||
17 | const u32 bridge_virt_base; | ||
18 | |||
19 | /* If NULL, the default cpu_win_can_remap will be used, using | ||
20 | the value in remappable_wins */ | ||
21 | int (*cpu_win_can_remap) (const struct orion_addr_map_cfg *cfg, | ||
22 | const int win); | ||
23 | /* If NULL, the default win_cfg_base will be used, using the | ||
24 | value in bridge_virt_base */ | ||
25 | void __iomem *(*win_cfg_base) (const struct orion_addr_map_cfg *cfg, | ||
26 | const int win); | ||
27 | }; | ||
28 | |||
29 | /* | ||
30 | * Information needed to setup one address mapping. | ||
31 | */ | ||
32 | struct orion_addr_map_info { | ||
33 | const int win; | ||
34 | const u32 base; | ||
35 | const u32 size; | ||
36 | const u8 target; | ||
37 | const u8 attr; | ||
38 | const int remap; | ||
39 | }; | ||
40 | |||
41 | void __init orion_config_wins(struct orion_addr_map_cfg *cfg, | ||
42 | const struct orion_addr_map_info *info); | ||
43 | |||
44 | void __init orion_setup_cpu_win(const struct orion_addr_map_cfg *cfg, | ||
45 | const int win, const u32 base, | ||
46 | const u32 size, const u8 target, | ||
47 | const u8 attr, const int remap); | ||
48 | |||
49 | void __init orion_setup_cpu_mbus_target(const struct orion_addr_map_cfg *cfg, | ||
50 | struct mbus_dram_target_info *info, | ||
51 | const u32 ddr_window_cpu_base); | ||
52 | #endif | ||