Blame view
arch/arm/mach-dove/addr-map.c
2.87 KB
edabd38e1 ARM: add base sup... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/* * arch/arm/mach-dove/addr-map.c * * Address map functions for Marvell Dove 88AP510 SoC * * This file is licensed under the terms of the GNU General Public * License version 2. This program is licensed "as is" without any * warranty of any kind, whether express or implied. */ #include <linux/kernel.h> #include <linux/init.h> #include <linux/mbus.h> #include <linux/io.h> #include <asm/mach/arch.h> #include <asm/setup.h> |
b6d1c33a3 ARM: Orion: Conso... |
17 |
#include <plat/addr-map.h> |
edabd38e1 ARM: add base sup... |
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include "common.h" /* * Generic Address Decode Windows bit settings */ #define TARGET_DDR 0x0 #define TARGET_BOOTROM 0x1 #define TARGET_CESA 0x3 #define TARGET_PCIE0 0x4 #define TARGET_PCIE1 0x8 #define TARGET_SCRATCHPAD 0xd #define ATTR_CESA 0x01 #define ATTR_BOOTROM 0xfd #define ATTR_DEV_SPI0_ROM 0xfe #define ATTR_DEV_SPI1_ROM 0xfb #define ATTR_PCIE_IO 0xe0 #define ATTR_PCIE_MEM 0xe8 #define ATTR_SCRATCHPAD 0x0 |
edabd38e1 ARM: add base sup... |
37 38 39 40 |
static inline void __iomem *ddr_map_sc(int i) { return (void __iomem *)(DOVE_MC_VIRT_BASE + 0x100 + ((i) << 4)); } |
b6d1c33a3 ARM: Orion: Conso... |
41 42 43 44 45 46 47 48 |
/* * Description of the windows needed by the platform code */ static struct __initdata orion_addr_map_cfg addr_map_cfg = { .num_wins = 8, .remappable_wins = 4, .bridge_virt_base = BRIDGE_VIRT_BASE, }; |
edabd38e1 ARM: add base sup... |
49 |
|
b6d1c33a3 ARM: Orion: Conso... |
50 |
static const struct __initdata orion_addr_map_info addr_map_info[] = { |
edabd38e1 ARM: add base sup... |
51 |
/* |
b6d1c33a3 ARM: Orion: Conso... |
52 |
* Windows for PCIe IO+MEM space. |
edabd38e1 ARM: add base sup... |
53 |
*/ |
b6d1c33a3 ARM: Orion: Conso... |
54 55 56 57 58 59 60 61 62 63 64 65 |
{ 0, DOVE_PCIE0_IO_PHYS_BASE, DOVE_PCIE0_IO_SIZE, TARGET_PCIE0, ATTR_PCIE_IO, DOVE_PCIE0_IO_BUS_BASE }, { 1, DOVE_PCIE1_IO_PHYS_BASE, DOVE_PCIE1_IO_SIZE, TARGET_PCIE1, ATTR_PCIE_IO, DOVE_PCIE1_IO_BUS_BASE }, { 2, DOVE_PCIE0_MEM_PHYS_BASE, DOVE_PCIE0_MEM_SIZE, TARGET_PCIE0, ATTR_PCIE_MEM, -1 }, { 3, DOVE_PCIE1_MEM_PHYS_BASE, DOVE_PCIE1_MEM_SIZE, TARGET_PCIE1, ATTR_PCIE_MEM, -1 }, |
edabd38e1 ARM: add base sup... |
66 |
/* |
b6d1c33a3 ARM: Orion: Conso... |
67 |
* Window for CESA engine. |
edabd38e1 ARM: add base sup... |
68 |
*/ |
b6d1c33a3 ARM: Orion: Conso... |
69 70 71 |
{ 4, DOVE_CESA_PHYS_BASE, DOVE_CESA_SIZE, TARGET_CESA, ATTR_CESA, -1 }, |
edabd38e1 ARM: add base sup... |
72 |
/* |
b6d1c33a3 ARM: Orion: Conso... |
73 |
* Window to the BootROM for Standby and Sleep Resume |
edabd38e1 ARM: add base sup... |
74 |
*/ |
b6d1c33a3 ARM: Orion: Conso... |
75 76 77 |
{ 5, DOVE_BOOTROM_PHYS_BASE, DOVE_BOOTROM_SIZE, TARGET_BOOTROM, ATTR_BOOTROM, -1 }, |
edabd38e1 ARM: add base sup... |
78 |
/* |
b6d1c33a3 ARM: Orion: Conso... |
79 |
* Window to the PMU Scratch Pad space |
edabd38e1 ARM: add base sup... |
80 |
*/ |
b6d1c33a3 ARM: Orion: Conso... |
81 82 83 84 85 86 87 88 89 90 91 |
{ 6, DOVE_SCRATCHPAD_PHYS_BASE, DOVE_SCRATCHPAD_SIZE, TARGET_SCRATCHPAD, ATTR_SCRATCHPAD, -1 }, /* End marker */ { -1, 0, 0, 0, 0, 0 } }; void __init dove_setup_cpu_mbus(void) { int i; int cs; |
edabd38e1 ARM: add base sup... |
92 93 |
/* |
b6d1c33a3 ARM: Orion: Conso... |
94 |
* Disable, clear and configure windows. |
edabd38e1 ARM: add base sup... |
95 |
*/ |
b6d1c33a3 ARM: Orion: Conso... |
96 |
orion_config_wins(&addr_map_cfg, addr_map_info); |
edabd38e1 ARM: add base sup... |
97 98 99 100 |
/* * Setup MBUS dram target info. */ |
45173d5ed ARM: Orion: mbus_... |
101 |
orion_mbus_dram_info.mbus_dram_target_id = TARGET_DDR; |
edabd38e1 ARM: add base sup... |
102 103 104 105 106 107 108 109 110 |
for (i = 0, cs = 0; i < 2; i++) { u32 map = readl(ddr_map_sc(i)); /* * Chip select enabled? */ if (map & 1) { struct mbus_dram_window *w; |
45173d5ed ARM: Orion: mbus_... |
111 |
w = &orion_mbus_dram_info.cs[cs++]; |
edabd38e1 ARM: add base sup... |
112 113 114 115 116 117 118 119 |
w->cs_index = i; w->mbus_attr = 0; /* CS address decoding done inside */ /* the DDR controller, no need to */ /* provide attributes */ w->base = map & 0xff800000; w->size = 0x100000 << (((map & 0x000f0000) >> 16) - 4); } } |
45173d5ed ARM: Orion: mbus_... |
120 |
orion_mbus_dram_info.num_cs = cs; |
edabd38e1 ARM: add base sup... |
121 |
} |