doc: rockchip: Document SPI flash program steps
[oweals/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 boardsare 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 * rk3229
30      - Rockchip Evb-RK3229 (evb-rk3229)
31 * rk3288
32      - Rockchip Evb-RK3288 (evb-rk3288)
33      - Firefly-RK3288 (firefly-rk3288)
34      - MQmaker MiQi (miqi-rk3288)
35      - Phytec RK3288 PCM-947 (phycore-rk3288)
36      - PopMetal-RK3288 (popmetal-rk3288)
37      - Radxa Rock 2 Square (rock2)
38      - Tinker-RK3288 (tinker-rk3288)
39      - Google Jerry (chromebook_jerry)
40      - Google Mickey (chromebook_mickey)
41      - Google Minnie (chromebook_minnie)
42      - Google Speedy (chromebook_speedy)
43      - Amarula Vyasa-RK3288 (vyasa-rk3288)
44 * rk3308
45      - Rockchip Evb-RK3308 (evb-rk3308)
46      - Roc-cc-RK3308 (roc-cc-rk3308)
47 * rk3328
48      - Rockchip Evb-RK3328 (evb-rk3328)
49      - Pine64 Rock64 (rock64-rk3328)
50      - Firefly-RK3328 (roc-cc-rk3328)
51      - Radxa Rockpi E (rock-pi-e-rk3328)
52 * rk3368
53      - GeekBox (geekbox)
54      - PX5 EVB (evb-px5)
55      - Rockchip Sheep (sheep-rk3368)
56      - Theobroma Systems RK3368-uQ7 SoM - Lion (lion-rk3368)
57 * rk3399
58      - 96boards RK3399 Ficus (ficus-rk3399)
59      - 96boards Rock960 (rock960-rk3399)
60      - Firefly-RK3399 (firefly_rk3399)
61      - Firefly ROC-RK3399-PC
62      - FriendlyElec NanoPC-T4 (nanopc-t4-rk3399)
63      - FriendlyElec NanoPi M4 (nanopi-m4-rk3399)
64      - FriendlyARM NanoPi NEO4 (nanopi-neo4-rk3399)
65      - Google Bob (chromebook_bob)
66      - Khadas Edge (khadas-edge-rk3399)
67      - Khadas Edge-Captain (khadas-edge-captain-rk3399)
68      - Khadas Edge-V (hadas-edge-v-rk3399)
69      - Orange Pi RK3399 (orangepi-rk3399)
70      - Pine64 RockPro64 (rockpro64-rk3399)
71      - Radxa ROCK Pi 4 (rock-pi-4-rk3399)
72      - Rockchip Evb-RK3399 (evb_rk3399)
73      - Theobroma Systems RK3399-Q7 SoM - Puma (puma_rk3399)
74 * rv1108
75      - Rockchip Evb-rv1108 (evb-rv1108)
76      - Elgin-R1 (elgin-rv1108)
77 * rv3188
78      - Radxa Rock (rock)
79
80 Building
81 --------
82
83 TF-A
84 ^^^^
85
86 TF-A would require to build for ARM64 Rockchip SoCs platforms.
87
88 To build TF-A::
89
90         git clone https://github.com/ARM-software/arm-trusted-firmware.git
91         cd arm-trusted-firmware
92         make realclean
93         make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399
94
95 Specify the PLAT= with desired rockchip platform to build TF-A for.
96
97 U-Boot
98 ^^^^^^
99
100 To build rk3328 boards::
101
102         export BL31=/path/to/arm-trusted-firmware/to/bl31.elf
103         make evb-rk3328_defconfig
104         make
105
106 To build rk3288 boards::
107
108         make evb-rk3288_defconfig
109         make
110
111 To build rk3368 boards::
112
113         export BL31=/path/to/arm-trusted-firmware/to/bl31.elf
114         make evb-px5_defconfig
115         make
116
117 To build rk3399 boards::
118
119         export BL31=/path/to/arm-trusted-firmware/to/bl31.elf
120         make evb-rk3399_defconfig
121         make
122
123 Flashing
124 --------
125
126 SD Card
127 ^^^^^^^
128
129 All rockchip platforms, except rk3128 (which doesn't use SPL) are now
130 supporting single boot image using binman and pad_cat.
131
132 To write an image that boots from an SD card (assumed to be /dev/sda)::
133
134         sudo dd if=u-boot-rockchip.bin of=/dev/sda seek=64
135         sync
136
137 eMMC
138 ^^^^
139
140 eMMC flash would probe on mmc0 in most of the rockchip platforms.
141
142 Create GPT partition layout as defined in configurations::
143
144         mmc dev 0
145         gpt write mmc 0 $partitions
146
147 Connect the USB-OTG cable between host and target device.
148
149 Launch fastboot at target::
150
151         fastboot 0
152
153 Upon successful gadget connection,host show the USB device like::
154
155         lsusb
156         Bus 001 Device 020: ID 2207:330c Fuzhou Rockchip Electronics Company RK3399 in Mask ROM mode
157
158 Program the flash::
159
160         sudo fastboot -i 0x2207 flash loader1 idbloader.img
161         sudo fastboot -i 0x2207 flash loader2 u-boot.itb
162
163 Note: for rockchip 32-bit platforms the U-Boot proper image
164 is u-boot-dtb.img
165
166 SPI
167 ^^^
168
169 Generating idbloader for SPI boot would require to input a multi image
170 image format to mkimage tool instead of concerting (like for MMC boot).
171
172 SPL-alone SPI boot image::
173
174         ./tools/mkimage -n rk3399 -T rkspi -d spl/u-boot-spl.bin idbloader.img
175
176 TPL+SPL SPI boot image::
177
178         ./tools/mkimage -n rk3399 -T rkspi -d tpl/u-boot-tpl.bin:spl/u-boot-spl.bin idbloader.img
179
180 Copy SPI boot images into SD card and boot from SD::
181
182         sf probe
183         load mmc 1:1 $kernel_addr_r idbloader.img
184         sf erase 0 +$filesize
185         sf write $kernel_addr_r 0 ${filesize}
186         load mmc 1:1 ${kernel_addr_r} u-boot.itb
187         sf erase 0x60000 +$filesize
188         sf write $kernel_addr_r 0x60000 ${filesize}
189
190 TODO
191 ----
192
193 - Add rockchip idbloader image building
194 - Add rockchip TPL image building
195 - Document SPI flash boot
196 - Add missing SoC's with it boards list
197
198 .. Jagan Teki <jagan@amarulasolutions.com>
199 .. Tuesday 02 June 2020 12:18:57 AM IST