Blame view

arch/arm/mach-dove/addr-map.c 2.87 KB
edabd38e1   Saeed Bishara   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   Andrew Lunn   ARM: Orion: Conso...
17
  #include <plat/addr-map.h>
edabd38e1   Saeed Bishara   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   Saeed Bishara   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   Andrew Lunn   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   Saeed Bishara   ARM: add base sup...
49

b6d1c33a3   Andrew Lunn   ARM: Orion: Conso...
50
  static const struct __initdata orion_addr_map_info addr_map_info[] = {
edabd38e1   Saeed Bishara   ARM: add base sup...
51
  	/*
b6d1c33a3   Andrew Lunn   ARM: Orion: Conso...
52
  	 * Windows for PCIe IO+MEM space.
edabd38e1   Saeed Bishara   ARM: add base sup...
53
  	 */
b6d1c33a3   Andrew Lunn   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   Saeed Bishara   ARM: add base sup...
66
  	/*
b6d1c33a3   Andrew Lunn   ARM: Orion: Conso...
67
  	 * Window for CESA engine.
edabd38e1   Saeed Bishara   ARM: add base sup...
68
  	 */
b6d1c33a3   Andrew Lunn   ARM: Orion: Conso...
69
70
71
  	{ 4, DOVE_CESA_PHYS_BASE, DOVE_CESA_SIZE,
  	  TARGET_CESA, ATTR_CESA, -1
  	},
edabd38e1   Saeed Bishara   ARM: add base sup...
72
  	/*
b6d1c33a3   Andrew Lunn   ARM: Orion: Conso...
73
  	 * Window to the BootROM for Standby and Sleep Resume
edabd38e1   Saeed Bishara   ARM: add base sup...
74
  	 */
b6d1c33a3   Andrew Lunn   ARM: Orion: Conso...
75
76
77
  	{ 5, DOVE_BOOTROM_PHYS_BASE, DOVE_BOOTROM_SIZE,
  	  TARGET_BOOTROM, ATTR_BOOTROM, -1
  	},
edabd38e1   Saeed Bishara   ARM: add base sup...
78
  	/*
b6d1c33a3   Andrew Lunn   ARM: Orion: Conso...
79
  	 * Window to the PMU Scratch Pad space
edabd38e1   Saeed Bishara   ARM: add base sup...
80
  	 */
b6d1c33a3   Andrew Lunn   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   Saeed Bishara   ARM: add base sup...
92
93
  
  	/*
b6d1c33a3   Andrew Lunn   ARM: Orion: Conso...
94
  	 * Disable, clear and configure windows.
edabd38e1   Saeed Bishara   ARM: add base sup...
95
  	 */
b6d1c33a3   Andrew Lunn   ARM: Orion: Conso...
96
  	orion_config_wins(&addr_map_cfg, addr_map_info);
edabd38e1   Saeed Bishara   ARM: add base sup...
97
98
99
100
  
  	/*
  	 * Setup MBUS dram target info.
  	 */
45173d5ed   Andrew Lunn   ARM: Orion: mbus_...
101
  	orion_mbus_dram_info.mbus_dram_target_id = TARGET_DDR;
edabd38e1   Saeed Bishara   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   Andrew Lunn   ARM: Orion: mbus_...
111
  			w = &orion_mbus_dram_info.cs[cs++];
edabd38e1   Saeed Bishara   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   Andrew Lunn   ARM: Orion: mbus_...
120
  	orion_mbus_dram_info.num_cs = cs;
edabd38e1   Saeed Bishara   ARM: add base sup...
121
  }