Commit 1336e2d343f088b71ec71907855caccd1053d166

Authored by Haijun.Zhang
Committed by Pantelis Antoniou
1 parent 8a573022c3

mmc:eSDHC: Workaround for data timeout issue on Txxx SoC

1. The Data timeout counter value in eSDHC_SYSCTL register is
not working as it should be, so add quirks to enable this
workaround to fix it to the max value 0xE.

2. Add CONFIG_SYS_FSL_ERRATUM_ESDHC111 to enable its workaround.

* Update of patch for change mmc interface by
	Pantelis Antoniou <panto@antoniou-consulting.com>

Signed-off-by: Haijun Zhang <Haijun.Zhang@freescale.com>
Acked-by: Pantelis Antoniou <panto@antoniou-consulting.com>

Showing 2 changed files with 8 additions and 0 deletions Inline Diff

arch/powerpc/include/asm/config_mpc85xx.h
1 /* 1 /*
2 * Copyright 2011-2012 Freescale Semiconductor, Inc. 2 * Copyright 2011-2012 Freescale Semiconductor, Inc.
3 * 3 *
4 * SPDX-License-Identifier: GPL-2.0+ 4 * SPDX-License-Identifier: GPL-2.0+
5 */ 5 */
6 6
7 #ifndef _ASM_MPC85xx_CONFIG_H_ 7 #ifndef _ASM_MPC85xx_CONFIG_H_
8 #define _ASM_MPC85xx_CONFIG_H_ 8 #define _ASM_MPC85xx_CONFIG_H_
9 9
10 /* SoC specific defines for Freescale MPC85xx (PQ3) and QorIQ processors */ 10 /* SoC specific defines for Freescale MPC85xx (PQ3) and QorIQ processors */
11 11
12 #ifdef CONFIG_SYS_CCSRBAR_DEFAULT 12 #ifdef CONFIG_SYS_CCSRBAR_DEFAULT
13 #error "Do not define CONFIG_SYS_CCSRBAR_DEFAULT in the board header file." 13 #error "Do not define CONFIG_SYS_CCSRBAR_DEFAULT in the board header file."
14 #endif 14 #endif
15 15
16 /* 16 /*
17 * This macro should be removed when we no longer care about backwards 17 * This macro should be removed when we no longer care about backwards
18 * compatibility with older operating systems. 18 * compatibility with older operating systems.
19 */ 19 */
20 #define CONFIG_PPC_SPINTABLE_COMPATIBLE 20 #define CONFIG_PPC_SPINTABLE_COMPATIBLE
21 21
22 #define FSL_DDR_VER_4_7 47 22 #define FSL_DDR_VER_4_7 47
23 #define FSL_DDR_VER_5_0 50 23 #define FSL_DDR_VER_5_0 50
24 24
25 /* IP endianness */ 25 /* IP endianness */
26 #define CONFIG_SYS_FSL_IFC_BE 26 #define CONFIG_SYS_FSL_IFC_BE
27 27
28 /* Number of TLB CAM entries we have on FSL Book-E chips */ 28 /* Number of TLB CAM entries we have on FSL Book-E chips */
29 #if defined(CONFIG_E500MC) 29 #if defined(CONFIG_E500MC)
30 #define CONFIG_SYS_NUM_TLBCAMS 64 30 #define CONFIG_SYS_NUM_TLBCAMS 64
31 #elif defined(CONFIG_E500) 31 #elif defined(CONFIG_E500)
32 #define CONFIG_SYS_NUM_TLBCAMS 16 32 #define CONFIG_SYS_NUM_TLBCAMS 16
33 #endif 33 #endif
34 34
35 #if defined(CONFIG_MPC8536) 35 #if defined(CONFIG_MPC8536)
36 #define CONFIG_MAX_CPUS 1 36 #define CONFIG_MAX_CPUS 1
37 #define CONFIG_SYS_FSL_NUM_LAWS 12 37 #define CONFIG_SYS_FSL_NUM_LAWS 12
38 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 1 38 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 1
39 #define CONFIG_SYS_FSL_SEC_COMPAT 2 39 #define CONFIG_SYS_FSL_SEC_COMPAT 2
40 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 40 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
41 #define CONFIG_SYS_FSL_ERRATUM_A005125 41 #define CONFIG_SYS_FSL_ERRATUM_A005125
42 42
43 #elif defined(CONFIG_MPC8540) 43 #elif defined(CONFIG_MPC8540)
44 #define CONFIG_MAX_CPUS 1 44 #define CONFIG_MAX_CPUS 1
45 #define CONFIG_SYS_FSL_NUM_LAWS 8 45 #define CONFIG_SYS_FSL_NUM_LAWS 8
46 #define CONFIG_SYS_FSL_DDRC_GEN1 46 #define CONFIG_SYS_FSL_DDRC_GEN1
47 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 47 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
48 48
49 #elif defined(CONFIG_MPC8541) 49 #elif defined(CONFIG_MPC8541)
50 #define CONFIG_MAX_CPUS 1 50 #define CONFIG_MAX_CPUS 1
51 #define CONFIG_SYS_FSL_NUM_LAWS 8 51 #define CONFIG_SYS_FSL_NUM_LAWS 8
52 #define CONFIG_SYS_FSL_DDRC_GEN1 52 #define CONFIG_SYS_FSL_DDRC_GEN1
53 #define CONFIG_SYS_FSL_SEC_COMPAT 2 53 #define CONFIG_SYS_FSL_SEC_COMPAT 2
54 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 54 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
55 55
56 #elif defined(CONFIG_MPC8544) 56 #elif defined(CONFIG_MPC8544)
57 #define CONFIG_MAX_CPUS 1 57 #define CONFIG_MAX_CPUS 1
58 #define CONFIG_SYS_FSL_NUM_LAWS 10 58 #define CONFIG_SYS_FSL_NUM_LAWS 10
59 #define CONFIG_SYS_FSL_DDRC_GEN2 59 #define CONFIG_SYS_FSL_DDRC_GEN2
60 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 0 60 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 0
61 #define CONFIG_SYS_FSL_SEC_COMPAT 2 61 #define CONFIG_SYS_FSL_SEC_COMPAT 2
62 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 62 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
63 #define CONFIG_SYS_FSL_ERRATUM_A005125 63 #define CONFIG_SYS_FSL_ERRATUM_A005125
64 64
65 #elif defined(CONFIG_MPC8548) 65 #elif defined(CONFIG_MPC8548)
66 #define CONFIG_MAX_CPUS 1 66 #define CONFIG_MAX_CPUS 1
67 #define CONFIG_SYS_FSL_NUM_LAWS 10 67 #define CONFIG_SYS_FSL_NUM_LAWS 10
68 #define CONFIG_SYS_FSL_DDRC_GEN2 68 #define CONFIG_SYS_FSL_DDRC_GEN2
69 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 0 69 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 0
70 #define CONFIG_SYS_FSL_SEC_COMPAT 2 70 #define CONFIG_SYS_FSL_SEC_COMPAT 2
71 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 71 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
72 #define CONFIG_SYS_FSL_ERRATUM_NMG_DDR120 72 #define CONFIG_SYS_FSL_ERRATUM_NMG_DDR120
73 #define CONFIG_SYS_FSL_ERRATUM_NMG_LBC103 73 #define CONFIG_SYS_FSL_ERRATUM_NMG_LBC103
74 #define CONFIG_SYS_FSL_ERRATUM_NMG_ETSEC129 74 #define CONFIG_SYS_FSL_ERRATUM_NMG_ETSEC129
75 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 1 75 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 1
76 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9 76 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
77 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5 77 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
78 #define CONFIG_SYS_FSL_RMU 78 #define CONFIG_SYS_FSL_RMU
79 #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM 2 79 #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM 2
80 #define CONFIG_SYS_FSL_ERRATUM_A005125 80 #define CONFIG_SYS_FSL_ERRATUM_A005125
81 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447 81 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
82 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x00 82 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x00
83 83
84 #elif defined(CONFIG_MPC8555) 84 #elif defined(CONFIG_MPC8555)
85 #define CONFIG_MAX_CPUS 1 85 #define CONFIG_MAX_CPUS 1
86 #define CONFIG_SYS_FSL_NUM_LAWS 8 86 #define CONFIG_SYS_FSL_NUM_LAWS 8
87 #define CONFIG_SYS_FSL_DDRC_GEN1 87 #define CONFIG_SYS_FSL_DDRC_GEN1
88 #define CONFIG_SYS_FSL_SEC_COMPAT 2 88 #define CONFIG_SYS_FSL_SEC_COMPAT 2
89 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 89 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
90 90
91 #elif defined(CONFIG_MPC8560) 91 #elif defined(CONFIG_MPC8560)
92 #define CONFIG_MAX_CPUS 1 92 #define CONFIG_MAX_CPUS 1
93 #define CONFIG_SYS_FSL_NUM_LAWS 8 93 #define CONFIG_SYS_FSL_NUM_LAWS 8
94 #define CONFIG_SYS_FSL_DDRC_GEN1 94 #define CONFIG_SYS_FSL_DDRC_GEN1
95 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 95 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
96 96
97 #elif defined(CONFIG_MPC8568) 97 #elif defined(CONFIG_MPC8568)
98 #define CONFIG_MAX_CPUS 1 98 #define CONFIG_MAX_CPUS 1
99 #define CONFIG_SYS_FSL_NUM_LAWS 10 99 #define CONFIG_SYS_FSL_NUM_LAWS 10
100 #define CONFIG_SYS_FSL_DDRC_GEN2 100 #define CONFIG_SYS_FSL_DDRC_GEN2
101 #define CONFIG_SYS_FSL_SEC_COMPAT 2 101 #define CONFIG_SYS_FSL_SEC_COMPAT 2
102 #define QE_MURAM_SIZE 0x10000UL 102 #define QE_MURAM_SIZE 0x10000UL
103 #define MAX_QE_RISC 2 103 #define MAX_QE_RISC 2
104 #define QE_NUM_OF_SNUM 28 104 #define QE_NUM_OF_SNUM 28
105 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 105 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
106 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 1 106 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 1
107 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9 107 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
108 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5 108 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
109 #define CONFIG_SYS_FSL_RMU 109 #define CONFIG_SYS_FSL_RMU
110 #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM 2 110 #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM 2
111 111
112 #elif defined(CONFIG_MPC8569) 112 #elif defined(CONFIG_MPC8569)
113 #define CONFIG_MAX_CPUS 1 113 #define CONFIG_MAX_CPUS 1
114 #define CONFIG_SYS_FSL_NUM_LAWS 10 114 #define CONFIG_SYS_FSL_NUM_LAWS 10
115 #define CONFIG_SYS_FSL_SEC_COMPAT 2 115 #define CONFIG_SYS_FSL_SEC_COMPAT 2
116 #define QE_MURAM_SIZE 0x20000UL 116 #define QE_MURAM_SIZE 0x20000UL
117 #define MAX_QE_RISC 4 117 #define MAX_QE_RISC 4
118 #define QE_NUM_OF_SNUM 46 118 #define QE_NUM_OF_SNUM 46
119 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 119 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
120 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 1 120 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 1
121 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9 121 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
122 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5 122 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
123 #define CONFIG_SYS_FSL_RMU 123 #define CONFIG_SYS_FSL_RMU
124 #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM 2 124 #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM 2
125 #define CONFIG_SYS_FSL_ERRATUM_A005125 125 #define CONFIG_SYS_FSL_ERRATUM_A005125
126 126
127 #elif defined(CONFIG_MPC8572) 127 #elif defined(CONFIG_MPC8572)
128 #define CONFIG_MAX_CPUS 2 128 #define CONFIG_MAX_CPUS 2
129 #define CONFIG_SYS_FSL_NUM_LAWS 12 129 #define CONFIG_SYS_FSL_NUM_LAWS 12
130 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 130 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2
131 #define CONFIG_SYS_FSL_SEC_COMPAT 2 131 #define CONFIG_SYS_FSL_SEC_COMPAT 2
132 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 132 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
133 #define CONFIG_SYS_FSL_ERRATUM_DDR_115 133 #define CONFIG_SYS_FSL_ERRATUM_DDR_115
134 #define CONFIG_SYS_FSL_ERRATUM_DDR111_DDR134 134 #define CONFIG_SYS_FSL_ERRATUM_DDR111_DDR134
135 #define CONFIG_SYS_FSL_ERRATUM_A005125 135 #define CONFIG_SYS_FSL_ERRATUM_A005125
136 136
137 #elif defined(CONFIG_P1010) 137 #elif defined(CONFIG_P1010)
138 #define CONFIG_MAX_CPUS 1 138 #define CONFIG_MAX_CPUS 1
139 #define CONFIG_FSL_SDHC_V2_3 139 #define CONFIG_FSL_SDHC_V2_3
140 #define CONFIG_SYS_FSL_NUM_LAWS 12 140 #define CONFIG_SYS_FSL_NUM_LAWS 12
141 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 3 141 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 3
142 #define CONFIG_TSECV2 142 #define CONFIG_TSECV2
143 #define CONFIG_SYS_FSL_SEC_COMPAT 4 143 #define CONFIG_SYS_FSL_SEC_COMPAT 4
144 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 144 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
145 #define CONFIG_NUM_DDR_CONTROLLERS 1 145 #define CONFIG_NUM_DDR_CONTROLLERS 1
146 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 146 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
147 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 4 147 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 4
148 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 148 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
149 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2" 149 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2"
150 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY 150 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
151 #define CONFIG_SYS_FSL_ERRATUM_IFC_A002769 151 #define CONFIG_SYS_FSL_ERRATUM_IFC_A002769
152 #define CONFIG_SYS_FSL_ERRATUM_P1010_A003549 152 #define CONFIG_SYS_FSL_ERRATUM_P1010_A003549
153 #define CONFIG_SYS_FSL_ERRATUM_SEC_A003571 153 #define CONFIG_SYS_FSL_ERRATUM_SEC_A003571
154 #define CONFIG_SYS_FSL_ERRATUM_IFC_A003399 154 #define CONFIG_SYS_FSL_ERRATUM_IFC_A003399
155 #define CONFIG_SYS_FSL_ERRATUM_A005125 155 #define CONFIG_SYS_FSL_ERRATUM_A005125
156 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447 156 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
157 #define CONFIG_SYS_FSL_ERRATUM_A006261 157 #define CONFIG_SYS_FSL_ERRATUM_A006261
158 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x10 158 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x10
159 #define CONFIG_ESDHC_HC_BLK_ADDR 159 #define CONFIG_ESDHC_HC_BLK_ADDR
160 160
161 /* P1011 is single core version of P1020 */ 161 /* P1011 is single core version of P1020 */
162 #elif defined(CONFIG_P1011) 162 #elif defined(CONFIG_P1011)
163 #define CONFIG_MAX_CPUS 1 163 #define CONFIG_MAX_CPUS 1
164 #define CONFIG_SYS_FSL_NUM_LAWS 12 164 #define CONFIG_SYS_FSL_NUM_LAWS 12
165 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 165 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2
166 #define CONFIG_TSECV2 166 #define CONFIG_TSECV2
167 #define CONFIG_FSL_PCIE_DISABLE_ASPM 167 #define CONFIG_FSL_PCIE_DISABLE_ASPM
168 #define CONFIG_SYS_FSL_SEC_COMPAT 2 168 #define CONFIG_SYS_FSL_SEC_COMPAT 2
169 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 169 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
170 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 170 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
171 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001 171 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001
172 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 172 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
173 #define CONFIG_SYS_FSL_ERRATUM_A005125 173 #define CONFIG_SYS_FSL_ERRATUM_A005125
174 174
175 /* P1012 is single core version of P1021 */ 175 /* P1012 is single core version of P1021 */
176 #elif defined(CONFIG_P1012) 176 #elif defined(CONFIG_P1012)
177 #define CONFIG_MAX_CPUS 1 177 #define CONFIG_MAX_CPUS 1
178 #define CONFIG_SYS_FSL_NUM_LAWS 12 178 #define CONFIG_SYS_FSL_NUM_LAWS 12
179 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 179 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
180 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 180 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2
181 #define CONFIG_TSECV2 181 #define CONFIG_TSECV2
182 #define CONFIG_FSL_PCIE_DISABLE_ASPM 182 #define CONFIG_FSL_PCIE_DISABLE_ASPM
183 #define CONFIG_SYS_FSL_SEC_COMPAT 2 183 #define CONFIG_SYS_FSL_SEC_COMPAT 2
184 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 184 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
185 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001 185 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001
186 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 186 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
187 #define QE_MURAM_SIZE 0x6000UL 187 #define QE_MURAM_SIZE 0x6000UL
188 #define MAX_QE_RISC 1 188 #define MAX_QE_RISC 1
189 #define QE_NUM_OF_SNUM 28 189 #define QE_NUM_OF_SNUM 28
190 #define CONFIG_SYS_FSL_ERRATUM_A005125 190 #define CONFIG_SYS_FSL_ERRATUM_A005125
191 191
192 /* P1013 is single core version of P1022 */ 192 /* P1013 is single core version of P1022 */
193 #elif defined(CONFIG_P1013) 193 #elif defined(CONFIG_P1013)
194 #define CONFIG_MAX_CPUS 1 194 #define CONFIG_MAX_CPUS 1
195 #define CONFIG_SYS_FSL_NUM_LAWS 12 195 #define CONFIG_SYS_FSL_NUM_LAWS 12
196 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 196 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
197 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 197 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2
198 #define CONFIG_TSECV2 198 #define CONFIG_TSECV2
199 #define CONFIG_SYS_FSL_SEC_COMPAT 2 199 #define CONFIG_SYS_FSL_SEC_COMPAT 2
200 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 200 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
201 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001 201 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001
202 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 202 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
203 #define CONFIG_FSL_SATA_ERRATUM_A001 203 #define CONFIG_FSL_SATA_ERRATUM_A001
204 #define CONFIG_SYS_FSL_ERRATUM_A005125 204 #define CONFIG_SYS_FSL_ERRATUM_A005125
205 205
206 #elif defined(CONFIG_P1014) 206 #elif defined(CONFIG_P1014)
207 #define CONFIG_MAX_CPUS 1 207 #define CONFIG_MAX_CPUS 1
208 #define CONFIG_FSL_SDHC_V2_3 208 #define CONFIG_FSL_SDHC_V2_3
209 #define CONFIG_SYS_FSL_NUM_LAWS 12 209 #define CONFIG_SYS_FSL_NUM_LAWS 12
210 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 3 210 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 3
211 #define CONFIG_TSECV2 211 #define CONFIG_TSECV2
212 #define CONFIG_SYS_FSL_SEC_COMPAT 4 212 #define CONFIG_SYS_FSL_SEC_COMPAT 4
213 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 213 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
214 #define CONFIG_NUM_DDR_CONTROLLERS 1 214 #define CONFIG_NUM_DDR_CONTROLLERS 1
215 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 215 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
216 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 216 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
217 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY 217 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
218 #define CONFIG_SYS_FSL_ERRATUM_IFC_A002769 218 #define CONFIG_SYS_FSL_ERRATUM_IFC_A002769
219 #define CONFIG_SYS_FSL_ERRATUM_P1010_A003549 219 #define CONFIG_SYS_FSL_ERRATUM_P1010_A003549
220 #define CONFIG_SYS_FSL_ERRATUM_IFC_A003399 220 #define CONFIG_SYS_FSL_ERRATUM_IFC_A003399
221 221
222 /* P1017 is single core version of P1023 */ 222 /* P1017 is single core version of P1023 */
223 #elif defined(CONFIG_P1017) 223 #elif defined(CONFIG_P1017)
224 #define CONFIG_MAX_CPUS 1 224 #define CONFIG_MAX_CPUS 1
225 #define CONFIG_SYS_FSL_NUM_LAWS 12 225 #define CONFIG_SYS_FSL_NUM_LAWS 12
226 #define CONFIG_SYS_FSL_SEC_COMPAT 4 226 #define CONFIG_SYS_FSL_SEC_COMPAT 4
227 #define CONFIG_SYS_NUM_FMAN 1 227 #define CONFIG_SYS_NUM_FMAN 1
228 #define CONFIG_SYS_NUM_FM1_DTSEC 2 228 #define CONFIG_SYS_NUM_FM1_DTSEC 2
229 #define CONFIG_NUM_DDR_CONTROLLERS 1 229 #define CONFIG_NUM_DDR_CONTROLLERS 1
230 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 230 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
231 #define CONFIG_SYS_QMAN_NUM_PORTALS 3 231 #define CONFIG_SYS_QMAN_NUM_PORTALS 3
232 #define CONFIG_SYS_BMAN_NUM_PORTALS 3 232 #define CONFIG_SYS_BMAN_NUM_PORTALS 3
233 #define CONFIG_SYS_FM_MURAM_SIZE 0x10000 233 #define CONFIG_SYS_FM_MURAM_SIZE 0x10000
234 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2" 234 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2"
235 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff600000 235 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff600000
236 #define CONFIG_SYS_FSL_ERRATUM_A005125 236 #define CONFIG_SYS_FSL_ERRATUM_A005125
237 237
238 #elif defined(CONFIG_P1020) 238 #elif defined(CONFIG_P1020)
239 #define CONFIG_MAX_CPUS 2 239 #define CONFIG_MAX_CPUS 2
240 #define CONFIG_SYS_FSL_NUM_LAWS 12 240 #define CONFIG_SYS_FSL_NUM_LAWS 12
241 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 241 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2
242 #define CONFIG_TSECV2 242 #define CONFIG_TSECV2
243 #define CONFIG_FSL_PCIE_DISABLE_ASPM 243 #define CONFIG_FSL_PCIE_DISABLE_ASPM
244 #define CONFIG_SYS_FSL_SEC_COMPAT 2 244 #define CONFIG_SYS_FSL_SEC_COMPAT 2
245 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 245 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
246 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001 246 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001
247 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 247 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
248 #define CONFIG_SYS_FSL_ERRATUM_A005125 248 #define CONFIG_SYS_FSL_ERRATUM_A005125
249 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 249 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
250 250
251 #elif defined(CONFIG_P1021) 251 #elif defined(CONFIG_P1021)
252 #define CONFIG_MAX_CPUS 2 252 #define CONFIG_MAX_CPUS 2
253 #define CONFIG_SYS_FSL_NUM_LAWS 12 253 #define CONFIG_SYS_FSL_NUM_LAWS 12
254 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 254 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2
255 #define CONFIG_TSECV2 255 #define CONFIG_TSECV2
256 #define CONFIG_FSL_PCIE_DISABLE_ASPM 256 #define CONFIG_FSL_PCIE_DISABLE_ASPM
257 #define CONFIG_SYS_FSL_SEC_COMPAT 2 257 #define CONFIG_SYS_FSL_SEC_COMPAT 2
258 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 258 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
259 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001 259 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001
260 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 260 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
261 #define QE_MURAM_SIZE 0x6000UL 261 #define QE_MURAM_SIZE 0x6000UL
262 #define MAX_QE_RISC 1 262 #define MAX_QE_RISC 1
263 #define QE_NUM_OF_SNUM 28 263 #define QE_NUM_OF_SNUM 28
264 #define CONFIG_SYS_FSL_ERRATUM_A005125 264 #define CONFIG_SYS_FSL_ERRATUM_A005125
265 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 265 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
266 266
267 #elif defined(CONFIG_P1022) 267 #elif defined(CONFIG_P1022)
268 #define CONFIG_MAX_CPUS 2 268 #define CONFIG_MAX_CPUS 2
269 #define CONFIG_SYS_FSL_NUM_LAWS 12 269 #define CONFIG_SYS_FSL_NUM_LAWS 12
270 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 270 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2
271 #define CONFIG_TSECV2 271 #define CONFIG_TSECV2
272 #define CONFIG_SYS_FSL_SEC_COMPAT 2 272 #define CONFIG_SYS_FSL_SEC_COMPAT 2
273 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 273 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
274 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 274 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
275 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001 275 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001
276 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 276 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
277 #define CONFIG_FSL_SATA_ERRATUM_A001 277 #define CONFIG_FSL_SATA_ERRATUM_A001
278 #define CONFIG_SYS_FSL_ERRATUM_A005125 278 #define CONFIG_SYS_FSL_ERRATUM_A005125
279 279
280 #elif defined(CONFIG_P1023) 280 #elif defined(CONFIG_P1023)
281 #define CONFIG_MAX_CPUS 2 281 #define CONFIG_MAX_CPUS 2
282 #define CONFIG_SYS_FSL_NUM_LAWS 12 282 #define CONFIG_SYS_FSL_NUM_LAWS 12
283 #define CONFIG_SYS_FSL_SEC_COMPAT 4 283 #define CONFIG_SYS_FSL_SEC_COMPAT 4
284 #define CONFIG_SYS_NUM_FMAN 1 284 #define CONFIG_SYS_NUM_FMAN 1
285 #define CONFIG_SYS_NUM_FM1_DTSEC 2 285 #define CONFIG_SYS_NUM_FM1_DTSEC 2
286 #define CONFIG_NUM_DDR_CONTROLLERS 1 286 #define CONFIG_NUM_DDR_CONTROLLERS 1
287 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 287 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
288 #define CONFIG_SYS_QMAN_NUM_PORTALS 3 288 #define CONFIG_SYS_QMAN_NUM_PORTALS 3
289 #define CONFIG_SYS_BMAN_NUM_PORTALS 3 289 #define CONFIG_SYS_BMAN_NUM_PORTALS 3
290 #define CONFIG_SYS_FM_MURAM_SIZE 0x10000 290 #define CONFIG_SYS_FM_MURAM_SIZE 0x10000
291 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2" 291 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2"
292 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff600000 292 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff600000
293 #define CONFIG_SYS_FSL_ERRATUM_A005125 293 #define CONFIG_SYS_FSL_ERRATUM_A005125
294 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447 294 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
295 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x11 295 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x11
296 296
297 /* P1024 is lower end variant of P1020 */ 297 /* P1024 is lower end variant of P1020 */
298 #elif defined(CONFIG_P1024) 298 #elif defined(CONFIG_P1024)
299 #define CONFIG_MAX_CPUS 2 299 #define CONFIG_MAX_CPUS 2
300 #define CONFIG_SYS_FSL_NUM_LAWS 12 300 #define CONFIG_SYS_FSL_NUM_LAWS 12
301 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 301 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2
302 #define CONFIG_TSECV2 302 #define CONFIG_TSECV2
303 #define CONFIG_FSL_PCIE_DISABLE_ASPM 303 #define CONFIG_FSL_PCIE_DISABLE_ASPM
304 #define CONFIG_SYS_FSL_SEC_COMPAT 2 304 #define CONFIG_SYS_FSL_SEC_COMPAT 2
305 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 305 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
306 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 306 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
307 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001 307 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001
308 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 308 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
309 #define CONFIG_SYS_FSL_ERRATUM_A005125 309 #define CONFIG_SYS_FSL_ERRATUM_A005125
310 310
311 /* P1025 is lower end variant of P1021 */ 311 /* P1025 is lower end variant of P1021 */
312 #elif defined(CONFIG_P1025) 312 #elif defined(CONFIG_P1025)
313 #define CONFIG_MAX_CPUS 2 313 #define CONFIG_MAX_CPUS 2
314 #define CONFIG_SYS_FSL_NUM_LAWS 12 314 #define CONFIG_SYS_FSL_NUM_LAWS 12
315 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 315 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
316 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 316 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2
317 #define CONFIG_TSECV2 317 #define CONFIG_TSECV2
318 #define CONFIG_FSL_PCIE_DISABLE_ASPM 318 #define CONFIG_FSL_PCIE_DISABLE_ASPM
319 #define CONFIG_SYS_FSL_SEC_COMPAT 2 319 #define CONFIG_SYS_FSL_SEC_COMPAT 2
320 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 320 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
321 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001 321 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001
322 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 322 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
323 #define QE_MURAM_SIZE 0x6000UL 323 #define QE_MURAM_SIZE 0x6000UL
324 #define MAX_QE_RISC 1 324 #define MAX_QE_RISC 1
325 #define QE_NUM_OF_SNUM 28 325 #define QE_NUM_OF_SNUM 28
326 #define CONFIG_SYS_FSL_ERRATUM_A005125 326 #define CONFIG_SYS_FSL_ERRATUM_A005125
327 327
328 /* P2010 is single core version of P2020 */ 328 /* P2010 is single core version of P2020 */
329 #elif defined(CONFIG_P2010) 329 #elif defined(CONFIG_P2010)
330 #define CONFIG_MAX_CPUS 1 330 #define CONFIG_MAX_CPUS 1
331 #define CONFIG_SYS_FSL_NUM_LAWS 12 331 #define CONFIG_SYS_FSL_NUM_LAWS 12
332 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 332 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2
333 #define CONFIG_SYS_FSL_SEC_COMPAT 2 333 #define CONFIG_SYS_FSL_SEC_COMPAT 2
334 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 334 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
335 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 335 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
336 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 336 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
337 #define CONFIG_SYS_FSL_ERRATUM_ESDHC_A001 337 #define CONFIG_SYS_FSL_ERRATUM_ESDHC_A001
338 #define CONFIG_SYS_FSL_ERRATUM_A005125 338 #define CONFIG_SYS_FSL_ERRATUM_A005125
339 339
340 #elif defined(CONFIG_P2020) 340 #elif defined(CONFIG_P2020)
341 #define CONFIG_MAX_CPUS 2 341 #define CONFIG_MAX_CPUS 2
342 #define CONFIG_SYS_FSL_NUM_LAWS 12 342 #define CONFIG_SYS_FSL_NUM_LAWS 12
343 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 343 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 2
344 #define CONFIG_SYS_FSL_SEC_COMPAT 2 344 #define CONFIG_SYS_FSL_SEC_COMPAT 2
345 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 345 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
346 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 346 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
347 #define CONFIG_SYS_FSL_ERRATUM_ESDHC_A001 347 #define CONFIG_SYS_FSL_ERRATUM_ESDHC_A001
348 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2 348 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2
349 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9 349 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
350 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5 350 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
351 #define CONFIG_SYS_FSL_RMU 351 #define CONFIG_SYS_FSL_RMU
352 #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM 2 352 #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM 2
353 #define CONFIG_SYS_FSL_ERRATUM_A005125 353 #define CONFIG_SYS_FSL_ERRATUM_A005125
354 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 354 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
355 #elif defined(CONFIG_PPC_P2041) /* also supports P2040 */ 355 #elif defined(CONFIG_PPC_P2041) /* also supports P2040 */
356 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1 356 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1
357 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */ 357 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
358 #define CONFIG_MAX_CPUS 4 358 #define CONFIG_MAX_CPUS 4
359 #define CONFIG_SYS_FSL_NUM_CC_PLLS 2 359 #define CONFIG_SYS_FSL_NUM_CC_PLLS 2
360 #define CONFIG_SYS_FSL_NUM_LAWS 32 360 #define CONFIG_SYS_FSL_NUM_LAWS 32
361 #define CONFIG_SYS_FSL_SEC_COMPAT 4 361 #define CONFIG_SYS_FSL_SEC_COMPAT 4
362 #define CONFIG_SYS_NUM_FMAN 1 362 #define CONFIG_SYS_NUM_FMAN 1
363 #define CONFIG_SYS_NUM_FM1_DTSEC 5 363 #define CONFIG_SYS_NUM_FM1_DTSEC 5
364 #define CONFIG_SYS_NUM_FM1_10GEC 1 364 #define CONFIG_SYS_NUM_FM1_10GEC 1
365 #define CONFIG_NUM_DDR_CONTROLLERS 1 365 #define CONFIG_NUM_DDR_CONTROLLERS 1
366 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 366 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
367 #define CONFIG_SYS_FM_MURAM_SIZE 0x28000 367 #define CONFIG_SYS_FM_MURAM_SIZE 0x28000
368 #define CONFIG_SYS_FSL_TBCLK_DIV 32 368 #define CONFIG_SYS_FSL_TBCLK_DIV 32
369 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2" 369 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2"
370 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000 370 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000
371 #define CONFIG_SYS_FSL_USB1_PHY_ENABLE 371 #define CONFIG_SYS_FSL_USB1_PHY_ENABLE
372 #define CONFIG_SYS_FSL_USB2_PHY_ENABLE 372 #define CONFIG_SYS_FSL_USB2_PHY_ENABLE
373 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY 373 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
374 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 374 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
375 #define CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011 375 #define CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011
376 #define CONFIG_SYS_FSL_ERRATUM_USB14 376 #define CONFIG_SYS_FSL_ERRATUM_USB14
377 #define CONFIG_SYS_FSL_ERRATUM_CPU_A003999 377 #define CONFIG_SYS_FSL_ERRATUM_CPU_A003999
378 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003 378 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003
379 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003474 379 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003474
380 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2 380 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2
381 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9 381 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
382 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5 382 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
383 #define CONFIG_SYS_FSL_ERRATUM_A004510 383 #define CONFIG_SYS_FSL_ERRATUM_A004510
384 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 0x10 384 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 0x10
385 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV2 0x11 385 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV2 0x11
386 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xf0000000 386 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xf0000000
387 #define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034 387 #define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034
388 #define CONFIG_SYS_FSL_ERRATUM_A004849 388 #define CONFIG_SYS_FSL_ERRATUM_A004849
389 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447 389 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
390 #define CONFIG_SYS_FSL_ERRATUM_A006261 390 #define CONFIG_SYS_FSL_ERRATUM_A006261
391 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x11 391 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x11
392 392
393 #elif defined(CONFIG_PPC_P3041) 393 #elif defined(CONFIG_PPC_P3041)
394 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1 394 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1
395 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */ 395 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
396 #define CONFIG_MAX_CPUS 4 396 #define CONFIG_MAX_CPUS 4
397 #define CONFIG_SYS_FSL_NUM_CC_PLLS 2 397 #define CONFIG_SYS_FSL_NUM_CC_PLLS 2
398 #define CONFIG_SYS_FSL_NUM_LAWS 32 398 #define CONFIG_SYS_FSL_NUM_LAWS 32
399 #define CONFIG_SYS_FSL_SEC_COMPAT 4 399 #define CONFIG_SYS_FSL_SEC_COMPAT 4
400 #define CONFIG_SYS_NUM_FMAN 1 400 #define CONFIG_SYS_NUM_FMAN 1
401 #define CONFIG_SYS_NUM_FM1_DTSEC 5 401 #define CONFIG_SYS_NUM_FM1_DTSEC 5
402 #define CONFIG_SYS_NUM_FM1_10GEC 1 402 #define CONFIG_SYS_NUM_FM1_10GEC 1
403 #define CONFIG_NUM_DDR_CONTROLLERS 1 403 #define CONFIG_NUM_DDR_CONTROLLERS 1
404 #define CONFIG_SYS_FM_MURAM_SIZE 0x28000 404 #define CONFIG_SYS_FM_MURAM_SIZE 0x28000
405 #define CONFIG_SYS_FSL_TBCLK_DIV 32 405 #define CONFIG_SYS_FSL_TBCLK_DIV 32
406 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2" 406 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2"
407 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000 407 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000
408 #define CONFIG_SYS_FSL_USB1_PHY_ENABLE 408 #define CONFIG_SYS_FSL_USB1_PHY_ENABLE
409 #define CONFIG_SYS_FSL_USB2_PHY_ENABLE 409 #define CONFIG_SYS_FSL_USB2_PHY_ENABLE
410 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY 410 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
411 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 411 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
412 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 412 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
413 #define CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011 413 #define CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011
414 #define CONFIG_SYS_FSL_ERRATUM_USB14 414 #define CONFIG_SYS_FSL_ERRATUM_USB14
415 #define CONFIG_SYS_FSL_ERRATUM_CPU_A003999 415 #define CONFIG_SYS_FSL_ERRATUM_CPU_A003999
416 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003 416 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003
417 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003474 417 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003474
418 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2 418 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2
419 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9 419 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
420 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5 420 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
421 #define CONFIG_SYS_FSL_ERRATUM_A004510 421 #define CONFIG_SYS_FSL_ERRATUM_A004510
422 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 0x10 422 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 0x10
423 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV2 0x11 423 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV2 0x11
424 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xf0000000 424 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xf0000000
425 #define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034 425 #define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034
426 #define CONFIG_SYS_FSL_ERRATUM_A004849 426 #define CONFIG_SYS_FSL_ERRATUM_A004849
427 #define CONFIG_SYS_FSL_ERRATUM_A005812 427 #define CONFIG_SYS_FSL_ERRATUM_A005812
428 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447 428 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
429 #define CONFIG_SYS_FSL_ERRATUM_A006261 429 #define CONFIG_SYS_FSL_ERRATUM_A006261
430 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x20 430 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x20
431 431
432 #elif defined(CONFIG_PPC_P4080) /* also supports P4040 */ 432 #elif defined(CONFIG_PPC_P4080) /* also supports P4040 */
433 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1 433 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1
434 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */ 434 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
435 #define CONFIG_MAX_CPUS 8 435 #define CONFIG_MAX_CPUS 8
436 #define CONFIG_SYS_FSL_NUM_CC_PLLS 4 436 #define CONFIG_SYS_FSL_NUM_CC_PLLS 4
437 #define CONFIG_SYS_FSL_NUM_LAWS 32 437 #define CONFIG_SYS_FSL_NUM_LAWS 32
438 #define CONFIG_SYS_FSL_SEC_COMPAT 4 438 #define CONFIG_SYS_FSL_SEC_COMPAT 4
439 #define CONFIG_SYS_NUM_FMAN 2 439 #define CONFIG_SYS_NUM_FMAN 2
440 #define CONFIG_SYS_NUM_FM1_DTSEC 4 440 #define CONFIG_SYS_NUM_FM1_DTSEC 4
441 #define CONFIG_SYS_NUM_FM2_DTSEC 4 441 #define CONFIG_SYS_NUM_FM2_DTSEC 4
442 #define CONFIG_SYS_NUM_FM1_10GEC 1 442 #define CONFIG_SYS_NUM_FM1_10GEC 1
443 #define CONFIG_SYS_NUM_FM2_10GEC 1 443 #define CONFIG_SYS_NUM_FM2_10GEC 1
444 #define CONFIG_NUM_DDR_CONTROLLERS 2 444 #define CONFIG_NUM_DDR_CONTROLLERS 2
445 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 445 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
446 #define CONFIG_SYS_FM_MURAM_SIZE 0x28000 446 #define CONFIG_SYS_FM_MURAM_SIZE 0x28000
447 #define CONFIG_SYS_FSL_TBCLK_DIV 16 447 #define CONFIG_SYS_FSL_TBCLK_DIV 16
448 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,p4080-pcie" 448 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,p4080-pcie"
449 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000 449 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000
450 #define CONFIG_SYS_FSL_ERRATUM_CPC_A002 450 #define CONFIG_SYS_FSL_ERRATUM_CPC_A002
451 #define CONFIG_SYS_FSL_ERRATUM_CPC_A003 451 #define CONFIG_SYS_FSL_ERRATUM_CPC_A003
452 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003 452 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003
453 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001 453 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001
454 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 454 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
455 #define CONFIG_SYS_FSL_ERRATUM_ESDHC135 455 #define CONFIG_SYS_FSL_ERRATUM_ESDHC135
456 #define CONFIG_SYS_FSL_ERRATUM_ESDHC13 456 #define CONFIG_SYS_FSL_ERRATUM_ESDHC13
457 #define CONFIG_SYS_P4080_ERRATUM_CPU22 457 #define CONFIG_SYS_P4080_ERRATUM_CPU22
458 #define CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011 458 #define CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011
459 #define CONFIG_SYS_P4080_ERRATUM_SERDES8 459 #define CONFIG_SYS_P4080_ERRATUM_SERDES8
460 #define CONFIG_SYS_P4080_ERRATUM_SERDES9 460 #define CONFIG_SYS_P4080_ERRATUM_SERDES9
461 #define CONFIG_SYS_P4080_ERRATUM_SERDES_A001 461 #define CONFIG_SYS_P4080_ERRATUM_SERDES_A001
462 #define CONFIG_SYS_P4080_ERRATUM_SERDES_A005 462 #define CONFIG_SYS_P4080_ERRATUM_SERDES_A005
463 #define CONFIG_SYS_FSL_ERRATUM_CPU_A003999 463 #define CONFIG_SYS_FSL_ERRATUM_CPU_A003999
464 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003474 464 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003474
465 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2 465 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2
466 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9 466 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
467 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5 467 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
468 #define CONFIG_SYS_FSL_RMU 468 #define CONFIG_SYS_FSL_RMU
469 #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM 2 469 #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM 2
470 #define CONFIG_SYS_FSL_ERRATUM_A004510 470 #define CONFIG_SYS_FSL_ERRATUM_A004510
471 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 0x20 471 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 0x20
472 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xff000000 472 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xff000000
473 #define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034 473 #define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034
474 #define CONFIG_SYS_FSL_ERRATUM_A004849 474 #define CONFIG_SYS_FSL_ERRATUM_A004849
475 #define CONFIG_SYS_FSL_ERRATUM_A004580 475 #define CONFIG_SYS_FSL_ERRATUM_A004580
476 #define CONFIG_SYS_P4080_ERRATUM_PCIE_A003 476 #define CONFIG_SYS_P4080_ERRATUM_PCIE_A003
477 #define CONFIG_SYS_FSL_ERRATUM_A005812 477 #define CONFIG_SYS_FSL_ERRATUM_A005812
478 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447 478 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
479 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x20 479 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x20
480 480
481 #elif defined(CONFIG_PPC_P5020) /* also supports P5010 */ 481 #elif defined(CONFIG_PPC_P5020) /* also supports P5010 */
482 #define CONFIG_SYS_PPC64 /* 64-bit core */ 482 #define CONFIG_SYS_PPC64 /* 64-bit core */
483 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1 483 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1
484 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */ 484 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
485 #define CONFIG_MAX_CPUS 2 485 #define CONFIG_MAX_CPUS 2
486 #define CONFIG_SYS_FSL_NUM_CC_PLLS 2 486 #define CONFIG_SYS_FSL_NUM_CC_PLLS 2
487 #define CONFIG_SYS_FSL_NUM_LAWS 32 487 #define CONFIG_SYS_FSL_NUM_LAWS 32
488 #define CONFIG_SYS_FSL_SEC_COMPAT 4 488 #define CONFIG_SYS_FSL_SEC_COMPAT 4
489 #define CONFIG_SYS_NUM_FMAN 1 489 #define CONFIG_SYS_NUM_FMAN 1
490 #define CONFIG_SYS_NUM_FM1_DTSEC 5 490 #define CONFIG_SYS_NUM_FM1_DTSEC 5
491 #define CONFIG_SYS_NUM_FM1_10GEC 1 491 #define CONFIG_SYS_NUM_FM1_10GEC 1
492 #define CONFIG_NUM_DDR_CONTROLLERS 2 492 #define CONFIG_NUM_DDR_CONTROLLERS 2
493 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 493 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
494 #define CONFIG_SYS_FM_MURAM_SIZE 0x28000 494 #define CONFIG_SYS_FM_MURAM_SIZE 0x28000
495 #define CONFIG_SYS_FSL_TBCLK_DIV 32 495 #define CONFIG_SYS_FSL_TBCLK_DIV 32
496 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2" 496 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2"
497 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000 497 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000
498 #define CONFIG_SYS_FSL_USB1_PHY_ENABLE 498 #define CONFIG_SYS_FSL_USB1_PHY_ENABLE
499 #define CONFIG_SYS_FSL_USB2_PHY_ENABLE 499 #define CONFIG_SYS_FSL_USB2_PHY_ENABLE
500 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY 500 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
501 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 501 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
502 #define CONFIG_SYS_FSL_ERRATUM_USB14 502 #define CONFIG_SYS_FSL_ERRATUM_USB14
503 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003 503 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003
504 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003474 504 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003474
505 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2 505 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2
506 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9 506 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
507 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5 507 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
508 #define CONFIG_SYS_FSL_ERRATUM_A004510 508 #define CONFIG_SYS_FSL_ERRATUM_A004510
509 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 0x10 509 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 0x10
510 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xc0000000 510 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xc0000000
511 #define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034 511 #define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034
512 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447 512 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
513 #define CONFIG_SYS_FSL_ERRATUM_A006261 513 #define CONFIG_SYS_FSL_ERRATUM_A006261
514 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x20 514 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x20
515 515
516 #elif defined(CONFIG_PPC_P5040) 516 #elif defined(CONFIG_PPC_P5040)
517 #define CONFIG_SYS_PPC64 517 #define CONFIG_SYS_PPC64
518 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1 518 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1
519 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */ 519 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
520 #define CONFIG_MAX_CPUS 4 520 #define CONFIG_MAX_CPUS 4
521 #define CONFIG_SYS_FSL_NUM_CC_PLLS 3 521 #define CONFIG_SYS_FSL_NUM_CC_PLLS 3
522 #define CONFIG_SYS_FSL_NUM_LAWS 32 522 #define CONFIG_SYS_FSL_NUM_LAWS 32
523 #define CONFIG_SYS_FSL_SEC_COMPAT 4 523 #define CONFIG_SYS_FSL_SEC_COMPAT 4
524 #define CONFIG_SYS_NUM_FMAN 2 524 #define CONFIG_SYS_NUM_FMAN 2
525 #define CONFIG_SYS_NUM_FM1_DTSEC 5 525 #define CONFIG_SYS_NUM_FM1_DTSEC 5
526 #define CONFIG_SYS_NUM_FM1_10GEC 1 526 #define CONFIG_SYS_NUM_FM1_10GEC 1
527 #define CONFIG_SYS_NUM_FM2_DTSEC 5 527 #define CONFIG_SYS_NUM_FM2_DTSEC 5
528 #define CONFIG_SYS_NUM_FM2_10GEC 1 528 #define CONFIG_SYS_NUM_FM2_10GEC 1
529 #define CONFIG_NUM_DDR_CONTROLLERS 2 529 #define CONFIG_NUM_DDR_CONTROLLERS 2
530 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 530 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
531 #define CONFIG_SYS_FM_MURAM_SIZE 0x28000 531 #define CONFIG_SYS_FM_MURAM_SIZE 0x28000
532 #define CONFIG_SYS_FSL_TBCLK_DIV 16 532 #define CONFIG_SYS_FSL_TBCLK_DIV 16
533 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.4" 533 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.4"
534 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000 534 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000
535 #define CONFIG_SYS_FSL_USB1_PHY_ENABLE 535 #define CONFIG_SYS_FSL_USB1_PHY_ENABLE
536 #define CONFIG_SYS_FSL_USB2_PHY_ENABLE 536 #define CONFIG_SYS_FSL_USB2_PHY_ENABLE
537 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY 537 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
538 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 538 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
539 #define CONFIG_SYS_FSL_ERRATUM_USB14 539 #define CONFIG_SYS_FSL_ERRATUM_USB14
540 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003 540 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003
541 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003474 541 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003474
542 #define CONFIG_SYS_FSL_ERRATUM_A004699 542 #define CONFIG_SYS_FSL_ERRATUM_A004699
543 #define CONFIG_SYS_FSL_ERRATUM_A004510 543 #define CONFIG_SYS_FSL_ERRATUM_A004510
544 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 0x10 544 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 0x10
545 #define CONFIG_SYS_FSL_ERRATUM_A006261 545 #define CONFIG_SYS_FSL_ERRATUM_A006261
546 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xf0000000 546 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xf0000000
547 #define CONFIG_SYS_FSL_ERRATUM_A005812 547 #define CONFIG_SYS_FSL_ERRATUM_A005812
548 548
549 #elif defined(CONFIG_BSC9131) 549 #elif defined(CONFIG_BSC9131)
550 #define CONFIG_MAX_CPUS 1 550 #define CONFIG_MAX_CPUS 1
551 #define CONFIG_FSL_SDHC_V2_3 551 #define CONFIG_FSL_SDHC_V2_3
552 #define CONFIG_SYS_FSL_NUM_LAWS 12 552 #define CONFIG_SYS_FSL_NUM_LAWS 12
553 #define CONFIG_TSECV2 553 #define CONFIG_TSECV2
554 #define CONFIG_SYS_FSL_SEC_COMPAT 4 554 #define CONFIG_SYS_FSL_SEC_COMPAT 4
555 #define CONFIG_NUM_DDR_CONTROLLERS 1 555 #define CONFIG_NUM_DDR_CONTROLLERS 1
556 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 556 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
557 #define CONFIG_SYS_FSL_DSP_M2_RAM_ADDR 0xb0000000 557 #define CONFIG_SYS_FSL_DSP_M2_RAM_ADDR 0xb0000000
558 #define CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT 0xff600000 558 #define CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT 0xff600000
559 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 3 559 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 3
560 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 560 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
561 #define CONFIG_NAND_FSL_IFC 561 #define CONFIG_NAND_FSL_IFC
562 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 562 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
563 #define CONFIG_SYS_FSL_ERRATUM_A005125 563 #define CONFIG_SYS_FSL_ERRATUM_A005125
564 #define CONFIG_ESDHC_HC_BLK_ADDR 564 #define CONFIG_ESDHC_HC_BLK_ADDR
565 565
566 #elif defined(CONFIG_BSC9132) 566 #elif defined(CONFIG_BSC9132)
567 #define CONFIG_MAX_CPUS 2 567 #define CONFIG_MAX_CPUS 2
568 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 3 568 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 3
569 #define CONFIG_FSL_SDHC_V2_3 569 #define CONFIG_FSL_SDHC_V2_3
570 #define CONFIG_SYS_FSL_NUM_LAWS 12 570 #define CONFIG_SYS_FSL_NUM_LAWS 12
571 #define CONFIG_TSECV2 571 #define CONFIG_TSECV2
572 #define CONFIG_SYS_FSL_SEC_COMPAT 4 572 #define CONFIG_SYS_FSL_SEC_COMPAT 4
573 #define CONFIG_NUM_DDR_CONTROLLERS 2 573 #define CONFIG_NUM_DDR_CONTROLLERS 2
574 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 574 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
575 #define CONFIG_SYS_FSL_DSP_DDR_ADDR 0x40000000 575 #define CONFIG_SYS_FSL_DSP_DDR_ADDR 0x40000000
576 #define CONFIG_SYS_FSL_DSP_M2_RAM_ADDR 0xb0000000 576 #define CONFIG_SYS_FSL_DSP_M2_RAM_ADDR 0xb0000000
577 #define CONFIG_SYS_FSL_DSP_M3_RAM_ADDR 0xc0000000 577 #define CONFIG_SYS_FSL_DSP_M3_RAM_ADDR 0xc0000000
578 #define CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT 0xff600000 578 #define CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT 0xff600000
579 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 3 579 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 3
580 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 580 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
581 #define CONFIG_NAND_FSL_IFC 581 #define CONFIG_NAND_FSL_IFC
582 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 582 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
583 #define CONFIG_SYS_FSL_ESDHC_P1010_BROKEN_SDCLK 583 #define CONFIG_SYS_FSL_ESDHC_P1010_BROKEN_SDCLK
584 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2" 584 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2"
585 #define CONFIG_SYS_FSL_ERRATUM_A005125 585 #define CONFIG_SYS_FSL_ERRATUM_A005125
586 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447 586 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
587 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x11 587 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x11
588 #define CONFIG_ESDHC_HC_BLK_ADDR 588 #define CONFIG_ESDHC_HC_BLK_ADDR
589 589
590 #elif defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160) 590 #elif defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160)
591 #define CONFIG_E6500 591 #define CONFIG_E6500
592 #define CONFIG_SYS_PPC64 /* 64-bit core */ 592 #define CONFIG_SYS_PPC64 /* 64-bit core */
593 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */ 593 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
594 #define CONFIG_SYS_FSL_QORIQ_CHASSIS2 /* Freescale Chassis generation 2 */ 594 #define CONFIG_SYS_FSL_QORIQ_CHASSIS2 /* Freescale Chassis generation 2 */
595 #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 4 595 #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 4
596 #define CONFIG_SYS_FSL_QMAN_V3 /* QMAN version 3 */ 596 #define CONFIG_SYS_FSL_QMAN_V3 /* QMAN version 3 */
597 #ifdef CONFIG_PPC_T4240 597 #ifdef CONFIG_PPC_T4240
598 #define CONFIG_MAX_CPUS 12 598 #define CONFIG_MAX_CPUS 12
599 #define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 1, 4 } 599 #define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 1, 4 }
600 #define CONFIG_SYS_NUM_FM1_DTSEC 8 600 #define CONFIG_SYS_NUM_FM1_DTSEC 8
601 #define CONFIG_SYS_NUM_FM1_10GEC 2 601 #define CONFIG_SYS_NUM_FM1_10GEC 2
602 #define CONFIG_SYS_NUM_FM2_DTSEC 8 602 #define CONFIG_SYS_NUM_FM2_DTSEC 8
603 #define CONFIG_SYS_NUM_FM2_10GEC 2 603 #define CONFIG_SYS_NUM_FM2_10GEC 2
604 #define CONFIG_NUM_DDR_CONTROLLERS 3 604 #define CONFIG_NUM_DDR_CONTROLLERS 3
605 #else 605 #else
606 #define CONFIG_MAX_CPUS 8 606 #define CONFIG_MAX_CPUS 8
607 #define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 1 } 607 #define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 1 }
608 #define CONFIG_SYS_NUM_FM1_DTSEC 7 608 #define CONFIG_SYS_NUM_FM1_DTSEC 7
609 #define CONFIG_SYS_NUM_FM1_10GEC 1 609 #define CONFIG_SYS_NUM_FM1_10GEC 1
610 #define CONFIG_SYS_NUM_FM2_DTSEC 7 610 #define CONFIG_SYS_NUM_FM2_DTSEC 7
611 #define CONFIG_SYS_NUM_FM2_10GEC 1 611 #define CONFIG_SYS_NUM_FM2_10GEC 1
612 #define CONFIG_NUM_DDR_CONTROLLERS 2 612 #define CONFIG_NUM_DDR_CONTROLLERS 2
613 #endif 613 #endif
614 #define CONFIG_SYS_FSL_NUM_CC_PLLS 5 614 #define CONFIG_SYS_FSL_NUM_CC_PLLS 5
615 #define CONFIG_SYS_FSL_NUM_LAWS 32 615 #define CONFIG_SYS_FSL_NUM_LAWS 32
616 #define CONFIG_SYS_FSL_SRDS_1 616 #define CONFIG_SYS_FSL_SRDS_1
617 #define CONFIG_SYS_FSL_SRDS_2 617 #define CONFIG_SYS_FSL_SRDS_2
618 #define CONFIG_SYS_FSL_SRDS_3 618 #define CONFIG_SYS_FSL_SRDS_3
619 #define CONFIG_SYS_FSL_SRDS_4 619 #define CONFIG_SYS_FSL_SRDS_4
620 #define CONFIG_SYS_FSL_SEC_COMPAT 4 620 #define CONFIG_SYS_FSL_SEC_COMPAT 4
621 #define CONFIG_SYS_NUM_FMAN 2 621 #define CONFIG_SYS_NUM_FMAN 2
622 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 622 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
623 #define CONFIG_SYS_PME_CLK 0 623 #define CONFIG_SYS_PME_CLK 0
624 #define CONFIG_SYS_FSL_DDR_VER FSL_DDR_VER_4_7 624 #define CONFIG_SYS_FSL_DDR_VER FSL_DDR_VER_4_7
625 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 8 625 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 8
626 #define CONFIG_SYS_FMAN_V3 626 #define CONFIG_SYS_FMAN_V3
627 #define CONFIG_SYS_FM1_CLK 3 627 #define CONFIG_SYS_FM1_CLK 3
628 #define CONFIG_SYS_FM2_CLK 3 628 #define CONFIG_SYS_FM2_CLK 3
629 #define CONFIG_SYS_FM_MURAM_SIZE 0x60000 629 #define CONFIG_SYS_FM_MURAM_SIZE 0x60000
630 #define CONFIG_SYS_FSL_TBCLK_DIV 16 630 #define CONFIG_SYS_FSL_TBCLK_DIV 16
631 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v3.0" 631 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v3.0"
632 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2 632 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2
633 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9 633 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
634 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5 634 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
635 #define CONFIG_SYS_FSL_SRIO_LIODN 635 #define CONFIG_SYS_FSL_SRIO_LIODN
636 #define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE 636 #define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
637 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY 637 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
638 #define CONFIG_SYS_FSL_ERRATUM_A004468 638 #define CONFIG_SYS_FSL_ERRATUM_A004468
639 #define CONFIG_SYS_FSL_ERRATUM_A_004934 639 #define CONFIG_SYS_FSL_ERRATUM_A_004934
640 #define CONFIG_SYS_FSL_ERRATUM_A005871 640 #define CONFIG_SYS_FSL_ERRATUM_A005871
641 #define CONFIG_SYS_FSL_ERRATUM_A006261 641 #define CONFIG_SYS_FSL_ERRATUM_A006261
642 #define CONFIG_SYS_FSL_ERRATUM_A006379 642 #define CONFIG_SYS_FSL_ERRATUM_A006379
643 #define CONFIG_SYS_FSL_ERRATUM_A006593 643 #define CONFIG_SYS_FSL_ERRATUM_A006593
644 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000 644 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000
645 #define CONFIG_SYS_FSL_PCI_VER_3_X 645 #define CONFIG_SYS_FSL_PCI_VER_3_X
646 646
647 #elif defined(CONFIG_PPC_B4860) || defined(CONFIG_PPC_B4420) 647 #elif defined(CONFIG_PPC_B4860) || defined(CONFIG_PPC_B4420)
648 #define CONFIG_E6500 648 #define CONFIG_E6500
649 #define CONFIG_SYS_PPC64 /* 64-bit core */ 649 #define CONFIG_SYS_PPC64 /* 64-bit core */
650 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */ 650 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
651 #define CONFIG_SYS_FSL_QORIQ_CHASSIS2 /* Freescale Chassis generation 2 */ 651 #define CONFIG_SYS_FSL_QORIQ_CHASSIS2 /* Freescale Chassis generation 2 */
652 #define CONFIG_SYS_FSL_QMAN_V3 /* QMAN version 3 */ 652 #define CONFIG_SYS_FSL_QMAN_V3 /* QMAN version 3 */
653 #define CONFIG_SYS_FSL_NUM_LAWS 32 653 #define CONFIG_SYS_FSL_NUM_LAWS 32
654 #define CONFIG_SYS_FSL_SRDS_1 654 #define CONFIG_SYS_FSL_SRDS_1
655 #define CONFIG_SYS_FSL_SRDS_2 655 #define CONFIG_SYS_FSL_SRDS_2
656 #define CONFIG_SYS_FSL_SEC_COMPAT 4 656 #define CONFIG_SYS_FSL_SEC_COMPAT 4
657 #define CONFIG_SYS_NUM_FMAN 1 657 #define CONFIG_SYS_NUM_FMAN 1
658 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 658 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
659 #define CONFIG_SYS_FM1_CLK 0 659 #define CONFIG_SYS_FM1_CLK 0
660 #define CONFIG_SYS_FSL_DDR_VER FSL_DDR_VER_4_7 660 #define CONFIG_SYS_FSL_DDR_VER FSL_DDR_VER_4_7
661 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 4 661 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 4
662 #define CONFIG_SYS_FMAN_V3 662 #define CONFIG_SYS_FMAN_V3
663 #define CONFIG_SYS_FM_MURAM_SIZE 0x60000 663 #define CONFIG_SYS_FM_MURAM_SIZE 0x60000
664 #define CONFIG_SYS_FSL_TBCLK_DIV 16 664 #define CONFIG_SYS_FSL_TBCLK_DIV 16
665 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.4" 665 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.4"
666 #define CONFIG_SYS_FSL_USB1_PHY_ENABLE 666 #define CONFIG_SYS_FSL_USB1_PHY_ENABLE
667 #define CONFIG_SYS_FSL_ERRATUM_A_004934 667 #define CONFIG_SYS_FSL_ERRATUM_A_004934
668 #define CONFIG_SYS_FSL_ERRATUM_A005871 668 #define CONFIG_SYS_FSL_ERRATUM_A005871
669 #define CONFIG_SYS_FSL_ERRATUM_A006379 669 #define CONFIG_SYS_FSL_ERRATUM_A006379
670 #define CONFIG_SYS_FSL_ERRATUM_A006593 670 #define CONFIG_SYS_FSL_ERRATUM_A006593
671 #define CONFIG_SYS_FSL_ERRATUM_A006475 671 #define CONFIG_SYS_FSL_ERRATUM_A006475
672 #define CONFIG_SYS_FSL_ERRATUM_A006384 672 #define CONFIG_SYS_FSL_ERRATUM_A006384
673 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000 673 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000
674 674
675 #ifdef CONFIG_PPC_B4860 675 #ifdef CONFIG_PPC_B4860
676 #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 4 676 #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 4
677 #define CONFIG_MAX_CPUS 4 677 #define CONFIG_MAX_CPUS 4
678 #define CONFIG_SYS_FSL_SRDS_NUM_PLLS 2 678 #define CONFIG_SYS_FSL_SRDS_NUM_PLLS 2
679 #define CONFIG_SYS_FSL_NUM_CC_PLLS 4 679 #define CONFIG_SYS_FSL_NUM_CC_PLLS 4
680 #define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 4, 4, 4 } 680 #define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 4, 4, 4 }
681 #define CONFIG_SYS_NUM_FM1_DTSEC 6 681 #define CONFIG_SYS_NUM_FM1_DTSEC 6
682 #define CONFIG_SYS_NUM_FM1_10GEC 2 682 #define CONFIG_SYS_NUM_FM1_10GEC 2
683 #define CONFIG_NUM_DDR_CONTROLLERS 2 683 #define CONFIG_NUM_DDR_CONTROLLERS 2
684 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 684 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
685 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2 685 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2
686 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9 686 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
687 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5 687 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
688 #define CONFIG_SYS_FSL_SRIO_LIODN 688 #define CONFIG_SYS_FSL_SRIO_LIODN
689 #else 689 #else
690 #define CONFIG_MAX_CPUS 2 690 #define CONFIG_MAX_CPUS 2
691 #define CONFIG_SYS_FSL_SRDS_NUM_PLLS 1 691 #define CONFIG_SYS_FSL_SRDS_NUM_PLLS 1
692 #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 2 692 #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 2
693 #define CONFIG_SYS_FSL_NUM_CC_PLLS 4 693 #define CONFIG_SYS_FSL_NUM_CC_PLLS 4
694 #define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 4 } 694 #define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 4 }
695 #define CONFIG_SYS_NUM_FM1_DTSEC 4 695 #define CONFIG_SYS_NUM_FM1_DTSEC 4
696 #define CONFIG_SYS_NUM_FM1_10GEC 0 696 #define CONFIG_SYS_NUM_FM1_10GEC 0
697 #define CONFIG_NUM_DDR_CONTROLLERS 1 697 #define CONFIG_NUM_DDR_CONTROLLERS 1
698 #endif 698 #endif
699 699
700 #elif defined(CONFIG_PPC_T1040) || defined(CONFIG_PPC_T1042) ||\ 700 #elif defined(CONFIG_PPC_T1040) || defined(CONFIG_PPC_T1042) ||\
701 defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022) 701 defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
702 #define CONFIG_E5500 702 #define CONFIG_E5500
703 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */ 703 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
704 #define CONFIG_SYS_FSL_QORIQ_CHASSIS2 /* Freescale Chassis generation 2 */ 704 #define CONFIG_SYS_FSL_QORIQ_CHASSIS2 /* Freescale Chassis generation 2 */
705 #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 1 705 #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 1
706 #define CONFIG_SYS_FSL_QMAN_V3 /* QMAN version 3 */ 706 #define CONFIG_SYS_FSL_QMAN_V3 /* QMAN version 3 */
707 #if defined(CONFIG_PPC_T1040) || defined(CONFIG_PPC_T1042) 707 #if defined(CONFIG_PPC_T1040) || defined(CONFIG_PPC_T1042)
708 #define CONFIG_MAX_CPUS 4 708 #define CONFIG_MAX_CPUS 4
709 #elif defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022) 709 #elif defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
710 #define CONFIG_MAX_CPUS 2 710 #define CONFIG_MAX_CPUS 2
711 #endif 711 #endif
712 #define CONFIG_SYS_FSL_NUM_CC_PLLS 2 712 #define CONFIG_SYS_FSL_NUM_CC_PLLS 2
713 #define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 1, 1, 1 } 713 #define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 1, 1, 1 }
714 #define CONFIG_SYS_SDHC_CLOCK 0 714 #define CONFIG_SYS_SDHC_CLOCK 0
715 #define CONFIG_SYS_FSL_NUM_LAWS 16 715 #define CONFIG_SYS_FSL_NUM_LAWS 16
716 #define CONFIG_SYS_FSL_SRDS_1 716 #define CONFIG_SYS_FSL_SRDS_1
717 #define CONFIG_SYS_FSL_SEC_COMPAT 5 717 #define CONFIG_SYS_FSL_SEC_COMPAT 5
718 #define CONFIG_SYS_NUM_FMAN 1 718 #define CONFIG_SYS_NUM_FMAN 1
719 #define CONFIG_SYS_NUM_FM1_DTSEC 5 719 #define CONFIG_SYS_NUM_FM1_DTSEC 5
720 #define CONFIG_NUM_DDR_CONTROLLERS 1 720 #define CONFIG_NUM_DDR_CONTROLLERS 1
721 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 721 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
722 #define CONFIG_PME_PLAT_CLK_DIV 2 722 #define CONFIG_PME_PLAT_CLK_DIV 2
723 #define CONFIG_SYS_PME_CLK CONFIG_PME_PLAT_CLK_DIV 723 #define CONFIG_SYS_PME_CLK CONFIG_PME_PLAT_CLK_DIV
724 #define CONFIG_SYS_FSL_DDR_VER FSL_DDR_VER_5_0 724 #define CONFIG_SYS_FSL_DDR_VER FSL_DDR_VER_5_0
725 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 8 725 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 8
726 #define CONFIG_SYS_FMAN_V3 726 #define CONFIG_SYS_FMAN_V3
727 #define CONFIG_FM_PLAT_CLK_DIV 1 727 #define CONFIG_FM_PLAT_CLK_DIV 1
728 #define CONFIG_SYS_FM1_CLK CONFIG_FM_PLAT_CLK_DIV 728 #define CONFIG_SYS_FM1_CLK CONFIG_FM_PLAT_CLK_DIV
729 #define CONFIG_SYS_FM_MURAM_SIZE 0x30000 729 #define CONFIG_SYS_FM_MURAM_SIZE 0x30000
730 #define CONFIG_SYS_FSL_SINGLE_SOURCE_CLK 730 #define CONFIG_SYS_FSL_SINGLE_SOURCE_CLK
731 #define CONFIG_SYS_FSL_TBCLK_DIV 16 731 #define CONFIG_SYS_FSL_TBCLK_DIV 16
732 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.4" 732 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.4"
733 #define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE 733 #define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
734 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY 734 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
735 #define CONFIG_SYS_FSL_ERRATUM_A006261 735 #define CONFIG_SYS_FSL_ERRATUM_A006261
736 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000 736 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000
737 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
738 #define ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE
737 739
738 #elif defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T2081) 740 #elif defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T2081)
739 #define CONFIG_E6500 741 #define CONFIG_E6500
740 #define CONFIG_SYS_PPC64 /* 64-bit core */ 742 #define CONFIG_SYS_PPC64 /* 64-bit core */
741 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */ 743 #define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
742 #define CONFIG_SYS_FSL_QORIQ_CHASSIS2 /* Freescale Chassis generation 2 */ 744 #define CONFIG_SYS_FSL_QORIQ_CHASSIS2 /* Freescale Chassis generation 2 */
743 #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 4 745 #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 4
744 #define CONFIG_SYS_FSL_NUM_CC_PLLS 2 746 #define CONFIG_SYS_FSL_NUM_CC_PLLS 2
745 #define CONFIG_SYS_FSL_QMAN_V3 747 #define CONFIG_SYS_FSL_QMAN_V3
746 #define CONFIG_MAX_CPUS 4 748 #define CONFIG_MAX_CPUS 4
747 #define CONFIG_SYS_FSL_NUM_LAWS 32 749 #define CONFIG_SYS_FSL_NUM_LAWS 32
748 #define CONFIG_SYS_FSL_SEC_COMPAT 4 750 #define CONFIG_SYS_FSL_SEC_COMPAT 4
749 #define CONFIG_SYS_NUM_FMAN 1 751 #define CONFIG_SYS_NUM_FMAN 1
750 #define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 4, 4, 4 } 752 #define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 4, 4, 4 }
751 #define CONFIG_SYS_FSL_SRDS_1 753 #define CONFIG_SYS_FSL_SRDS_1
752 #define CONFIG_SYS_FSL_PCI_VER_3_X 754 #define CONFIG_SYS_FSL_PCI_VER_3_X
753 #if defined(CONFIG_PPC_T2080) 755 #if defined(CONFIG_PPC_T2080)
754 #define CONFIG_SYS_NUM_FM1_DTSEC 8 756 #define CONFIG_SYS_NUM_FM1_DTSEC 8
755 #define CONFIG_SYS_NUM_FM1_10GEC 4 757 #define CONFIG_SYS_NUM_FM1_10GEC 4
756 #define CONFIG_SYS_FSL_SRDS_2 758 #define CONFIG_SYS_FSL_SRDS_2
757 #define CONFIG_SYS_FSL_SRIO_LIODN 759 #define CONFIG_SYS_FSL_SRIO_LIODN
758 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2 760 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2
759 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9 761 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
760 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5 762 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
761 #elif defined(CONFIG_PPC_T2081) 763 #elif defined(CONFIG_PPC_T2081)
762 #define CONFIG_SYS_NUM_FM1_DTSEC 6 764 #define CONFIG_SYS_NUM_FM1_DTSEC 6
763 #define CONFIG_SYS_NUM_FM1_10GEC 2 765 #define CONFIG_SYS_NUM_FM1_10GEC 2
764 #endif 766 #endif
765 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 767 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
766 #define CONFIG_NUM_DDR_CONTROLLERS 1 768 #define CONFIG_NUM_DDR_CONTROLLERS 1
767 #define CONFIG_PME_PLAT_CLK_DIV 1 769 #define CONFIG_PME_PLAT_CLK_DIV 1
768 #define CONFIG_SYS_PME_CLK CONFIG_PME_PLAT_CLK_DIV 770 #define CONFIG_SYS_PME_CLK CONFIG_PME_PLAT_CLK_DIV
769 #define CONFIG_SYS_FM1_CLK 0 771 #define CONFIG_SYS_FM1_CLK 0
770 #define CONFIG_SYS_FSL_DDR_VER FSL_DDR_VER_4_7 772 #define CONFIG_SYS_FSL_DDR_VER FSL_DDR_VER_4_7
771 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 8 773 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 8
772 #define CONFIG_SYS_FMAN_V3 774 #define CONFIG_SYS_FMAN_V3
773 #define CONFIG_SYS_FM_MURAM_SIZE 0x28000 775 #define CONFIG_SYS_FM_MURAM_SIZE 0x28000
774 #define CONFIG_SYS_FSL_TBCLK_DIV 16 776 #define CONFIG_SYS_FSL_TBCLK_DIV 16
775 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v3.0" 777 #define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v3.0"
776 #define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE 778 #define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
777 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY 779 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
778 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000 780 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000
779 #define CONFIG_SYS_FSL_SFP_VER_3_0 781 #define CONFIG_SYS_FSL_SFP_VER_3_0
780 #define CONFIG_SYS_FSL_ISBC_VER 2 782 #define CONFIG_SYS_FSL_ISBC_VER 2
783 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
784 #define ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE
785
781 786
782 #elif defined(CONFIG_PPC_C29X) 787 #elif defined(CONFIG_PPC_C29X)
783 #define CONFIG_MAX_CPUS 1 788 #define CONFIG_MAX_CPUS 1
784 #define CONFIG_FSL_SDHC_V2_3 789 #define CONFIG_FSL_SDHC_V2_3
785 #define CONFIG_SYS_FSL_NUM_LAWS 12 790 #define CONFIG_SYS_FSL_NUM_LAWS 12
786 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 3 791 #define CONFIG_SYS_PPC_E500_DEBUG_TLB 3
787 #define CONFIG_TSECV2_1 792 #define CONFIG_TSECV2_1
788 #define CONFIG_SYS_FSL_SEC_COMPAT 6 793 #define CONFIG_SYS_FSL_SEC_COMPAT 6
789 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 794 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
790 #define CONFIG_NUM_DDR_CONTROLLERS 1 795 #define CONFIG_NUM_DDR_CONTROLLERS 1
791 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 8 796 #define CONFIG_SYS_FSL_IFC_BANK_COUNT 8
792 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 797 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
793 #define CONFIG_SYS_FSL_ERRATUM_A005125 798 #define CONFIG_SYS_FSL_ERRATUM_A005125
794 799
795 #else 800 #else
796 #error Processor type not defined for this platform 801 #error Processor type not defined for this platform
797 #endif 802 #endif
798 803
799 #ifndef CONFIG_SYS_CCSRBAR_DEFAULT 804 #ifndef CONFIG_SYS_CCSRBAR_DEFAULT
800 #error "CONFIG_SYS_CCSRBAR_DEFAULT is not defined for this platform." 805 #error "CONFIG_SYS_CCSRBAR_DEFAULT is not defined for this platform."
801 #endif 806 #endif
802 807
803 #ifdef CONFIG_E6500 808 #ifdef CONFIG_E6500
804 #define CONFIG_SYS_FSL_THREADS_PER_CORE 2 809 #define CONFIG_SYS_FSL_THREADS_PER_CORE 2
805 #else 810 #else
806 #define CONFIG_SYS_FSL_THREADS_PER_CORE 1 811 #define CONFIG_SYS_FSL_THREADS_PER_CORE 1
807 #endif 812 #endif
808 813
809 #if !defined(CONFIG_SYS_FSL_DDRC_GEN1) && \ 814 #if !defined(CONFIG_SYS_FSL_DDRC_GEN1) && \
810 !defined(CONFIG_SYS_FSL_DDRC_GEN2) && \ 815 !defined(CONFIG_SYS_FSL_DDRC_GEN2) && \
811 !defined(CONFIG_SYS_FSL_DDRC_GEN3) 816 !defined(CONFIG_SYS_FSL_DDRC_GEN3)
812 #define CONFIG_SYS_FSL_DDRC_GEN3 817 #define CONFIG_SYS_FSL_DDRC_GEN3
813 #endif 818 #endif
814 819
815 #endif /* _ASM_MPC85xx_CONFIG_H_ */ 820 #endif /* _ASM_MPC85xx_CONFIG_H_ */
816 821
drivers/mmc/fsl_esdhc.c
1 /* 1 /*
2 * Copyright 2007, 2010-2011 Freescale Semiconductor, Inc 2 * Copyright 2007, 2010-2011 Freescale Semiconductor, Inc
3 * Andy Fleming 3 * Andy Fleming
4 * 4 *
5 * Based vaguely on the pxa mmc code: 5 * Based vaguely on the pxa mmc code:
6 * (C) Copyright 2003 6 * (C) Copyright 2003
7 * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net 7 * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
8 * 8 *
9 * SPDX-License-Identifier: GPL-2.0+ 9 * SPDX-License-Identifier: GPL-2.0+
10 */ 10 */
11 11
12 #include <config.h> 12 #include <config.h>
13 #include <common.h> 13 #include <common.h>
14 #include <command.h> 14 #include <command.h>
15 #include <hwconfig.h> 15 #include <hwconfig.h>
16 #include <mmc.h> 16 #include <mmc.h>
17 #include <part.h> 17 #include <part.h>
18 #include <malloc.h> 18 #include <malloc.h>
19 #include <mmc.h> 19 #include <mmc.h>
20 #include <fsl_esdhc.h> 20 #include <fsl_esdhc.h>
21 #include <fdt_support.h> 21 #include <fdt_support.h>
22 #include <asm/io.h> 22 #include <asm/io.h>
23 23
24 DECLARE_GLOBAL_DATA_PTR; 24 DECLARE_GLOBAL_DATA_PTR;
25 25
26 struct fsl_esdhc { 26 struct fsl_esdhc {
27 uint dsaddr; /* SDMA system address register */ 27 uint dsaddr; /* SDMA system address register */
28 uint blkattr; /* Block attributes register */ 28 uint blkattr; /* Block attributes register */
29 uint cmdarg; /* Command argument register */ 29 uint cmdarg; /* Command argument register */
30 uint xfertyp; /* Transfer type register */ 30 uint xfertyp; /* Transfer type register */
31 uint cmdrsp0; /* Command response 0 register */ 31 uint cmdrsp0; /* Command response 0 register */
32 uint cmdrsp1; /* Command response 1 register */ 32 uint cmdrsp1; /* Command response 1 register */
33 uint cmdrsp2; /* Command response 2 register */ 33 uint cmdrsp2; /* Command response 2 register */
34 uint cmdrsp3; /* Command response 3 register */ 34 uint cmdrsp3; /* Command response 3 register */
35 uint datport; /* Buffer data port register */ 35 uint datport; /* Buffer data port register */
36 uint prsstat; /* Present state register */ 36 uint prsstat; /* Present state register */
37 uint proctl; /* Protocol control register */ 37 uint proctl; /* Protocol control register */
38 uint sysctl; /* System Control Register */ 38 uint sysctl; /* System Control Register */
39 uint irqstat; /* Interrupt status register */ 39 uint irqstat; /* Interrupt status register */
40 uint irqstaten; /* Interrupt status enable register */ 40 uint irqstaten; /* Interrupt status enable register */
41 uint irqsigen; /* Interrupt signal enable register */ 41 uint irqsigen; /* Interrupt signal enable register */
42 uint autoc12err; /* Auto CMD error status register */ 42 uint autoc12err; /* Auto CMD error status register */
43 uint hostcapblt; /* Host controller capabilities register */ 43 uint hostcapblt; /* Host controller capabilities register */
44 uint wml; /* Watermark level register */ 44 uint wml; /* Watermark level register */
45 uint mixctrl; /* For USDHC */ 45 uint mixctrl; /* For USDHC */
46 char reserved1[4]; /* reserved */ 46 char reserved1[4]; /* reserved */
47 uint fevt; /* Force event register */ 47 uint fevt; /* Force event register */
48 uint admaes; /* ADMA error status register */ 48 uint admaes; /* ADMA error status register */
49 uint adsaddr; /* ADMA system address register */ 49 uint adsaddr; /* ADMA system address register */
50 char reserved2[160]; /* reserved */ 50 char reserved2[160]; /* reserved */
51 uint hostver; /* Host controller version register */ 51 uint hostver; /* Host controller version register */
52 char reserved3[4]; /* reserved */ 52 char reserved3[4]; /* reserved */
53 uint dmaerraddr; /* DMA error address register */ 53 uint dmaerraddr; /* DMA error address register */
54 char reserved4[4]; /* reserved */ 54 char reserved4[4]; /* reserved */
55 uint dmaerrattr; /* DMA error attribute register */ 55 uint dmaerrattr; /* DMA error attribute register */
56 char reserved5[4]; /* reserved */ 56 char reserved5[4]; /* reserved */
57 uint hostcapblt2; /* Host controller capabilities register 2 */ 57 uint hostcapblt2; /* Host controller capabilities register 2 */
58 char reserved6[8]; /* reserved */ 58 char reserved6[8]; /* reserved */
59 uint tcr; /* Tuning control register */ 59 uint tcr; /* Tuning control register */
60 char reserved7[28]; /* reserved */ 60 char reserved7[28]; /* reserved */
61 uint sddirctl; /* SD direction control register */ 61 uint sddirctl; /* SD direction control register */
62 char reserved8[712]; /* reserved */ 62 char reserved8[712]; /* reserved */
63 uint scr; /* eSDHC control register */ 63 uint scr; /* eSDHC control register */
64 }; 64 };
65 65
66 /* Return the XFERTYP flags for a given command and data packet */ 66 /* Return the XFERTYP flags for a given command and data packet */
67 static uint esdhc_xfertyp(struct mmc_cmd *cmd, struct mmc_data *data) 67 static uint esdhc_xfertyp(struct mmc_cmd *cmd, struct mmc_data *data)
68 { 68 {
69 uint xfertyp = 0; 69 uint xfertyp = 0;
70 70
71 if (data) { 71 if (data) {
72 xfertyp |= XFERTYP_DPSEL; 72 xfertyp |= XFERTYP_DPSEL;
73 #ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO 73 #ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO
74 xfertyp |= XFERTYP_DMAEN; 74 xfertyp |= XFERTYP_DMAEN;
75 #endif 75 #endif
76 if (data->blocks > 1) { 76 if (data->blocks > 1) {
77 xfertyp |= XFERTYP_MSBSEL; 77 xfertyp |= XFERTYP_MSBSEL;
78 xfertyp |= XFERTYP_BCEN; 78 xfertyp |= XFERTYP_BCEN;
79 #ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC111 79 #ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC111
80 xfertyp |= XFERTYP_AC12EN; 80 xfertyp |= XFERTYP_AC12EN;
81 #endif 81 #endif
82 } 82 }
83 83
84 if (data->flags & MMC_DATA_READ) 84 if (data->flags & MMC_DATA_READ)
85 xfertyp |= XFERTYP_DTDSEL; 85 xfertyp |= XFERTYP_DTDSEL;
86 } 86 }
87 87
88 if (cmd->resp_type & MMC_RSP_CRC) 88 if (cmd->resp_type & MMC_RSP_CRC)
89 xfertyp |= XFERTYP_CCCEN; 89 xfertyp |= XFERTYP_CCCEN;
90 if (cmd->resp_type & MMC_RSP_OPCODE) 90 if (cmd->resp_type & MMC_RSP_OPCODE)
91 xfertyp |= XFERTYP_CICEN; 91 xfertyp |= XFERTYP_CICEN;
92 if (cmd->resp_type & MMC_RSP_136) 92 if (cmd->resp_type & MMC_RSP_136)
93 xfertyp |= XFERTYP_RSPTYP_136; 93 xfertyp |= XFERTYP_RSPTYP_136;
94 else if (cmd->resp_type & MMC_RSP_BUSY) 94 else if (cmd->resp_type & MMC_RSP_BUSY)
95 xfertyp |= XFERTYP_RSPTYP_48_BUSY; 95 xfertyp |= XFERTYP_RSPTYP_48_BUSY;
96 else if (cmd->resp_type & MMC_RSP_PRESENT) 96 else if (cmd->resp_type & MMC_RSP_PRESENT)
97 xfertyp |= XFERTYP_RSPTYP_48; 97 xfertyp |= XFERTYP_RSPTYP_48;
98 98
99 #if defined(CONFIG_MX53) || defined(CONFIG_T4240QDS) 99 #if defined(CONFIG_MX53) || defined(CONFIG_T4240QDS)
100 if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION) 100 if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION)
101 xfertyp |= XFERTYP_CMDTYP_ABORT; 101 xfertyp |= XFERTYP_CMDTYP_ABORT;
102 #endif 102 #endif
103 return XFERTYP_CMD(cmd->cmdidx) | xfertyp; 103 return XFERTYP_CMD(cmd->cmdidx) | xfertyp;
104 } 104 }
105 105
106 #ifdef CONFIG_SYS_FSL_ESDHC_USE_PIO 106 #ifdef CONFIG_SYS_FSL_ESDHC_USE_PIO
107 /* 107 /*
108 * PIO Read/Write Mode reduce the performace as DMA is not used in this mode. 108 * PIO Read/Write Mode reduce the performace as DMA is not used in this mode.
109 */ 109 */
110 static void 110 static void
111 esdhc_pio_read_write(struct mmc *mmc, struct mmc_data *data) 111 esdhc_pio_read_write(struct mmc *mmc, struct mmc_data *data)
112 { 112 {
113 struct fsl_esdhc_cfg *cfg = mmc->priv; 113 struct fsl_esdhc_cfg *cfg = mmc->priv;
114 struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base; 114 struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base;
115 uint blocks; 115 uint blocks;
116 char *buffer; 116 char *buffer;
117 uint databuf; 117 uint databuf;
118 uint size; 118 uint size;
119 uint irqstat; 119 uint irqstat;
120 uint timeout; 120 uint timeout;
121 121
122 if (data->flags & MMC_DATA_READ) { 122 if (data->flags & MMC_DATA_READ) {
123 blocks = data->blocks; 123 blocks = data->blocks;
124 buffer = data->dest; 124 buffer = data->dest;
125 while (blocks) { 125 while (blocks) {
126 timeout = PIO_TIMEOUT; 126 timeout = PIO_TIMEOUT;
127 size = data->blocksize; 127 size = data->blocksize;
128 irqstat = esdhc_read32(&regs->irqstat); 128 irqstat = esdhc_read32(&regs->irqstat);
129 while (!(esdhc_read32(&regs->prsstat) & PRSSTAT_BREN) 129 while (!(esdhc_read32(&regs->prsstat) & PRSSTAT_BREN)
130 && --timeout); 130 && --timeout);
131 if (timeout <= 0) { 131 if (timeout <= 0) {
132 printf("\nData Read Failed in PIO Mode."); 132 printf("\nData Read Failed in PIO Mode.");
133 return; 133 return;
134 } 134 }
135 while (size && (!(irqstat & IRQSTAT_TC))) { 135 while (size && (!(irqstat & IRQSTAT_TC))) {
136 udelay(100); /* Wait before last byte transfer complete */ 136 udelay(100); /* Wait before last byte transfer complete */
137 irqstat = esdhc_read32(&regs->irqstat); 137 irqstat = esdhc_read32(&regs->irqstat);
138 databuf = in_le32(&regs->datport); 138 databuf = in_le32(&regs->datport);
139 *((uint *)buffer) = databuf; 139 *((uint *)buffer) = databuf;
140 buffer += 4; 140 buffer += 4;
141 size -= 4; 141 size -= 4;
142 } 142 }
143 blocks--; 143 blocks--;
144 } 144 }
145 } else { 145 } else {
146 blocks = data->blocks; 146 blocks = data->blocks;
147 buffer = (char *)data->src; 147 buffer = (char *)data->src;
148 while (blocks) { 148 while (blocks) {
149 timeout = PIO_TIMEOUT; 149 timeout = PIO_TIMEOUT;
150 size = data->blocksize; 150 size = data->blocksize;
151 irqstat = esdhc_read32(&regs->irqstat); 151 irqstat = esdhc_read32(&regs->irqstat);
152 while (!(esdhc_read32(&regs->prsstat) & PRSSTAT_BWEN) 152 while (!(esdhc_read32(&regs->prsstat) & PRSSTAT_BWEN)
153 && --timeout); 153 && --timeout);
154 if (timeout <= 0) { 154 if (timeout <= 0) {
155 printf("\nData Write Failed in PIO Mode."); 155 printf("\nData Write Failed in PIO Mode.");
156 return; 156 return;
157 } 157 }
158 while (size && (!(irqstat & IRQSTAT_TC))) { 158 while (size && (!(irqstat & IRQSTAT_TC))) {
159 udelay(100); /* Wait before last byte transfer complete */ 159 udelay(100); /* Wait before last byte transfer complete */
160 databuf = *((uint *)buffer); 160 databuf = *((uint *)buffer);
161 buffer += 4; 161 buffer += 4;
162 size -= 4; 162 size -= 4;
163 irqstat = esdhc_read32(&regs->irqstat); 163 irqstat = esdhc_read32(&regs->irqstat);
164 out_le32(&regs->datport, databuf); 164 out_le32(&regs->datport, databuf);
165 } 165 }
166 blocks--; 166 blocks--;
167 } 167 }
168 } 168 }
169 } 169 }
170 #endif 170 #endif
171 171
172 static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data) 172 static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data)
173 { 173 {
174 int timeout; 174 int timeout;
175 struct fsl_esdhc_cfg *cfg = mmc->priv; 175 struct fsl_esdhc_cfg *cfg = mmc->priv;
176 struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base; 176 struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base;
177 #ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO 177 #ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO
178 uint wml_value; 178 uint wml_value;
179 179
180 wml_value = data->blocksize/4; 180 wml_value = data->blocksize/4;
181 181
182 if (data->flags & MMC_DATA_READ) { 182 if (data->flags & MMC_DATA_READ) {
183 if (wml_value > WML_RD_WML_MAX) 183 if (wml_value > WML_RD_WML_MAX)
184 wml_value = WML_RD_WML_MAX_VAL; 184 wml_value = WML_RD_WML_MAX_VAL;
185 185
186 esdhc_clrsetbits32(&regs->wml, WML_RD_WML_MASK, wml_value); 186 esdhc_clrsetbits32(&regs->wml, WML_RD_WML_MASK, wml_value);
187 esdhc_write32(&regs->dsaddr, (u32)data->dest); 187 esdhc_write32(&regs->dsaddr, (u32)data->dest);
188 } else { 188 } else {
189 flush_dcache_range((ulong)data->src, 189 flush_dcache_range((ulong)data->src,
190 (ulong)data->src+data->blocks 190 (ulong)data->src+data->blocks
191 *data->blocksize); 191 *data->blocksize);
192 192
193 if (wml_value > WML_WR_WML_MAX) 193 if (wml_value > WML_WR_WML_MAX)
194 wml_value = WML_WR_WML_MAX_VAL; 194 wml_value = WML_WR_WML_MAX_VAL;
195 if ((esdhc_read32(&regs->prsstat) & PRSSTAT_WPSPL) == 0) { 195 if ((esdhc_read32(&regs->prsstat) & PRSSTAT_WPSPL) == 0) {
196 printf("\nThe SD card is locked. Can not write to a locked card.\n\n"); 196 printf("\nThe SD card is locked. Can not write to a locked card.\n\n");
197 return TIMEOUT; 197 return TIMEOUT;
198 } 198 }
199 199
200 esdhc_clrsetbits32(&regs->wml, WML_WR_WML_MASK, 200 esdhc_clrsetbits32(&regs->wml, WML_WR_WML_MASK,
201 wml_value << 16); 201 wml_value << 16);
202 esdhc_write32(&regs->dsaddr, (u32)data->src); 202 esdhc_write32(&regs->dsaddr, (u32)data->src);
203 } 203 }
204 #else /* CONFIG_SYS_FSL_ESDHC_USE_PIO */ 204 #else /* CONFIG_SYS_FSL_ESDHC_USE_PIO */
205 if (!(data->flags & MMC_DATA_READ)) { 205 if (!(data->flags & MMC_DATA_READ)) {
206 if ((esdhc_read32(&regs->prsstat) & PRSSTAT_WPSPL) == 0) { 206 if ((esdhc_read32(&regs->prsstat) & PRSSTAT_WPSPL) == 0) {
207 printf("\nThe SD card is locked. " 207 printf("\nThe SD card is locked. "
208 "Can not write to a locked card.\n\n"); 208 "Can not write to a locked card.\n\n");
209 return TIMEOUT; 209 return TIMEOUT;
210 } 210 }
211 esdhc_write32(&regs->dsaddr, (u32)data->src); 211 esdhc_write32(&regs->dsaddr, (u32)data->src);
212 } else 212 } else
213 esdhc_write32(&regs->dsaddr, (u32)data->dest); 213 esdhc_write32(&regs->dsaddr, (u32)data->dest);
214 #endif /* CONFIG_SYS_FSL_ESDHC_USE_PIO */ 214 #endif /* CONFIG_SYS_FSL_ESDHC_USE_PIO */
215 215
216 esdhc_write32(&regs->blkattr, data->blocks << 16 | data->blocksize); 216 esdhc_write32(&regs->blkattr, data->blocks << 16 | data->blocksize);
217 217
218 /* Calculate the timeout period for data transactions */ 218 /* Calculate the timeout period for data transactions */
219 /* 219 /*
220 * 1)Timeout period = (2^(timeout+13)) SD Clock cycles 220 * 1)Timeout period = (2^(timeout+13)) SD Clock cycles
221 * 2)Timeout period should be minimum 0.250sec as per SD Card spec 221 * 2)Timeout period should be minimum 0.250sec as per SD Card spec
222 * So, Number of SD Clock cycles for 0.25sec should be minimum 222 * So, Number of SD Clock cycles for 0.25sec should be minimum
223 * (SD Clock/sec * 0.25 sec) SD Clock cycles 223 * (SD Clock/sec * 0.25 sec) SD Clock cycles
224 * = (mmc->clock * 1/4) SD Clock cycles 224 * = (mmc->clock * 1/4) SD Clock cycles
225 * As 1) >= 2) 225 * As 1) >= 2)
226 * => (2^(timeout+13)) >= mmc->clock * 1/4 226 * => (2^(timeout+13)) >= mmc->clock * 1/4
227 * Taking log2 both the sides 227 * Taking log2 both the sides
228 * => timeout + 13 >= log2(mmc->clock/4) 228 * => timeout + 13 >= log2(mmc->clock/4)
229 * Rounding up to next power of 2 229 * Rounding up to next power of 2
230 * => timeout + 13 = log2(mmc->clock/4) + 1 230 * => timeout + 13 = log2(mmc->clock/4) + 1
231 * => timeout + 13 = fls(mmc->clock/4) 231 * => timeout + 13 = fls(mmc->clock/4)
232 */ 232 */
233 timeout = fls(mmc->clock/4); 233 timeout = fls(mmc->clock/4);
234 timeout -= 13; 234 timeout -= 13;
235 235
236 if (timeout > 14) 236 if (timeout > 14)
237 timeout = 14; 237 timeout = 14;
238 238
239 if (timeout < 0) 239 if (timeout < 0)
240 timeout = 0; 240 timeout = 0;
241 241
242 #ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC_A001 242 #ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC_A001
243 if ((timeout == 4) || (timeout == 8) || (timeout == 12)) 243 if ((timeout == 4) || (timeout == 8) || (timeout == 12))
244 timeout++; 244 timeout++;
245 #endif 245 #endif
246 246
247 #ifdef ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE
248 timeout = 0xE;
249 #endif
247 esdhc_clrsetbits32(&regs->sysctl, SYSCTL_TIMEOUT_MASK, timeout << 16); 250 esdhc_clrsetbits32(&regs->sysctl, SYSCTL_TIMEOUT_MASK, timeout << 16);
248 251
249 return 0; 252 return 0;
250 } 253 }
251 254
252 static void check_and_invalidate_dcache_range 255 static void check_and_invalidate_dcache_range
253 (struct mmc_cmd *cmd, 256 (struct mmc_cmd *cmd,
254 struct mmc_data *data) { 257 struct mmc_data *data) {
255 unsigned start = (unsigned)data->dest ; 258 unsigned start = (unsigned)data->dest ;
256 unsigned size = roundup(ARCH_DMA_MINALIGN, 259 unsigned size = roundup(ARCH_DMA_MINALIGN,
257 data->blocks*data->blocksize); 260 data->blocks*data->blocksize);
258 unsigned end = start+size ; 261 unsigned end = start+size ;
259 invalidate_dcache_range(start, end); 262 invalidate_dcache_range(start, end);
260 } 263 }
261 /* 264 /*
262 * Sends a command out on the bus. Takes the mmc pointer, 265 * Sends a command out on the bus. Takes the mmc pointer,
263 * a command pointer, and an optional data pointer. 266 * a command pointer, and an optional data pointer.
264 */ 267 */
265 static int 268 static int
266 esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) 269 esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
267 { 270 {
268 int err = 0; 271 int err = 0;
269 uint xfertyp; 272 uint xfertyp;
270 uint irqstat; 273 uint irqstat;
271 struct fsl_esdhc_cfg *cfg = mmc->priv; 274 struct fsl_esdhc_cfg *cfg = mmc->priv;
272 volatile struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base; 275 volatile struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base;
273 276
274 #ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC111 277 #ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC111
275 if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION) 278 if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION)
276 return 0; 279 return 0;
277 #endif 280 #endif
278 281
279 esdhc_write32(&regs->irqstat, -1); 282 esdhc_write32(&regs->irqstat, -1);
280 283
281 sync(); 284 sync();
282 285
283 /* Wait for the bus to be idle */ 286 /* Wait for the bus to be idle */
284 while ((esdhc_read32(&regs->prsstat) & PRSSTAT_CICHB) || 287 while ((esdhc_read32(&regs->prsstat) & PRSSTAT_CICHB) ||
285 (esdhc_read32(&regs->prsstat) & PRSSTAT_CIDHB)) 288 (esdhc_read32(&regs->prsstat) & PRSSTAT_CIDHB))
286 ; 289 ;
287 290
288 while (esdhc_read32(&regs->prsstat) & PRSSTAT_DLA) 291 while (esdhc_read32(&regs->prsstat) & PRSSTAT_DLA)
289 ; 292 ;
290 293
291 /* Wait at least 8 SD clock cycles before the next command */ 294 /* Wait at least 8 SD clock cycles before the next command */
292 /* 295 /*
293 * Note: This is way more than 8 cycles, but 1ms seems to 296 * Note: This is way more than 8 cycles, but 1ms seems to
294 * resolve timing issues with some cards 297 * resolve timing issues with some cards
295 */ 298 */
296 udelay(1000); 299 udelay(1000);
297 300
298 /* Set up for a data transfer if we have one */ 301 /* Set up for a data transfer if we have one */
299 if (data) { 302 if (data) {
300 err = esdhc_setup_data(mmc, data); 303 err = esdhc_setup_data(mmc, data);
301 if(err) 304 if(err)
302 return err; 305 return err;
303 } 306 }
304 307
305 /* Figure out the transfer arguments */ 308 /* Figure out the transfer arguments */
306 xfertyp = esdhc_xfertyp(cmd, data); 309 xfertyp = esdhc_xfertyp(cmd, data);
307 310
308 /* Mask all irqs */ 311 /* Mask all irqs */
309 esdhc_write32(&regs->irqsigen, 0); 312 esdhc_write32(&regs->irqsigen, 0);
310 313
311 /* Send the command */ 314 /* Send the command */
312 esdhc_write32(&regs->cmdarg, cmd->cmdarg); 315 esdhc_write32(&regs->cmdarg, cmd->cmdarg);
313 #if defined(CONFIG_FSL_USDHC) 316 #if defined(CONFIG_FSL_USDHC)
314 esdhc_write32(&regs->mixctrl, 317 esdhc_write32(&regs->mixctrl,
315 (esdhc_read32(&regs->mixctrl) & 0xFFFFFF80) | (xfertyp & 0x7F)); 318 (esdhc_read32(&regs->mixctrl) & 0xFFFFFF80) | (xfertyp & 0x7F));
316 esdhc_write32(&regs->xfertyp, xfertyp & 0xFFFF0000); 319 esdhc_write32(&regs->xfertyp, xfertyp & 0xFFFF0000);
317 #else 320 #else
318 esdhc_write32(&regs->xfertyp, xfertyp); 321 esdhc_write32(&regs->xfertyp, xfertyp);
319 #endif 322 #endif
320 323
321 /* Wait for the command to complete */ 324 /* Wait for the command to complete */
322 while (!(esdhc_read32(&regs->irqstat) & (IRQSTAT_CC | IRQSTAT_CTOE))) 325 while (!(esdhc_read32(&regs->irqstat) & (IRQSTAT_CC | IRQSTAT_CTOE)))
323 ; 326 ;
324 327
325 irqstat = esdhc_read32(&regs->irqstat); 328 irqstat = esdhc_read32(&regs->irqstat);
326 329
327 if (irqstat & CMD_ERR) { 330 if (irqstat & CMD_ERR) {
328 err = COMM_ERR; 331 err = COMM_ERR;
329 goto out; 332 goto out;
330 } 333 }
331 334
332 if (irqstat & IRQSTAT_CTOE) { 335 if (irqstat & IRQSTAT_CTOE) {
333 err = TIMEOUT; 336 err = TIMEOUT;
334 goto out; 337 goto out;
335 } 338 }
336 339
337 /* Workaround for ESDHC errata ENGcm03648 */ 340 /* Workaround for ESDHC errata ENGcm03648 */
338 if (!data && (cmd->resp_type & MMC_RSP_BUSY)) { 341 if (!data && (cmd->resp_type & MMC_RSP_BUSY)) {
339 int timeout = 2500; 342 int timeout = 2500;
340 343
341 /* Poll on DATA0 line for cmd with busy signal for 250 ms */ 344 /* Poll on DATA0 line for cmd with busy signal for 250 ms */
342 while (timeout > 0 && !(esdhc_read32(&regs->prsstat) & 345 while (timeout > 0 && !(esdhc_read32(&regs->prsstat) &
343 PRSSTAT_DAT0)) { 346 PRSSTAT_DAT0)) {
344 udelay(100); 347 udelay(100);
345 timeout--; 348 timeout--;
346 } 349 }
347 350
348 if (timeout <= 0) { 351 if (timeout <= 0) {
349 printf("Timeout waiting for DAT0 to go high!\n"); 352 printf("Timeout waiting for DAT0 to go high!\n");
350 err = TIMEOUT; 353 err = TIMEOUT;
351 goto out; 354 goto out;
352 } 355 }
353 } 356 }
354 357
355 /* Copy the response to the response buffer */ 358 /* Copy the response to the response buffer */
356 if (cmd->resp_type & MMC_RSP_136) { 359 if (cmd->resp_type & MMC_RSP_136) {
357 u32 cmdrsp3, cmdrsp2, cmdrsp1, cmdrsp0; 360 u32 cmdrsp3, cmdrsp2, cmdrsp1, cmdrsp0;
358 361
359 cmdrsp3 = esdhc_read32(&regs->cmdrsp3); 362 cmdrsp3 = esdhc_read32(&regs->cmdrsp3);
360 cmdrsp2 = esdhc_read32(&regs->cmdrsp2); 363 cmdrsp2 = esdhc_read32(&regs->cmdrsp2);
361 cmdrsp1 = esdhc_read32(&regs->cmdrsp1); 364 cmdrsp1 = esdhc_read32(&regs->cmdrsp1);
362 cmdrsp0 = esdhc_read32(&regs->cmdrsp0); 365 cmdrsp0 = esdhc_read32(&regs->cmdrsp0);
363 cmd->response[0] = (cmdrsp3 << 8) | (cmdrsp2 >> 24); 366 cmd->response[0] = (cmdrsp3 << 8) | (cmdrsp2 >> 24);
364 cmd->response[1] = (cmdrsp2 << 8) | (cmdrsp1 >> 24); 367 cmd->response[1] = (cmdrsp2 << 8) | (cmdrsp1 >> 24);
365 cmd->response[2] = (cmdrsp1 << 8) | (cmdrsp0 >> 24); 368 cmd->response[2] = (cmdrsp1 << 8) | (cmdrsp0 >> 24);
366 cmd->response[3] = (cmdrsp0 << 8); 369 cmd->response[3] = (cmdrsp0 << 8);
367 } else 370 } else
368 cmd->response[0] = esdhc_read32(&regs->cmdrsp0); 371 cmd->response[0] = esdhc_read32(&regs->cmdrsp0);
369 372
370 /* Wait until all of the blocks are transferred */ 373 /* Wait until all of the blocks are transferred */
371 if (data) { 374 if (data) {
372 #ifdef CONFIG_SYS_FSL_ESDHC_USE_PIO 375 #ifdef CONFIG_SYS_FSL_ESDHC_USE_PIO
373 esdhc_pio_read_write(mmc, data); 376 esdhc_pio_read_write(mmc, data);
374 #else 377 #else
375 do { 378 do {
376 irqstat = esdhc_read32(&regs->irqstat); 379 irqstat = esdhc_read32(&regs->irqstat);
377 380
378 if (irqstat & IRQSTAT_DTOE) { 381 if (irqstat & IRQSTAT_DTOE) {
379 err = TIMEOUT; 382 err = TIMEOUT;
380 goto out; 383 goto out;
381 } 384 }
382 385
383 if (irqstat & DATA_ERR) { 386 if (irqstat & DATA_ERR) {
384 err = COMM_ERR; 387 err = COMM_ERR;
385 goto out; 388 goto out;
386 } 389 }
387 } while ((irqstat & DATA_COMPLETE) != DATA_COMPLETE); 390 } while ((irqstat & DATA_COMPLETE) != DATA_COMPLETE);
388 #endif 391 #endif
389 if (data->flags & MMC_DATA_READ) 392 if (data->flags & MMC_DATA_READ)
390 check_and_invalidate_dcache_range(cmd, data); 393 check_and_invalidate_dcache_range(cmd, data);
391 } 394 }
392 395
393 out: 396 out:
394 /* Reset CMD and DATA portions on error */ 397 /* Reset CMD and DATA portions on error */
395 if (err) { 398 if (err) {
396 esdhc_write32(&regs->sysctl, esdhc_read32(&regs->sysctl) | 399 esdhc_write32(&regs->sysctl, esdhc_read32(&regs->sysctl) |
397 SYSCTL_RSTC); 400 SYSCTL_RSTC);
398 while (esdhc_read32(&regs->sysctl) & SYSCTL_RSTC) 401 while (esdhc_read32(&regs->sysctl) & SYSCTL_RSTC)
399 ; 402 ;
400 403
401 if (data) { 404 if (data) {
402 esdhc_write32(&regs->sysctl, 405 esdhc_write32(&regs->sysctl,
403 esdhc_read32(&regs->sysctl) | 406 esdhc_read32(&regs->sysctl) |
404 SYSCTL_RSTD); 407 SYSCTL_RSTD);
405 while ((esdhc_read32(&regs->sysctl) & SYSCTL_RSTD)) 408 while ((esdhc_read32(&regs->sysctl) & SYSCTL_RSTD))
406 ; 409 ;
407 } 410 }
408 } 411 }
409 412
410 esdhc_write32(&regs->irqstat, -1); 413 esdhc_write32(&regs->irqstat, -1);
411 414
412 return err; 415 return err;
413 } 416 }
414 417
415 static void set_sysctl(struct mmc *mmc, uint clock) 418 static void set_sysctl(struct mmc *mmc, uint clock)
416 { 419 {
417 int div, pre_div; 420 int div, pre_div;
418 struct fsl_esdhc_cfg *cfg = mmc->priv; 421 struct fsl_esdhc_cfg *cfg = mmc->priv;
419 volatile struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base; 422 volatile struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base;
420 int sdhc_clk = cfg->sdhc_clk; 423 int sdhc_clk = cfg->sdhc_clk;
421 uint clk; 424 uint clk;
422 425
423 if (clock < mmc->cfg->f_min) 426 if (clock < mmc->cfg->f_min)
424 clock = mmc->cfg->f_min; 427 clock = mmc->cfg->f_min;
425 428
426 if (sdhc_clk / 16 > clock) { 429 if (sdhc_clk / 16 > clock) {
427 for (pre_div = 2; pre_div < 256; pre_div *= 2) 430 for (pre_div = 2; pre_div < 256; pre_div *= 2)
428 if ((sdhc_clk / pre_div) <= (clock * 16)) 431 if ((sdhc_clk / pre_div) <= (clock * 16))
429 break; 432 break;
430 } else 433 } else
431 pre_div = 2; 434 pre_div = 2;
432 435
433 for (div = 1; div <= 16; div++) 436 for (div = 1; div <= 16; div++)
434 if ((sdhc_clk / (div * pre_div)) <= clock) 437 if ((sdhc_clk / (div * pre_div)) <= clock)
435 break; 438 break;
436 439
437 pre_div >>= 1; 440 pre_div >>= 1;
438 div -= 1; 441 div -= 1;
439 442
440 clk = (pre_div << 8) | (div << 4); 443 clk = (pre_div << 8) | (div << 4);
441 444
442 esdhc_clrbits32(&regs->sysctl, SYSCTL_CKEN); 445 esdhc_clrbits32(&regs->sysctl, SYSCTL_CKEN);
443 446
444 esdhc_clrsetbits32(&regs->sysctl, SYSCTL_CLOCK_MASK, clk); 447 esdhc_clrsetbits32(&regs->sysctl, SYSCTL_CLOCK_MASK, clk);
445 448
446 udelay(10000); 449 udelay(10000);
447 450
448 clk = SYSCTL_PEREN | SYSCTL_CKEN; 451 clk = SYSCTL_PEREN | SYSCTL_CKEN;
449 452
450 esdhc_setbits32(&regs->sysctl, clk); 453 esdhc_setbits32(&regs->sysctl, clk);
451 } 454 }
452 455
453 static void esdhc_set_ios(struct mmc *mmc) 456 static void esdhc_set_ios(struct mmc *mmc)
454 { 457 {
455 struct fsl_esdhc_cfg *cfg = mmc->priv; 458 struct fsl_esdhc_cfg *cfg = mmc->priv;
456 struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base; 459 struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base;
457 460
458 /* Set the clock speed */ 461 /* Set the clock speed */
459 set_sysctl(mmc, mmc->clock); 462 set_sysctl(mmc, mmc->clock);
460 463
461 /* Set the bus width */ 464 /* Set the bus width */
462 esdhc_clrbits32(&regs->proctl, PROCTL_DTW_4 | PROCTL_DTW_8); 465 esdhc_clrbits32(&regs->proctl, PROCTL_DTW_4 | PROCTL_DTW_8);
463 466
464 if (mmc->bus_width == 4) 467 if (mmc->bus_width == 4)
465 esdhc_setbits32(&regs->proctl, PROCTL_DTW_4); 468 esdhc_setbits32(&regs->proctl, PROCTL_DTW_4);
466 else if (mmc->bus_width == 8) 469 else if (mmc->bus_width == 8)
467 esdhc_setbits32(&regs->proctl, PROCTL_DTW_8); 470 esdhc_setbits32(&regs->proctl, PROCTL_DTW_8);
468 471
469 } 472 }
470 473
471 static int esdhc_init(struct mmc *mmc) 474 static int esdhc_init(struct mmc *mmc)
472 { 475 {
473 struct fsl_esdhc_cfg *cfg = mmc->priv; 476 struct fsl_esdhc_cfg *cfg = mmc->priv;
474 struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base; 477 struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base;
475 int timeout = 1000; 478 int timeout = 1000;
476 479
477 /* Reset the entire host controller */ 480 /* Reset the entire host controller */
478 esdhc_setbits32(&regs->sysctl, SYSCTL_RSTA); 481 esdhc_setbits32(&regs->sysctl, SYSCTL_RSTA);
479 482
480 /* Wait until the controller is available */ 483 /* Wait until the controller is available */
481 while ((esdhc_read32(&regs->sysctl) & SYSCTL_RSTA) && --timeout) 484 while ((esdhc_read32(&regs->sysctl) & SYSCTL_RSTA) && --timeout)
482 udelay(1000); 485 udelay(1000);
483 486
484 #ifndef ARCH_MXC 487 #ifndef ARCH_MXC
485 /* Enable cache snooping */ 488 /* Enable cache snooping */
486 esdhc_write32(&regs->scr, 0x00000040); 489 esdhc_write32(&regs->scr, 0x00000040);
487 #endif 490 #endif
488 491
489 esdhc_setbits32(&regs->sysctl, SYSCTL_HCKEN | SYSCTL_IPGEN); 492 esdhc_setbits32(&regs->sysctl, SYSCTL_HCKEN | SYSCTL_IPGEN);
490 493
491 /* Set the initial clock speed */ 494 /* Set the initial clock speed */
492 mmc_set_clock(mmc, 400000); 495 mmc_set_clock(mmc, 400000);
493 496
494 /* Disable the BRR and BWR bits in IRQSTAT */ 497 /* Disable the BRR and BWR bits in IRQSTAT */
495 esdhc_clrbits32(&regs->irqstaten, IRQSTATEN_BRR | IRQSTATEN_BWR); 498 esdhc_clrbits32(&regs->irqstaten, IRQSTATEN_BRR | IRQSTATEN_BWR);
496 499
497 /* Put the PROCTL reg back to the default */ 500 /* Put the PROCTL reg back to the default */
498 esdhc_write32(&regs->proctl, PROCTL_INIT); 501 esdhc_write32(&regs->proctl, PROCTL_INIT);
499 502
500 /* Set timout to the maximum value */ 503 /* Set timout to the maximum value */
501 esdhc_clrsetbits32(&regs->sysctl, SYSCTL_TIMEOUT_MASK, 14 << 16); 504 esdhc_clrsetbits32(&regs->sysctl, SYSCTL_TIMEOUT_MASK, 14 << 16);
502 505
503 return 0; 506 return 0;
504 } 507 }
505 508
506 static int esdhc_getcd(struct mmc *mmc) 509 static int esdhc_getcd(struct mmc *mmc)
507 { 510 {
508 struct fsl_esdhc_cfg *cfg = mmc->priv; 511 struct fsl_esdhc_cfg *cfg = mmc->priv;
509 struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base; 512 struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base;
510 int timeout = 1000; 513 int timeout = 1000;
511 514
512 #ifdef CONFIG_ESDHC_DETECT_QUIRK 515 #ifdef CONFIG_ESDHC_DETECT_QUIRK
513 if (CONFIG_ESDHC_DETECT_QUIRK) 516 if (CONFIG_ESDHC_DETECT_QUIRK)
514 return 1; 517 return 1;
515 #endif 518 #endif
516 while (!(esdhc_read32(&regs->prsstat) & PRSSTAT_CINS) && --timeout) 519 while (!(esdhc_read32(&regs->prsstat) & PRSSTAT_CINS) && --timeout)
517 udelay(1000); 520 udelay(1000);
518 521
519 return timeout > 0; 522 return timeout > 0;
520 } 523 }
521 524
522 static void esdhc_reset(struct fsl_esdhc *regs) 525 static void esdhc_reset(struct fsl_esdhc *regs)
523 { 526 {
524 unsigned long timeout = 100; /* wait max 100 ms */ 527 unsigned long timeout = 100; /* wait max 100 ms */
525 528
526 /* reset the controller */ 529 /* reset the controller */
527 esdhc_setbits32(&regs->sysctl, SYSCTL_RSTA); 530 esdhc_setbits32(&regs->sysctl, SYSCTL_RSTA);
528 531
529 /* hardware clears the bit when it is done */ 532 /* hardware clears the bit when it is done */
530 while ((esdhc_read32(&regs->sysctl) & SYSCTL_RSTA) && --timeout) 533 while ((esdhc_read32(&regs->sysctl) & SYSCTL_RSTA) && --timeout)
531 udelay(1000); 534 udelay(1000);
532 if (!timeout) 535 if (!timeout)
533 printf("MMC/SD: Reset never completed.\n"); 536 printf("MMC/SD: Reset never completed.\n");
534 } 537 }
535 538
536 static const struct mmc_ops esdhc_ops = { 539 static const struct mmc_ops esdhc_ops = {
537 .send_cmd = esdhc_send_cmd, 540 .send_cmd = esdhc_send_cmd,
538 .set_ios = esdhc_set_ios, 541 .set_ios = esdhc_set_ios,
539 .init = esdhc_init, 542 .init = esdhc_init,
540 .getcd = esdhc_getcd, 543 .getcd = esdhc_getcd,
541 }; 544 };
542 545
543 int fsl_esdhc_initialize(bd_t *bis, struct fsl_esdhc_cfg *cfg) 546 int fsl_esdhc_initialize(bd_t *bis, struct fsl_esdhc_cfg *cfg)
544 { 547 {
545 struct fsl_esdhc *regs; 548 struct fsl_esdhc *regs;
546 struct mmc *mmc; 549 struct mmc *mmc;
547 u32 caps, voltage_caps; 550 u32 caps, voltage_caps;
548 551
549 if (!cfg) 552 if (!cfg)
550 return -1; 553 return -1;
551 554
552 regs = (struct fsl_esdhc *)cfg->esdhc_base; 555 regs = (struct fsl_esdhc *)cfg->esdhc_base;
553 556
554 /* First reset the eSDHC controller */ 557 /* First reset the eSDHC controller */
555 esdhc_reset(regs); 558 esdhc_reset(regs);
556 559
557 esdhc_setbits32(&regs->sysctl, SYSCTL_PEREN | SYSCTL_HCKEN 560 esdhc_setbits32(&regs->sysctl, SYSCTL_PEREN | SYSCTL_HCKEN
558 | SYSCTL_IPGEN | SYSCTL_CKEN); 561 | SYSCTL_IPGEN | SYSCTL_CKEN);
559 562
560 memset(&cfg->cfg, 0, sizeof(cfg->cfg)); 563 memset(&cfg->cfg, 0, sizeof(cfg->cfg));
561 564
562 voltage_caps = 0; 565 voltage_caps = 0;
563 caps = regs->hostcapblt; 566 caps = regs->hostcapblt;
564 567
565 #ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC135 568 #ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC135
566 caps = caps & ~(ESDHC_HOSTCAPBLT_SRS | 569 caps = caps & ~(ESDHC_HOSTCAPBLT_SRS |
567 ESDHC_HOSTCAPBLT_VS18 | ESDHC_HOSTCAPBLT_VS30); 570 ESDHC_HOSTCAPBLT_VS18 | ESDHC_HOSTCAPBLT_VS30);
568 #endif 571 #endif
569 572
570 /* T4240 host controller capabilities register should have VS33 bit */ 573 /* T4240 host controller capabilities register should have VS33 bit */
571 #ifdef CONFIG_SYS_FSL_MMC_HAS_CAPBLT_VS33 574 #ifdef CONFIG_SYS_FSL_MMC_HAS_CAPBLT_VS33
572 caps = caps | ESDHC_HOSTCAPBLT_VS33; 575 caps = caps | ESDHC_HOSTCAPBLT_VS33;
573 #endif 576 #endif
574 577
575 if (caps & ESDHC_HOSTCAPBLT_VS18) 578 if (caps & ESDHC_HOSTCAPBLT_VS18)
576 voltage_caps |= MMC_VDD_165_195; 579 voltage_caps |= MMC_VDD_165_195;
577 if (caps & ESDHC_HOSTCAPBLT_VS30) 580 if (caps & ESDHC_HOSTCAPBLT_VS30)
578 voltage_caps |= MMC_VDD_29_30 | MMC_VDD_30_31; 581 voltage_caps |= MMC_VDD_29_30 | MMC_VDD_30_31;
579 if (caps & ESDHC_HOSTCAPBLT_VS33) 582 if (caps & ESDHC_HOSTCAPBLT_VS33)
580 voltage_caps |= MMC_VDD_32_33 | MMC_VDD_33_34; 583 voltage_caps |= MMC_VDD_32_33 | MMC_VDD_33_34;
581 584
582 cfg->cfg.name = "FSL_SDHC"; 585 cfg->cfg.name = "FSL_SDHC";
583 cfg->cfg.ops = &esdhc_ops; 586 cfg->cfg.ops = &esdhc_ops;
584 #ifdef CONFIG_SYS_SD_VOLTAGE 587 #ifdef CONFIG_SYS_SD_VOLTAGE
585 cfg->cfg.voltages = CONFIG_SYS_SD_VOLTAGE; 588 cfg->cfg.voltages = CONFIG_SYS_SD_VOLTAGE;
586 #else 589 #else
587 cfg->cfg.voltages = MMC_VDD_32_33 | MMC_VDD_33_34; 590 cfg->cfg.voltages = MMC_VDD_32_33 | MMC_VDD_33_34;
588 #endif 591 #endif
589 if ((cfg->cfg.voltages & voltage_caps) == 0) { 592 if ((cfg->cfg.voltages & voltage_caps) == 0) {
590 printf("voltage not supported by controller\n"); 593 printf("voltage not supported by controller\n");
591 return -1; 594 return -1;
592 } 595 }
593 596
594 cfg->cfg.host_caps = MMC_MODE_4BIT | MMC_MODE_8BIT | MMC_MODE_HC; 597 cfg->cfg.host_caps = MMC_MODE_4BIT | MMC_MODE_8BIT | MMC_MODE_HC;
595 598
596 if (cfg->max_bus_width > 0) { 599 if (cfg->max_bus_width > 0) {
597 if (cfg->max_bus_width < 8) 600 if (cfg->max_bus_width < 8)
598 cfg->cfg.host_caps &= ~MMC_MODE_8BIT; 601 cfg->cfg.host_caps &= ~MMC_MODE_8BIT;
599 if (cfg->max_bus_width < 4) 602 if (cfg->max_bus_width < 4)
600 cfg->cfg.host_caps &= ~MMC_MODE_4BIT; 603 cfg->cfg.host_caps &= ~MMC_MODE_4BIT;
601 } 604 }
602 605
603 if (caps & ESDHC_HOSTCAPBLT_HSS) 606 if (caps & ESDHC_HOSTCAPBLT_HSS)
604 cfg->cfg.host_caps |= MMC_MODE_HS_52MHz | MMC_MODE_HS; 607 cfg->cfg.host_caps |= MMC_MODE_HS_52MHz | MMC_MODE_HS;
605 608
606 #ifdef CONFIG_ESDHC_DETECT_8_BIT_QUIRK 609 #ifdef CONFIG_ESDHC_DETECT_8_BIT_QUIRK
607 if (CONFIG_ESDHC_DETECT_8_BIT_QUIRK) 610 if (CONFIG_ESDHC_DETECT_8_BIT_QUIRK)
608 cfg->cfg.host_caps &= ~MMC_MODE_8BIT; 611 cfg->cfg.host_caps &= ~MMC_MODE_8BIT;
609 #endif 612 #endif
610 613
611 cfg->cfg.f_min = 400000; 614 cfg->cfg.f_min = 400000;
612 cfg->cfg.f_max = MIN(gd->arch.sdhc_clk, 52000000); 615 cfg->cfg.f_max = MIN(gd->arch.sdhc_clk, 52000000);
613 616
614 cfg->cfg.b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT; 617 cfg->cfg.b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
615 618
616 mmc = mmc_create(&cfg->cfg, cfg); 619 mmc = mmc_create(&cfg->cfg, cfg);
617 if (mmc == NULL) 620 if (mmc == NULL)
618 return -1; 621 return -1;
619 622
620 return 0; 623 return 0;
621 } 624 }
622 625
623 int fsl_esdhc_mmc_init(bd_t *bis) 626 int fsl_esdhc_mmc_init(bd_t *bis)
624 { 627 {
625 struct fsl_esdhc_cfg *cfg; 628 struct fsl_esdhc_cfg *cfg;
626 629
627 cfg = calloc(sizeof(struct fsl_esdhc_cfg), 1); 630 cfg = calloc(sizeof(struct fsl_esdhc_cfg), 1);
628 cfg->esdhc_base = CONFIG_SYS_FSL_ESDHC_ADDR; 631 cfg->esdhc_base = CONFIG_SYS_FSL_ESDHC_ADDR;
629 cfg->sdhc_clk = gd->arch.sdhc_clk; 632 cfg->sdhc_clk = gd->arch.sdhc_clk;
630 return fsl_esdhc_initialize(bis, cfg); 633 return fsl_esdhc_initialize(bis, cfg);
631 } 634 }
632 635
633 #ifdef CONFIG_OF_LIBFDT 636 #ifdef CONFIG_OF_LIBFDT
634 void fdt_fixup_esdhc(void *blob, bd_t *bd) 637 void fdt_fixup_esdhc(void *blob, bd_t *bd)
635 { 638 {
636 const char *compat = "fsl,esdhc"; 639 const char *compat = "fsl,esdhc";
637 640
638 #ifdef CONFIG_FSL_ESDHC_PIN_MUX 641 #ifdef CONFIG_FSL_ESDHC_PIN_MUX
639 if (!hwconfig("esdhc")) { 642 if (!hwconfig("esdhc")) {
640 do_fixup_by_compat(blob, compat, "status", "disabled", 643 do_fixup_by_compat(blob, compat, "status", "disabled",
641 8 + 1, 1); 644 8 + 1, 1);
642 return; 645 return;
643 } 646 }
644 #endif 647 #endif
645 648
646 do_fixup_by_compat_u32(blob, compat, "clock-frequency", 649 do_fixup_by_compat_u32(blob, compat, "clock-frequency",
647 gd->arch.sdhc_clk, 1); 650 gd->arch.sdhc_clk, 1);
648 651
649 do_fixup_by_compat(blob, compat, "status", "okay", 652 do_fixup_by_compat(blob, compat, "status", "okay",
650 4 + 1, 1); 653 4 + 1, 1);
651 } 654 }
652 #endif 655 #endif
653 656