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 extern struct mbus_dram_target_info orion_mbus_dram_info; 15 16 struct orion_addr_map_cfg { 17 const int num_wins; /* Total number of windows */ 18 const int remappable_wins; 19 const u32 bridge_virt_base; 20 21 /* If NULL, the default cpu_win_can_remap will be used, using 22 the value in remappable_wins */ 23 int (*cpu_win_can_remap) (const struct orion_addr_map_cfg *cfg, 24 const int win); 25 /* If NULL, the default win_cfg_base will be used, using the 26 value in bridge_virt_base */ 27 void __iomem *(*win_cfg_base) (const struct orion_addr_map_cfg *cfg, 28 const int win); 29 }; 30 31 /* 32 * Information needed to setup one address mapping. 33 */ 34 struct orion_addr_map_info { 35 const int win; 36 const u32 base; 37 const u32 size; 38 const u8 target; 39 const u8 attr; 40 const int remap; 41 }; 42 43 void __init orion_config_wins(struct orion_addr_map_cfg *cfg, 44 const struct orion_addr_map_info *info); 45 46 void __init orion_setup_cpu_win(const struct orion_addr_map_cfg *cfg, 47 const int win, const u32 base, 48 const u32 size, const u8 target, 49 const u8 attr, const int remap); 50 51 void __init orion_setup_cpu_mbus_target(const struct orion_addr_map_cfg *cfg, 52 const u32 ddr_window_cpu_base); 53 #endif 54