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