Merge branch 'master' of git://git.denx.de/u-boot
[platform/kernel/u-boot.git] / doc / board / rockchip / rockchip.rst
1 .. SPDX-License-Identifier: GPL-2.0+
2 .. Copyright (C) 2019 Jagan Teki <jagan@amarulasolutions.com>
3
4 ROCKCHIP
5 ========
6
7 About this
8 ----------
9
10 This document describes the information about Rockchip supported boards
11 and it's usage steps.
12
13 Rockchip boards
14 ---------------
15
16 Rockchip is SoC solutions provider for tablets & PCs, streaming media
17 TV boxes, AI audio & vision, IoT hardware.
18
19 A wide range of Rockchip SoCs with associated boards are supported in
20 mainline U-Boot.
21
22 List of mainline supported Rockchip boards:
23
24 * rk3036
25      - Rockchip Evb-RK3036 (evb-rk3036)
26      - Kylin (kylin_rk3036)
27 * rk3128
28      - Rockchip Evb-RK3128 (evb-rk3128)
29 * rk3188
30      - Radxa Rock (rock)
31 * rk3229
32      - Rockchip Evb-RK3229 (evb-rk3229)
33 * rk3288
34      - Rockchip Evb-RK3288 (evb-rk3288)
35      - Firefly-RK3288 (firefly-rk3288)
36      - MQmaker MiQi (miqi-rk3288)
37      - Phytec RK3288 PCM-947 (phycore-rk3288)
38      - PopMetal-RK3288 (popmetal-rk3288)
39      - Radxa Rock 2 Square (rock2)
40      - Tinker-RK3288 (tinker-rk3288)
41      - Google Jerry (chromebook_jerry)
42      - Google Mickey (chromebook_mickey)
43      - Google Minnie (chromebook_minnie)
44      - Google Speedy (chromebook_speedy)
45      - Amarula Vyasa-RK3288 (vyasa-rk3288)
46 * rk3308
47      - Rockchip Evb-RK3308 (evb-rk3308)
48      - Roc-cc-RK3308 (roc-cc-rk3308)
49 * rk3328
50      - Rockchip Evb-RK3328 (evb-rk3328)
51      - Pine64 Rock64 (rock64-rk3328)
52      - Firefly-RK3328 (roc-cc-rk3328)
53      - Radxa Rockpi E (rock-pi-e-rk3328)
54 * rk3368
55      - GeekBox (geekbox)
56      - PX5 EVB (evb-px5)
57      - Rockchip Sheep (sheep-rk3368)
58      - Theobroma Systems RK3368-uQ7 SoM - Lion (lion-rk3368)
59 * rk3399
60      - 96boards RK3399 Ficus (ficus-rk3399)
61      - 96boards Rock960 (rock960-rk3399)
62      - Firefly-RK3399 (firefly_rk3399)
63      - Firefly ROC-RK3399-PC
64      - FriendlyElec NanoPC-T4 (nanopc-t4-rk3399)
65      - FriendlyElec NanoPi M4 (nanopi-m4-rk3399)
66      - FriendlyElec NanoPi M4B (nanopi-m4b-rk3399)
67      - FriendlyARM NanoPi NEO4 (nanopi-neo4-rk3399)
68      - Google Bob (chromebook_bob)
69      - Khadas Edge (khadas-edge-rk3399)
70      - Khadas Edge-Captain (khadas-edge-captain-rk3399)
71      - Khadas Edge-V (hadas-edge-v-rk3399)
72      - Orange Pi RK3399 (orangepi-rk3399)
73      - Pine64 RockPro64 (rockpro64-rk3399)
74      - Radxa ROCK Pi 4 (rock-pi-4-rk3399)
75      - Rockchip Evb-RK3399 (evb_rk3399)
76      - Theobroma Systems RK3399-Q7 SoM - Puma (puma_rk3399)
77 * rv1108
78      - Rockchip Evb-rv1108 (evb-rv1108)
79      - Elgin-R1 (elgin-rv1108)
80
81 Building
82 --------
83
84 TF-A
85 ^^^^
86
87 TF-A would require to build for ARM64 Rockchip SoCs platforms.
88
89 To build TF-A::
90
91         git clone https://github.com/ARM-software/arm-trusted-firmware.git
92         cd arm-trusted-firmware
93         make realclean
94         make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399
95
96 Specify the PLAT= with desired Rockchip platform to build TF-A for.
97
98 U-Boot
99 ^^^^^^
100
101 To build rk3328 boards::
102
103         export BL31=/path/to/arm-trusted-firmware/to/bl31.elf
104         make evb-rk3328_defconfig
105         make
106
107 To build rk3288 boards::
108
109         make evb-rk3288_defconfig
110         make
111
112 To build rk3368 boards::
113
114         export BL31=/path/to/arm-trusted-firmware/to/bl31.elf
115         make evb-px5_defconfig
116         make
117
118 To build rk3399 boards::
119
120         export BL31=/path/to/arm-trusted-firmware/to/bl31.elf
121         make evb-rk3399_defconfig
122         make
123
124 Flashing
125 --------
126
127 1. Package the image with U-Boot TPL/SPL
128 -----------------------------------------
129
130 SD Card
131 ^^^^^^^
132
133 All Rockchip platforms, except rk3128 (which doesn't use SPL) are now
134 supporting single boot image using binman and pad_cat.
135
136 To write an image that boots from an SD card (assumed to be /dev/sda)::
137
138         sudo dd if=u-boot-rockchip.bin of=/dev/sda seek=64
139         sync
140
141 eMMC
142 ^^^^
143
144 eMMC flash would probe on mmc0 in most of the Rockchip platforms.
145
146 Create GPT partition layout as defined in configurations::
147
148         mmc dev 0
149         gpt write mmc 0 $partitions
150
151 Connect the USB-OTG cable between host and target device.
152
153 Launch fastboot at target::
154
155         fastboot 0
156
157 Upon successful gadget connection,host show the USB device like::
158
159         lsusb
160         Bus 001 Device 020: ID 2207:330c Fuzhou Rockchip Electronics Company RK3399 in Mask ROM mode
161
162 Program the flash::
163
164         sudo fastboot -i 0x2207 flash loader1 idbloader.img
165         sudo fastboot -i 0x2207 flash loader2 u-boot.itb
166
167 Note: for Rockchip 32-bit platforms the U-Boot proper image
168 is u-boot-dtb.img
169
170 SPI
171 ^^^
172
173 Generating idbloader for SPI boot would require to input a multi image
174 image format to mkimage tool instead of concerting (like for MMC boot).
175
176 SPL-alone SPI boot image::
177
178         ./tools/mkimage -n rk3399 -T rkspi -d spl/u-boot-spl.bin idbloader.img
179
180 TPL+SPL SPI boot image::
181
182         ./tools/mkimage -n rk3399 -T rkspi -d tpl/u-boot-tpl.bin:spl/u-boot-spl.bin idbloader.img
183
184 Copy SPI boot images into SD card and boot from SD::
185
186         sf probe
187         load mmc 1:1 $kernel_addr_r idbloader.img
188         sf erase 0 +$filesize
189         sf write $kernel_addr_r 0 ${filesize}
190         load mmc 1:1 ${kernel_addr_r} u-boot.itb
191         sf erase 0x60000 +$filesize
192         sf write $kernel_addr_r 0x60000 ${filesize}
193
194 2. Package the image with Rockchip miniloader
195 ---------------------------------------------
196
197 Image package with Rockchip miniloader requires robin [1].
198
199 Create idbloader.img
200
201 .. code-block:: none
202
203   cd u-boot
204   ./tools/mkimage -n px30 -T rksd -d rkbin/bin/rk33/px30_ddr_333MHz_v1.15.bin idbloader.img
205   cat rkbin/bin/rk33/px30_miniloader_v1.22.bin >> idbloader.img
206   sudo dd if=idbloader.img of=/dev/sda seek=64
207
208 Create trust.img
209
210 .. code-block:: none
211
212   cd rkbin
213   ./tools/trust_merger RKTRUST/PX30TRUST.ini
214   sudo dd if=trust.img of=/dev/sda seek=24576
215
216 Create uboot.img
217
218 .. code-block:: none
219
220   rbink/tools/loaderimage --pack --uboot u-boot-dtb.bin uboot.img 0x200000
221   sudo dd if=uboot.img of=/dev/sda seek=16384
222
223 Note:
224 1. 0x200000 is load address and it's an optional in some platforms.
225 2. rkbin binaries are kept on updating, so would recommend to use the latest versions.
226
227 TODO
228 ----
229
230 - Add Rockchip idbloader image building
231 - Add Rockchip TPL image building
232 - Document SPI flash boot
233 - Add missing SoC's with it boards list
234
235 [1] https://github.com/rockchip-linux/rkbin
236
237 .. Jagan Teki <jagan@amarulasolutions.com>
238 .. Wednesday 28 October 2020 06:47:26 PM IST