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