blob: 6a13e9c8d65a3ef5a19d9390153d6ded765d88b1 [file] [log] [blame]
Liu Gangb4526932012-03-08 00:33:16 +00001------------------------------
2SRIO Boot on Corenet Platforms
3------------------------------
4
5For some PowerPC processors with SRIO interface, boot location can be configured
6to SRIO by RCW. The processor booting from SRIO can do without flash for u-boot
7image, ucode and ENV. All the images can be fetched from another processor's
8memory space by SRIO link connected between them.
9
10This document describes the processes based on an example implemented on P4080DS
11platforms and a RCW example with boot from SRIO configuration.
12
13Environment of the SRIO boot:
14 a) Master and slave can be SOCs in one board or SOCs in separate boards.
15 b) They are connected with SRIO links, whether 1x or 4x, and directly or
16 through switch system.
17 c) Only Master has NorFlash for booting, and all the Master's and Slave's
18 U-Boot images, UCodes will be stored in this flash.
19 d) Slave has its own EEPROM for RCW and PBI.
20 e) Slave's RCW should configure the SerDes for SRIO boot port, set the boot
Liu Gang718a7612012-08-09 05:09:58 +000021 location to SRIO, and holdoff all the cores.
Liu Gangb4526932012-03-08 00:33:16 +000022
23 ---------- ----------- -----------
24 | | | | | |
25 | | | | | |
26 | NorFlash|<----->| Master | SRIO | Slave |<---->[EEPROM]
27 | | | |<===========>| |
28 | | | | | |
29 ---------- ----------- -----------
30
31The example based on P4080DS platform:
32 Two P4080DS platforms can be used to implement the boot from SRIO. Their SRIO
Liu Gang718a7612012-08-09 05:09:58 +000033 ports 1 will be connected directly and will be used for the boot from SRIO.
Liu Gangb4526932012-03-08 00:33:16 +000034
Liu Gang718a7612012-08-09 05:09:58 +000035 1. Slave's RCW example for boot from SRIO port 1 and all cores in holdoff.
Liu Gangb4526932012-03-08 00:33:16 +000036 00000000: aa55 aa55 010e 0100 0c58 0000 0000 0000
37 00000010: 1818 1818 0000 8888 7440 4000 0000 2000
Liu Gangb4526932012-03-08 00:33:16 +000038 00000020: f440 0000 0100 0000 0000 0000 0000 0000
39 00000030: 0000 0000 0083 0000 0000 0000 0000 0000
40 00000040: 0000 0000 0000 0000 0813 8040 063c 778f
41
Liu Gang718a7612012-08-09 05:09:58 +000042 2. Sequence in Step by Step.
43 a) Update RCW for slave with boot from SRIO port 1 configuration.
Liu Gangb4526932012-03-08 00:33:16 +000044 b) Program slave's U-Boot image, UCode, and ENV parameters into master's
45 NorFlash.
Liu Gang718a7612012-08-09 05:09:58 +000046 c) Set environment variable "bootmaster" to "SRIO1" and save environment
47 for master.
48 setenv bootmaster SRIO1
49 saveenv
50 d) Restart up master and it will boot up normally from its NorFlash.
Liu Gangb4526932012-03-08 00:33:16 +000051 Then, it will finish necessary configurations for slave's boot from
Liu Gang718a7612012-08-09 05:09:58 +000052 SRIO port 1.
53 e) Master will set inbound SRIO windows covered slave's U-Boot image stored
Liu Gangb4526932012-03-08 00:33:16 +000054 in master's NorFlash.
Liu Gang718a7612012-08-09 05:09:58 +000055 f) Master will set an inbound SRIO window covered slave's UCode and ENV
56 stored in master's NorFlash.
57 g) Master will set outbound SRIO windows in order to configure slave's
58 registers for the core's releasing.
59 h) Since all cores of slave in holdoff, slave should be powered on before all
60 the above master's steps, and wait to be released by master. In the
61 startup phase of the slave from SRIO, it will finish some necessary
62 configurations.
Liu Gangb4526932012-03-08 00:33:16 +000063 i) Slave will set a specific TLB entry for the boot process.
Liu Gang718a7612012-08-09 05:09:58 +000064 j) Slave will set a LAW entry with the TargetID SRIO port 1 for the boot.
Liu Gangb4526932012-03-08 00:33:16 +000065 k) Slave will set a specific TLB entry in order to fetch UCode and ENV
66 from master.
Liu Gang718a7612012-08-09 05:09:58 +000067 l) Slave will set a LAW entry with the TargetID SRIO port 1 for UCode and ENV.
Liu Gangb4526932012-03-08 00:33:16 +000068
69How to use this feature:
Liu Gang718a7612012-08-09 05:09:58 +000070 To use this feature, you need to focus those points.
Liu Gangb4526932012-03-08 00:33:16 +000071
72 1. Slave's RCW with SRIO boot configurations, and all cores in holdoff
Liu Gang718a7612012-08-09 05:09:58 +000073 configurations.
Liu Gangb4526932012-03-08 00:33:16 +000074 Please refer to the examples given above.
75
76 2. U-Boot image's compilation.
Liu Gang718a7612012-08-09 05:09:58 +000077 For master, U-Boot image should be generated normally.
Liu Gangb4526932012-03-08 00:33:16 +000078
79 For example, master U-Boot image used on P4080DS should be compiled with
80
Liu Gang718a7612012-08-09 05:09:58 +000081 make P4080DS_config.
Liu Gangb4526932012-03-08 00:33:16 +000082
83 For slave, U-Boot image should be generated specifically by
84
85 make xxxx_SRIOBOOT_SLAVE_config.
86
87 For example, slave U-Boot image used on P4080DS should be compiled with
88
89 make P4080DS_SRIOBOOT_SLAVE_config.
90
91 3. Necessary modifications based on a specific environment.
Liu Gang718a7612012-08-09 05:09:58 +000092 For a specific environment, the addresses of the slave's U-Boot image,
93 UCode, ENV stored in master's NorFlash, and any other configurations
94 can be modified in the file:
Liu Gangb4526932012-03-08 00:33:16 +000095 include/configs/corenet_ds.h.
Liu Gang718a7612012-08-09 05:09:58 +000096
97 4. Set and save the environment variable "bootmaster" with "SRIO1" or "SRIO2"
98 for master, and then restart it in order to perform the role as a master
99 for boot from SRIO.