xref: /OK3568_Linux_fs/u-boot/arch/arm/cpu/armv8/fsl-layerscape/doc/README.lsch3 (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#
2*4882a593Smuzhiyun# Copyright 2014-2015 Freescale Semiconductor
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# SPDX-License-Identifier:      GPL-2.0+
5*4882a593Smuzhiyun#
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunFreescale LayerScape with Chassis Generation 3
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunThis architecture supports Freescale ARMv8 SoCs with Chassis generation 3,
10*4882a593Smuzhiyunfor example LS2080A.
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunDDR Layout
13*4882a593Smuzhiyun============
14*4882a593SmuzhiyunEntire DDR region splits into two regions.
15*4882a593Smuzhiyun - Region 1 is at address 0x8000_0000 to 0xffff_ffff.
16*4882a593Smuzhiyun - Region 2 is at 0x80_8000_0000 to the top of total memory,
17*4882a593Smuzhiyun   for example 16GB, 0x83_ffff_ffff.
18*4882a593Smuzhiyun
19*4882a593SmuzhiyunAll DDR memory is marked as cache-enabled.
20*4882a593Smuzhiyun
21*4882a593SmuzhiyunWhen MC and Debug server is enabled, they carve 512MB away from the high
22*4882a593Smuzhiyunend of DDR. For example, if the total DDR is 16GB, it shrinks to 15.5GB
23*4882a593Smuzhiyunwith MC and Debug server enabled. Linux only sees 15.5GB.
24*4882a593Smuzhiyun
25*4882a593SmuzhiyunThe reserved 512MB layout looks like
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun   +---------------+ <-- top/end of memory
28*4882a593Smuzhiyun   |    256MB      |  debug server
29*4882a593Smuzhiyun   +---------------+
30*4882a593Smuzhiyun   |    256MB      |  MC
31*4882a593Smuzhiyun   +---------------+
32*4882a593Smuzhiyun   |     ...       |
33*4882a593Smuzhiyun
34*4882a593SmuzhiyunMC requires the memory to be aligned with 512MB, so even debug server is
35*4882a593Smuzhiyunnot enabled, 512MB is reserved, not 256MB.
36*4882a593Smuzhiyun
37*4882a593SmuzhiyunFlash Layout
38*4882a593Smuzhiyun============
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun(1) A typical layout of various images (including Linux and other firmware images)
41*4882a593Smuzhiyun   is shown below considering a 32MB NOR flash device present on most
42*4882a593Smuzhiyun   pre-silicon platforms (simulator and emulator):
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun	-------------------------
45*4882a593Smuzhiyun	| 	FIT Image	|
46*4882a593Smuzhiyun	| (linux + DTB + RFS)	|
47*4882a593Smuzhiyun	------------------------- ----> 0x0120_0000
48*4882a593Smuzhiyun	| 	Debug Server FW |
49*4882a593Smuzhiyun	------------------------- ----> 0x00C0_0000
50*4882a593Smuzhiyun	|	AIOP FW 	|
51*4882a593Smuzhiyun	------------------------- ----> 0x0070_0000
52*4882a593Smuzhiyun	|	MC FW 		|
53*4882a593Smuzhiyun	------------------------- ----> 0x006C_0000
54*4882a593Smuzhiyun	| 	MC DPL Blob 	|
55*4882a593Smuzhiyun	------------------------- ----> 0x0020_0000
56*4882a593Smuzhiyun	| 	BootLoader + Env|
57*4882a593Smuzhiyun	------------------------- ----> 0x0000_1000
58*4882a593Smuzhiyun	|	PBI 		|
59*4882a593Smuzhiyun	------------------------- ----> 0x0000_0080
60*4882a593Smuzhiyun	|	RCW 		|
61*4882a593Smuzhiyun	------------------------- ----> 0x0000_0000
62*4882a593Smuzhiyun
63*4882a593Smuzhiyun	32-MB NOR flash layout for pre-silicon platforms (simulator and emulator)
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun(2) A typical layout of various images (including Linux and other firmware images)
66*4882a593Smuzhiyun    is shown below considering a 128MB NOR flash device present on QDS and RDB
67*4882a593Smuzhiyun    boards:
68*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8800_0000 ---
69*4882a593Smuzhiyun	|	.. Unused .. (7M)		|			|
70*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8790_0000	|
71*4882a593Smuzhiyun	| FIT Image (linux + DTB + RFS)	(40M)	|			|
72*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8510_0000	|
73*4882a593Smuzhiyun	|	PHY firmware (2M)	 	|			|
74*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_84F0_0000	| 64K
75*4882a593Smuzhiyun	|	Debug Server FW (2M)		|			| Alt
76*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_84D0_0000	| Bank
77*4882a593Smuzhiyun	|	AIOP FW (4M)			|			|
78*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8490_0000 (vbank4)
79*4882a593Smuzhiyun	|	MC DPC Blob (1M) 		|			|
80*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8480_0000	|
81*4882a593Smuzhiyun	|	MC DPL Blob (1M)		|			|
82*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8470_0000	|
83*4882a593Smuzhiyun	| 	MC FW (4M)			|			|
84*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8430_0000	|
85*4882a593Smuzhiyun	|	BootLoader Environment (1M) 	|			|
86*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8420_0000	|
87*4882a593Smuzhiyun	|	BootLoader (1M)			|			|
88*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8410_0000	|
89*4882a593Smuzhiyun	|	RCW and PBI (1M) 		|			|
90*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8400_0000 ---
91*4882a593Smuzhiyun	|	.. Unused .. (7M)		|			|
92*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8390_0000	|
93*4882a593Smuzhiyun	| FIT Image (linux + DTB + RFS)	(40M)	|			|
94*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8110_0000	|
95*4882a593Smuzhiyun	|	PHY firmware (2M)	 	|			|
96*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_80F0_0000	| 64K
97*4882a593Smuzhiyun	|	Debug Server FW (2M)		|			| Bank
98*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_80D0_0000	|
99*4882a593Smuzhiyun	|	AIOP FW (4M)			|			|
100*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8090_0000 (vbank0)
101*4882a593Smuzhiyun	|	MC DPC Blob (1M) 		|			|
102*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8080_0000	|
103*4882a593Smuzhiyun	|	MC DPL Blob (1M)		|			|
104*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8070_0000	|
105*4882a593Smuzhiyun	| 	MC FW (4M)			|			|
106*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8030_0000	|
107*4882a593Smuzhiyun	|	BootLoader Environment (1M) 	|			|
108*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8020_0000	|
109*4882a593Smuzhiyun	|	BootLoader (1M)			|			|
110*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8010_0000	|
111*4882a593Smuzhiyun	|	RCW and PBI (1M) 		|			|
112*4882a593Smuzhiyun	----------------------------------------- ----> 0x5_8000_0000 ---
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun	128-MB NOR flash layout for QDS and RDB boards
115*4882a593Smuzhiyun
116*4882a593SmuzhiyunEnvironment Variables
117*4882a593Smuzhiyun=====================
118*4882a593Smuzhiyunmcboottimeout:	MC boot timeout in milliseconds. If this variable is not defined
119*4882a593Smuzhiyun		the value CONFIG_SYS_LS_MC_BOOT_TIMEOUT_MS will be assumed.
120*4882a593Smuzhiyun
121*4882a593Smuzhiyunmcmemsize:	MC DRAM block size. If this variable is not defined, the value
122*4882a593Smuzhiyun		CONFIG_SYS_LS_MC_DRAM_BLOCK_MIN_SIZE will be assumed.
123*4882a593Smuzhiyun
124*4882a593Smuzhiyunmcinitcmd:	This environment variable is defined to initiate MC and DPL deployment
125*4882a593Smuzhiyun		from the location where it is stored(NOR, NAND, SD, SATA, USB)during
126*4882a593Smuzhiyun		u-boot booting.If this variable is not defined then MC_BOOT_ENV_VAR
127*4882a593Smuzhiyun		will be null and MC will not be booted and DPL will not be applied
128*4882a593Smuzhiyun		during U-boot booting.However the MC, DPC and DPL can be applied from
129*4882a593Smuzhiyun		console independently.
130*4882a593Smuzhiyun		The variable needs to be set from the console once and then on
131*4882a593Smuzhiyun		rebooting the parameters set in the variable will automatically be
132*4882a593Smuzhiyun		executed. The commmand is demostrated taking an example of mc boot
133*4882a593Smuzhiyun		using NOR Flash i.e. MC, DPL, and DPC is stored in the NOR flash:
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun		cp.b 0xa0000000 0x580300000 $filesize
136*4882a593Smuzhiyun		cp.b 0x80000000 0x580800000 $filesize
137*4882a593Smuzhiyun		cp.b 0x90000000 0x580700000 $filesize
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun		setenv mcinitcmd 'fsl_mc start mc 0x580300000 0x580800000'
140*4882a593Smuzhiyun
141*4882a593Smuzhiyun		If only linux is to be booted then the mcinitcmd environment should be set as
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun		setenv mcinitcmd 'fsl_mc start mc 0x580300000 0x580800000;fsl_mc apply DPL 0x580700000'
144*4882a593Smuzhiyun
145*4882a593Smuzhiyun		Here the addresses 0xa0000000, 0x80000000, 0x80000000 are of DDR to where
146*4882a593Smuzhiyun		MC binary, DPC binary and DPL binary are stored and 0x580300000, 0x580800000
147*4882a593Smuzhiyun		and 0x580700000 are addresses in NOR where these are copied. It is to be
148*4882a593Smuzhiyun		noted that these addresses in 'fsl_mc start mc 0x580300000 0x580800000;fsl_mc apply DPL 0x580700000'
149*4882a593Smuzhiyun		can be replaced with the addresses of DDR to
150*4882a593Smuzhiyun		which these will be copied in case of these binaries being stored in other
151*4882a593Smuzhiyun		devices like SATA, USB, NAND, SD etc.
152*4882a593Smuzhiyun
153*4882a593SmuzhiyunBooting from NAND
154*4882a593Smuzhiyun-------------------
155*4882a593SmuzhiyunBooting from NAND requires two images, RCW and u-boot-with-spl.bin.
156*4882a593SmuzhiyunThe difference between NAND boot RCW image and NOR boot image is the PBI
157*4882a593Smuzhiyuncommand sequence. Below is one example for PBI commands for QDS which uses
158*4882a593SmuzhiyunNAND device with 2KB/page, block size 128KB.
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun1) CCSR 4-byte write to 0x00e00404, data=0x00000000
161*4882a593Smuzhiyun2) CCSR 4-byte write to 0x00e00400, data=0x1800a000
162*4882a593SmuzhiyunThe above two commands set bootloc register to 0x00000000_1800a000 where
163*4882a593Smuzhiyunthe u-boot code will be running in OCRAM.
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun3) Block Copy: SRC=0x0107, SRC_ADDR=0x00020000, DEST_ADDR=0x1800a000,
166*4882a593SmuzhiyunBLOCK_SIZE=0x00014000
167*4882a593SmuzhiyunThis command copies u-boot image from NAND device into OCRAM. The values need
168*4882a593Smuzhiyunto adjust accordingly.
169*4882a593Smuzhiyun
170*4882a593SmuzhiyunSRC		should match the cfg_rcw_src, the reset config pins. It depends
171*4882a593Smuzhiyun		on the NAND device. See reference manual for cfg_rcw_src.
172*4882a593SmuzhiyunSRC_ADDR	is the offset of u-boot-with-spl.bin image in NAND device. In
173*4882a593Smuzhiyun		the example above, 128KB. For easy maintenance, we put it at
174*4882a593Smuzhiyun		the beginning of next block from RCW.
175*4882a593SmuzhiyunDEST_ADDR	is fixed at 0x1800a000, matching bootloc set above.
176*4882a593SmuzhiyunBLOCK_SIZE	is the size to be copied by PBI.
177*4882a593Smuzhiyun
178*4882a593SmuzhiyunRCW image should be written to the beginning of NAND device. Example of using
179*4882a593Smuzhiyunu-boot command
180*4882a593Smuzhiyun
181*4882a593Smuzhiyunnand write <rcw image in memory> 0 <size of rcw image>
182*4882a593Smuzhiyun
183*4882a593SmuzhiyunTo form the NAND image, build u-boot with NAND config, for example,
184*4882a593Smuzhiyunls2080aqds_nand_defconfig. The image needed is u-boot-with-spl.bin.
185*4882a593SmuzhiyunThe u-boot image should be written to match SRC_ADDR, in above example 0x20000.
186*4882a593Smuzhiyun
187*4882a593Smuzhiyunnand write <u-boot image in memory> 200000 <size of u-boot image>
188*4882a593Smuzhiyun
189*4882a593SmuzhiyunWith these two images in NAND device, the board can boot from NAND.
190*4882a593Smuzhiyun
191*4882a593SmuzhiyunAnother example for RDB boards,
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun1) CCSR 4-byte write to 0x00e00404, data=0x00000000
194*4882a593Smuzhiyun2) CCSR 4-byte write to 0x00e00400, data=0x1800a000
195*4882a593Smuzhiyun3) Block Copy: SRC=0x0119, SRC_ADDR=0x00080000, DEST_ADDR=0x1800a000,
196*4882a593SmuzhiyunBLOCK_SIZE=0x00014000
197*4882a593Smuzhiyun
198*4882a593Smuzhiyunnand write <rcw image in memory> 0 <size of rcw image>
199*4882a593Smuzhiyunnand write <u-boot image in memory> 80000 <size of u-boot image>
200*4882a593Smuzhiyun
201*4882a593SmuzhiyunNotice the difference from QDS is SRC, SRC_ADDR and the offset of u-boot image
202*4882a593Smuzhiyunto match board NAND device with 4KB/page, block size 512KB.
203*4882a593Smuzhiyun
204*4882a593SmuzhiyunMMU Translation Tables
205*4882a593Smuzhiyun======================
206*4882a593Smuzhiyun
207*4882a593Smuzhiyun(1) Early MMU Tables:
208*4882a593Smuzhiyun
209*4882a593Smuzhiyun     Level 0                   Level 1                   Level 2
210*4882a593Smuzhiyun------------------        ------------------        ------------------
211*4882a593Smuzhiyun| 0x00_0000_0000 | -----> | 0x00_0000_0000 | -----> | 0x00_0000_0000 |
212*4882a593Smuzhiyun------------------        ------------------        ------------------
213*4882a593Smuzhiyun| 0x80_0000_0000 | --|    | 0x00_4000_0000 |        | 0x00_0020_0000 |
214*4882a593Smuzhiyun------------------   |    ------------------        ------------------
215*4882a593Smuzhiyun|    invalid     |   |    | 0x00_8000_0000 |        | 0x00_0040_0000 |
216*4882a593Smuzhiyun------------------   |    ------------------        ------------------
217*4882a593Smuzhiyun                     |    | 0x00_c000_0000 |        | 0x00_0060_0000 |
218*4882a593Smuzhiyun                     |    ------------------        ------------------
219*4882a593Smuzhiyun                     |    | 0x01_0000_0000 |        | 0x00_0080_0000 |
220*4882a593Smuzhiyun                     |    ------------------        ------------------
221*4882a593Smuzhiyun                     |            ...                      ...
222*4882a593Smuzhiyun                     |    ------------------
223*4882a593Smuzhiyun                     |    | 0x05_8000_0000 |  --|
224*4882a593Smuzhiyun                     |    ------------------    |
225*4882a593Smuzhiyun                     |    | 0x05_c000_0000 |    |
226*4882a593Smuzhiyun                     |    ------------------    |
227*4882a593Smuzhiyun                     |            ...           |
228*4882a593Smuzhiyun                     |    ------------------    |   ------------------
229*4882a593Smuzhiyun                     |--> | 0x80_0000_0000 |    |-> | 0x00_3000_0000 |
230*4882a593Smuzhiyun                          ------------------        ------------------
231*4882a593Smuzhiyun                          | 0x80_4000_0000 |        | 0x00_3020_0000 |
232*4882a593Smuzhiyun                          ------------------        ------------------
233*4882a593Smuzhiyun                          | 0x80_8000_0000 |        | 0x00_3040_0000 |
234*4882a593Smuzhiyun                          ------------------        ------------------
235*4882a593Smuzhiyun                          | 0x80_c000_0000 |        | 0x00_3060_0000 |
236*4882a593Smuzhiyun                          ------------------        ------------------
237*4882a593Smuzhiyun                          | 0x81_0000_0000 |        | 0x00_3080_0000 |
238*4882a593Smuzhiyun                          ------------------        ------------------
239*4882a593Smuzhiyun			         ...	                   ...
240*4882a593Smuzhiyun
241*4882a593Smuzhiyun(2) Final MMU Tables:
242*4882a593Smuzhiyun
243*4882a593Smuzhiyun     Level 0                   Level 1                   Level 2
244*4882a593Smuzhiyun------------------        ------------------        ------------------
245*4882a593Smuzhiyun| 0x00_0000_0000 | -----> | 0x00_0000_0000 | -----> | 0x00_0000_0000 |
246*4882a593Smuzhiyun------------------        ------------------        ------------------
247*4882a593Smuzhiyun| 0x80_0000_0000 | --|    | 0x00_4000_0000 |        | 0x00_0020_0000 |
248*4882a593Smuzhiyun------------------   |    ------------------        ------------------
249*4882a593Smuzhiyun|    invalid     |   |    | 0x00_8000_0000 |        | 0x00_0040_0000 |
250*4882a593Smuzhiyun------------------   |    ------------------        ------------------
251*4882a593Smuzhiyun                     |    | 0x00_c000_0000 |        | 0x00_0060_0000 |
252*4882a593Smuzhiyun                     |    ------------------        ------------------
253*4882a593Smuzhiyun                     |    | 0x01_0000_0000 |        | 0x00_0080_0000 |
254*4882a593Smuzhiyun                     |    ------------------        ------------------
255*4882a593Smuzhiyun                     |            ...                      ...
256*4882a593Smuzhiyun                     |    ------------------
257*4882a593Smuzhiyun                     |    | 0x08_0000_0000 | --|
258*4882a593Smuzhiyun                     |    ------------------   |
259*4882a593Smuzhiyun                     |    | 0x08_4000_0000 |   |
260*4882a593Smuzhiyun                     |    ------------------   |
261*4882a593Smuzhiyun                     |            ...          |
262*4882a593Smuzhiyun                     |    ------------------   |    ------------------
263*4882a593Smuzhiyun                     |--> | 0x80_0000_0000 |   |--> | 0x08_0000_0000 |
264*4882a593Smuzhiyun                          ------------------        ------------------
265*4882a593Smuzhiyun                          | 0x80_4000_0000 |        | 0x08_0020_0000 |
266*4882a593Smuzhiyun                          ------------------        ------------------
267*4882a593Smuzhiyun                          | 0x80_8000_0000 |        | 0x08_0040_0000 |
268*4882a593Smuzhiyun                          ------------------        ------------------
269*4882a593Smuzhiyun                          | 0x80_c000_0000 |        | 0x08_0060_0000 |
270*4882a593Smuzhiyun                          ------------------        ------------------
271*4882a593Smuzhiyun                          | 0x81_0000_0000 |        | 0x08_0080_0000 |
272*4882a593Smuzhiyun                          ------------------        ------------------
273*4882a593Smuzhiyun			         ...	                   ...
274*4882a593Smuzhiyun
275*4882a593Smuzhiyun
276*4882a593SmuzhiyunDPAA2 commands to manage Management Complex (MC)
277*4882a593Smuzhiyun------------------------------------------------
278*4882a593SmuzhiyunDPAA2 commands has been introduced to manage Management Complex
279*4882a593Smuzhiyun(MC). These commands are used to start mc, aiop and apply DPL
280*4882a593Smuzhiyunfrom u-boot command prompt.
281*4882a593Smuzhiyun
282*4882a593SmuzhiyunPlease note Management complex Firmware(MC), DPL and DPC are no
283*4882a593Smuzhiyunmore deployed during u-boot boot-sequence.
284*4882a593Smuzhiyun
285*4882a593SmuzhiyunCommands:
286*4882a593Smuzhiyuna) fsl_mc start mc <FW_addr> <DPC_addr> - Start Management Complex
287*4882a593Smuzhiyunb) fsl_mc apply DPL <DPL_addr> - Apply DPL file
288*4882a593Smuzhiyunc) fsl_mc start aiop <FW_addr> - Start AIOP
289*4882a593Smuzhiyun
290*4882a593SmuzhiyunHow to use commands :-
291*4882a593Smuzhiyun1. Command sequence for u-boot ethernet:
292*4882a593Smuzhiyun   a) fsl_mc start mc <FW_addr> <DPC_addr> - Start Management Complex
293*4882a593Smuzhiyun   b) DPMAC net-devices are now available for use
294*4882a593Smuzhiyun
295*4882a593Smuzhiyun   Example-
296*4882a593Smuzhiyun	Assumption: MC firmware, DPL and DPC dtb is already programmed
297*4882a593Smuzhiyun	on NOR flash.
298*4882a593Smuzhiyun
299*4882a593Smuzhiyun	=> fsl_mc start mc 580300000 580800000
300*4882a593Smuzhiyun	=> setenv ethact DPMAC1@xgmii
301*4882a593Smuzhiyun	=> ping $serverip
302*4882a593Smuzhiyun
303*4882a593Smuzhiyun2. Command sequence for Linux boot:
304*4882a593Smuzhiyun   a) fsl_mc start mc <FW_addr> <DPC_addr> - Start Management Complex
305*4882a593Smuzhiyun   b) fsl_mc apply DPL <DPL_addr> - Apply DPL file
306*4882a593Smuzhiyun   c) No DPMAC net-devices are available for use in u-boot
307*4882a593Smuzhiyun   d) boot Linux
308*4882a593Smuzhiyun
309*4882a593Smuzhiyun   Example-
310*4882a593Smuzhiyun	Assumption: MC firmware, DPL and DPC dtb is already programmed
311*4882a593Smuzhiyun	on NOR flash.
312*4882a593Smuzhiyun
313*4882a593Smuzhiyun	=> fsl_mc start mc 580300000 580800000
314*4882a593Smuzhiyun	=> setenv ethact DPMAC1@xgmii
315*4882a593Smuzhiyun	=> tftp a0000000 kernel.itb
316*4882a593Smuzhiyun	=> fsl_mc apply dpl 580700000
317*4882a593Smuzhiyun	=> bootm a0000000
318*4882a593Smuzhiyun
319*4882a593Smuzhiyun3. Command sequence for AIOP boot:
320*4882a593Smuzhiyun   a) fsl_mc start mc <FW_addr> <DPC_addr> - Start Management Complex
321*4882a593Smuzhiyun   b) fsl_mc start aiop <FW_addr> - Start AIOP
322*4882a593Smuzhiyun   c) fsl_mc apply DPL <DPL_addr> - Apply DPL file
323*4882a593Smuzhiyun   d) No DPMAC net-devices are availabe for use in u-boot
324*4882a593Smuzhiyun  Please note actual AIOP start will happen during DPL parsing of
325*4882a593Smuzhiyun  Management complex
326*4882a593Smuzhiyun
327*4882a593Smuzhiyun  Example-
328*4882a593Smuzhiyun	Assumption: MC firmware, DPL, DPC dtb and AIOP firmware is already
329*4882a593Smuzhiyun	programmed on NOR flash.
330*4882a593Smuzhiyun
331*4882a593Smuzhiyun	=> fsl_mc start mc 580300000 580800000
332*4882a593Smuzhiyun	=> fsl_mc start aiop 0x580900000
333*4882a593Smuzhiyun	=> setenv ethact DPMAC1@xgmii
334*4882a593Smuzhiyun	=> fsl_mc apply dpl 580700000
335*4882a593Smuzhiyun
336*4882a593SmuzhiyunErrata A009635
337*4882a593Smuzhiyun---------------
338*4882a593SmuzhiyunIf the core runs at higher than x3 speed of the platform, there is
339*4882a593Smuzhiyunpossiblity about sev instruction to getting missed by other cores.
340*4882a593SmuzhiyunThis is because of SoC Run Control block may not able to sample
341*4882a593Smuzhiyunthe EVENTI(Sev) signals.
342*4882a593Smuzhiyun
343*4882a593SmuzhiyunWorkaround: Configure Run Control and EPU to periodically send out EVENTI signals to
344*4882a593Smuzhiyunwake up A57 cores
345*4882a593Smuzhiyun
346*4882a593SmuzhiyunErrata workaround uses Env variable "a009635_interval_val". It uses decimal
347*4882a593Smuzhiyunvalue.
348*4882a593Smuzhiyun- Default value of env variable is platform clock (MHz)
349*4882a593Smuzhiyun
350*4882a593Smuzhiyun- User can modify default value by updating the env variable
351*4882a593Smuzhiyun  setenv a009635_interval_val 600; saveenv;
352*4882a593Smuzhiyun  It configure platform clock as 600 MHz
353*4882a593Smuzhiyun
354*4882a593Smuzhiyun- Env variable as 0 signifies no workaround
355